xen: add kconfig for event_fifo

Evtchn fifos are not needed on smaller systems; the older interface is
lightweight and sufficient. Also, event_fifo causes runtime anonymous
memory allocations, which are undesirable.  Additionally, it exposes an
extra interface to the guest, which is also undesirable unless
necessary.

Make it possible to disable evtchn fifo.

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
Acked-by: Michal Orzel <michal.orzel@amd.com>
This commit is contained in:
Stefano Stabellini committed 2025-04-02 14:59:53 -07:00
1 parent ae5fd39be9
commit cfe15a473d
3 files changed
+30 -1

No files matched your search

+14
View File
@@ -23,6 +23,20 @@ config GRANT_TABLE
If unsure, say Y.
config EVTCHN_FIFO
bool "Event Channel Fifo support" if EXPERT
default y
help
The Event channel Fifo extends support for event channels
beyond 1024 event channels for 32-bit guests and 4096 for
64-bit guests.
Cons: They cause runtime anonymous memory allocations and expose
an additional interface to the guest. For smaller systems, you
might consider disabling this feature.
If unsure, say Y.
config PDX_COMPRESSION
bool "PDX (Page inDeX) compression" if EXPERT && !X86 && !RISCV
default ARM || PPC
+1 -1
View File
@@ -13,7 +13,7 @@ obj-$(CONFIG_IOREQ_SERVER) += dm.o
obj-y += domain.o
obj-y += event_2l.o
obj-y += event_channel.o
obj-y += event_fifo.o
obj-$(CONFIG_EVTCHN_FIFO) += event_fifo.o
obj-$(CONFIG_GRANT_TABLE) += grant_table.o
obj-y += guestcopy.o
obj-y += gzip/
+15
View File
@@ -45,12 +45,27 @@ void evtchn_2l_init(struct domain *d);
/* FIFO */
#ifdef CONFIG_EVTCHN_FIFO
struct evtchn_init_control;
struct evtchn_expand_array;
int evtchn_fifo_init_control(struct evtchn_init_control *init_control);
int evtchn_fifo_expand_array(const struct evtchn_expand_array *expand_array);
void evtchn_fifo_destroy(struct domain *d);
#else
static inline int evtchn_fifo_init_control(struct evtchn_init_control *init_control)
{
return -EOPNOTSUPP;
}
static inline int evtchn_fifo_expand_array(const struct evtchn_expand_array *expand_array)
{
return -EOPNOTSUPP;
}
static inline void evtchn_fifo_destroy(struct domain *d)
{
return;
}
#endif /* CONFIG_EVTCHN_FIFO */
/*
* Local variables:
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.