"software" vs. "hardware" memory holes (fault on nofault entry panic)

Mikhail T. mi at aldan.algebra.com
Sun Apr 20 23:22:42 UTC 2008


Hello!

My FreeBSD/amd64 system has two processors, each with 2 out of 4 memory
slots filled. The total RAM is 4Gb.

In the BIOS there are options to enable "Software memory hole" and
"Hardware memory hole".

The only way to have the entire 4Gb of physical RAM enabled is to have
"Software memory hole" only. Enabling the hardware hole leads to the
detection of only 3.6Gb. From /var/run/dmesg.boot:

	usable memory = 3783233536 (3607 MB)
	avail memory  = 3597369344 (3430 MB)

Unfortunately, when "Software memory hole" is enabled -- regardless of
whether the hardware one is enabled or not -- trying to transfer a file
via firewire:

	fwcontrol -M mpg -R /store/videos/tape1.mpg

leads to a panic instantly:

Unread portion of the kernel message buffer:
panic: vm_fault: fault on nofault entry, addr: ffffffffb0796000
cpuid = 0
Uptime: 2m10s
Physical memory: 4087 MB
Dumping 295 MB:fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
 280fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
 264fwohci0: Isochronous receive err 8402(long)
 248fwohci0: Isochronous receive err 8402(long)
 232fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
 216fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
fwohci0: Isochronous receive err 8402(long)
 200 184 168 152 136 120 104 88 72 56 40 24 8

#0  doadump () at pcpu.h:194
194		__asm __volatile("movq %%gs:0,%0" : "=r" (td));
(kgdb) #0  doadump () at pcpu.h:194
#1  0x0000000000000004 in ?? ()
#2  0xffffffff802e8b60 in boot (howto=260)
    at /var/src/sys/kern/kern_shutdown.c:409
#3  0xffffffff802e8f7d in panic (fmt=0x104 <Address 0x104 out of bounds>)
    at /var/src/sys/kern/kern_shutdown.c:563
#4  0xffffffff80424f63 in vm_fault (map=0xffffff0001000000, 
    vaddr=18446744072375328768, fault_type=1 '\001', fault_flags=0)
    at /var/src/sys/vm/vm_fault.c:275
#5  0xffffffff8045a4ff in trap_pfault (frame=0xffffffffb05cc8d0, usermode=0)
    at /var/src/sys/amd64/amd64/trap.c:630
#6  0xffffffff8045ae49 in trap (frame=0xffffffffb05cc8d0)
    at /var/src/sys/amd64/amd64/trap.c:410
#7  0xffffffff8043f17e in calltrap ()
    at /var/src/sys/amd64/amd64/exception.S:169
#8  0xffffffff804596db in copyout () at /var/src/sys/amd64/amd64/support.S:257
#9  0xffffffff802f0440 in uiomove (cp=0xffffffffb0795e00, n=588, 
    uio=0xffffffffb05ccb00) at /var/src/sys/kern/kern_subr.c:168
#10 0xffffffff8021901a in fw_read (dev=)
    at /var/src/sys/dev/firewire/fwdev.c:403
#11 0xffffffff80297ca4 in devfs_read_f (fp=0xffffff0003fa9348, 
    uio=0xffffffffb05ccb00, cred=) at /var/src/sys/fs/devfs/devfs_vnops.c:880
#12 0xffffffff8031da7d in dofileread (td=0xffffff00038b49c0, fd=3, 
    fp=0xffffff0003fa9348, auio=0xffffffffb05ccb00, offset=) at file.h:242
#13 0xffffffff8031ddee in kern_readv (td=0xffffff00038b49c0, fd=3, 
    auio=0xffffffffb05ccb00) at /var/src/sys/kern/sys_generic.c:192
#14 0xffffffff8031dedc in read (td=0x612a94, uap=0xffffffffb0796000)
    at /var/src/sys/kern/sys_generic.c:108
#15 0xffffffff8045a700 in syscall (frame=0xffffffffb05ccc70)
    at /var/src/sys/amd64/amd64/trap.c:852
#16 0xffffffff8043f38b in Xfast_syscall ()
    at /var/src/sys/amd64/amd64/exception.S:290
#17 0x000000080070a34c in ?? ()
(kgdb) 

Having the hardware hole ONLY enabled allows for video transfers...

Please, advise. Thanks!

	-mi


More information about the freebsd-stable mailing list