From: Catalin Marinas Date: Wed, 25 Mar 2020 11:10:32 +0000 (+0000) Subject: Merge branches 'for-next/memory-hotremove', 'for-next/arm_sdei', 'for-next/amu',... X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=da12d2739fb69531bf6bb6eb7e46d73d1dabc814;p=linux.git Merge branches 'for-next/memory-hotremove', 'for-next/arm_sdei', 'for-next/amu', 'for-next/final-cap-helper', 'for-next/cpu_ops-cleanup', 'for-next/misc' and 'for-next/perf' into for-next/core * for-next/memory-hotremove: : Memory hot-remove support for arm64 arm64/mm: Enable memory hot remove arm64/mm: Hold memory hotplug lock while walking for kernel page table dump * for-next/arm_sdei: : SDEI: fix double locking on return from hibernate and clean-up firmware: arm_sdei: clean up sdei_event_create() firmware: arm_sdei: Use cpus_read_lock() to avoid races with cpuhp firmware: arm_sdei: fix possible double-lock on hibernate error path firmware: arm_sdei: fix double-lock on hibernate with shared events * for-next/amu: : ARMv8.4 Activity Monitors support clocksource/drivers/arm_arch_timer: validate arch_timer_rate arm64: use activity monitors for frequency invariance cpufreq: add function to get the hardware max frequency Documentation: arm64: document support for the AMU extension arm64/kvm: disable access to AMU registers from kvm guests arm64: trap to EL1 accesses to AMU counters from EL0 arm64: add support for the AMU extension v1 * for-next/final-cap-helper: : Introduce cpus_have_final_cap_helper(), migrate arm64 KVM to it arm64: kvm: hyp: use cpus_have_final_cap() arm64: cpufeature: add cpus_have_final_cap() * for-next/cpu_ops-cleanup: : cpu_ops[] access code clean-up arm64: Introduce get_cpu_ops() helper function arm64: Rename cpu_read_ops() to init_cpu_ops() arm64: Declare ACPI parking protocol CPU operation if needed * for-next/misc: : Various fixes and clean-ups arm64: define __alloc_zeroed_user_highpage arm64/kernel: Simplify __cpu_up() by bailing out early arm64: remove redundant blank for '=' operator arm64: kexec_file: Fixed code style. arm64: add blank after 'if' arm64: fix spelling mistake "ca not" -> "cannot" arm64: entry: unmask IRQ in el0_sp() arm64: efi: add efi-entry.o to targets instead of extra-$(CONFIG_EFI) arm64: csum: Optimise IPv6 header checksum arch/arm64: fix typo in a comment arm64: remove gratuitious/stray .ltorg stanzas arm64: Update comment for ASID() macro arm64: mm: convert cpu_do_switch_mm() to C arm64: fix NUMA Kconfig typos * for-next/perf: : arm64 perf updates arm64: perf: Add support for ARMv8.5-PMU 64-bit counters KVM: arm64: limit PMU version to PMUv3 for ARMv8.1 arm64: cpufeature: Extract capped perfmon fields arm64: perf: Clean up enable/disable calls perf: arm-ccn: Use scnprintf() for robustness arm64: perf: Support new DT compatibles arm64: perf: Refactor PMU init callbacks perf: arm_spe: Remove unnecessary zero check on 'nr_pages' --- da12d2739fb69531bf6bb6eb7e46d73d1dabc814 diff --cc arch/arm64/kernel/smp.c index d4ed9a19d8fe7,d4ed9a19d8fe7,d4ed9a19d8fe7,d4ed9a19d8fe7,e5c9862c271b8,2a9d8f39dc584,d4ed9a19d8fe7..0348067255982 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@@@@@@@ -140,35 -140,35 -140,35 -140,35 -142,35 -136,34 -140,35 +138,34 @@@@@@@@ int __cpu_up(unsigned int cpu, struct t secondary_data.stack = NULL; __flush_dcache_area(&secondary_data, sizeof(secondary_data)); status = READ_ONCE(secondary_data.status); ----- - if (ret && status) { - - if (status == CPU_MMU_OFF) - status = READ_ONCE(__early_cpu_boot_status); - - switch (status & CPU_BOOT_STATUS_MASK) { - default: - pr_err("CPU%u: failed in unknown state : 0x%lx\n", - cpu, status); - cpus_stuck_in_kernel++; +++++ + if (status == CPU_MMU_OFF) +++++ + status = READ_ONCE(__early_cpu_boot_status); + ---- - if (status == CPU_MMU_OFF) ---- - status = READ_ONCE(__early_cpu_boot_status); ---- - ---- - switch (status & CPU_BOOT_STATUS_MASK) { ---- - default: ---- - pr_err("CPU%u: failed in unknown state : 0x%lx\n", ---- - cpu, status); ---- - cpus_stuck_in_kernel++; ---- - break; ---- - case CPU_KILL_ME: ---- - if (!op_cpu_kill(cpu)) { ---- - pr_crit("CPU%u: died during early boot\n", cpu); ---- - break; ---- - } ---- - pr_crit("CPU%u: may not have shut down cleanly\n", cpu); ---- - /* Fall through */ ---- - case CPU_STUCK_IN_KERNEL: ---- - pr_crit("CPU%u: is stuck in kernel\n", cpu); ---- - if (status & CPU_STUCK_REASON_52_BIT_VA) ---- - pr_crit("CPU%u: does not support 52-bit VAs\n", cpu); ---- - if (status & CPU_STUCK_REASON_NO_GRAN) ---- - pr_crit("CPU%u: does not support %luK granule \n", cpu, PAGE_SIZE / SZ_1K); ---- - cpus_stuck_in_kernel++; +++++ + switch (status & CPU_BOOT_STATUS_MASK) { +++++ + default: +++++ + pr_err("CPU%u: failed in unknown state : 0x%lx\n", +++++ + cpu, status); +++++ + cpus_stuck_in_kernel++; +++++ + break; +++++ + case CPU_KILL_ME: +++++ + if (!op_cpu_kill(cpu)) { +++++ + pr_crit("CPU%u: died during early boot\n", cpu); break; - case CPU_KILL_ME: - if (!op_cpu_kill(cpu)) { - pr_crit("CPU%u: died during early boot\n", cpu); - break; - } - pr_crit("CPU%u: may not have shut down cleanly\n", cpu); - /* Fall through */ - case CPU_STUCK_IN_KERNEL: - pr_crit("CPU%u: is stuck in kernel\n", cpu); - if (status & CPU_STUCK_REASON_52_BIT_VA) - pr_crit("CPU%u: does not support 52-bit VAs\n", cpu); - if (status & CPU_STUCK_REASON_NO_GRAN) - pr_crit("CPU%u: does not support %luK granule \n", cpu, PAGE_SIZE / SZ_1K); - cpus_stuck_in_kernel++; - break; ----- - case CPU_PANIC_KERNEL: ----- - panic("CPU%u detected unsupported configuration\n", cpu); } +++++ + pr_crit("CPU%u: may not have shut down cleanly\n", cpu); +++++ + /* Fall through */ +++++ + case CPU_STUCK_IN_KERNEL: +++++ + pr_crit("CPU%u: is stuck in kernel\n", cpu); +++++ + if (status & CPU_STUCK_REASON_52_BIT_VA) +++++ + pr_crit("CPU%u: does not support 52-bit VAs\n", cpu); +++++ + if (status & CPU_STUCK_REASON_NO_GRAN) { +++++ + pr_crit("CPU%u: does not support %luK granule\n", +++++ + cpu, PAGE_SIZE / SZ_1K); +++++ + } +++++ + cpus_stuck_in_kernel++; +++++ + break; +++++ + case CPU_PANIC_KERNEL: +++++ + panic("CPU%u detected unsupported configuration\n", cpu); } return ret;