[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 7/7] xen/arm: introduce new xen,enhanced property value
Hi Julien, > On 1 Sep 2022, at 19:15, Julien Grall <julien@xxxxxxx> wrote: > > Hi Rahul, > > On 01/09/2022 10:13, Rahul Singh wrote: >> Introduce a new "xen,enhanced" dom0less property value "no-xenstore" to >> disable xenstore interface for dom0less guests. >> Signed-off-by: Rahul Singh <rahul.singh@xxxxxxx> >> --- >> Changes in v3: >> - new patch in this version >> --- >> docs/misc/arm/device-tree/booting.txt | 4 ++++ >> xen/arch/arm/domain_build.c | 10 +++++++--- >> xen/arch/arm/include/asm/kernel.h | 3 +++ >> 3 files changed, 14 insertions(+), 3 deletions(-) >> diff --git a/docs/misc/arm/device-tree/booting.txt >> b/docs/misc/arm/device-tree/booting.txt >> index edef98e6d1..87f57f8889 100644 >> --- a/docs/misc/arm/device-tree/booting.txt >> +++ b/docs/misc/arm/device-tree/booting.txt >> @@ -204,6 +204,10 @@ with the following properties: >> - "disabled" >> Xen PV interfaces are disabled. >> + - no-xenstore >> + Xen PV interfaces, including grant-table will be enabled for the VM but >> + xenstore will be disabled for the VM. > > NIT: I would drop one of the "for the VM" as it seems to be redundant. > >> + >> If the xen,enhanced property is present with no value, it defaults >> to "enabled". If the xen,enhanced property is not present, PV >> interfaces are disabled. >> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c >> index 4b24261825..8dd9984225 100644 >> --- a/xen/arch/arm/domain_build.c >> +++ b/xen/arch/arm/domain_build.c >> @@ -3336,10 +3336,14 @@ static int __init construct_domU(struct domain *d, >> (rc == 0 && !strcmp(dom0less_enhanced, "enabled")) ) >> { >> if ( hardware_domain ) >> - kinfo.dom0less_enhanced = true; >> + kinfo.dom0less_xenstore = true; >> else >> - panic("Tried to use xen,enhanced without dom0\n"); >> + panic("Tried to use xen,enhanced without dom0 without >> no-xenstore\n"); > > This is a bit hard to parse. How about: > > "At the moment, Xenstore support requires dom0 to be present" > >> } >> + else if ( rc == 0 && !strcmp(dom0less_enhanced, "no-xenstore") ) >> + kinfo.dom0less_xenstore = false; >> + >> + kinfo.dom0less_enhanced = true; > > Wouldn't this now set dom0less_enhanced unconditionally? > >> if ( vcpu_create(d, 0) == NULL ) >> return -ENOMEM; >> @@ -3379,7 +3383,7 @@ static int __init construct_domU(struct domain *d, >> if ( rc < 0 ) >> return rc; >> - if ( kinfo.dom0less_enhanced ) >> + if ( kinfo.dom0less_xenstore ) >> { >> ASSERT(hardware_domain); >> rc = alloc_xenstore_evtchn(d); >> diff --git a/xen/arch/arm/include/asm/kernel.h >> b/xen/arch/arm/include/asm/kernel.h >> index c4dc039b54..3d7fa94910 100644 >> --- a/xen/arch/arm/include/asm/kernel.h >> +++ b/xen/arch/arm/include/asm/kernel.h >> @@ -39,6 +39,9 @@ struct kernel_info { >> /* Enable PV drivers */ >> bool dom0less_enhanced; >> + /* Enable Xenstore */ >> + bool dom0less_xenstore; >> + > > AFAIU, it is not possible to have *_xenstore = true and *_enhanced = false. I > think it would be clearer if ``dom0less_enhanced`` is turned to an enum with > 3 values: > - None > - NOXENSTORE/BASIC > - FULLY_ENHANCED > > If we want to be future proof, I would use a field 'flags' where non-zero > means enhanced. Each bit would indicate which features of Xen is exposed. I think that could be a good solution if we do it this way: - define a dom0less feature field and have defines like the following: #define DOM0LESS_GNTTAB #define DOM0LESS_EVENTCHN #define DOM0LESS_XENSTORE - define dom0less enhanced as the right combination: #define DOM0LESS_ENHANCED = (DOM0LESS_GNTTAB| DOM0LESS_EVENTCHN| DOM0LESS_XENSTORE) This way we have a proper feature bitset and ENHANCED is properly defined as a combination of the 3 features. What do you guys think ? Cheers Bertrand > > Cheers, > > -- > Julien Grall
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |