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 Catalin Marinas:

- The SMCCC firmware interface for the spectre variant 2 mitigation has
been updated to allow the discovery of whether the CPU needs the
workaround. This pull request relaxes the kernel check on the return
value from firmware.

- Fix the commit allowing changing from global to non-global page table
entries which inadvertently disallowed other safe attribute changes.

- Fix sleeping in atomic during the arm_perf_teardown_cpu() code.

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
arm64: Relax ARM_SMCCC_ARCH_WORKAROUND_1 discovery
arm_pmu: Use disable_irq_nosync when disabling SPI in CPU teardown hook
arm64: mm: fix thinko in non-global page table attribute check

+7 -7
+2 -2
arch/arm64/kernel/cpu_errata.c
··· 178 178 case PSCI_CONDUIT_HVC: 179 179 arm_smccc_1_1_hvc(ARM_SMCCC_ARCH_FEATURES_FUNC_ID, 180 180 ARM_SMCCC_ARCH_WORKAROUND_1, &res); 181 - if (res.a0) 181 + if ((int)res.a0 < 0) 182 182 return 0; 183 183 cb = call_hvc_arch_workaround_1; 184 184 smccc_start = __smccc_workaround_1_hvc_start; ··· 188 188 case PSCI_CONDUIT_SMC: 189 189 arm_smccc_1_1_smc(ARM_SMCCC_ARCH_FEATURES_FUNC_ID, 190 190 ARM_SMCCC_ARCH_WORKAROUND_1, &res); 191 - if (res.a0) 191 + if ((int)res.a0 < 0) 192 192 return 0; 193 193 cb = call_smc_arch_workaround_1; 194 194 smccc_start = __smccc_workaround_1_smc_start;
+4 -4
arch/arm64/mm/mmu.c
··· 108 108 * The following mapping attributes may be updated in live 109 109 * kernel mappings without the need for break-before-make. 110 110 */ 111 - static const pteval_t mask = PTE_PXN | PTE_RDONLY | PTE_WRITE; 111 + static const pteval_t mask = PTE_PXN | PTE_RDONLY | PTE_WRITE | PTE_NG; 112 112 113 113 /* creating or taking down mappings is always safe */ 114 114 if (old == 0 || new == 0) ··· 118 118 if ((old | new) & PTE_CONT) 119 119 return false; 120 120 121 - /* Transitioning from Global to Non-Global is safe */ 122 - if (((old ^ new) == PTE_NG) && (new & PTE_NG)) 123 - return true; 121 + /* Transitioning from Non-Global to Global is unsafe */ 122 + if (old & ~new & PTE_NG) 123 + return false; 124 124 125 125 return ((old ^ new) & ~mask) == 0; 126 126 }
+1 -1
drivers/perf/arm_pmu.c
··· 638 638 if (irq_is_percpu_devid(irq)) 639 639 disable_percpu_irq(irq); 640 640 else 641 - disable_irq(irq); 641 + disable_irq_nosync(irq); 642 642 } 643 643 644 644 per_cpu(cpu_armpmu, cpu) = NULL;