Theses are the broad changes needed for a split hardware / control
domain.  I'm mainly focused on the XSM changes, but there are additional
xenstored and init-dom0less changes to make things work.

An earlier posting gave device_model privileges to hardware domain.  For
this posting, it was split out into a new capability.  This way the
operator can choose where to run the device models without making the
hardware domain have the permissions.

The first patch add XSM_HW_PRIV for the hardware hypercalls.  In this
posting, the control domain cannot call these hypercalls.

There is also a new XEN_DOMCTL_CDF_not_hypercall_target flag.  This is
used to mark a domain that cannot be the target of hypercalls.  This is
useful for ensuring a domain has freedom from interference from control
and device model domains.  The control domain can still issue
XSM_DM_PRIV hypercalls.

SILO is changed to allow hardware and xenstore to service domUs.
Xenstore and hardware will use grants for PV interfaces.

xenstored runs in the xenstore domain.  C xenstored is updated to read
the event channel from the domU's grant.  C xenstored must also be used
since it uses grants instead of foreign mapping.

init-dom0less is run from control domain.  auto-introduction of domains
is needed for this to work.  init-dom0less issues xs_introduce_domain
over the xenbus, so it must be functional for control to issue it.

The special casing in "xsm/dummy: Allow HVMOP_get_param for control
domain" is needed for init-dom0less to know if it should or should not
configure xenstore for dom0less xen.enhanced = "no-xenstore".

There are some cosmetic errors from xl related to SYSCTL_physinfo.
libxl: error: libxl_utils.c:818:libxl_cpu_bitmap_alloc: failed to retrieve the 
maximum number of cpus

Jason Andryuk (17):
  xen/xsm: Add XSM_HW_PRIV
  xsm/silo: Support hardware & xenstore domains
  xen: Add DOMAIN_CAPS_DEVICE_MODEL & XEN_DOMCTL_CDF_device_model
  xen: Introduce XEN_DOMCTL_CDF_not_hypercall_target
  xen/dom0less: Workaround XSM for evtchn_alloc_unbound
  xen/xsm: Expand XSM_XS_PRIV for untargetable domains
  xsm/dummy: Allow HVMOP_get_param for control domain
  public/io: xs_wire: Include event channel in interface page
  xen/dom0less: store xenstore event channel in page
  tools/xenstored: Read event channel from xenstored page
  xen: Add capabilities to get_domain_state
  tools/manage: Expose domain capabilities
  tools/xenstored: Delay firing special watches
  tools/xenstored: Auto-introduce domains
  tools/init-dom0less: Factor out xenstore setup
  tools/init-dom0less: Configure already-introduced domains
  tools/init-dom0less: Continue on error

 docs/misc/arm/device-tree/booting.txt   |  6 ++
 tools/helpers/init-dom0less.c           | 78 +++++++++++++++----------
 tools/include/xenmanage.h               | 14 ++++-
 tools/libs/manage/core.c                | 21 +++++--
 tools/ocaml/libs/xc/xenctrl.ml          |  2 +
 tools/ocaml/libs/xc/xenctrl.mli         |  2 +
 tools/xenstored/core.c                  |  7 ++-
 tools/xenstored/core.h                  |  1 +
 tools/xenstored/domain.c                | 65 ++++++++++++++++-----
 tools/xenstored/domain.h                |  2 +-
 xen/arch/arm/domain.c                   |  4 +-
 xen/arch/arm/platform_hypercall.c       |  2 +-
 xen/arch/x86/msi.c                      |  2 +-
 xen/arch/x86/physdev.c                  | 12 ++--
 xen/arch/x86/platform_hypercall.c       |  2 +-
 xen/common/device-tree/dom0less-build.c | 25 ++++++++
 xen/common/domain.c                     | 11 +++-
 xen/drivers/passthrough/pci.c           |  5 +-
 xen/drivers/pci/physdev.c               |  2 +-
 xen/include/public/bootfdt.h            | 18 +++++-
 xen/include/public/domctl.h             | 13 ++++-
 xen/include/public/io/xs_wire.h         |  7 +++
 xen/include/xen/sched.h                 | 21 +++++++
 xen/include/xsm/dummy.h                 | 34 +++++++----
 xen/include/xsm/xsm.h                   |  1 +
 xen/xsm/silo.c                          | 15 ++++-
 26 files changed, 285 insertions(+), 87 deletions(-)

-- 
2.50.0


Reply via email to