From: Aravindh Puthiyaparambil <aravindp@cisco.com>
To: xen-devel@lists.xenproject.org
Cc: Ian Jackson <ian.jackson@eu.citrix.com>,
Ian Campbell <ian.campbell@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: [PATCH RFC 3/4] tools/libxc: Add APIs to create and get the PV ring page
Date: Mon, 28 Apr 2014 21:45:04 -0700 [thread overview]
Message-ID: <1398746705-6658-4-git-send-email-aravindp@cisco.com> (raw)
In-Reply-To: <1398746705-6658-1-git-send-email-aravindp@cisco.com>
Add two APIs, xc_mem_access_create_ring_page() and
xc_mem_access_get_ring_mfn(). The mem_access listener needs to call
xc_mem_access_create_ring_page() before enabling mem_access for PV
domains. This is not needed for HVM domains as the page is created
during domain creation time. It can then call
xc_mem_access_get_ring_mfn() to get the mfn of the created page to map
in. This is requivalent to xc_get_hvm_param(HVM_PARAM_ACCESS_RING_PFN)
for HVM domains.
Signed-off-by: Aravindh Puthiyaparambil <aravindp@cisco.com>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
---
tools/libxc/xc_mem_access.c | 29 +++++++++++++++++++++++++++++
tools/libxc/xenctrl.h | 17 ++++++++++++++++-
2 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/tools/libxc/xc_mem_access.c b/tools/libxc/xc_mem_access.c
index f436e69..b85af0d 100644
--- a/tools/libxc/xc_mem_access.c
+++ b/tools/libxc/xc_mem_access.c
@@ -97,6 +97,35 @@ int xc_get_mem_access(xc_interface *xch,
return rc;
}
+int xc_mem_access_create_ring_page(xc_interface *xch, domid_t domain_id)
+{
+ xen_mem_access_op_t mao =
+ {
+ .op = XENMEM_access_op_create_ring_page,
+ .domid = domain_id
+ };
+
+ return do_memory_op(xch, XENMEM_access_op, &mao, sizeof(mao));
+}
+
+int xc_mem_access_get_ring_mfn(xc_interface *xch, domid_t domain_id,
+ unsigned long *mfn)
+{
+ int rc;
+ xen_mem_access_op_t mao =
+ {
+ .op = XENMEM_access_op_get_ring_mfn,
+ .domid = domain_id
+ };
+
+ rc = do_memory_op(xch, XENMEM_access_op, &mao, sizeof(mao));
+
+ if ( !rc )
+ *mfn = mao.pfn;
+
+ return rc;
+}
+
/*
* Local variables:
* mode: C
diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h
index 02129f7..a1c743d 100644
--- a/tools/libxc/xenctrl.h
+++ b/tools/libxc/xenctrl.h
@@ -2050,7 +2050,10 @@ int xc_mem_access_resume(xc_interface *xch, domid_t domain_id);
/*
* Set a range of memory to a specific access.
* Allowed types are XENMEM_access_default, XENMEM_access_n, any combination of
- * XENMEM_access_ + (rwx), and XENMEM_access_rx2rw
+ * XENMEM_access_ + (rwx), XENMEM_access_rx2rw and XENMEM_access_n2rwx for HVM
+ * domains.
+ * Allowed types are XENMEM_access_default, XENMEM_access_r, XENMEM_access_rw,
+ * XENMEM_access_rwx and XENMEM_access_rx2rw for PV domains.
*/
int xc_set_mem_access(xc_interface *xch, domid_t domain_id,
xenmem_access_t access, uint64_t first_pfn,
@@ -2062,6 +2065,18 @@ int xc_set_mem_access(xc_interface *xch, domid_t domain_id,
int xc_get_mem_access(xc_interface *xch, domid_t domain_id,
uint64_t pfn, xenmem_access_t *access);
+/*
+ * Create the ring page for PV domains. This has to be called before calling
+ * xc_mem_access_enable(). This should not be called for HVM domains
+ */
+int xc_mem_access_create_ring_page(xc_interface *xch, domid_t domain_id);
+
+/*
+ * Get the mfn of the ring page for PV domains
+ */
+int xc_mem_access_get_ring_mfn(xc_interface *xch, domid_t domain_id,
+ unsigned long *mfn);
+
/***
* Memory sharing operations.
*
--
1.9.1
next prev parent reply other threads:[~2014-04-29 4:45 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-29 4:45 [PATCH RFC 0/4] Add mem_access support for PV domains Aravindh Puthiyaparambil
2014-04-29 4:45 ` [PATCH RFC 1/4] x86/mm: Shadow and p2m changes for PV mem_access Aravindh Puthiyaparambil
2014-04-29 8:50 ` Jan Beulich
2014-04-29 23:10 ` Aravindh Puthiyaparambil (aravindp)
2014-04-30 6:32 ` Jan Beulich
2014-04-30 22:20 ` Aravindh Puthiyaparambil (aravindp)
2014-05-01 1:11 ` Andres Lagar-Cavilla
2014-05-01 3:18 ` Aravindh Puthiyaparambil (aravindp)
2014-05-01 14:18 ` Tim Deegan
2014-05-01 19:14 ` Aravindh Puthiyaparambil (aravindp)
2014-05-08 12:44 ` Tim Deegan
2014-05-02 8:26 ` Jan Beulich
2014-05-02 16:28 ` Aravindh Puthiyaparambil (aravindp)
2014-04-29 12:05 ` Tamas Lengyel
2014-04-29 23:36 ` Aravindh Puthiyaparambil (aravindp)
2014-05-01 14:39 ` Tim Deegan
2014-05-01 19:26 ` Aravindh Puthiyaparambil (aravindp)
2014-04-29 4:45 ` [PATCH RFC 2/4] x86/mem_access: mem_access and mem_event changes to support PV domains Aravindh Puthiyaparambil
2014-04-29 4:45 ` Aravindh Puthiyaparambil [this message]
2014-05-02 12:41 ` [PATCH RFC 3/4] tools/libxc: Add APIs to create and get the PV ring page Ian Campbell
2014-04-29 4:45 ` [PATCH RFC 4/4] tool/xen-access: Add support for PV domains Aravindh Puthiyaparambil
2014-05-02 12:43 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1398746705-6658-4-git-send-email-aravindp@cisco.com \
--to=aravindp@cisco.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).