> fatal protection fault in supervisor mode
Finally I was able to build custom ramdisk kernel with DDB to get stacktrace.
Kernel ident:
OpenBSD 7.3 (RAMDISK_CD) #1: Fri May 26 20:28:53 CEST 2023
[email protected]:/usr/src/sys/arch/amd64/compile/RAMDISK_CD
While installing sets from cd0:
wdc_atapi_start: not ready, st = 50
kernel: protection fault trap, code=0
Stopped at wdcstart+0x19: movl 0x58(%rdi),%eax
ddb> trace
wdcstart(ffff80000007c168,ffff80000007c168,ffff80000007c168,10,ffff800021712d88,10282)
at wdcstart+0x19
wdc_atapi_the_machine(ffff80000007c168,fffffd807e9aed08,2,ffff80000007c168,ffff80000007c168,fffffd807e9aed08)
at wdc_atapi_the_machine+0x14a
wdc_atapi_intr(ffff80000007c168,fffffd807e9aed08,1,ffff80000007c168,fffffd807e9aed08,ffff80000007c168)
at wdc_atapi_intr+0x47
wdcintr(ffff80000007c168,ffff80000007c168,ffff800000024dc0,0,6,1) at
wdcintr+0xae
intr_handler(ffff800021712ed8,ffff800000065500,ffff800000065680,ffffffff811f91b0,ffffffff81211216,ffff800021712ec8)
at intr_handler+0x26
Xintr_ioapic_edge14_untramp(0,ffffffff811f91b0,0,18041969,ffff800000024dc0,6)
at Xintr_ioapic_edge14_untramp+0x18f
Xspllower(0,0,ffff800000024d00,0,ffffffff81211455,602) at Xspllower+0xc
scsi_xsh_runqueue(ffff800000024d00,ffff800000024d00,0,ffff800000024d00,ffff80000014b100,ffff800000023970)
at scsi_xsh_runqueue+0xe3
scsi_xsh_add(ffff800000023970,ffff800000023970,fffffd806ccfc700,ffff800000023800,fffffd806ccfc7f0,6)
at scsi_xsh_add+0x80
cdstrategy(fffffd806ccfc700,fffffd806ccfc700,fffffd806ccfc700,fffffd806ccfc700,fffffd806ccfc7f0,150)
at cdstrategy+0xe4
spec_strategy(ffff8000217130c0,ffff8000217130c0,fffffd806ccfc700,1f,ffffffff81141f01,ffff8000217130b0)
at spec_strategy+0x3f
VOP_STRATEGY(fffffd807de4f6c8,fffffd806ccfc700,fffffd806ccfc700,fffffd807de4f6c8,ffffffff8114026b,ffff8000217130e0)
at VOP_STRATEGY+0x3c
cd9660_strategy(ffff800021713130,ffff800021713130,fffffd806ccfc700,4,fffffd807e9d2970,fffffd807e9d2970)
at cd9660_strategy+0xce
VOP_STRATEGY(fffffd807e9d2970,fffffd806ccfc700,fffffd806ccfc700,fffffd807e9d2970,ffffffff8114026b,ffff800021713150)
at VOP_STRATEGY+0x3c
bio_doread(fffffd807e9d2970,1c1e,800,4,ffff800000148f00,20) at bio_doread+0x67
breadn(fffffd807e9d2970,1bfe,800,ffff800000148e00,ffff800000148f00,20) at
breadn+0x71
cd9660_read(ffff8000217132b0,ffff8000217132b0,fffffd807edfb170,fffffd807e9d2970,0,ffff8000217133e0)
at cd9660_read+0x12b
VOP_READ(fffffd807e9d2970,ffff8000217133e0,0,fffffd807f7bff08,fffffd807f7bff08,ffff800000000000)
at VOP_READ+0x31
vn_read(fffffd807edfb170,ffff8000217133e0,0,fffffd807edfb170,fffffd807edfb170,20000)
at vn_read+0xad
dofilereadv(ffff8000216cd888,3,ffff8000217133e0,0,ffff8000217134a0,ffff8000216cd888)
at dofilereadv+0x62
sys_read(ffff8000216cd888,ffff800021713450,ffff8000217134a0,ffff8000216cd888,1000,2d0170000)
at sys_read+0x43
syscall(ffff800021713500,ffff800021713500,0,ffff8000216cd888,0,0) at
syscall+0x201
Xsyscall(0,3,0,3,0,238128000) at Xsyscall+0x128
end of kernel
end trace frame: 0x79ff6e90a870, count: -23
ddb>
Please let me know if you need more information on specific frame.
I build my custom ramdisk kernel this way:
1. installed these sets: `sys` and `src`
2. added to /usr/src/sys/arch/amd64/conf/RAMDISK_CD
option DDB
option DDB_SAFE_CONSOLE
3. prepared config but did not build kernel yet
cd /usr/src/sys/arch/amd64/conf
config RAMDISK_CD
4. Now tricky part - short circuit to make kernel with ramdisk...
cd /usr/src
make obj
# workaround for error "-lstubs not found"
cd /usr/src/distrib/special/libstubs
make
# now back to work...
cd /usr/src/distrib/amd64/ramdisk_cd/
# don't do this BUILDUSER=root on production!
make bsd.gz BUILDUSER=root
5. obj/bsd.gz is your own gzipped kernel with installation ramdisk you can boot.
(I used virtual hdd with exiting OpenBSD 7.3/amd64 to boot this kernel and
(re)installing
OpenBSD from CD there to trigger that trap).
Best regards
--
--Henryk Paluch