All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: Penny Zheng <Penny.Zheng@amd.com>, xen-devel@lists.xenproject.org
Cc: ray.huang@amd.com, "Stefano Stabellini" <sstabellini@kernel.org>,
	"Julien Grall" <julien@xen.org>,
	"Bertrand Marquis" <bertrand.marquis@arm.com>,
	"Michal Orzel" <michal.orzel@amd.com>,
	"Volodymyr Babchuk" <Volodymyr_Babchuk@epam.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Anthony PERARD" <anthony.perard@vates.tech>,
	"Jan Beulich" <jbeulich@suse.com>,
	"Roger Pau Monné" <roger.pau@citrix.com>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Bob Eshleman" <bobbyeshleman@gmail.com>,
	"Connor Davis" <connojdavis@gmail.com>,
	"Stefano Stabellini" <stefano.stabellini@amd.com>,
	"Sergiy Kibrik" <Sergiy_Kibrik@epam.com>
Subject: Re: [PATCH v2 18/19] xen/sysctl: wrap around arch-specific arch_do_sysctl
Date: Thu, 27 Mar 2025 10:39:05 +0100	[thread overview]
Message-ID: <dd9731ce-3cf4-46ce-8f3c-e40b09d76313@gmail.com> (raw)
In-Reply-To: <20250326055053.3313146-19-Penny.Zheng@amd.com>

[-- Attachment #1: Type: text/plain, Size: 8891 bytes --]


On 3/26/25 6:50 AM, 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@amd.com>
> Signed-off-by: Sergiy Kibrik<Sergiy_Kibrik@epam.com>
> Signed-off-by: Penny Zheng<Penny.Zheng@amd.com>
> ---
> - 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");
>   }

The same as in the previous patch. We can just drop this function for RISC-V as now we
have CONFIG_SYSCTL. This stub was introduced only to make common code build for RISC-V happy.

Thanks.

~ Oleksii

>   
> -#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
>   
>   extra-y += asm-macros.i
> diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c
> index 5815a35335..499d320e61 100644
> --- a/xen/arch/x86/psr.c
> +++ b/xen/arch/x86/psr.c
> @@ -133,9 +133,11 @@ static const struct feat_props {
>        */
>       enum psr_type alt_type;
>   
> +#ifdef CONFIG_SYSCTL
>       /* get_feat_info is used to return feature HW info through sysctl. */
>       bool (*get_feat_info)(const struct feat_node *feat,
>                             uint32_t data[], unsigned int array_len);
> +#endif
>   
>       /* write_msr is used to write out feature MSR register. */
>       void (*write_msr)(unsigned int cos, uint32_t val, enum psr_type type);
> @@ -418,6 +420,7 @@ static bool mba_init_feature(const struct cpuid_leaf *regs,
>       return true;
>   }
>   
> +#ifdef CONFIG_SYSCTL
>   static bool cf_check cat_get_feat_info(
>       const struct feat_node *feat, uint32_t data[], unsigned int array_len)
>   {
> @@ -430,6 +433,7 @@ static bool cf_check cat_get_feat_info(
>   
>       return true;
>   }
> +#endif /* CONFIG_SYSCTL */
>   
>   /* L3 CAT props */
>   static void cf_check l3_cat_write_msr(
> @@ -442,11 +446,14 @@ static const struct feat_props l3_cat_props = {
>       .cos_num = 1,
>       .type[0] = PSR_TYPE_L3_CBM,
>       .alt_type = PSR_TYPE_UNKNOWN,
> +#ifdef CONFIG_SYSCTL
>       .get_feat_info = cat_get_feat_info,
> +#endif
>       .write_msr = l3_cat_write_msr,
>       .sanitize = cat_check_cbm,
>   };
>   
> +#ifdef CONFIG_SYSCTL
>   /* L3 CDP props */
>   static bool cf_check l3_cdp_get_feat_info(
>       const struct feat_node *feat, uint32_t data[], uint32_t array_len)
> @@ -458,6 +465,7 @@ static bool cf_check l3_cdp_get_feat_info(
>   
>       return true;
>   }
> +#endif /* CONFIG_SYSCTL */
>   
>   static void cf_check l3_cdp_write_msr(
>       unsigned int cos, uint32_t val, enum psr_type type)
> @@ -473,7 +481,9 @@ static const struct feat_props l3_cdp_props = {
>       .type[0] = PSR_TYPE_L3_DATA,
>       .type[1] = PSR_TYPE_L3_CODE,
>       .alt_type = PSR_TYPE_L3_CBM,
> +#ifdef CONFIG_SYSCTL
>       .get_feat_info = l3_cdp_get_feat_info,
> +#endif
>       .write_msr = l3_cdp_write_msr,
>       .sanitize = cat_check_cbm,
>   };
> @@ -489,11 +499,14 @@ static const struct feat_props l2_cat_props = {
>       .cos_num = 1,
>       .type[0] = PSR_TYPE_L2_CBM,
>       .alt_type = PSR_TYPE_UNKNOWN,
> +#ifdef CONFIG_SYSCTL
>       .get_feat_info = cat_get_feat_info,
> +#endif
>       .write_msr = l2_cat_write_msr,
>       .sanitize = cat_check_cbm,
>   };
>   
> +#ifdef CONFIG_SYSCTL
>   /* MBA props */
>   static bool cf_check mba_get_feat_info(
>       const struct feat_node *feat, uint32_t data[], unsigned int array_len)
> @@ -508,6 +521,7 @@ static bool cf_check mba_get_feat_info(
>   
>       return true;
>   }
> +#endif /* CONFIG_SYSCTL */
>   
>   static void cf_check mba_write_msr(
>       unsigned int cos, uint32_t val, enum psr_type type)
> @@ -545,7 +559,9 @@ static const struct feat_props mba_props = {
>       .cos_num = 1,
>       .type[0] = PSR_TYPE_MBA_THRTL,
>       .alt_type = PSR_TYPE_UNKNOWN,
> +#ifdef CONFIG_SYSCTL
>       .get_feat_info = mba_get_feat_info,
> +#endif
>       .write_msr = mba_write_msr,
>       .sanitize = mba_sanitize_thrtl,
>   };
> @@ -808,6 +824,7 @@ static struct psr_socket_info *get_socket_info(unsigned int socket)
>       return socket_info + socket;
>   }
>   
> +#ifdef CONFIG_SYSCTL
>   int psr_get_info(unsigned int socket, enum psr_type type,
>                    uint32_t data[], unsigned int array_len)
>   {
> @@ -839,6 +856,7 @@ int psr_get_info(unsigned int socket, enum psr_type type,
>   
>       return -EINVAL;
>   }
> +#endif /* CONFIG_SYSCTL */
>   
>   int psr_get_val(struct domain *d, unsigned int socket,
>                   uint32_t *val, enum psr_type type)
> diff --git a/xen/arch/x86/sysctl.c b/xen/arch/x86/sysctl.c
> index d7da476379..1b04947516 100644
> --- a/xen/arch/x86/sysctl.c
> +++ b/xen/arch/x86/sysctl.c
> @@ -91,7 +91,6 @@ static long cf_check smt_up_down_helper(void *data)
>       return ret;
>   }
>   
> -#ifdef CONFIG_SYSCTL
>   void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
>   {
>       memcpy(pi->hw_cap, boot_cpu_data.x86_capability,
> @@ -105,7 +104,6 @@ void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
>       if ( IS_ENABLED(CONFIG_SHADOW_PAGING) )
>           pi->capabilities |= XEN_SYSCTL_PHYSCAP_shadow;
>   }
> -#endif
>   
>   long arch_do_sysctl(
>       struct xen_sysctl *sysctl, XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl)
> diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c
> index 76622503e2..b0e2e43c7e 100644
> --- 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;
>       }
>   

[-- Attachment #2: Type: text/html, Size: 9047 bytes --]

  reply	other threads:[~2025-03-27  9:39 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-26  5:50 [PATCH v2 00/19] xen: introduce CONFIG_SYSCTL Penny Zheng
2025-03-26  5:50 ` [PATCH v2 01/19] xen/x86: remove "depends on !PV_SHIM_EXCLUSIVE" Penny Zheng
2025-03-28 23:56   ` Stefano Stabellini
2025-03-31  6:29     ` Jan Beulich
2025-04-01  8:41       ` Penny, Zheng
2025-04-01  9:01         ` Jan Beulich
2025-04-01  9:57           ` Penny, Zheng
2025-03-26  5:50 ` [PATCH v2 02/19] xen: introduce CONFIG_SYSCTL Penny Zheng
2025-03-27  9:57   ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 03/19] xen/xsm: wrap around xsm_sysctl with CONFIG_SYSCTL Penny Zheng
2025-03-29  0:06   ` Stefano Stabellini
2025-03-26  5:50 ` [PATCH v2 04/19] xen/sysctl: wrap around XEN_SYSCTL_readconsole Penny Zheng
2025-03-29  0:07   ` Stefano Stabellini
2025-04-01 12:24   ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 05/19] xen/sysctl: make CONFIG_TRACEBUFFER depend on CONFIG_SYSCTL Penny Zheng
2025-03-26  5:50 ` [PATCH v2 06/19] xen/sysctl: wrap around XEN_SYSCTL_sched_id Penny Zheng
2025-04-01 12:27   ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 07/19] xen/sysctl: wrap around XEN_SYSCTL_perfc_op Penny Zheng
2025-03-29  0:07   ` Stefano Stabellini
2025-03-26  5:50 ` [PATCH v2 08/19] xen/sysctl: wrap around XEN_SYSCTL_lockprof_op Penny Zheng
2025-03-29  0:07   ` Stefano Stabellini
2025-04-01 12:36   ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 09/19] xen/pmstat: clean up pmstat.c Penny Zheng
2025-03-29  0:41   ` Stefano Stabellini
2025-04-01 12:55   ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 10/19] xen/sysctl: introduce CONFIG_PM_STATS Penny Zheng
2025-03-29  0:35   ` Stefano Stabellini
2025-04-01 13:09   ` Jan Beulich
2025-04-16  3:54     ` Penny, Zheng
2025-04-16  6:37       ` Jan Beulich
2025-04-16  8:38         ` Penny, Zheng
2025-04-16  8:45           ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 11/19] xen/sysctl: wrap around XEN_SYSCTL_page_offline_op Penny Zheng
2025-03-26  5:50 ` [PATCH v2 12/19] xen/sysctl: wrap around XEN_SYSCTL_cpupool_op Penny Zheng
2025-03-26  5:50 ` [PATCH v2 13/19] xen/sysctl: wrap around XEN_SYSCTL_scheduler_op Penny Zheng
2025-03-26 15:22   ` Stewart Hildebrand
2025-03-26  5:50 ` [PATCH v2 14/19] xen: make avail_domheap_pages() static Penny Zheng
2025-03-29  0:11   ` Stefano Stabellini
2025-03-31  6:33   ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 15/19] xen/sysctl: wrap around XEN_SYSCTL_physinfo Penny Zheng
2025-03-27  9:35   ` Oleksii Kurochko
2025-03-27  9:58     ` Jan Beulich
2025-03-27 10:25       ` Oleksii Kurochko
2025-03-29  0:13   ` Stefano Stabellini
2025-04-01 14:29     ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 16/19] xen/sysctl: make CONFIG_COVERAGE depend on CONFIG_SYSCTL Penny Zheng
2025-03-26  5:50 ` [PATCH v2 17/19] xen/sysctl: make CONFIG_LIVEPATCH " Penny Zheng
2025-03-26  5:50 ` [PATCH v2 18/19] xen/sysctl: wrap around arch-specific arch_do_sysctl Penny Zheng
2025-03-27  9:39   ` Oleksii Kurochko [this message]
2025-03-29  0:21   ` Stefano Stabellini
2025-04-01 14:46   ` Jan Beulich
2025-04-18  9:46     ` Penny, Zheng
2025-04-22  6:50       ` Jan Beulich
2025-03-26  5:50 ` [PATCH v2 19/19] xen/sysctl: wrap around sysctl hypercall Penny Zheng
2025-04-01 14:49   ` Jan Beulich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dd9731ce-3cf4-46ce-8f3c-e40b09d76313@gmail.com \
    --to=oleksii.kurochko@gmail.com \
    --cc=Penny.Zheng@amd.com \
    --cc=Sergiy_Kibrik@epam.com \
    --cc=Volodymyr_Babchuk@epam.com \
    --cc=alistair.francis@wdc.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@vates.tech \
    --cc=bertrand.marquis@arm.com \
    --cc=bobbyeshleman@gmail.com \
    --cc=connojdavis@gmail.com \
    --cc=jbeulich@suse.com \
    --cc=julien@xen.org \
    --cc=michal.orzel@amd.com \
    --cc=ray.huang@amd.com \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=stefano.stabellini@amd.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.