From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from server202.webhostingpad.com (server202mail.webhostingpad.com [50.31.162.9]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 8A6BC82228 for ; Tue, 21 Feb 2017 12:07:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cmlab.biz; s=default; h=Content-Type:MIME-Version:Date:Message-ID:To:Subject:From: Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=q94nOgPoJk2mVlgk/9vPXIldEiO6ylagLya35YXKMxw=; b=UCI+JNbT783SrZ3XG4tlT8I/ch QBU3teuXquxMalNfBzCu4LOR9YMn6PV/zSK2zsF4/egfUF3njtEtNCacOqkrj1Jg/4Rqma+7dlQiZ SP50mqvw97CZIDLx9++6nvcotcRV9qZMUy9GiXfYo+Uj12rLd5t3VJjv+sRT3kfWScNs=; Received: from [71.216.152.198] (port=36476 helo=[192.168.50.197]) by server202.webhostingpad.com with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.87) (envelope-from ) id 1cgGiL-001Qf3-Eu for edk2-devel@lists.01.org; Tue, 21 Feb 2017 14:07:09 -0600 From: "David A. Van Arnem" To: edk2-devel@lists.01.org Message-ID: Date: Tue, 21 Feb 2017 13:07:08 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server202.webhostingpad.com X-AntiAbuse: Original Domain - lists.01.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - cmlab.biz X-Get-Message-Sender-Via: server202.webhostingpad.com: authenticated_id: dvanarnem@cmlab.biz X-Authenticated-Sender: server202.webhostingpad.com: dvanarnem@cmlab.biz X-Source: X-Source-Args: X-Source-Dir: X-Content-Filtered-By: Mailman/MimeDel 2.1.21 Subject: EfiTestManagedDevice() issue in driver GetControllerName() function X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Feb 2017 20:07:10 -0000 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi all, I am developing a UEFI_DRIVER for a custom PCIe device. I've followed the UEFI Driver Model, and implemented the Driver Binding, Component Name, and Component Name 2 protocols for my driver. I'm trying to retrieve the Controller Name from this driver in a UEFI_APPLICATION, but I've run into an issue. In the driver's Start() function, I open the EFI_PCI_IO_PROTOCOL on ControllerHandle using the following: Status =3D gBS->OpenProtocol ( ControllerHandle, &gEfiPciIoProtocolGuid, (VOID **)&PciIoProtocol, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER ); And leave it open when Start() exits, unless some other part of the Start() function fails, which doesn't appear to be happening based on my debug messages. Following some of the examples in edk2, in my Component Name's GetControllerName() function, I used EfiTestManagedDevice() to check that the ControllerHandle opened EFI_PCI_IO_PROTOCOL: Status =3D EfiTestManagedDevice ( ControllerHandle, gDriverBinding.DriverBindingHandle, &gEfiPciIoProtocolGuid ); Finally, to get the Controller Name in the application, I first get a buffer of handles that publish the ComponentName2 protocol, then walk through each and call GetControllerName(). However, the EfiTestManagedDevice() check in my driver is returning EFI_UNSUPPORTED, indicating the protocol is not supported on the handle. Furthermore, after using "load .efi" from the shell, openinfo on the handle returns: Handle 188 (6E16A798) ComponentName2 ComponentName DriverBinding Drv[01] Ctrl[ ] Cnt(200) HandProt Image() ImageDevicePath Drv[187] Ctrl[ ] Cnt(01) GetProt Image() LoadedImage Drv[01] Ctrl[ ] Cnt(09) HandProt Image() I feel like maybe I'm missing a step here. Should I see PciIo in openinfo? Do I need to open a "child" instance of the ControllerHandle in my application to get EfiTestManagedDevice() to pass? I'm not sure if that's the right terminology, I'm having a little difficulty understanding the "child" concept in this context. Any tips appreciated.= --=20 Regards, David Van Arnem Development Engineer IV Computer Measurement Laboratory, LLC