[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] core-parking: fix build with gcc12 and NR_CPUS=1
commit 4b0422f70feb4b1cd04598ffde805fc224f3812e Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Mon Mar 13 15:15:42 2023 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Mon Mar 13 15:15:42 2023 +0100 core-parking: fix build with gcc12 and NR_CPUS=1 Gcc12 takes issue with core_parking_remove()'s for ( ; i < cur_idle_nums; ++i ) core_parking_cpunum[i] = core_parking_cpunum[i + 1]; complaining that the right hand side array access is past the bounds of 1. Clearly the compiler can't know that cur_idle_nums can only ever be zero in this case (as the sole CPU cannot be parked). Arrange for core_parking.c's contents to not be needed altogether, and then disable its building when NR_CPUS == 1. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/Kconfig | 2 +- xen/arch/x86/platform_hypercall.c | 11 ++++++++--- xen/arch/x86/sysctl.c | 3 +++ xen/common/Kconfig | 1 + 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig index 6a7825f4ba..2a5c3304e2 100644 --- a/xen/arch/x86/Kconfig +++ b/xen/arch/x86/Kconfig @@ -10,7 +10,7 @@ config X86 select ALTERNATIVE_CALL select ARCH_MAP_DOMAIN_PAGE select ARCH_SUPPORTS_INT128 - select CORE_PARKING + imply CORE_PARKING select HAS_ALTERNATIVE select HAS_COMPAT select HAS_CPUFREQ diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c index 85c69c5be5..a2d9526355 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -727,12 +727,17 @@ ret_t do_platform_op( case XEN_CORE_PARKING_SET: idle_nums = min_t(uint32_t, op->u.core_parking.idle_nums, num_present_cpus() - 1); - ret = continue_hypercall_on_cpu( - 0, core_parking_helper, (void *)(unsigned long)idle_nums); + if ( CONFIG_NR_CPUS > 1 ) + ret = continue_hypercall_on_cpu( + 0, core_parking_helper, + (void *)(unsigned long)idle_nums); + else if ( idle_nums ) + ret = -EINVAL; break; case XEN_CORE_PARKING_GET: - op->u.core_parking.idle_nums = get_cur_idle_nums(); + op->u.core_parking.idle_nums = CONFIG_NR_CPUS > 1 + ? get_cur_idle_nums() : 0; ret = __copy_field_to_guest(u_xenpf_op, op, u.core_parking) ? -EFAULT : 0; break; diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c index 6600eb4347..16625b57f0 100644 --- a/xen/arch/x86/sysctl.c +++ b/xen/arch/x86/sysctl.c @@ -178,6 +178,9 @@ long arch_do_sysctl( ret = -EBUSY; break; } + if ( CONFIG_NR_CPUS <= 1 ) + /* Mimic behavior of smt_up_down_helper(). */ + return 0; plug = op == XEN_SYSCTL_CPU_HOTPLUG_SMT_ENABLE; fn = smt_up_down_helper; hcpu = _p(plug); diff --git a/xen/common/Kconfig b/xen/common/Kconfig index f1ea3199c8..855c843113 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -10,6 +10,7 @@ config COMPAT config CORE_PARKING bool + depends on NR_CPUS > 1 config GRANT_TABLE bool "Grant table support" if EXPERT -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |