git: 759ae58c0049 - main - xen/grant-table: remove explicit linear mapping additions
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 07 Feb 2022 09:16:35 UTC
The branch main has been updated by royger: URL: https://cgit.FreeBSD.org/src/commit/?id=759ae58c004985f99f7110837b9ac9fc88d51351 commit 759ae58c004985f99f7110837b9ac9fc88d51351 Author: Roger Pau Monné <royger@FreeBSD.org> AuthorDate: 2021-04-06 11:01:01 +0000 Commit: Roger Pau Monné <royger@FreeBSD.org> 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 <ehem+freebsd@m5p.com> 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);