[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH v2 18/19] xen/sysctl: wrap around arch-specific arch_do_sysctl
[Public] Hi, > -----Original Message----- > From: Jan Beulich <jbeulich@xxxxxxxx> > Sent: Tuesday, April 1, 2025 10:47 PM > To: Penny, Zheng <penny.zheng@xxxxxxx> > Cc: Huang, Ray <Ray.Huang@xxxxxxx>; Stefano Stabellini > <sstabellini@xxxxxxxxxx>; Julien Grall <julien@xxxxxxx>; Bertrand Marquis > <bertrand.marquis@xxxxxxx>; Orzel, Michal <Michal.Orzel@xxxxxxx>; > Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>; Andrew Cooper > <andrew.cooper3@xxxxxxxxxx>; Anthony PERARD <anthony.perard@xxxxxxxxxx>; > Roger Pau Monné <roger.pau@xxxxxxxxxx>; Alistair Francis > <alistair.francis@xxxxxxx>; Bob Eshleman <bobbyeshleman@xxxxxxxxx>; > Connor Davis <connojdavis@xxxxxxxxx>; Oleksii Kurochko > <oleksii.kurochko@xxxxxxxxx>; Stabellini, Stefano > <stefano.stabellini@xxxxxxx>; Sergiy Kibrik <Sergiy_Kibrik@xxxxxxxx>; xen- > devel@xxxxxxxxxxxxxxxxxxxx > Subject: Re: [PATCH v2 18/19] xen/sysctl: wrap around arch-specific > arch_do_sysctl > > On 26.03.2025 06:50, Penny Zheng wrote: > > Function arch_do_sysctl is to perform arch-specific sysctl op. > > Some functions, like psr_get_info for x86, DTB overlay support for > > arm, are solely available through sysctl op, then they all shall be > > wrapped with CONFIG_SYSCTL Also, remove all #ifdef CONFIG_SYSCTL-s in > > arch-specific sysctl.c, as we put the guardian in Makefile for the > > whole file. > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxx> > > Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@xxxxxxxx> > > Signed-off-by: Penny Zheng <Penny.Zheng@xxxxxxx> > > --- > > - use "depends on" for config OVERLAY_DTB > > - no need to wrap declaration > > - add transient #ifdef in sysctl.c for correct compilation > > --- > > xen/arch/arm/Kconfig | 1 + > > xen/arch/arm/Makefile | 2 +- > > xen/arch/arm/sysctl.c | 2 -- > > xen/arch/riscv/stubs.c | 2 +- > > xen/arch/x86/Makefile | 2 +- > > xen/arch/x86/psr.c | 18 ++++++++++++++++++ > > xen/arch/x86/sysctl.c | 2 -- > > xen/common/sysctl.c | 2 ++ > > 8 files changed, 24 insertions(+), 7 deletions(-) > > > > diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index > > ffdff1f0a3..aa1b4a6e6b 100644 > > --- a/xen/arch/arm/Kconfig > > +++ b/xen/arch/arm/Kconfig > > @@ -141,6 +141,7 @@ config HAS_ITS > > > > config OVERLAY_DTB > > bool "DTB overlay support (UNSUPPORTED)" if UNSUPPORTED > > + depends on SYSCTL > > help > > Dynamic addition/removal of Xen device tree nodes using a dtbo. > > > > diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile index > > 4837ad467a..7c6015b84d 100644 > > --- a/xen/arch/arm/Makefile > > +++ b/xen/arch/arm/Makefile > > @@ -54,7 +54,7 @@ obj-y += smpboot.o > > obj-$(CONFIG_STATIC_EVTCHN) += static-evtchn.init.o > > obj-$(CONFIG_STATIC_MEMORY) += static-memory.init.o > > obj-$(CONFIG_STATIC_SHM) += static-shmem.init.o -obj-y += sysctl.o > > +obj-$(CONFIG_SYSCTL) += sysctl.o > > obj-y += time.o > > obj-y += traps.o > > obj-y += vcpreg.o > > diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c index > > 2d350b700a..32cab4feff 100644 > > --- a/xen/arch/arm/sysctl.c > > +++ b/xen/arch/arm/sysctl.c > > @@ -15,7 +15,6 @@ > > #include <asm/arm64/sve.h> > > #include <public/sysctl.h> > > > > -#ifdef CONFIG_SYSCTL > > void arch_do_physinfo(struct xen_sysctl_physinfo *pi) { > > pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm | > > XEN_SYSCTL_PHYSCAP_hap; @@ -23,7 +22,6 @@ void > arch_do_physinfo(struct xen_sysctl_physinfo *pi) > > pi->arch_capabilities |= MASK_INSR(sve_encode_vl(get_sys_vl_len()), > > > > XEN_SYSCTL_PHYSCAP_ARM_SVE_MASK); } -#endif > > > > long arch_do_sysctl(struct xen_sysctl *sysctl, > > XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl) > > diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c index > > 7b3f748886..ae865e1972 100644 > > --- a/xen/arch/riscv/stubs.c > > +++ b/xen/arch/riscv/stubs.c > > @@ -322,13 +322,13 @@ unsigned long raw_copy_from_guest(void *to, > > const void __user *from, > > > > /* sysctl.c */ > > > > +#ifdef CONFIG_SYSCTL > > long arch_do_sysctl(struct xen_sysctl *sysctl, > > XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl) { > > BUG_ON("unimplemented"); > > } > > > > -#ifdef CONFIG_SYSCTL > > void arch_do_physinfo(struct xen_sysctl_physinfo *pi) { > > BUG_ON("unimplemented"); > > diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index > > f59c9665fd..837eafcbc0 100644 > > --- a/xen/arch/x86/Makefile > > +++ b/xen/arch/x86/Makefile > > @@ -79,7 +79,7 @@ ifneq ($(CONFIG_PV_SHIM_EXCLUSIVE),y) obj-y += > > domctl.o obj-y += platform_hypercall.o > > obj-$(CONFIG_COMPAT) += x86_64/platform_hypercall.o -obj-y += > > sysctl.o > > +obj-$(CONFIG_SYSCTL) += sysctl.o > > endif > > I think I had indicated before that this shouldn't stay inside the > conditional, but > move back up. Whether that is to happen here or while addressing my respective > comment on patch 01 I can't easily tell. > We want that "PV_SHIM_EXCLUSIVE likely wants / needs sorting as a prereq anyway", does the prereq here mean that prereq in kconfig, something like ``` config SYSCTL depends on xxx ``` > > --- a/xen/common/sysctl.c > > +++ b/xen/common/sysctl.c > > @@ -490,8 +490,10 @@ long > do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl) > > break; > > > > default: > > +#ifdef CONFIG_SYSCTL > > ret = arch_do_sysctl(op, u_sysctl); > > copyback = 0; > > +#endif > > break; > > } > > This isn't enough. "ret" is 0 when reaching the default: label, but may not > stay 0 for > the return from the function. I understand (expect) this is going to be > dropped > again in the next patch, but even if only transiently needed this should be > kept > correct imo. Things might be different if patch 02 introduced the option > without a > prompt, i.e. always enabled. Then all the #ifdef-ary added up to here would be > merely syntactic sugar. In fact in that case you could omit all the transient > #ifdef > that the last patch is going to remove again. Please consider going that > route. > > Otherwise I think the #endif also needs moving up, for copyback to still be > cleared > here. > I'll change it to as follows to complement case for CONFIG_SYSCTL==n, plz correct me if I understand wrongly here: ``` default: +#ifdef CONFIG_SYSCTL ret = arch_do_sysctl(op, u_sysctl); +#else + ret = -EOPNOTSUPP; +#endif copyback = 0; break; ``` > Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |