On 07/18/19 18:02, Ravi Kumar Siadri wrote: > Hi Laszlo Ersek / Hao Wu, > > I have gone through the Guide, i can see some points which are not > very clear.. > > [...]
Perhaps some examples will help. In advance, I should mention a few things: - This is just my interpretation of the spec, and of the guide. - In my last email, the VenMsg suggestion was wrong. The device paths for the physical channel(s) are built by appending Ctrl(n) -- "controller" -- hardware device path nodes, and not VenMsg() nodes. - "Logical" means "channel with abstract devices, suitable for data access & booting", "Physical" means "channel with physical devices, used for diagnostics". A channel may be *both*, if each device on it is both physical and logical simultaneously -- that is, it can be used for data access / booting, and for low-level diagnostics. So, the examples: (A) non-RAID HBA * Summary: Handle#1: PciRoot(0x0)/Pci(0x1,0x0) -- channel where each device is (L + P) Handle#2: PciRoot(0x0)/Pci(0x1,0x0)/Scsi(0x1,0x0) -- disk that is (L + P) * Details: Handle#1: - device path: PciRoot(0x0)/Pci(0x1,0x0) - handle created by PciBusDxe [= platform firmware] - device path protocol installed by PciBusDxe - PciIo protocol installed by PciBusDxe - ExtScsiPassThru protocol installed by the SCSI HBA driver, through consuming PciIo - Logical bit set in ExtScsiPassThru: meaning that devices enumerated on this channel can be used for data access & booting - Physical bit set in ExtScsiPassThru: meaning that devices enumerated on this channel can be sent diagnostic commands Handle#2: - device path: PciRoot(0x0)/Pci(0x1,0x0)/Scsi(0x1,0x0) - handle created by ScsiBusDxe [= platform firmware] - device path protocol installed by ScsiBusDxe (here: Target=1, Lun=0) - ScsiIo protocol installed by ScsiBusDxe [= platform firmware], through consuming ExtScsiPassThru on Handle#1 - BlockIo protocol installed by ScsiDiskDxe [= platform firmware], through consuming ScsiIo on the same handle (= Handle#2) (B) RAID HBA * Summary: Handle#1: PciRoot(0x0)/Pci(0x1,0x0) -- logical channel Handle#2: PciRoot(0x0)/Pci(0x1,0x0)/Scsi(0x1,0x0) -- logical disk Handle#3: PciRoot(0x0)/Pci(0x1,0x0)/Ctrl(0x0) -- physical channel Handle#4: PciRoot(0x0)/Pci(0x1,0x0)/Ctrl(0x0)/Scsi(0x4,0x0) -- physical disk #0 Handle#5 PciRoot(0x0)/Pci(0x1,0x0)/Ctrl(0x0)/Scsi(0x4,0x1) -- physical disk #1 * Details: Handle#1: - The same as Handle#1 from (A), except the Physical bit is clear in the ExtScsiPassThru protocol instance. - This handle stands for the logical channel. Handle#2: - The same as Handle#2 from (A). - This handle stands for the logical disk. Handle#3: - Device path: PciRoot(0x0)/Pci(0x1,0x0)/Ctrl(0x0). - Handle created by the SCSI HBA driver. - Device path installed by the SCSI HBA driver. - ExtScsiPassThru protocol installed by the SCSI HBA driver, through consuming PciIo on Handle#1. - Logical bit is clear in ExtScsiPassThru. - Physical bit is set in ExtScsiPassThru. - This handle stands for the physical channel. Handle#4: - Device path: PciRoot(0x0)/Pci(0x1,0x0)/Ctrl(0x0)/Scsi(0x4,0x0) - Handle created by ScsiBusDxe [= platform firmware]. - Device path protocol installed by ScsiBusDxe (here: Target=4, Lun=0). - ScsiIo protocol installed by ScsiBusDxe [= platform firmware], through consuming ExtScsiPassThru on Handle#3. - BlockIo protocol is *NOT* installed by ScsiDiskDxe [= platform firmware], due to the Logical bit being clear in ExtScsiPassThru on Handle#3. - This handle stands for the first physical disk in the array. Handle#5: - Same as Handle#4, with the following differences: - Device path: PciRoot(0x0)/Pci(0x1,0x0)/Ctrl(0x0)/Scsi(0x4,0x1). - This handle stands for the second physical disk in the array. Hope this helps, Laszlo -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#43971): https://edk2.groups.io/g/devel/message/43971 Mute This Topic: https://groups.io/mt/32007447/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-