]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'stable/pvh.v7' into stable/for-linus-3.9
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 13 Feb 2013 15:23:43 +0000 (10:23 -0500)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 13 Feb 2013 15:23:43 +0000 (10:23 -0500)
* stable/pvh.v7:
  xen/pvh: Use ballooning to allocate grant table pages [v2]
  Revert "xen/pvh linux: Use ballooning to allocate grant table pages"
  xen/pvh linux: Use ballooning to allocate grant table pages
  xen/pvh: remove code to map iomem from guest

Conflicts:
drivers/xen/grant-table.c

1  2 
arch/x86/xen/mmu.c
drivers/xen/grant-table.c

Simple merge
index b6655a1f200c5b28a793771becf81d59e59b3c3e,45a33b4af006bb466cac6ea851afa1337f6ac30e..a08a6247f857dadbbd45c4760225f1fbce955b56
@@@ -1141,11 -1154,40 +1156,39 @@@ static void gnttab_request_version(void
                grant_table_version);
  }
  
 -int gnttab_resume(void)
+ /*
+  * PVH: we need three things: virtual address, pfns, and mfns. The pfns
+  * are allocated via ballooning, then we call arch_gnttab_map_shared to
+  * allocate the VA and put pfn's in the pte's for the VA. The mfn's are
+  * finally allocated in gnttab_map() by xen which also populates the P2M.
+  */
+ static int xlated_setup_gnttab_pages(unsigned long numpages, void **addr)
+ {
+       int i, rc;
+       unsigned long pfns[numpages];
+       struct page *pages[numpages];
+       rc = alloc_xenballooned_pages(numpages, pages, 0);
+       if (rc != 0) {
+               pr_warn("%s Couldn't balloon alloc %ld pfns rc:%d\n", __func__,
+                       numpages, rc);
+               return rc;
+       }
+       for (i = 0; i < numpages; i++)
+               pfns[i] = page_to_pfn(pages[i]);
+       rc = arch_gnttab_map_shared(pfns, numpages, numpages, addr);
+       if (rc != 0)
+               free_xenballooned_pages(numpages, pages);
+       return rc;
+ }
 +static int gnttab_setup(void)
  {
+       int rc;
        unsigned int max_nr_gframes;
-       char *kmsg = "Failed to kmalloc pages for pv in hvm grant frames\n";
  
 -      gnttab_request_version();
        max_nr_gframes = gnttab_max_grant_frames();
        if (max_nr_gframes < nr_grant_frames)
                return -ENOSYS;