[PATCH] Stability fixes for IPS driver for 4.x

David Sze dsze at alumni.uwaterloo.ca
Mon Apr 11 20:59:58 PDT 2005


At 11:31 PM 10/04/2005 -0600, Scott Long wrote this to All:
>Making a driver PAE-ified means either teaching it to do 64-bit
>scatter-gather (assuming that the peripheral hardware can do this
>and that it's documented), or teaching the driver to correctly handle
>EINPROGRESS from bus_dmamap_load() along with using the proper busdma
>tag limits.  The strategy I took with 6.x/5.x was the second one since
>I didn't have good IPS docs in front of me and I wanted it follow the
>APIs correctly.  I did test it with 8GB of memory and it performed
>correctly under load.  I haven't taken a close enough look at your
>MFC patch to say for sure if it's correct or not.  I'm not sure if
>I'll have time to take another look in the next few days, unfortunately.
>Is there any chance you could test 5.x/6.0 under load with PAE just to
>validate the assertion that it works correctly there?

I had a chance to test 5.4-RC1 (i386) today with GENERIC, SMP, PAE, and 
SMP-PAE kernels (the last one is just PAE with "options SMP").

To recap, the hardware is an IBM xSeries 346, Dual Xeon 3GHz (non-E64MT), 
ServeRAID-7K.

GENERIC and SMP survived "make buildkernel", but PAE and SMP-PAE paniced 
reproducibly doing the same.  The DDB stack trace doesn't appear to be 
anywhere near the IPS driver though, so I'm way out of my league.


========== PAE panic
kernel trap 12 with interrupts disabled

Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x24
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc03d48eb
stack pointer           = 0x10:0xeb133b28
frame pointer           = 0x10:0xeb133b3c
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, def32 1, gran 1
processor eflags        = resume, IOPL = 0
current process         = 146 (syncer)
[thread pid 146 tid 100157 ]
Stopped at propagate_priority+0x7f:             movl    0x24(%eax),%eax
db> trace
Tracing pid 146 tid 100157 td 0xc68cba80
propagate_priority
turnstile_wait
_mtx_lock_sleep
vfs_clean_pages
bdwrite
ffs_blkfree
handle_workitem_freefrag
process_worklist_item
softdep_process_worklist
sched_sync
fork_exit
fork_trampoline
--- trap 0x1, eip = 0, esp = 0xeb133d7c, ebp = 0 ---

========== End PAE panic

========== SMP-PAE panic
kernel trap 12 with interrupts disabled

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x24
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc03d7cd3
stack pointer           = 0x10:0xeb0d0b7c
frame pointer           = 0x10:0xeb0d0b90
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, def32 1, gran 1
processor eflags        = resume, IOPL = 0
current process         = 149 (syncer)
[thread pid 149 tid 100160 ]
Stopped at propagate_priority+0x7f:             movl    0x24(%eax),%eax
db> trace
Tracing pid 149 tid 100160 td 0xc68b2000
propagate_priority
turnstile_wait
_mtx_lock_sleep
vfs_busy_pages
ibwrite
bwrite
vfs_bio_awrite
vop_stdfsync
spec_fsync
spec_vnoperate
sched_sync
fork_exit
fork_trampoline
--- trap 0x1, eip = 0, esp = 0xeb0d0d7c, ebp = 0 ---
========== End PAE panic





More information about the freebsd-stable mailing list