jnielsendotnet / isboot

FreeBSD kernel module to support booting from iSCSI via IBFT
4 stars 7 forks source link

Fix operation against ctld #1

Closed DanielO closed 3 years ago

DanielO commented 3 years ago

As per https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227313 ctld does not handle 'login retry' only 'login'. The attached patch makes it try both.

DanielO commented 3 years ago

I resurrected my iSCSI boot environment and ported only the I bit change in isboot_do_login but I am getting a panic in 12.2 so I am a bit stuck:

Timecounters tick every 10.000 msec
iSCSI boot driver version 0.2.14+k
found iBFT at 0x971a0
iBFT: length=603, revision=1, checksum=0x76
iBFT: oemid='FENSYS', oemtableid='iPXE'
iBFT: sum = 0x0
iBFT: CS: length=18, index=0, flags=0x0
iBFT: CS: initiator=80, nic0=160, target0=384, nic1=0, target1=0
iBFT: IS: length=74, index=0, flags=0x3
IS: Initiator name: iqn.2010-04.org.ipxe:c32d4d56-0a12-c32d-0508-9efa5d914725
iBFT: NIC0: length=102, index=0, flags=0x3
NIC0: IP address: 203.31.81.254
NIC0: Prefix: 24
NIC0: Origin: 3
NIC0: Gateway: 203.31.81.2
NIC0: Primary DNS: 203.31.81.2
NIC0: Secondary DNS: 203.31.81.10
NIC0: DHCP: 203.31.81.2
NIC0: VLAN: 0
NIC0: MAC address: 00:0c:29:91:47:25
NIC0: PCI Bus/Dev/Func: 208 (2/1/0)
iBFT: TGT0: length=54, index=0, flags=0x3
TGT0: Target IP address: 203.31.81.45
TGT0: Target Port: 3260
TGT0: Target LUN: 0
TGT0: CHAP type: 0
TGT0: NIC index: 0
TGT0: Target name: iqn.2018-09.au.com.gsoft:target0
Boot NIC: em0

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0xe0
fault code      = supervisor read data, page not present
instruction pointer = 0x20:0xffffffff80ccedb2
stack pointer           = 0x28:0xffffffff824d6ab0
frame pointer           = 0x28:0xffffffff824d6b60
code segment        = base 0x0, limit 0xfffff, type 0x1b
            = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags    = interrupt enabled, resume, IOPL = 0
current process     = 0 (swapper)
trap number     = 12
panic: page fault
cpuid = 0
time = 1
KDB: stack backtrace:
#0 0xffffffff80c1bf95 at kdb_backtrace+0x65
#1 0xffffffff80bd048b at vpanic+0x17b
#2 0xffffffff80bd0303 at panic+0x43
#3 0xffffffff810eb971 at trap_fatal+0x391
#4 0xffffffff810eb9cf at trap_pfault+0x4f
#5 0xffffffff810eb016 at trap+0x286
#6 0xffffffff810c3388 at calltrap+0x8
#7 0xffffffff8248f374 at isboot_handler+0x2c4
#8 0xffffffff80baf494 at module_register_init+0xa4
#9 0xffffffff80b67a9f at mi_startup+0xdf
#10 0xffffffff8037e02c at btext+0x2c
DanielO commented 3 years ago

That was due to me not including the socreate() part of the patch. I have created 3 PRs - I only was only able to test them combined but they are logically distinct.

jnielsendotnet commented 3 years ago

Thanks! I merged 2 of the 3 PRs. I excluded the VIMAGE one since I prefer to have the port control that option (it defaults to on).