Skip to content

Instantly share code, notes, and snippets.

@xypron
Last active October 3, 2022 06:22
Show Gist options
  • Save xypron/50f844c93d721dc4b99e1ea3c5a3fcf9 to your computer and use it in GitHub Desktop.
Save xypron/50f844c93d721dc4b99e1ea3c5a3fcf9 to your computer and use it in GitHub Desktop.
EDK II model of an NVMe drive: Usage of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER, EFI_OPEN_PROTOCOL_BY_DRIVER
sandbox_defconfig
=> host bind 0 ../sandbox.img
efi_disk_probe: probed device: host0:1
efi_disk_probe: probed device: host0
=> host bind 0 ../sandbox.img
efi_disk_remove: removed device: host0
efi_disk_remove: removed device: host0:1
efi_disk_probe: probed device: host0:1
efi_disk_probe: probed device: host0
qemu_arm64_defconfig
=> scsi scan
efi_disk_probe - probed device: ahci_pci
efi_disk_probe - probed device: ahci_scsi
efi_disk_probe - probed device: ahci_scsi.id0lun0:1
efi_disk_probe - probed device: ahci_scsi.id0lun0
=> scsi scan
scanning bus for devices...
=> scsi scan
scanning bus for devices...
efi_disk_remove: removed device: ahci_scsi.id0lun0
efi_disk_remove: removed device: ahci_scsi.id0lun0:1
efi_disk_probe: probed device: ahci_scsi.id0lun0:1
efi_disk_probe: probed device: ahci_scsi.id0lun0
=> bootefi selftest
efi_disk_probe: probed device: efiblk#0:1
efi_disk_probe: probed device: efiblk#0
Call chain for new block device:
probe_device
uclass_post_probe_device
blk_post_probe
part_create_block_devices
probe_device
device_notify - partition
device_notify - block device
Call chain when removing block device:
device_remove
device_notify - block device
efi_disk_remove
device_chld_remove
device_remove - partition
0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
protocol - 151c8eae-7f2c-472c-9e549828194f6a88 EFI_DISK_IO2_PROTOCOL
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
protocol - ce345171-ba0b-11d2-8e4f00a0c969723b EFI_DISK_IO_PROTOCOL
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
OpenCount - 0x00000001
protocol - d432a67f-14dc-484b-b3bb3f0291849327 DISK INFO PROTOCOL GUID (not in UEFI standard)
AgentHandle - 000000013b623f98
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
OpenCount - 0x00000003
protocol - a77b2472-e282-4e9f-a245c2c0e27bbcc1 EFI_BLOCK_IO2_PROTOCOL_GUID
AgentHandle - 000000013a910a98
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_GET_PROTOCOL
OpenCount - 0x00000008
protocol - 964e5b21-6459-11d2-8e3900a0c969723b EFI_BLOCK_IO_PROTOCOL
AgentHandle - 000000013a910a98
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x00000001
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_GET_PROTOCOL
OpenCount - 0x00000008
AgentHandle - 000000013b623f98
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
OpenCount - 0x00000007
protocol - 09576e91-6d3f-11d2-8e3900a0c969723b EFI_DEVICE_PATH_PROTOCOL_GUID
AgentHandle - 000000013b623f98
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
OpenCount - 0x00000055
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
AgentHandle - 000000013a917398
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x00000008
AgentHandle - 000000013a916a98
ControllerHandle - 0000000138e8bd18 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x00000008
0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
protocol - 964e5b22-6459-11d2-8e3900a0c969723b EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID
AgentHandle - 000000013b623f98
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
OpenCount - 0x00000002
AgentHandle - 0000000138905218
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x00000001
AgentHandle - 0000000138905218
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_GET_PROTOCOL
OpenCount - 0x00000006
protocol - 151c8eae-7f2c-472c-9e549828194f6a88 EFI_DISK_IO2_PROTOCOL
AgentHandle - 000000013a90f898
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
protocol - ce345171-ba0b-11d2-8e4f00a0c969723b EFI_DISK_IO_PROTOCOL
AgentHandle - 000000013a90f898
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
protocol - c12a7328-f81f-11d2-ba4b00a0c93ec93b EFI System Partition
protocol - 8cf2f62c-bc9b-4821-808dec9ec421a1a0 EFI_PARTITION_INFO_PROTOCOL
protocol - a77b2472-e282-4e9f-a245c2c0e27bbcc1 EFI_BLOCK_IO2_PROTOCOL
AgentHandle - 000000013a910a98
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_GET_PROTOCOL
OpenCount - 0x00000001
protocol - 964e5b21-6459-11d2-8e3900a0c969723b EFI_BLOCK_IO_PROTOCOL
AgentHandle - 000000013a910a98
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_BY_DRIVER
OpenCount - 0x00000001
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x00000001
AgentHandle - 000000013a910798
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_GET_PROTOCOL
OpenCount - 0x00000001
AgentHandle - 000000013a90f898
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x00000001
AgentHandle - 000000013a90f898
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_GET_PROTOCOL
OpenCount - 0x00000001
AgentHandle - 000000013b623f98
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
OpenCount - 0x0000000a
protocol - 09576e91-6d3f-11d2-8e3900a0c969723b EFI_DEVICE_PATH_PROTOCOL_GUID
AgentHandle - 000000013b623f98
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
OpenCount - 0x00000071
AgentHandle - 000000013a917398
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x0000000a
AgentHandle - 000000013a916a98
ControllerHandle - 0000000138e88e98 PciRoot(0x0)/Pci(0x4,0x0)/NVMe(0x1,00-00-00-00-00-00-00-00)/HD(1,GPT,82C9E3C6-7D9A-4A83-AD5F-E46160C5A6F7,0x800,0x7FF7DF)
Attributes - EFI_OPEN_PROTOCOL_TEST_PROTOCOL
OpenCount - 0x0000000a
AgentHandle - 0000000138905218
ControllerHandle - 0000000000000000
Attributes - EFI_OPEN_PROTOCOL_GET_PROTOCOL
OpenCount - 0x00000006
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment