The branch main has been updated by royger:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=759ae58c004985f99f7110837b9ac9fc88d51351

commit 759ae58c004985f99f7110837b9ac9fc88d51351
Author:     Roger Pau Monné <[email protected]>
AuthorDate: 2021-04-06 11:01:01 +0000
Commit:     Roger Pau Monné <[email protected]>
CommitDate: 2022-02-07 09:06:27 +0000

    xen/grant-table: remove explicit linear mapping additions
    
    There's no need to explicitly add linear mappings for the grant table
    area, as the memory is allocated using xenmem_alloc and it should
    already have a linear mapping that can be obtained using
    rman_get_virtual.
    
    While there also remove the return value of gnttab_map, since there's
    no return value anymore.
    
    Sponsored by: Citrix Systems R&D
    Reviewed by: Elliott Mitchell <[email protected]>
    Differential revision: https://reviews.freebsd.org/D29602
---
 sys/dev/xen/grant_table/grant_table.c | 28 ++++++----------------------
 1 file changed, 6 insertions(+), 22 deletions(-)

diff --git a/sys/dev/xen/grant_table/grant_table.c 
b/sys/dev/xen/grant_table/grant_table.c
index 6dc11cac1bc4..a3f9f449e4a3 100644
--- a/sys/dev/xen/grant_table/grant_table.c
+++ b/sys/dev/xen/grant_table/grant_table.c
@@ -503,7 +503,7 @@ unmap_pte_fn(pte_t *pte, struct page *pmd_page,
 
 static vm_paddr_t resume_frames;
 
-static int
+static void
 gnttab_map(unsigned int start_idx, unsigned int end_idx)
 {
        struct xen_add_to_physmap xatp;
@@ -521,21 +521,6 @@ gnttab_map(unsigned int start_idx, unsigned int end_idx)
                if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))
                        panic("HYPERVISOR_memory_op failed to map gnttab");
        } while (i-- > start_idx);
-
-       if (shared == NULL) {
-               vm_offset_t area;
-
-               area = kva_alloc(PAGE_SIZE * max_nr_grant_frames());
-               KASSERT(area, ("can't allocate VM space for grant table"));
-               shared = (grant_entry_t *)area;
-       }
-
-       for (i = start_idx; i <= end_idx; i++) {
-               pmap_kenter((vm_offset_t) shared + i * PAGE_SIZE,
-                   resume_frames + i * PAGE_SIZE);
-       }
-
-       return (0);
 }
 
 int
@@ -557,15 +542,16 @@ gnttab_resume(device_t dev)
                if (gnttab_pseudo_phys_res == NULL)
                        panic("Unable to reserve physical memory for gnttab");
                resume_frames = rman_get_start(gnttab_pseudo_phys_res);
+               shared = rman_get_virtual(gnttab_pseudo_phys_res);
        }
+       gnttab_map(0, nr_gframes - 1);
 
-       return (gnttab_map(0, nr_gframes - 1));
+       return (0);
 }
 
 static int
 gnttab_expand(unsigned int req_entries)
 {
-       int error;
        unsigned int cur, extra;
 
        cur = nr_grant_frames;
@@ -573,11 +559,9 @@ gnttab_expand(unsigned int req_entries)
        if (cur + extra > max_nr_grant_frames())
                return (ENOSPC);
 
-       error = gnttab_map(cur, cur + extra - 1);
-       if (!error)
-               error = grow_gnttab_list(extra);
+       gnttab_map(cur, cur + extra - 1);
 
-       return (error);
+       return (grow_gnttab_list(extra));
 }
 
 MTX_SYSINIT(gnttab, &gnttab_list_lock, "GNTTAB LOCK", MTX_DEF | MTX_RECURSE);

Reply via email to