On 2020 M09 23, Wed 01:51:28 EEST 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; This fixed the issue with panic, thank youReceived on Wed Sep 23 2020 - 11:38:11 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:25 UTC