> Date: Sat, 19 Dec 2020 20:05:08 +1000
> From: Jonathan Matthew <[email protected]>
>
> 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?
ok kettenis@
> 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);
> }
>
> /*
>
>