[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH 1/1] xsm: allows system domains to allocate evtchn
On Mon, 28 Mar 2022, Daniel P. Smith wrote: > During domain construction under dom0less and hyperlaunch it is necessary to > allocate at least the event channel for xenstore and potentially the event > channel for the core console. When dom0less and hyperlaunch are doing their > construction logic they are executing under the idle domain context. The idle > domain is not a privileged domain, it is not the target domain, and as a > result > under the current default XSM policy is not allowed to allocate the event > channel. > > This patch only addresses the event channel situation by adjust the default > XSM > policy for xsm_evtchn_unbound to explicitly allow system domains to be able to > make the allocation call. > > Signed-off-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> Tested-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > xen/common/event_channel.c | 4 ++-- > xen/include/xsm/dummy.h | 8 ++++++-- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c > index ffb042a241..c9c3876ee9 100644 > --- a/xen/common/event_channel.c > +++ b/xen/common/event_channel.c > @@ -306,7 +306,7 @@ static int evtchn_alloc_unbound(evtchn_alloc_unbound_t > *alloc) > ERROR_EXIT_DOM(port, d); > chn = evtchn_from_port(d, port); > > - rc = xsm_evtchn_unbound(XSM_TARGET, d, chn, alloc->remote_dom); > + rc = xsm_evtchn_unbound(XSM_OTHER, d, chn, alloc->remote_dom); > if ( rc ) > goto out; > > @@ -1366,7 +1366,7 @@ int alloc_unbound_xen_event_channel( > goto out; > chn = evtchn_from_port(ld, port); > > - rc = xsm_evtchn_unbound(XSM_TARGET, ld, chn, remote_domid); > + rc = xsm_evtchn_unbound(XSM_OTHER, ld, chn, remote_domid); > if ( rc ) > goto out; > > diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h > index 58afc1d589..bd31ce43f9 100644 > --- a/xen/include/xsm/dummy.h > +++ b/xen/include/xsm/dummy.h > @@ -294,8 +294,12 @@ static XSM_INLINE int cf_check > xsm_claim_pages(XSM_DEFAULT_ARG struct domain *d) > static XSM_INLINE int cf_check xsm_evtchn_unbound( > XSM_DEFAULT_ARG struct domain *d, struct evtchn *chn, domid_t id2) > { > - XSM_ASSERT_ACTION(XSM_TARGET); > - return xsm_default_action(action, current->domain, d); > + XSM_ASSERT_ACTION(XSM_OTHER); > + > + if ( is_system_domain(current->domain) ) > + return xsm_default_action(XSM_HOOK, current->domain, d); > + else > + return xsm_default_action(XSM_TARGET, current->domain, d); > } > > static XSM_INLINE int cf_check xsm_evtchn_interdomain( > -- > 2.20.1 >
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |