A few more km_alloc()s following the same pattern as acpi.  I don't have any
machines that actually need mpbios(4) but I've booted amd64 and i386 smp qemu
vms with acpi disabled, which causes mpbios to attach instead.

ok?

Index: arch/amd64/amd64/mpbios.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/mpbios.c,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 mpbios.c
--- arch/amd64/amd64/mpbios.c   7 Feb 2018 06:19:54 -0000       1.29
+++ arch/amd64/amd64/mpbios.c   19 Dec 2020 09:26:33 -0000
@@ -240,7 +240,8 @@ mpbios_map(paddr_t pa, int len, struct m
 {
        paddr_t pgpa = trunc_page(pa);
        paddr_t endpa = round_page(pa + len);
-       vaddr_t va = uvm_km_valloc(kernel_map, endpa - pgpa);
+       vaddr_t va = (vaddr_t)km_alloc(endpa - pgpa, &kv_any, &kp_none,
+           &kd_nowait);
        vaddr_t retva = va + (pa & PGOFSET);
 
        handle->pa = pa;
@@ -262,7 +263,7 @@ void
 mpbios_unmap(struct mp_map *handle)
 {
        pmap_kremove(handle->baseva, handle->vsize);
-       uvm_km_free(kernel_map, handle->baseva, handle->vsize);
+       km_free((void *)handle->baseva, handle->vsize, &kv_any, &kp_none);
 }
 
 /*
Index: arch/i386/i386/mpbios.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/mpbios.c,v
retrieving revision 1.41
diff -u -p -u -p -r1.41 mpbios.c
--- arch/i386/i386/mpbios.c     7 Feb 2018 06:19:54 -0000       1.41
+++ arch/i386/i386/mpbios.c     19 Dec 2020 09:26:33 -0000
@@ -253,7 +253,8 @@ mpbios_map(paddr_t pa, int len, struct m
 {
        paddr_t pgpa = trunc_page(pa);
        paddr_t endpa = round_page(pa + len);
-       vaddr_t va = uvm_km_valloc(kernel_map, endpa - pgpa);
+       vaddr_t va = (vaddr_t)km_alloc(endpa - pgpa, &kv_any, &kp_none,
+           &kd_nowait);
        vaddr_t retva = va + (pa & PGOFSET);
 
        handle->pa = pa;
@@ -275,7 +276,7 @@ void
 mpbios_unmap(struct mp_map *handle)
 {
        pmap_kremove(handle->baseva, handle->vsize);
-       uvm_km_free(kernel_map, handle->baseva, handle->vsize);
+       km_free((void *)handle->baseva, handle->vsize, &kv_any, &kp_none);
 }
 
 /*

Reply via email to