xen/arch/arm/Kconfig | 8 --------
xen/arch/arm/Makefile | 1 -
xen/arch/arm/setup.c | 2 +-
xen/common/Kconfig | 8 ++++++++
xen/common/device-tree/Makefile | 1 +
xen/{arch/arm => common/device-tree}/static-evtchn.c | 3 +--
xen/{arch/arm/include/asm => include/xen}/static-evtchn.h | 6 +++---
7 files changed, 14 insertions(+), 15 deletions(-)
rename xen/{arch/arm => common/device-tree}/static-evtchn.c (99%)
rename xen/{arch/arm/include/asm => include/xen}/static-evtchn.h (77%)
There's nothing Arm specific about this feature. Move it to common as
part of a larger activity to commonalize device tree related features.
For now, select it only for ARM until others (e.g. RISC-V) verify it
works for them too.
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Other candidates: static memory, shared memory
---
xen/arch/arm/Kconfig | 8 --------
xen/arch/arm/Makefile | 1 -
xen/arch/arm/setup.c | 2 +-
xen/common/Kconfig | 8 ++++++++
xen/common/device-tree/Makefile | 1 +
xen/{arch/arm => common/device-tree}/static-evtchn.c | 3 +--
xen/{arch/arm/include/asm => include/xen}/static-evtchn.h | 6 +++---
7 files changed, 14 insertions(+), 15 deletions(-)
rename xen/{arch/arm => common/device-tree}/static-evtchn.c (99%)
rename xen/{arch/arm/include/asm => include/xen}/static-evtchn.h (77%)
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index a5aad97a688e..57919d8b3ac8 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -253,14 +253,6 @@ config STATIC_SHM
help
This option enables statically shared memory on a dom0less system.
-config STATIC_EVTCHN
- bool "Static event channel support on a dom0less system"
- depends on DOM0LESS_BOOT
- default y
- help
- This option enables establishing static event channel communication
- between domains on a dom0less system (domU-domU as well as domU-dom0).
-
config PARTIAL_EMULATION
bool "Enable partial emulation of system/coprocessor registers"
default y
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 129a109d6ec5..eeeac4e653ec 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -51,7 +51,6 @@ obj-y += setup.o
obj-y += shutdown.o
obj-y += smp.o
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
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 10b46d068405..734e23da4408 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -31,6 +31,7 @@
#include <xen/version.h>
#include <xen/vmap.h>
#include <xen/stack-protector.h>
+#include <xen/static-evtchn.h>
#include <xen/trace.h>
#include <xen/libfdt/libfdt-xen.h>
#include <xen/acpi.h>
@@ -39,7 +40,6 @@
#include <asm/alternative.h>
#include <asm/dom0less-build.h>
#include <asm/page.h>
-#include <asm/static-evtchn.h>
#include <asm/current.h>
#include <asm/setup.h>
#include <asm/gic.h>
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 3d66d0939738..0951d4c2f286 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -162,6 +162,14 @@ config STATIC_MEMORY
If unsure, say N.
+config STATIC_EVTCHN
+ bool "Static event channel support on a dom0less system"
+ depends on DOM0LESS_BOOT && ARM
+ default y
+ help
+ This option enables establishing static event channel communication
+ between domains on a dom0less system (domU-domU as well as domU-dom0).
+
menu "Speculative hardening"
config INDIRECT_THUNK
diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makefile
index 831b91399b74..2df7eb27222e 100644
--- a/xen/common/device-tree/Makefile
+++ b/xen/common/device-tree/Makefile
@@ -6,3 +6,4 @@ obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-build.o
obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
obj-y += intc.o
obj-$(CONFIG_DOMAIN_BUILD_HELPERS) += kernel.o
+obj-$(CONFIG_STATIC_EVTCHN) += static-evtchn.init.o
diff --git a/xen/arch/arm/static-evtchn.c b/xen/common/device-tree/static-evtchn.c
similarity index 99%
rename from xen/arch/arm/static-evtchn.c
rename to xen/common/device-tree/static-evtchn.c
index 49db08d5c6fc..8b82e6b3d8a6 100644
--- a/xen/arch/arm/static-evtchn.c
+++ b/xen/common/device-tree/static-evtchn.c
@@ -1,8 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <xen/event.h>
-
-#include <asm/static-evtchn.h>
+#include <xen/static-evtchn.h>
#define STATIC_EVTCHN_NODE_SIZE_CELLS 2
diff --git a/xen/arch/arm/include/asm/static-evtchn.h b/xen/include/xen/static-evtchn.h
similarity index 77%
rename from xen/arch/arm/include/asm/static-evtchn.h
rename to xen/include/xen/static-evtchn.h
index f964522f6a62..31ae92741aad 100644
--- a/xen/arch/arm/include/asm/static-evtchn.h
+++ b/xen/include/xen/static-evtchn.h
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_STATIC_EVTCHN_H_
-#define __ASM_STATIC_EVTCHN_H_
+#ifndef XEN_STATIC_EVTCHN_H
+#define XEN_STATIC_EVTCHN_H
#ifdef CONFIG_STATIC_EVTCHN
@@ -13,7 +13,7 @@ static inline void alloc_static_evtchn(void) {};
#endif /* CONFIG_STATIC_EVTCHN */
-#endif /* __ASM_STATIC_EVTCHN_H_ */
+#endif /* XEN_STATIC_EVTCHN_H */
/*
* Local variables:
--
2.25.1
On 27.05.2025 10:21, Michal Orzel wrote: > There's nothing Arm specific about this feature. Move it to common as > part of a larger activity to commonalize device tree related features. > For now, select it only for ARM until others (e.g. RISC-V) verify it > works for them too. > > Signed-off-by: Michal Orzel <michal.orzel@amd.com> I realize this was already committed, but ... > --- a/xen/common/Kconfig > +++ b/xen/common/Kconfig > @@ -162,6 +162,14 @@ config STATIC_MEMORY > > If unsure, say N. > > +config STATIC_EVTCHN > + bool "Static event channel support on a dom0less system" > + depends on DOM0LESS_BOOT && ARM ... I think we should strive to avoid such arch dependencies; they simply don't scale very well. Instead (if needed) HAS_* should be introduced, which each interested arch can select. In the case here, however, perhaps DOM0LESS_BOOT alone would have been sufficient as a dependency? Jan
On 02/06/2025 10:37, Jan Beulich wrote: > On 27.05.2025 10:21, Michal Orzel wrote: >> There's nothing Arm specific about this feature. Move it to common as >> part of a larger activity to commonalize device tree related features. >> For now, select it only for ARM until others (e.g. RISC-V) verify it >> works for them too. >> >> Signed-off-by: Michal Orzel <michal.orzel@amd.com> > > I realize this was already committed, but ... > >> --- a/xen/common/Kconfig >> +++ b/xen/common/Kconfig >> @@ -162,6 +162,14 @@ config STATIC_MEMORY >> >> If unsure, say N. >> >> +config STATIC_EVTCHN >> + bool "Static event channel support on a dom0less system" >> + depends on DOM0LESS_BOOT && ARM > > ... I think we should strive to avoid such arch dependencies; they simply > don't scale very well. Instead (if needed) HAS_* should be introduced, which > each interested arch can select. In the case here, however, perhaps > DOM0LESS_BOOT alone would have been sufficient as a dependency? What if e.g. RISC-V wants to enable dom0less but not static evtchn/memory/shmem because there are some functions to be implemented and they don't want to do it now? Protecting with just DOM0LESS_BOOT would not be sufficient here. I understand we could define HAS_*. I did not think about it. ~Michal
On 03.06.2025 08:54, Orzel, Michal wrote: > > > On 02/06/2025 10:37, Jan Beulich wrote: >> On 27.05.2025 10:21, Michal Orzel wrote: >>> There's nothing Arm specific about this feature. Move it to common as >>> part of a larger activity to commonalize device tree related features. >>> For now, select it only for ARM until others (e.g. RISC-V) verify it >>> works for them too. >>> >>> Signed-off-by: Michal Orzel <michal.orzel@amd.com> >> >> I realize this was already committed, but ... >> >>> --- a/xen/common/Kconfig >>> +++ b/xen/common/Kconfig >>> @@ -162,6 +162,14 @@ config STATIC_MEMORY >>> >>> If unsure, say N. >>> >>> +config STATIC_EVTCHN >>> + bool "Static event channel support on a dom0less system" >>> + depends on DOM0LESS_BOOT && ARM >> >> ... I think we should strive to avoid such arch dependencies; they simply >> don't scale very well. Instead (if needed) HAS_* should be introduced, which >> each interested arch can select. In the case here, however, perhaps >> DOM0LESS_BOOT alone would have been sufficient as a dependency? > What if e.g. RISC-V wants to enable dom0less but not static evtchn/memory/shmem > because there are some functions to be implemented and they don't want to do it > now? Protecting with just DOM0LESS_BOOT would not be sufficient here. Imo a transient(!) "depends on !RISCV" would in principle be fine, if ... > I understand we could define HAS_*. I did not think about it. ... we don't want to go this route. Jan
On 03/06/2025 09:02, Jan Beulich wrote: > On 03.06.2025 08:54, Orzel, Michal wrote: >> >> >> On 02/06/2025 10:37, Jan Beulich wrote: >>> On 27.05.2025 10:21, Michal Orzel wrote: >>>> There's nothing Arm specific about this feature. Move it to common as >>>> part of a larger activity to commonalize device tree related features. >>>> For now, select it only for ARM until others (e.g. RISC-V) verify it >>>> works for them too. >>>> >>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com> >>> >>> I realize this was already committed, but ... >>> >>>> --- a/xen/common/Kconfig >>>> +++ b/xen/common/Kconfig >>>> @@ -162,6 +162,14 @@ config STATIC_MEMORY >>>> >>>> If unsure, say N. >>>> >>>> +config STATIC_EVTCHN >>>> + bool "Static event channel support on a dom0less system" >>>> + depends on DOM0LESS_BOOT && ARM >>> >>> ... I think we should strive to avoid such arch dependencies; they simply >>> don't scale very well. Instead (if needed) HAS_* should be introduced, which >>> each interested arch can select. In the case here, however, perhaps >>> DOM0LESS_BOOT alone would have been sufficient as a dependency? >> What if e.g. RISC-V wants to enable dom0less but not static evtchn/memory/shmem >> because there are some functions to be implemented and they don't want to do it >> now? Protecting with just DOM0LESS_BOOT would not be sufficient here. > > Imo a transient(!) "depends on !RISCV" would in principle be fine, if ... In this case, how can I know that upfront? When moving a feature I need to put some dependencies. At that point I don't know RISCV, PPC plans. The only thing I know is that I tested this feature on Arm. So the only meaningful dependency is & ARM. ~Michal
On 03.06.2025 09:06, Orzel, Michal wrote: > > > On 03/06/2025 09:02, Jan Beulich wrote: >> On 03.06.2025 08:54, Orzel, Michal wrote: >>> >>> >>> On 02/06/2025 10:37, Jan Beulich wrote: >>>> On 27.05.2025 10:21, Michal Orzel wrote: >>>>> There's nothing Arm specific about this feature. Move it to common as >>>>> part of a larger activity to commonalize device tree related features. >>>>> For now, select it only for ARM until others (e.g. RISC-V) verify it >>>>> works for them too. >>>>> >>>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com> >>>> >>>> I realize this was already committed, but ... >>>> >>>>> --- a/xen/common/Kconfig >>>>> +++ b/xen/common/Kconfig >>>>> @@ -162,6 +162,14 @@ config STATIC_MEMORY >>>>> >>>>> If unsure, say N. >>>>> >>>>> +config STATIC_EVTCHN >>>>> + bool "Static event channel support on a dom0less system" >>>>> + depends on DOM0LESS_BOOT && ARM >>>> >>>> ... I think we should strive to avoid such arch dependencies; they simply >>>> don't scale very well. Instead (if needed) HAS_* should be introduced, which >>>> each interested arch can select. In the case here, however, perhaps >>>> DOM0LESS_BOOT alone would have been sufficient as a dependency? >>> What if e.g. RISC-V wants to enable dom0less but not static evtchn/memory/shmem >>> because there are some functions to be implemented and they don't want to do it >>> now? Protecting with just DOM0LESS_BOOT would not be sufficient here. >> >> Imo a transient(!) "depends on !RISCV" would in principle be fine, if ... > In this case, how can I know that upfront? When moving a feature I need to put > some dependencies. At that point I don't know RISCV, PPC plans. You don't need to know this up front, do you? Neither of the two presently selects DOM0LESS_BOOT afaict, and hence such a transient negative dependency would (if necessary in the first place) be added when adding such a select. Jan
On 03/06/2025 09:09, Jan Beulich wrote: > On 03.06.2025 09:06, Orzel, Michal wrote: >> >> >> On 03/06/2025 09:02, Jan Beulich wrote: >>> On 03.06.2025 08:54, Orzel, Michal wrote: >>>> >>>> >>>> On 02/06/2025 10:37, Jan Beulich wrote: >>>>> On 27.05.2025 10:21, Michal Orzel wrote: >>>>>> There's nothing Arm specific about this feature. Move it to common as >>>>>> part of a larger activity to commonalize device tree related features. >>>>>> For now, select it only for ARM until others (e.g. RISC-V) verify it >>>>>> works for them too. >>>>>> >>>>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com> >>>>> >>>>> I realize this was already committed, but ... >>>>> >>>>>> --- a/xen/common/Kconfig >>>>>> +++ b/xen/common/Kconfig >>>>>> @@ -162,6 +162,14 @@ config STATIC_MEMORY >>>>>> >>>>>> If unsure, say N. >>>>>> >>>>>> +config STATIC_EVTCHN >>>>>> + bool "Static event channel support on a dom0less system" >>>>>> + depends on DOM0LESS_BOOT && ARM >>>>> >>>>> ... I think we should strive to avoid such arch dependencies; they simply >>>>> don't scale very well. Instead (if needed) HAS_* should be introduced, which >>>>> each interested arch can select. In the case here, however, perhaps >>>>> DOM0LESS_BOOT alone would have been sufficient as a dependency? >>>> What if e.g. RISC-V wants to enable dom0less but not static evtchn/memory/shmem >>>> because there are some functions to be implemented and they don't want to do it >>>> now? Protecting with just DOM0LESS_BOOT would not be sufficient here. >>> >>> Imo a transient(!) "depends on !RISCV" would in principle be fine, if ... >> In this case, how can I know that upfront? When moving a feature I need to put >> some dependencies. At that point I don't know RISCV, PPC plans. > > You don't need to know this up front, do you? Neither of the two presently selects > DOM0LESS_BOOT afaict, and hence such a transient negative dependency would (if > necessary in the first place) be added when adding such a select. Ok, so basically this should be left to people adding support for DOM0LESS_BOOT for other arches in the future. There is static mem and shmem left to be moved. I think we can squeeze in a patch removing && ARM in this case. ~Michal
On Tue, 27 May 2025, Michal Orzel wrote:
> There's nothing Arm specific about this feature. Move it to common as
> part of a larger activity to commonalize device tree related features.
> For now, select it only for ARM until others (e.g. RISC-V) verify it
> works for them too.
>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
> Other candidates: static memory, shared memory
> ---
> xen/arch/arm/Kconfig | 8 --------
> xen/arch/arm/Makefile | 1 -
> xen/arch/arm/setup.c | 2 +-
> xen/common/Kconfig | 8 ++++++++
> xen/common/device-tree/Makefile | 1 +
> xen/{arch/arm => common/device-tree}/static-evtchn.c | 3 +--
> xen/{arch/arm/include/asm => include/xen}/static-evtchn.h | 6 +++---
> 7 files changed, 14 insertions(+), 15 deletions(-)
> rename xen/{arch/arm => common/device-tree}/static-evtchn.c (99%)
> rename xen/{arch/arm/include/asm => include/xen}/static-evtchn.h (77%)
>
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index a5aad97a688e..57919d8b3ac8 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -253,14 +253,6 @@ config STATIC_SHM
> help
> This option enables statically shared memory on a dom0less system.
>
> -config STATIC_EVTCHN
> - bool "Static event channel support on a dom0less system"
> - depends on DOM0LESS_BOOT
> - default y
> - help
> - This option enables establishing static event channel communication
> - between domains on a dom0less system (domU-domU as well as domU-dom0).
> -
> config PARTIAL_EMULATION
> bool "Enable partial emulation of system/coprocessor registers"
> default y
> diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
> index 129a109d6ec5..eeeac4e653ec 100644
> --- a/xen/arch/arm/Makefile
> +++ b/xen/arch/arm/Makefile
> @@ -51,7 +51,6 @@ obj-y += setup.o
> obj-y += shutdown.o
> obj-y += smp.o
> 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
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 10b46d068405..734e23da4408 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -31,6 +31,7 @@
> #include <xen/version.h>
> #include <xen/vmap.h>
> #include <xen/stack-protector.h>
> +#include <xen/static-evtchn.h>
> #include <xen/trace.h>
> #include <xen/libfdt/libfdt-xen.h>
> #include <xen/acpi.h>
> @@ -39,7 +40,6 @@
> #include <asm/alternative.h>
> #include <asm/dom0less-build.h>
> #include <asm/page.h>
> -#include <asm/static-evtchn.h>
> #include <asm/current.h>
> #include <asm/setup.h>
> #include <asm/gic.h>
> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
> index 3d66d0939738..0951d4c2f286 100644
> --- a/xen/common/Kconfig
> +++ b/xen/common/Kconfig
> @@ -162,6 +162,14 @@ config STATIC_MEMORY
>
> If unsure, say N.
>
> +config STATIC_EVTCHN
> + bool "Static event channel support on a dom0less system"
> + depends on DOM0LESS_BOOT && ARM
> + default y
> + help
> + This option enables establishing static event channel communication
> + between domains on a dom0less system (domU-domU as well as domU-dom0).
> +
> menu "Speculative hardening"
>
> config INDIRECT_THUNK
> diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makefile
> index 831b91399b74..2df7eb27222e 100644
> --- a/xen/common/device-tree/Makefile
> +++ b/xen/common/device-tree/Makefile
> @@ -6,3 +6,4 @@ obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-build.o
> obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
> obj-y += intc.o
> obj-$(CONFIG_DOMAIN_BUILD_HELPERS) += kernel.o
> +obj-$(CONFIG_STATIC_EVTCHN) += static-evtchn.init.o
> diff --git a/xen/arch/arm/static-evtchn.c b/xen/common/device-tree/static-evtchn.c
> similarity index 99%
> rename from xen/arch/arm/static-evtchn.c
> rename to xen/common/device-tree/static-evtchn.c
> index 49db08d5c6fc..8b82e6b3d8a6 100644
> --- a/xen/arch/arm/static-evtchn.c
> +++ b/xen/common/device-tree/static-evtchn.c
> @@ -1,8 +1,7 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
>
> #include <xen/event.h>
> -
> -#include <asm/static-evtchn.h>
> +#include <xen/static-evtchn.h>
>
> #define STATIC_EVTCHN_NODE_SIZE_CELLS 2
>
> diff --git a/xen/arch/arm/include/asm/static-evtchn.h b/xen/include/xen/static-evtchn.h
> similarity index 77%
> rename from xen/arch/arm/include/asm/static-evtchn.h
> rename to xen/include/xen/static-evtchn.h
> index f964522f6a62..31ae92741aad 100644
> --- a/xen/arch/arm/include/asm/static-evtchn.h
> +++ b/xen/include/xen/static-evtchn.h
> @@ -1,7 +1,7 @@
> /* SPDX-License-Identifier: GPL-2.0-only */
>
> -#ifndef __ASM_STATIC_EVTCHN_H_
> -#define __ASM_STATIC_EVTCHN_H_
> +#ifndef XEN_STATIC_EVTCHN_H
> +#define XEN_STATIC_EVTCHN_H
>
> #ifdef CONFIG_STATIC_EVTCHN
>
> @@ -13,7 +13,7 @@ static inline void alloc_static_evtchn(void) {};
>
> #endif /* CONFIG_STATIC_EVTCHN */
>
> -#endif /* __ASM_STATIC_EVTCHN_H_ */
> +#endif /* XEN_STATIC_EVTCHN_H */
>
> /*
> * Local variables:
> --
> 2.25.1
>
© 2016 - 2026 Red Hat, Inc.