DF-5598 / run.log
===== 0. state before
4 1 0xffffffff82600000 26000 ichsmb.ko
ichsmb0
Interrupt request lines cpu4:
16
I/O ports:
0x700-0x73f
smbus0
===== 1. load veto child under smbus0
===== 2. TRIGGER: kldunload ichsmb (== devclass_delete_driver path)
kldunload: can't unload file: Device busy
kldunload rc=1
===== 3. state after vetoed unload attempt
4 0 0xffffffff82600000 26000 ichsmb.ko
ichsmb0
Interrupt request lines cpu4:
16
I/O ports:
0x700-0x73f
smbus0
>>> ichsmb0 still attached with resources: veto HONORED
smb0: <SMBus generic I/O> on smbus0
smb1: <SMBus generic I/O> on smbus0
df5598veto0: <DF-5598 detach-veto child> on smbus0
df5598veto0: armed; detach returns EBUSY while hw.df5598_armed=1
DF5598: veto child attached under smbus0
smb1: detached
smb0: detached
df5598veto0: DETACH VETO: returning EBUSY -- if this is swallowed, ichsmb_release_resources() runs under me
===== 4. functional check: bus transaction still alive (i2c-ddc 0x50)
smbmsg via /dev/smb0 failed/no dev
smbmsg via /dev/smb1 failed/no dev
===== 5. control: disarm veto, retry unload
hw.df5598_armed: 1 -> 0
kldunload rc=0
ichsmb0/smbus0 gone (clean teardown)
veto unload rc=1
===== done
kldunload: can't find file df5598: No such file or directory
rc=1
hammer2_mount: "vbd0s1d": no recovery needed
hammer2: enable read/write
HAMMER2: VOLDATA DUMP
HAMMER2: INITIATE SPANs
swap low/high-water marks set to 41940/62910
ichsmb0: <Intel 82801I (ICH9) SMBus controller> port 0x700-0x73f irq 16 at device 31.3 on pci0
smbus0: <System Management Bus> on ichsmb0
smbus_add_child unit -1
smb0: <SMBus generic I/O> on smbus0
smb1: <SMBus generic I/O> on smbus0
df5598veto0: <DF-5598 detach-veto child> on smbus0
df5598veto0: armed; detach returns EBUSY while hw.df5598_armed=1
DF5598: veto child attached under smbus0
smb1: detached
smb0: detached
df5598veto0: DETACH VETO: returning EBUSY -- if this is swallowed, ichsmb_release_resources() runs under me
df5598veto0: cooperating
df5598veto0: detached
smbus0: detached
ichsmb0: detached