On Tue, Sep 18, 2012 at 3:51 AM, Laszlo Ersek <ler...@redhat.com> wrote:
> Hi,
>
> "9.2 Driver Binding Protocol Template" in the Driver Writer’s Guide
> for UEFI 2.3.1 (v1.01) says,
>
>     Although the thought of initializing something as soon as it is
>     supported in the Supported() service of the driver seems to make
>     sense, the Supported() service is intended only to be a quick check
>     to find out if a driver can make a connection to the specified
>     controller, find out if it has already been called (started and in
>     use), or if it is in use exclusively by another component. The
>     Supported() service must return an error if the controller is
>     already in use or is in use exclusively by another component.
>
> How do I detect if Start() has already been called for this Controller
> (which is a PCI device BTW). I figured my driver could keep a list of
> already driven Controllers, but "18 PCI Driver Design Guidelines" comes
> with several examples and none of them implement something like this, as
> far as I can see.
>
> My current Supported() function starts by calling gBS->OpenProtocol()
> with gEfiPciIoProtocolGuid. This operation is undone at the end of
> Supported(), but not undone at the end of a successful Start(). So, may
> I expect the PciIo protocol to keep track of driven Controllers for me?
> Consequently, may I expect OpenProtocol() in my Supported() function to
> return EFI_ALREADY_STARTED (which I then forward outwards from Supported())?

Yes, the UEFI Boot Services/DXE Core will keep track of which protocol
instances are "open".

-Jordan

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to