From patchwork Tue Jul 11 20:06:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 786839 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3x6YB14CYnz9s8P for ; Wed, 12 Jul 2017 06:11:05 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 5D84AC21ED2; Tue, 11 Jul 2017 20:08:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 6CD9FC21EFE; Tue, 11 Jul 2017 20:07:39 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 3A1FAC21E51; Tue, 11 Jul 2017 20:07:29 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by lists.denx.de (Postfix) with ESMTPS id D0ED7C21E51 for ; Tue, 11 Jul 2017 20:07:25 +0000 (UTC) Received: from workstation4.fritz.box ([88.152.145.149]) by mail.gmx.com (mrgmx001 [212.227.17.184]) with ESMTPSA (Nemesis) id 0Lz3nU-1diPSY3fQO-014BoQ; Tue, 11 Jul 2017 22:06:39 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Tue, 11 Jul 2017 22:06:21 +0200 Message-Id: <20170711200625.7108-9-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170711200625.7108-1-xypron.glpk@gmx.de> References: <20170711200625.7108-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:Wh6YKNvf+BliMGgZaCia17My6Hh6Qo3ZMdF7PhVzeOIhGTlAJ/m XK9YJ/IE9S3Yecf7JCWD1YLvTOULgOn7aCvZA7WJeOOLUKXV/Ot5FVo0Kjqd0uIWt5BdAad ReDZHliOrlsZi5tjVqZqo4SAkz8F5LxAE5JXC4m8vstZFlROwUihag3b5spWa4LmIwrwi4a SaDvQJImVNKhuLJ3cgepA== X-UI-Out-Filterresults: notjunk:1; V01:K0:Ek3Mn3tz6fY=:CK95lakvKRQfI5QEaLQg64 BLDTyrBJyW2JV4KAVsBs0PaLKx+2fzb/jv1YEvgnd5DKHvpRZF84KShTVQdT2/rinxPsbLyR5 97+yXxfWqjEquZK70aBb/lleShdDWJand4MfqdH2eOScSbu7OAYrct6nQkHz0HhE7+OUOhC2Q r416HN5j3WvEh4CF5HyuDcnG2c1y70lYPY4xbQBObyc3QCCFPwNisU2rjYNyi7R6YvECDkn5F rEra0nvVsdXACozvEs5lNjVkPv3yBDpBDoB+jjdbjBZox1vl5+0LNjrG2Gun3MfWFWSLtcXXJ cN5IBQWLu74jU7K6Smgw+41ePCxHTxdx1+PXhSLhIRVRwTWC0b2MXDmuQpro65xRLHjXhi8Vf Z8+vy6SDlBeW+Cy4BG+3JRKJWBHyuKLtbrytPmUqXZdYNaUGfshV4Y/c1hWDP7o1Bo1XWpdrI xTzKGrMOkhTo+blRfzn2Pe5mqg1SiorS3dCryqiMJNpJPKMK0auMtZR5KWzZLjaoIx8/ta7ME eZJMvKCdHv8KqHkBrHYo+HjTM1s/IonwqeyxQQlpaE5p0w1aHrUlUgj4BoCxZZNjfvVALvpM0 iK6YemnZ+k/SD42GHrO1wTzXOPQbe2pO1Bb9oeJ+fnbt6ukktEpNZXMb0xU7Z4tWYEp2sBUG5 vO5S4ISD3R2nDJHxB5uH6UvqvvlJ7n+Zi/ZIAqpYI2CZEN9X7XoFkqJGGiy3Hn9l8THLXoian lt3jFnSYFyDHiH+Sar/jHtVmtxuZVFb84sntc3mOJ4h1UatL2d9YprOSVgw= Cc: Heinrich Schuchardt , u-boot@lists.denx.de Subject: [U-Boot] [PATCH v2 08/12] efi_loader: refactor efi_locate_handle X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" To implement LocateHandleBuffer we need to call efi_locate_handle internally without running through EFI_EXIT. So put EFI_ENTRY and EFI_EXIT into a new wrapper function efi_locate_handle_ext. Signed-off-by: Heinrich Schuchardt --- v2 no change --- lib/efi_loader/efi_boottime.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index 74b9620ad8..888207681c 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -461,9 +461,6 @@ static efi_status_t EFIAPI efi_locate_handle( struct list_head *lhandle; unsigned long size = 0; - EFI_ENTRY("%d, %p, %p, %p, %p", search_type, protocol, search_key, - buffer_size, buffer); - /* Count how much space we need */ list_for_each(lhandle, &efi_obj_list) { struct efi_object *efiobj; @@ -475,7 +472,7 @@ static efi_status_t EFIAPI efi_locate_handle( if (*buffer_size < size) { *buffer_size = size; - return EFI_EXIT(EFI_BUFFER_TOO_SMALL); + return EFI_BUFFER_TOO_SMALL; } /* Then fill the array */ @@ -488,7 +485,19 @@ static efi_status_t EFIAPI efi_locate_handle( } *buffer_size = size; - return EFI_EXIT(EFI_SUCCESS); + return EFI_SUCCESS; +} + +static efi_status_t EFIAPI efi_locate_handle_ext( + enum efi_locate_search_type search_type, + efi_guid_t *protocol, void *search_key, + unsigned long *buffer_size, efi_handle_t *buffer) +{ + EFI_ENTRY("%d, %p, %p, %p, %p", search_type, protocol, search_key, + buffer_size, buffer); + + return EFI_EXIT(efi_locate_handle(search_type, protocol, search_key, + buffer_size, buffer)); } static efi_status_t EFIAPI efi_locate_device_path(efi_guid_t *protocol, @@ -948,7 +957,7 @@ static const struct efi_boot_services efi_boot_services = { .handle_protocol = efi_handle_protocol, .reserved = NULL, .register_protocol_notify = efi_register_protocol_notify, - .locate_handle = efi_locate_handle, + .locate_handle = efi_locate_handle_ext, .locate_device_path = efi_locate_device_path, .install_configuration_table = efi_install_configuration_table_ext, .load_image = efi_load_image,