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