FAILED: patch "[PATCH] RISC-V: Use common riscv_cpuid_to_hartid_mask() for both" failed to apply to 5.10-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 869c70609248102f3a2e95a39b6233ff6ea2c932 Mon Sep 17 00:00:00 2001
From: Sean Christopherson <[email protected]>
Date: Mon, 29 Nov 2021 21:43:42 +0000
Subject: [PATCH] RISC-V: Use common riscv_cpuid_to_hartid_mask() for both
SMP=y and SMP=n
Use what is currently the SMP=y version of riscv_cpuid_to_hartid_mask() for both SMP=y and SMP=n to fix a build failure with KVM=m and SMP=n due to boot_cpu_hartid not being exported. This also fixes a second bug where the SMP=n version assumes the sole CPU in the system is in the incoming mask, which may not hold true in kvm_riscv_vcpu_sbi_ecall() if the KVM guest VM has multiple vCPUs (on a SMP=n system).
arch/riscv/include/asm/smp.h +2 -8
@@ -43,7 +43,6 @@ void arch_send_call_function_ipi_mask(struct cpumask *mask);void arch_send_call_function_single_ipi (int cpu);int riscv_hartid_to_cpuid (int hartid); -void riscv_cpuid_to_hartid_mask (const struct cpumask *in,struct cpumask *out);/* Set custom IPI operations */ void riscv_set_ipi_ops (const struct riscv_ipi_ops *ops);
@@ -83,13 +82,6 @@ static inline unsigned long cpuid_to_hartid_map(int cpu)return boot_cpu_hartid; } -static inline void riscv_cpuid_to_hartid_mask (const struct cpumask *in, -struct cpumask *out) -{ -cpumask_clear (out); -cpumask_set_cpu (boot_cpu_hartid, out); -} -static inline void riscv_set_ipi_ops (const struct riscv_ipi_ops *ops) { }
@@ -100,6 +92,8 @@ static inline void riscv_clear_ipi(void)#endif /* CONFIG_SMP */ +void riscv_cpuid_to_hartid_mask (const struct cpumask *in,struct cpumask *out); +#if defined(CONFIG_HOTPLUG_CPU ) && (CONFIG_SMP )bool cpu_has_hotplug (unsigned int cpu);#else
arch/riscv/kernel/setup.c +10 -0
@@ -59,6 +59,16 @@ atomic_t hart_lottery __section(".sdata")unsigned long boot_cpu_hartid; static DEFINE_PER_CPU(struct cpu, cpu_devices); +void riscv_cpuid_to_hartid_mask (const struct cpumask *in,struct cpumask *out) +{ +int cpu; + +cpumask_clear (out); +for_each_cpu (cpu, in) +cpumask_set_cpu (cpuid_to_hartid_map (cpu), out); +} +EXPORT_SYMBOL_GPL (riscv_cpuid_to_hartid_mask); +/* * Place kernel memory regions on the resource tree so that * kexec-tools can retrieve them from /proc/iomem. While there
arch/riscv/kernel/smp.c +0 -10
@@ -59,16 +59,6 @@ int riscv_hartid_to_cpuid(int hartid)return -ENOENT ; } -void riscv_cpuid_to_hartid_mask (const struct cpumask *in,struct cpumask *out) -{ -int cpu; - -cpumask_clear (out); -for_each_cpu (cpu, in) -cpumask_set_cpu (cpuid_to_hartid_map (cpu), out); -} -EXPORT_SYMBOL_GPL (riscv_cpuid_to_hartid_mask); -bool arch_match_cpu_phys_id (int cpu,u64 phys_id) {return phys_id ==cpuid_to_hartid_map (cpu);