Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fixes from Will Deacon:
"These are all very simple and self-contained, although the CFI
jump-table fix touches the generic linker script as that's where the
problematic macro lives.

- Fix false positive "sleeping while atomic" warning resulting from
the kPTI rework taking a mutex too early.

- Fix possible overflow in AMU frequency calculation

- Fix incorrect shift in CMN PMU driver which causes problems with
newer versions of the IP

- Reduce alignment of the CFI jump table to avoid huge kernel images
and link errors with !4KiB page size configurations"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
vmlinux.lds.h: CFI: Reduce alignment of jump-table to function alignment
perf/arm-cmn: Add more bits to child node address offset field
arm64: topology: fix possible overflow in amu_fie_setup()
arm64: mm: don't acquire mutex when rewriting swapper

+21 -18
+1 -1
arch/arm64/kernel/topology.c
··· 237 237 for_each_cpu(cpu, cpus) { 238 238 if (!freq_counters_valid(cpu) || 239 239 freq_inv_set_max_ratio(cpu, 240 - cpufreq_get_hw_max_freq(cpu) * 1000, 240 + cpufreq_get_hw_max_freq(cpu) * 1000ULL, 241 241 arch_timer_get_rate())) 242 242 return; 243 243 }
+18 -14
arch/arm64/mm/mmu.c
··· 331 331 } 332 332 BUG_ON(p4d_bad(p4d)); 333 333 334 - /* 335 - * No need for locking during early boot. And it doesn't work as 336 - * expected with KASLR enabled. 337 - */ 338 - if (system_state != SYSTEM_BOOTING) 339 - mutex_lock(&fixmap_lock); 340 334 pudp = pud_set_fixmap_offset(p4dp, addr); 341 335 do { 342 336 pud_t old_pud = READ_ONCE(*pudp); ··· 362 368 } while (pudp++, addr = next, addr != end); 363 369 364 370 pud_clear_fixmap(); 365 - if (system_state != SYSTEM_BOOTING) 366 - mutex_unlock(&fixmap_lock); 367 371 } 368 372 369 - static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys, 370 - unsigned long virt, phys_addr_t size, 371 - pgprot_t prot, 372 - phys_addr_t (*pgtable_alloc)(int), 373 - int flags) 373 + static void __create_pgd_mapping_locked(pgd_t *pgdir, phys_addr_t phys, 374 + unsigned long virt, phys_addr_t size, 375 + pgprot_t prot, 376 + phys_addr_t (*pgtable_alloc)(int), 377 + int flags) 374 378 { 375 379 unsigned long addr, end, next; 376 380 pgd_t *pgdp = pgd_offset_pgd(pgdir, virt); ··· 392 400 } while (pgdp++, addr = next, addr != end); 393 401 } 394 402 403 + static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys, 404 + unsigned long virt, phys_addr_t size, 405 + pgprot_t prot, 406 + phys_addr_t (*pgtable_alloc)(int), 407 + int flags) 408 + { 409 + mutex_lock(&fixmap_lock); 410 + __create_pgd_mapping_locked(pgdir, phys, virt, size, prot, 411 + pgtable_alloc, flags); 412 + mutex_unlock(&fixmap_lock); 413 + } 414 + 395 415 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0 396 - extern __alias(__create_pgd_mapping) 416 + extern __alias(__create_pgd_mapping_locked) 397 417 void create_kpti_ng_temp_pgd(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, 398 418 phys_addr_t size, pgprot_t prot, 399 419 phys_addr_t (*pgtable_alloc)(int), int flags);
+1 -1
drivers/perf/arm-cmn.c
··· 36 36 #define CMN_CI_CHILD_COUNT GENMASK_ULL(15, 0) 37 37 #define CMN_CI_CHILD_PTR_OFFSET GENMASK_ULL(31, 16) 38 38 39 - #define CMN_CHILD_NODE_ADDR GENMASK(27, 0) 39 + #define CMN_CHILD_NODE_ADDR GENMASK(29, 0) 40 40 #define CMN_CHILD_NODE_EXTERNAL BIT(31) 41 41 42 42 #define CMN_MAX_DIMENSION 12
+1 -2
include/asm-generic/vmlinux.lds.h
··· 543 543 */ 544 544 #ifdef CONFIG_CFI_CLANG 545 545 #define TEXT_CFI_JT \ 546 - . = ALIGN(PMD_SIZE); \ 546 + ALIGN_FUNCTION(); \ 547 547 __cfi_jt_start = .; \ 548 548 *(.text..L.cfi.jumptable .text..L.cfi.jumptable.*) \ 549 - . = ALIGN(PMD_SIZE); \ 550 549 __cfi_jt_end = .; 551 550 #else 552 551 #define TEXT_CFI_JT