Thread (87 messages) 87 messages, 7 authors, 2015-08-06

[PATCH v2 19/20] xen/privcmd: Add support for Linux 64KB page granularity

From: boris.ostrovsky@oracle.com (Boris Ostrovsky)
Date: 2015-07-13 20:14:21
Also in: lkml

On 07/09/2015 04:42 PM, Julien Grall wrote:
-
  struct remap_data {
  	xen_pfn_t *fgmfn; /* foreign domain's gmfn */
+	xen_pfn_t *efgmfn; /* pointer to the end of the fgmfn array */
It might be better to keep size of fgmfn array instead.

+static int unmap_gfn(struct page *page, unsigned long pfn, void *data)
+{
+	int *nr = data;
+	struct xen_remove_from_physmap xrp;
+
+	/* The Linux Page may not have been fully mapped to Xen */
+	if (!*nr)
+		return 0;
+
+	xrp.domid = DOMID_SELF;
+	xrp.gpfn = pfn;
+	(void)HYPERVISOR_memory_op(XENMEM_remove_from_physmap, &xrp);
+
+	(*nr)--;
+
+	return 0;
+}
+
  int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
  			      int nr, struct page **pages)
  {
  	int i;
+	int nr_page = round_up(nr, XEN_PFN_PER_PAGE);
  
-	for (i = 0; i < nr; i++) {
-		struct xen_remove_from_physmap xrp;
-		unsigned long pfn;
+	for (i = 0; i < nr_page; i++) {
+		/* unmap_gfn guarantees ret == 0 */
+		BUG_ON(xen_apply_to_page(pages[i], unmap_gfn, &nr));

TBH, I am not sure how useful xen_apply_to_page() routine is. In this 
patch especially, but also in others.

-boris
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help