[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v7 2/3] Differentiate IO/mem resources tracked by ioreq server





On 8/21/2015 2:35 PM, Tian, Kevin wrote:
From: Yu Zhang [mailto:yu.c.zhang@xxxxxxxxxxxxxxx]
Sent: Friday, August 21, 2015 11:31 AM

Currently in ioreq server, guest write-protected ram pages are
tracked in the same rangeset with device mmio resources. Yet
unlike device mmio, which can be in big chunks, the guest write-
protected pages may be discrete ranges with 4K bytes each. This
patch uses a seperate rangeset for the guest ram pages.

Note: Previously, a new hypercall or subop was suggested to map
write-protected pages into ioreq server. However, it turned out
handler of this new hypercall would be almost the same with the
existing pair - HVMOP_[un]map_io_range_to_ioreq_server, and there's
already a type parameter in this hypercall. So no new hypercall
defined, only a new type is introduced.

Signed-off-by: Yu Zhang <yu.c.zhang@xxxxxxxxxxxxxxx>
---
  tools/libxc/include/xenctrl.h    | 31 ++++++++++++++++++++
  tools/libxc/xc_domain.c          | 61
++++++++++++++++++++++++++++++++++++++++
  xen/arch/x86/hvm/hvm.c           | 23 ++++++++++++++-
  xen/include/asm-x86/hvm/domain.h |  4 +--
  xen/include/public/hvm/hvm_op.h  |  1 +
  5 files changed, 117 insertions(+), 3 deletions(-)

diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
index de3c0ad..eb1a526 100644
--- a/tools/libxc/include/xenctrl.h
+++ b/tools/libxc/include/xenctrl.h
@@ -2010,6 +2010,37 @@ int
xc_hvm_unmap_io_range_from_ioreq_server(xc_interface *xch,
                                              int is_mmio,
                                              uint64_t start,
                                              uint64_t end);
+/**
+ * This function registers a range of write-protected memory for emulation.
+ *
+ * @parm xch a handle to an open hypervisor interface.
+ * @parm domid the domain id to be serviced
+ * @parm id the IOREQ Server id.
+ * @parm start start of range
+ * @parm end end of range (inclusive).
+ * @return 0 on success, -1 on failure.
+ */
+int xc_hvm_map_mem_range_to_ioreq_server(xc_interface *xch,
+                                         domid_t domid,
+                                         ioservid_t id,
+                                         xen_pfn_t start,
+                                         xen_pfn_t end);
+
+/**
+ * This function deregisters a range of write-protected memory for emulation.
+ *
s>> + * @parm xch a handle to an open hypervisor interface.
+ * @parm domid the domain id to be serviced
+ * @parm id the IOREQ Server id.
+ * @parm start start of range
+ * @parm end end of range (inclusive).
+ * @return 0 on success, -1 on failure.
+ */
+int xc_hvm_unmap_mem_range_from_ioreq_server(xc_interface *xch,
+                                             domid_t domid,
+                                             ioservid_t id,
+                                             xen_pfn_t start,
+                                             xen_pfn_t end);

  /**
   * This function registers a PCI device for config space emulation.
diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
index 2ee26fb..34f138d 100644
--- a/tools/libxc/xc_domain.c
+++ b/tools/libxc/xc_domain.c
@@ -1552,6 +1552,67 @@ int
xc_hvm_unmap_io_range_from_ioreq_server(xc_interface *xch, domid_t domid,
      return rc;
  }

+int xc_hvm_map_mem_range_to_ioreq_server(xc_interface *xch,
+                                         domid_t domid,
+                                         ioservid_t id,
+                                         xen_pfn_t start,
+                                         xen_pfn_t end)
+{

Given that this memory range is write-protected, it might be clearer
to have wp in function name. Otherwise it's easy to mistake the
interface as both r/w covered for the range. Or if you want this
interface to be more generic, then a flag parameter would be required
to further specify wp attribute.

Thanks
Kevin

Thanks, Kevin. Maybe xc_hvm_[un]map_wp_mem_range_to_ioreq_server
is clearer.

Yu
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.