From: "Wu, Hao A" <hao.a.wu@intel.com>
To: Laszlo Ersek <lersek@redhat.com>,
"siadriravikumaruefi@gmail.com" <siadriravikumaruefi@gmail.com>
Cc: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Cetola, Stephano" <stephano.cetola@intel.com>
Subject: Re: [edk2-devel] ExtScsiPassThru support for Logical SCSI devices
Date: Mon, 15 Jul 2019 05:25:28 +0000 [thread overview]
Message-ID: <B80AF82E9BFB8E4FBD8C89DA810C6A093C905B81@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20b41687-a450-b81e-2393-96549100b13d@redhat.com>
> -----Original Message-----
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Saturday, July 13, 2019 6:11 AM
> To: siadriravikumaruefi@gmail.com
> Cc: devel@edk2.groups.io; Wu, Hao A; Cetola, Stephano
> Subject: Re: [edk2-devel] ExtScsiPassThru support for Logical SCSI devices
>
> On 06/10/19 14:32, Ravi Kumar Siadri wrote:
> > Hi all,
> >
> > I have couple of queries regarding the
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL attribute support in
> > EFI_EXT_SCSI_PASS_THRU_PROTOCOL.
> >
> > 1.
> > The Attributes field of the EFI_EXT_SCSI_PASS_THRU_PROTOCOL interface
> > tells if the interface is for physical SCSI devices or logical SCSI
> > devices. Drivers for non-RAID SCSI controllers will set both the
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_PHYSICAL, and the
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL bits.
> >
> > If the Drivers is for non-RAID SCSI controllers why to set the
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL bit. Will there be any
> case
> > that non-RAID SCSI controllers have Logical devices connected to it ??
> >
> > 2.
> > Drivers for RAID controllers that allow access to the physical devices
> > and logical devices will produce two EFI_EXT_SCSI_PASS_THRU_PROTOCOL
> > interfaces: One with the just the
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_PHYSICAL bit set and another
> with
> > just the EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL bit set. One
> > interface can be used to access the physical devices attached to the
> > RAID controller, and the other can be used to access the logical
> > devices attached to the RAID controller for its current configuration.
> >
> > Any background why EFI_EXT_SCSI_PASS_THRU_PROTOCOL needed 2
> instances
> > ? why can't we install attributes
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL and
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_PHYSICAL on same Instance ??
> How
> > User locates the Instance with
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_LOGICAL bit set and Instance with
> > EFI_EXT_SCSI_PASS_THRU_ATTRIBUTES_PHYSICAL bit set. ??
>
> Please consult the UEFI Driver Writer's Guide on these questions. (What
> I have on my disk now is Version 1.01, for UEFI 2.3.1, released
> 03/08/2012.)
Thanks Laszlo,
The information mentioned above is really helpful.
As a supplementary, the UEFI Driver Writer's Guide is also available online at:
https://edk2-docs.gitbooks.io/edk-ii-uefi-driver-writer-s-guide/
Best Regards,
Hao Wu
>
> Excerpts:
>
> > 6.3 Hybrid drivers
> >
> > [...]
> >
> > A driver for a multi-channel RAID SCSI host controller is a hybrid
> > driver. It produces the Extended SCSI Pass Thru Protocol (with the
> > logical bit on) on the controller handle and creates child handles
> > with Extended SCSI Pass Thru Protocol for each physical channel (with
> > the logical bit off).
>
> > 20.1.3 SCSI Adapters with RAID
> >
> > A SCSI host controller driver may also support SCSI adapters with RAID
> > capability. The following figure shows an example implementation with
> > two physical SCSI channels and one logical channel. The two physical
> > channels are implemented on the SCSI adapter. The RAID component then
> > configures these two channels to produce a logical SCSI channel. The
> > two physical channels each have Extended SCSI Pass Thru installed, but
> > these are not be used except for diagnostic use. For the logical
> > channel, the SCSI host controller driver produces another Extended
> > SCSI Pass Thru Protocol (with physical bit turned off) instance based
> > on the RAID configuration. Requests sent to the Extended SCSI Pass
> > Thru protocol for the logical channel are processed by the SCSI host
> > controller drivers and converted into requests on the physical SCSI
> > channels. The platform firmware must only enumerate and boot from SCSI
> > targets present on the logical SCSI channel.
> >
> > The SCSI adapter hardware may not be able to expose the physical SCSI
> > channel(s) to upper-level software when implementing RAID. If the
> > physical SCSI channel cannot be exposed to upper software, then the
> > SCSI host controller driver is only required to produce a single
> > logical channel for the RAID.
> >
> > Although the basic theory is the same as the one on a physical
> > channel, it is different from a manufacturing and diagnostic
> > perspective. If the physical SCSI channels are exposed, any SCSI
> > command, including diagnostic ones, can be sent to an individual
> > channel, which is very helpful on manufacturing lines. Furthermore,
> > the diagnostic command can be sent simultaneously to all physical
> > channels using the non-blocking mode that is supported by Extended
> > SCSI Pass Thru Protocol. The diagnostic process may considerably
> > benefit from the performance gain. In summary, it is suggested to
> > expose physical SCSI channel whenever possible.
>
> > 20.1.4.2 Start()
> >
> > [...]
> >
> > The Start() function tells the SCSI host controller driver to start
> > managing the SCSI host controller. In this function, a single channel
> > SCSI host controller driver uses chip-specific knowledge to perform
> > the following tasks:
> > * Initialize the SCSI host controller.
> > * Enable the PCI device.
> > * Allocate resources.
> > * Construct data structures for the driver to use.
> > * Install the Extended SCSI Pass Thru Protocol instance on the same
> > handle that has the PCI I/O Protocol.
> >
> > If the SCSI adapter is a multi-channel adapter, then the driver should
> > also do the following:
> >
> > Enumerate the SCSI channels that are supported by the SCSI host
> > controller.
> > * Create child handles for each physical SCSI channel.
> > * Append the device path for each channel handle.
> > * Install the Device Path Protocol and Extended SCSI Pass Thru
> > Protocol on every newly created channel handle.
>
> ---------
>
> So the trick is that the parent controller is the logical one (the
> combined device -- the array), and the child controllers are the
> physical ones (the individual "inexpensive" disks). The platform
> firmware will ignore the individual physical disks for all intents and
> purposes, but on "manufacturing lines", exposing the physical disks is
> good for diagnosing problems.
>
> Regarding the device paths of the child controllers: you can build the
> device path for each child controller for example by appending a
> VenMsg() device path node to the parent controller's device path. The
> opaque data bytes in the VenMsg() node would carry hardware specific
> identifying information for the individual physical disk.
>
> If you don't want to expose the physical ("inexpensive") disks for any
> purpose, then don't write a hybrid driver -- write a device driver.
> Install EFI_ATA_PASS_THRU_PROTOCOL only on the "parent" handle (the
> one
> with PciIo), produce no child handles, and set only the logical
> attribute bit.
>
> Thanks
> Laszlo
next prev parent reply other threads:[~2019-07-15 5:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-10 12:32 ExtScsiPassThru support for Logical SCSI devices Ravi Kumar Siadri
2019-07-12 22:10 ` [edk2-devel] " Laszlo Ersek
2019-07-15 5:25 ` Wu, Hao A [this message]
2019-07-18 16:02 ` Ravi Kumar Siadri
2019-07-18 21:10 ` Laszlo Ersek
[not found] <CAHPR0Q2RMR2TXUgHchw5X-ojRx7DQL1xBisucHsVxxfc28Hd=w@mail.gmail.com>
2019-06-12 4:00 ` Ravi Kumar Siadri
2019-06-12 7:55 ` [edk2-devel] " Wu, Hao A
2019-06-13 8:18 ` Ravi Kumar Siadri
2019-06-14 5:51 ` Wu, Hao A
2019-07-07 6:58 ` Ravi Kumar Siadri
2019-07-08 3:09 ` Wu, Hao A
2019-07-08 8:35 ` Ravi Kumar Siadri
2019-07-11 12:59 ` Wu, Hao A
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=B80AF82E9BFB8E4FBD8C89DA810C6A093C905B81@SHSMSX104.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox