On 23.09.20 00:51, Mark Johnston wrote: > On Tue, Sep 22, 2020 at 01:13:29AM +0300, Konstantin Belousov wrote: >> On Mon, Sep 21, 2020 at 08:57:46PM +0200, Rainer Hurling wrote: >>> Fatal trap 12: page fault while in kernel mode >>> cpuid = 31; apic id = 1f >>> fault virtual address = 0x25407efa >> This address is very suspicious. >> >> I cannot claim it as the fact, but most likely cause for such garbage >> pointer value is mismatched ABI between kernel and module. In other >> words, the module was built against headers from different kernel. > > For some reason clang is not complaining about a missing declaration for > vm_pager_allocate(), despite -Wmissing-prototypes in the CFLAGS... > > This patch is required on top of a patched extract of the vbox sources: > > --- the-freebsd-kernel.h.orig 2020-09-22 18:49:26.499329000 -0400 > +++ the-freebsd-kernel.h 2020-09-22 18:49:55.317615000 -0400 > _at__at_ -68,6 +68,7 _at__at_ > #include <vm/vm_kern.h> > #include <vm/vm_param.h> /* KERN_SUCCESS ++ */ > #include <vm/vm_page.h> > +#include <vm/vm_pager.h> > #include <vm/vm_phys.h> /* vm_phys_alloc_* */ > #include <vm/vm_extern.h> /* kmem_alloc_attr */ > #include <vm/vm_pageout.h> /* vm_contig_grow_cache */ > --- memobj-r0drv-freebsd.c.orig 2020-09-22 18:49:25.010456000 -0400 > +++ memobj-r0drv-freebsd.c 2020-09-22 18:49:47.462276000 -0400 > _at__at_ -323,7 +323,8 _at__at_ > size_t cPages = atop(pMemFreeBSD->Core.cb); > int rc; > > - pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, cPages); > + pMemFreeBSD->pObject = vm_pager_allocate(OBJT_PHYS, NULL, > + pMemFreeBSD->Core.cb, VM_PROT_ALL, 0, curthread->td_ucred); > > /* No additional object reference for auto-deallocation upon unmapping. */ > #if __FreeBSD_version >= 1000055 > _at__at_ -457,7 +458,8 _at__at_ > return VERR_NO_MEMORY; > } > > - pMemFreeBSD->pObject = vm_object_allocate(OBJT_PHYS, atop(cb)); > + pMemFreeBSD->pObject = vm_pager_allocate(OBJT_PHYS, NULL, > + pMemFreeBSD->Core.cb, VM_PROT_ALL, 0, curthread->td_ucred); > > if (PhysHighest != NIL_RTHCPHYS) > VmPhysAddrHigh = PhysHighest; > I can confirm that these patches (two files) work for me. The system reboots with loaded vbox kernel modules. Many thanks for your help and investigations! Best regards, RainerReceived on Wed Sep 23 2020 - 14:35:08 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:25 UTC