Isaku Yamahata
2008-Dec-03  02:27 UTC
[Xen-devel] [PATCH 2/2] linux: rename PHYSDEVOP_pirq_eoi_mfn to PHYSDEVOP_pirq_eoi_gmfn
evtchn, phydev: rename PHYSDEVOP_pirq_eoi_mfn to PHYSDEVOP_pirq_eoi_gmfn
rename PHYSDEVOP_pirq_eoi_mfn to PHYSDEVOP_pirq_eoi_gmfn
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
diff --git a/drivers/xen/core/evtchn.c b/drivers/xen/core/evtchn.c
--- a/drivers/xen/core/evtchn.c
+++ b/drivers/xen/core/evtchn.c
@@ -1032,9 +1032,13 @@ static void restore_cpu_ipis(unsigned in
 	}
 }
 
-static void physdev_set_pirq_eoi_mfn(struct physdev_pirq_eoi_mfn *eoi_mfn)
+static void physdev_set_pirq_eoi_gmfn(struct physdev_pirq_eoi_gmfn *eoi_gmfn)
 {
-	eoi_mfn->mfn = arbitrary_virt_to_bus(pirq_needs_eoi) >> PAGE_SHIFT;
+	if (xen_feature(XENFEAT_auto_translated_physmap))
+		eoi_gmfn->gmfn = __pa(pirq_needs_eoi) >> PAGE_SHIFT;
+	else
+		eoi_gmfn->gmfn +			arbitrary_virt_to_bus(pirq_needs_eoi) >>
PAGE_SHIFT;
 }
 
 void irq_resume(void)
@@ -1044,10 +1048,10 @@ void irq_resume(void)
 	init_evtchn_cpu_bindings();
 
 	if (pirq_eoi_does_unmask) {
-		struct physdev_pirq_eoi_mfn eoi_mfn;
+		struct physdev_pirq_eoi_gmfn eoi_gmfn;
 
-		physdev_set_pirq_eoi_mfn(&eoi_mfn);
-		if (HYPERVISOR_physdev_op(PHYSDEVOP_pirq_eoi_mfn, &eoi_mfn))
+		physdev_set_pirq_eoi_gmfn(&eoi_gmfn);
+		if (HYPERVISOR_physdev_op(PHYSDEVOP_pirq_eoi_gmfn, &eoi_gmfn))
 			BUG();
 	}
 
@@ -1137,13 +1141,13 @@ void __init xen_init_IRQ(void)
 void __init xen_init_IRQ(void)
 {
 	unsigned int i;
-	struct physdev_pirq_eoi_mfn eoi_mfn;
+	struct physdev_pirq_eoi_gmfn eoi_gmfn;
 
 	init_evtchn_cpu_bindings();
 
 	BUG_ON(!bitmap_empty(pirq_needs_eoi, PAGE_SIZE * 8));
-	physdev_set_pirq_eoi_mfn(&eoi_mfn);
-	if (HYPERVISOR_physdev_op(PHYSDEVOP_pirq_eoi_mfn, &eoi_mfn) == 0)
+	physdev_set_pirq_eoi_gmfn(&eoi_gmfn);
+	if (HYPERVISOR_physdev_op(PHYSDEVOP_pirq_eoi_gmfn, &eoi_gmfn) == 0)
 		pirq_eoi_does_unmask = 1;
 
 	/* No event channels are ''live'' right now. */
diff --git a/include/xen/interface/physdev.h b/include/xen/interface/physdev.h
--- a/include/xen/interface/physdev.h
+++ b/include/xen/interface/physdev.h
@@ -47,13 +47,13 @@ DEFINE_XEN_GUEST_HANDLE(physdev_eoi_t);
  * will automatically get unmasked. The page registered is used as a bit
  * array indexed by Xen''s PIRQ value.
  */
-#define PHYSDEVOP_pirq_eoi_mfn          17
-struct physdev_pirq_eoi_mfn {
+#define PHYSDEVOP_pirq_eoi_gmfn         17
+struct physdev_pirq_eoi_gmfn {
     /* IN */
-    xen_pfn_t mfn;
+    xen_pfn_t gmfn;
 };
-typedef struct physdev_pirq_eoi_mfn physdev_pirq_eoi_mfn_t;
-DEFINE_XEN_GUEST_HANDLE(physdev_pirq_eoi_mfn_t);
+typedef struct physdev_pirq_eoi_mfn physdev_pirq_eoi_gmfn_t;
+DEFINE_XEN_GUEST_HANDLE(physdev_pirq_eoi_gmfn_t);
 
 /*
  * Query the status of an IRQ line.
-- 
yamahata
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel