mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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:
1 parent
7ba046a538
commit
4a6d155a84
3 files changed
+31
-6
No files matched your search
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||