| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
 Re: [Xen-devel] [PATCH 2/8] xen: Use typesafe gfn/mfn in	guest_physmap_* helpers
 
To: Jan Beulich <JBeulich@xxxxxxxx>From: Julien Grall <julien.grall@xxxxxxx>Date: Mon, 20 Jun 2016 12:28:38 +0100Cc: Tim Deegan <tim@xxxxxxx>, sstabellini@xxxxxxxxxx, Wei Liu <wei.liu2@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Ian Jackson <ian.jackson@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxx, Paul Durrant <paul.durrant@xxxxxxxxxx>, wei.chen@xxxxxxxxxxDelivery-date: Mon, 20 Jun 2016 11:28:46 +0000List-id: Xen developer discussion <xen-devel.lists.xen.org> 
 
Hi Jan,
On 14/06/16 13:56, Jan Beulich wrote:
 
On 14.06.16 at 14:07, <julien.grall@xxxxxxx> wrote:
 
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -665,21 +665,21 @@ p2m_remove_page(struct p2m_domain *p2m, unsigned long 
gfn, unsigned long mfn,
  }
  int
-guest_physmap_remove_page(struct domain *d, unsigned long gfn,
-                          unsigned long mfn, unsigned int page_order)
+guest_physmap_remove_page(struct domain *d, gfn_t gfn,
+                          mfn_t mfn, unsigned int page_order)
  {
      struct p2m_domain *p2m = p2m_get_hostp2m(d);
      int rc;
      gfn_lock(p2m, gfn, page_order);
-    rc = p2m_remove_page(p2m, gfn, mfn, page_order);
+    rc = p2m_remove_page(p2m, gfn_x(gfn), mfn_x(mfn), page_order);
      gfn_unlock(p2m, gfn, page_order);
      return rc;
  }
-int
-guest_physmap_add_entry(struct domain *d, unsigned long gfn,
-                        unsigned long mfn, unsigned int page_order,
-                        p2m_type_t t)
+static int
+__guest_physmap_add_entry(struct domain *d, unsigned long gfn,
 
At the very least only a single underscore please.
 
+                          unsigned long mfn, unsigned int page_order,
+                          p2m_type_t t)
  {
      struct p2m_domain *p2m = p2m_get_hostp2m(d);
      unsigned long i, ogfn;
@@ -838,6 +838,13 @@ out:
      return rc;
  }
+/* XXX: To be removed when __guest_physmap_add_entry will use typesafe */
 
But not just because of this (misleading) comment I really wonder
what the point here is: Is it really that much more intrusive to
change the function right away instead of introducing a wrapper?
 
I though it was intrusive because there are multiple place using adding 
a value to the mfn/gfn. 
It might be less intrusive with your suggestion to add mfn_* wrappers 
for common operation. I will give another look. 
 
(The comment is misleading because __guest_physmap_add_entry
shouldn't survive after the conversion to proper types, i.e. it is
not the function below which is supposed to get removed.)
 
+int
+guest_physmap_add_entry(struct domain *d, gfn_t gfn, mfn_t mfn,
+                        unsigned int page_order, p2m_type_t t)
+{
+    return __guest_physmap_add_entry(d, gfn_x(gfn), mfn_x(mfn), page_order, t);
+}
 
Perhaps a better (wrapper-less) approach (if full conversion is indeed
beyond scope) would be to simply rename the function parameters
and have local variables named "gfn" and "mfn"?
 
@@ -2785,7 +2792,8 @@ int p2m_add_foreign(struct domain *tdom, unsigned long 
fgfn,
                      unsigned long gpfn, domid_t foreigndom)
  {
      p2m_type_t p2mt, p2mt_prev;
-    unsigned long prev_mfn, mfn;
+    mfn_t prev_mfn;
+    unsigned long mfn;
 
This looks to make things more inconsistent rather than more consistent.
 
The usage of the variable in p2m_add_foreign seems limited to a couple 
of place. I will use mfn_t for it too. 
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
 
 |