]> xenbits.xensource.com Git - xen.git/commitdiff
Revert "tools/dombuilder: Switch to using gfn terminology for console and xenstore...
authorWei Liu <wei.liu2@citrix.com>
Mon, 6 Nov 2017 14:52:39 +0000 (14:52 +0000)
committerWei Liu <wei.liu2@citrix.com>
Mon, 6 Nov 2017 14:52:39 +0000 (14:52 +0000)
This reverts commit f48b5449dabc770acdde6d25cfbd265cfb71034d, which
breaks pvgrub.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
stubdom/grub/kexec.c
tools/libxc/include/xc_dom.h
tools/libxc/xc_dom_arm.c
tools/libxc/xc_dom_boot.c
tools/libxc/xc_dom_compat_linux.c
tools/libxc/xc_dom_x86.c
tools/libxl/libxl_dom.c

index e744561eaea2054edae6abc17f1e2d0793ded97f..437a0a96e98fe1eba4285aceb28fad59076c1889 100644 (file)
@@ -312,8 +312,8 @@ void kexec(void *kernel, long kernel_size, void *module, long module_size, char
     }
 
     /* Move current console, xenstore and boot MFNs to the allocated place */
-    do_exchange(dom, dom->console_gfn, start_info.console.domU.mfn);
-    do_exchange(dom, dom->xenstore_gfn, start_info.store_mfn);
+    do_exchange(dom, dom->console_pfn, start_info.console.domU.mfn);
+    do_exchange(dom, dom->xenstore_pfn, start_info.store_mfn);
     DEBUG("virt base at %llx\n", dom->parms.virt_base);
     DEBUG("bootstack_pfn %lx\n", dom->bootstack_pfn);
     _boot_target = dom->parms.virt_base + PFN_PHYS(dom->bootstack_pfn);
index 5907559e2bdd06df3490c8bbdf76513a18c7bbe4..cdcdd07d2bc209540d8b894f23c438360baf5798 100644 (file)
@@ -94,20 +94,14 @@ struct xc_dom_image {
     struct xc_dom_seg devicetree_seg;
     struct xc_dom_seg start_info_seg; /* HVMlite only */
     xen_pfn_t start_info_pfn;
+    xen_pfn_t console_pfn;
+    xen_pfn_t xenstore_pfn;
     xen_pfn_t shared_info_pfn;
     xen_pfn_t bootstack_pfn;
     xen_pfn_t pfn_alloc_end;
     xen_vaddr_t virt_alloc_end;
     xen_vaddr_t bsd_symtab_start;
 
-    /*
-     * Details for the toolstack-prepared rings.
-     *
-     * *_gfn fields are allocated by the domain builder.
-     */
-    xen_pfn_t console_gfn;
-    xen_pfn_t xenstore_gfn;
-
     /*
      * initrd parameters as specified in start_info page
      * Depending on capabilities of the booted kernel this may be a virtual
index 2fe75cd0321547115c3b63dfbaebe34a82df6e6c..fce151d821655724be82eb362e45ac6e66847c2d 100644 (file)
@@ -84,19 +84,19 @@ static int alloc_magic_pages(struct xc_dom_image *dom)
     if ( rc < 0 )
         return rc;
 
-    dom->console_gfn = base + CONSOLE_PFN_OFFSET;
-    dom->xenstore_gfn = base + XENSTORE_PFN_OFFSET;
+    dom->console_pfn = base + CONSOLE_PFN_OFFSET;
+    dom->xenstore_pfn = base + XENSTORE_PFN_OFFSET;
     dom->vuart_gfn = base + VUART_PFN_OFFSET;
 
-    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_gfn);
-    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_gfn);
+    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_pfn);
+    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_pfn);
     xc_clear_domain_page(dom->xch, dom->guest_domid, base + MEMACCESS_PFN_OFFSET);
     xc_clear_domain_page(dom->xch, dom->guest_domid, dom->vuart_gfn);
 
     xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_CONSOLE_PFN,
-            dom->console_gfn);
+            dom->console_pfn);
     xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_STORE_PFN,
-            dom->xenstore_gfn);
+            dom->xenstore_pfn);
     xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_MONITOR_RING_PFN,
             base + MEMACCESS_PFN_OFFSET);
     /* allocated by toolstack */
index bbf98b6250b517633e53c4af4c059f3ab78e6ad9..2e5681dc5d97db7448b98a7ab751d12369eb221c 100644 (file)
@@ -257,23 +257,24 @@ static xen_pfn_t xc_dom_gnttab_setup(xc_interface *xch, uint32_t domid)
 }
 
 int xc_dom_gnttab_seed(xc_interface *xch, uint32_t domid,
-                       xen_pfn_t console_gfn,
-                       xen_pfn_t xenstore_gfn,
+                       xen_pfn_t console_gmfn,
+                       xen_pfn_t xenstore_gmfn,
                        uint32_t console_domid,
                        uint32_t xenstore_domid)
 {
-    xen_pfn_t gnttab_gfn;
+
+    xen_pfn_t gnttab_gmfn;
     grant_entry_v1_t *gnttab;
 
-    gnttab_gfn = xc_dom_gnttab_setup(xch, domid);
-    if ( gnttab_gfn == -1 )
+    gnttab_gmfn = xc_dom_gnttab_setup(xch, domid);
+    if ( gnttab_gmfn == -1 )
         return -1;
 
     gnttab = xc_map_foreign_range(xch,
                                   domid,
                                   PAGE_SIZE,
                                   PROT_READ|PROT_WRITE,
-                                  gnttab_gfn);
+                                  gnttab_gmfn);
     if ( gnttab == NULL )
     {
         xc_dom_panic(xch, XC_INTERNAL_ERROR,
@@ -283,17 +284,17 @@ int xc_dom_gnttab_seed(xc_interface *xch, uint32_t domid,
         return -1;
     }
 
-    if ( domid != console_domid && console_gfn != -1 )
+    if ( domid != console_domid  && console_gmfn != -1)
     {
         gnttab[GNTTAB_RESERVED_CONSOLE].flags = GTF_permit_access;
         gnttab[GNTTAB_RESERVED_CONSOLE].domid = console_domid;
-        gnttab[GNTTAB_RESERVED_CONSOLE].frame = console_gfn;
+        gnttab[GNTTAB_RESERVED_CONSOLE].frame = console_gmfn;
     }
-    if ( domid != xenstore_domid && xenstore_gfn != -1 )
+    if ( domid != xenstore_domid && xenstore_gmfn != -1)
     {
         gnttab[GNTTAB_RESERVED_XENSTORE].flags = GTF_permit_access;
         gnttab[GNTTAB_RESERVED_XENSTORE].domid = xenstore_domid;
-        gnttab[GNTTAB_RESERVED_XENSTORE].frame = xenstore_gfn;
+        gnttab[GNTTAB_RESERVED_XENSTORE].frame = xenstore_gmfn;
     }
 
     if ( munmap(gnttab, PAGE_SIZE) == -1 )
@@ -307,19 +308,19 @@ int xc_dom_gnttab_seed(xc_interface *xch, uint32_t domid,
 
     /* Guest shouldn't really touch its grant table until it has
      * enabled its caches. But lets be nice. */
-    xc_domain_cacheflush(xch, domid, gnttab_gfn, 1);
+    xc_domain_cacheflush(xch, domid, gnttab_gmfn, 1);
 
     return 0;
 }
 
 int xc_dom_gnttab_hvm_seed(xc_interface *xch, uint32_t domid,
-                           xen_pfn_t console_gfn,
-                           xen_pfn_t xenstore_gfn,
+                           xen_pfn_t console_gpfn,
+                           xen_pfn_t xenstore_gpfn,
                            uint32_t console_domid,
                            uint32_t xenstore_domid)
 {
     int rc;
-    xen_pfn_t scratch_gfn;
+    xen_pfn_t scratch_gpfn;
     struct xen_add_to_physmap xatp = {
         .domid = domid,
         .space = XENMAPSPACE_grant_table,
@@ -329,7 +330,7 @@ int xc_dom_gnttab_hvm_seed(xc_interface *xch, uint32_t domid,
         .domid = domid,
     };
 
-    rc = xc_core_arch_get_scratch_gpfn(xch, domid, &scratch_gfn);
+    rc = xc_core_arch_get_scratch_gpfn(xch, domid, &scratch_gpfn);
     if ( rc < 0 )
     {
         xc_dom_panic(xch, XC_INTERNAL_ERROR,
@@ -338,10 +339,11 @@ int xc_dom_gnttab_hvm_seed(xc_interface *xch, uint32_t domid,
                      __FUNCTION__, errno);
         return -1;
     }
-    xatp.gpfn = xrfp.gpfn = scratch_gfn;
+    xatp.gpfn = scratch_gpfn;
+    xrfp.gpfn = scratch_gpfn;
 
-    xc_dom_printf(xch, "%s: called, scratch gfn=0x%"PRI_xen_pfn, __FUNCTION__,
-                  scratch_gfn);
+    xc_dom_printf(xch, "%s: called, pfn=0x%"PRI_xen_pfn, __FUNCTION__,
+                  scratch_gpfn);
 
 
     rc = do_memory_op(xch, XENMEM_add_to_physmap, &xatp, sizeof(xatp));
@@ -355,7 +357,7 @@ int xc_dom_gnttab_hvm_seed(xc_interface *xch, uint32_t domid,
     }
 
     rc = xc_dom_gnttab_seed(xch, domid,
-                            console_gfn, xenstore_gfn,
+                            console_gpfn, xenstore_gpfn,
                             console_domid, xenstore_domid);
     if (rc != 0)
     {
@@ -383,11 +385,12 @@ int xc_dom_gnttab_init(struct xc_dom_image *dom)
 {
     if ( xc_dom_translated(dom) ) {
         return xc_dom_gnttab_hvm_seed(dom->xch, dom->guest_domid,
-                                      dom->console_gfn, dom->xenstore_gfn,
+                                      dom->console_pfn, dom->xenstore_pfn,
                                       dom->console_domid, dom->xenstore_domid);
     } else {
         return xc_dom_gnttab_seed(dom->xch, dom->guest_domid,
-                                  dom->console_gfn, dom->xenstore_gfn,
+                                  xc_dom_p2m(dom, dom->console_pfn),
+                                  xc_dom_p2m(dom, dom->xenstore_pfn),
                                   dom->console_domid, dom->xenstore_domid);
     }
 }
index 6d27ec21ef641a0abd58ec42a64641e8640afa21..c922c61e90a9adf97ed6fe76353b28510aedc609 100644 (file)
@@ -78,8 +78,8 @@ int xc_linux_build(xc_interface *xch, uint32_t domid,
     if ( (rc = xc_dom_gnttab_init(dom)) != 0)
         goto out;
 
-    *console_mfn = dom->console_gfn;
-    *store_mfn = dom->xenstore_gfn;
+    *console_mfn = xc_dom_p2m(dom, dom->console_pfn);
+    *store_mfn = xc_dom_p2m(dom, dom->xenstore_pfn);
 
  out:
     xc_dom_release(dom);
index c74fb96997f0aeb0af11ab4193e68b29b9272dc6..bff68a011f154bc16cafdda9c18b1f666b3d37db 100644 (file)
@@ -536,23 +536,21 @@ static int alloc_p2m_list_x86_64(struct xc_dom_image *dom)
 
 static int alloc_magic_pages_pv(struct xc_dom_image *dom)
 {
-    xen_pfn_t pfn;
-
     dom->start_info_pfn = xc_dom_alloc_page(dom, "start info");
     if ( dom->start_info_pfn == INVALID_PFN )
         return -1;
 
-    pfn = xc_dom_alloc_page(dom, "xenstore");
-    if ( pfn == INVALID_PFN )
+    dom->xenstore_pfn = xc_dom_alloc_page(dom, "xenstore");
+    if ( dom->xenstore_pfn == INVALID_PFN )
         return -1;
-    dom->xenstore_gfn = xc_dom_p2m(dom, pfn);
-    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_gfn);
+    xc_clear_domain_page(dom->xch, dom->guest_domid,
+                         xc_dom_p2m(dom, dom->xenstore_pfn));
 
-    pfn = xc_dom_alloc_page(dom, "console");
-    if ( pfn == INVALID_PFN )
+    dom->console_pfn = xc_dom_alloc_page(dom, "console");
+    if ( dom->console_pfn == INVALID_PFN )
         return -1;
-    dom->console_gfn = xc_dom_p2m(dom, pfn);
-    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_gfn);
+    xc_clear_domain_page(dom->xch, dom->guest_domid,
+                         xc_dom_p2m(dom, dom->console_pfn));
 
     dom->alloc_bootstack = 1;
 
@@ -614,19 +612,14 @@ static int alloc_magic_pages_hvm(struct xc_dom_image *dom)
                                X86_HVM_NR_SPECIAL_PAGES) )
             goto error_out;
 
-    dom->xenstore_gfn = special_pfn(SPECIALPAGE_XENSTORE);
-    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_gfn);
-    xc_hvm_param_set(xch, domid, HVM_PARAM_STORE_PFN, dom->xenstore_gfn);
-
+    xc_hvm_param_set(xch, domid, HVM_PARAM_STORE_PFN,
+                     special_pfn(SPECIALPAGE_XENSTORE));
     xc_hvm_param_set(xch, domid, HVM_PARAM_BUFIOREQ_PFN,
                      special_pfn(SPECIALPAGE_BUFIOREQ));
     xc_hvm_param_set(xch, domid, HVM_PARAM_IOREQ_PFN,
                      special_pfn(SPECIALPAGE_IOREQ));
-
-    dom->console_gfn = special_pfn(SPECIALPAGE_CONSOLE);
-    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_gfn);
-    xc_hvm_param_set(xch, domid, HVM_PARAM_CONSOLE_PFN, dom->console_gfn);
-
+    xc_hvm_param_set(xch, domid, HVM_PARAM_CONSOLE_PFN,
+                     special_pfn(SPECIALPAGE_CONSOLE));
     xc_hvm_param_set(xch, domid, HVM_PARAM_PAGING_RING_PFN,
                      special_pfn(SPECIALPAGE_PAGING));
     xc_hvm_param_set(xch, domid, HVM_PARAM_MONITOR_RING_PFN,
@@ -706,6 +699,12 @@ static int alloc_magic_pages_hvm(struct xc_dom_image *dom)
     xc_hvm_param_set(xch, domid, HVM_PARAM_IDENT_PT,
                      special_pfn(SPECIALPAGE_IDENT_PT) << PAGE_SHIFT);
 
+    dom->console_pfn = special_pfn(SPECIALPAGE_CONSOLE);
+    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_pfn);
+
+    dom->xenstore_pfn = special_pfn(SPECIALPAGE_XENSTORE);
+    xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_pfn);
+
     dom->parms.virt_hypercall = -1;
 
     rc = 0;
@@ -745,9 +744,9 @@ static int start_info_x86_32(struct xc_dom_image *dom)
     start_info->mfn_list = dom->p2m_seg.vstart;
 
     start_info->flags = dom->flags;
-    start_info->store_mfn = dom->xenstore_gfn;
+    start_info->store_mfn = xc_dom_p2m(dom, dom->xenstore_pfn);
     start_info->store_evtchn = dom->xenstore_evtchn;
-    start_info->console.domU.mfn = dom->console_gfn;
+    start_info->console.domU.mfn = xc_dom_p2m(dom, dom->console_pfn);
     start_info->console.domU.evtchn = dom->console_evtchn;
 
     if ( dom->ramdisk_blob )
@@ -796,9 +795,9 @@ static int start_info_x86_64(struct xc_dom_image *dom)
     }
 
     start_info->flags = dom->flags;
-    start_info->store_mfn = dom->xenstore_gfn;
+    start_info->store_mfn = xc_dom_p2m(dom, dom->xenstore_pfn);
     start_info->store_evtchn = dom->xenstore_evtchn;
-    start_info->console.domU.mfn = dom->console_gfn;
+    start_info->console.domU.mfn = xc_dom_p2m(dom, dom->console_pfn);
     start_info->console.domU.evtchn = dom->console_evtchn;
 
     if ( dom->ramdisk_blob )
index 0389a069baa661588c7d2bb2ee0a924577eb5216..ef834e652d656d7bd4cfd3d02840a0d5c66be324 100644 (file)
@@ -851,9 +851,14 @@ int libxl__build_pv(libxl__gc *gc, uint32_t domid,
     if (ret != 0)
         goto out;
 
-    state->console_mfn = dom->console_gfn;
-    state->store_mfn = dom->xenstore_gfn;
-    state->vuart_gfn = dom->vuart_gfn;
+    if (xc_dom_translated(dom)) {
+        state->console_mfn = dom->console_pfn;
+        state->store_mfn = dom->xenstore_pfn;
+        state->vuart_gfn = dom->vuart_gfn;
+    } else {
+        state->console_mfn = xc_dom_p2m(dom, dom->console_pfn);
+        state->store_mfn = xc_dom_p2m(dom, dom->xenstore_pfn);
+    }
 
     ret = 0;
 out: