xen/arm: introduce new xen,enhanced property value

Introduce a new "xen,enhanced" dom0less property value "no-xenstore" to
disable xenstore interface for dom0less guests.

Signed-off-by: Rahul Singh <rahul.singh@arm.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
Rahul Singh authored and Julien Grall committed 2022-09-08 12:21:59 +01:00
1 parent 7ba046a538
commit 4a6d155a84
3 files changed
+31 -6

No files matched your search

+4
View File
@@ -204,6 +204,10 @@ with the following properties:
- "disabled"
Xen PV interfaces are disabled.
- "no-xenstore"
All default Xen PV interfaces, including grant-table will be enabled but
xenstore will be disabled for the VM.
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.
+6 -4
View File
@@ -2891,7 +2891,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
goto err;
}
if ( kinfo->dom0less_enhanced )
if ( kinfo->dom0less_feature & DOM0LESS_ENHANCED_NO_XS )
{
ret = make_hypervisor_node(d, kinfo, addrcells, sizecells);
if ( ret )
@@ -3209,10 +3209,12 @@ static int __init construct_domU(struct domain *d,
(rc == 0 && !strcmp(dom0less_enhanced, "enabled")) )
{
if ( hardware_domain )
kinfo.dom0less_enhanced = true;
kinfo.dom0less_feature = DOM0LESS_ENHANCED;
else
panic("Tried to use xen,enhanced without dom0\n");
panic("At the moment, Xenstore support requires dom0 to be present\n");
}
else if ( rc == 0 && !strcmp(dom0less_enhanced, "no-xenstore") )
kinfo.dom0less_feature = DOM0LESS_ENHANCED_NO_XS;
if ( vcpu_create(d, 0) == NULL )
return -ENOMEM;
@@ -3252,7 +3254,7 @@ static int __init construct_domU(struct domain *d,
if ( rc < 0 )
return rc;
if ( kinfo.dom0less_enhanced )
if ( kinfo.dom0less_feature & DOM0LESS_XENSTORE )
{
ASSERT(hardware_domain);
rc = alloc_xenstore_evtchn(d);
+21 -2
View File
@@ -9,6 +9,25 @@
#include <xen/device_tree.h>
#include <asm/setup.h>
/*
* List of possible features for dom0less domUs
*
* DOM0LESS_ENHANCED_NO_XS: Notify the OS it is running on top of Xen. All the
* default features (excluding Xenstore) will be
* available. Note that an OS *must* not rely on the
* availability of Xen features if this is not set.
* DOM0LESS_XENSTORE: Xenstore will be enabled for the VM. This feature
* can't be enabled without the
* DOM0LESS_ENHANCED_NO_XS.
* DOM0LESS_ENHANCED: Notify the OS it is running on top of Xen. All the
* default features (including Xenstore) will be
* available. Note that an OS *must* not rely on the
* availability of Xen features if this is not set.
*/
#define DOM0LESS_ENHANCED_NO_XS BIT(0, U)
#define DOM0LESS_XENSTORE BIT(1, U)
#define DOM0LESS_ENHANCED (DOM0LESS_ENHANCED_NO_XS | DOM0LESS_XENSTORE)
struct kernel_info {
#ifdef CONFIG_ARM_64
enum domain_type type;
@@ -36,8 +55,8 @@ struct kernel_info {
/* Enable pl011 emulation */
bool vpl011;
/* Enable PV drivers */
bool dom0less_enhanced;
/* Enable/Disable PV drivers interfaces */
uint16_t dom0less_feature;
/* GIC phandle */
uint32_t phandle_gic;
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.