From patchwork Wed Jul 5 16:18:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 784722 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 3x2mP448QXz9s7B for ; Thu, 6 Jul 2017 02:22:32 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 50304C21F0E; Wed, 5 Jul 2017 16:21:29 +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, RCVD_IN_MSPIKE_H2 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 88035C21F1D; Wed, 5 Jul 2017 16:20:25 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5803DC21EE6; Wed, 5 Jul 2017 16:20:22 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by lists.denx.de (Postfix) with ESMTPS id 06A6EC21EC4 for ; Wed, 5 Jul 2017 16:20:19 +0000 (UTC) Received: from workstation4.fritz.box ([88.152.145.149]) by mail.gmx.com (mrgmx003 [212.227.17.184]) with ESMTPSA (Nemesis) id 0LoEPJ-1dvEx018Uz-00gD5z; Wed, 05 Jul 2017 18:19:31 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Wed, 5 Jul 2017 18:18:51 +0200 Message-Id: <20170705161855.20124-6-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170705161855.20124-1-xypron.glpk@gmx.de> References: <20170705161855.20124-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:0dv5iAoAA7+Hj5pb1HHuVBaZyF/mAlW//9jyHVNo/QfzD2dd4f6 PF09VBx5F6fzC8Nql3RVZRzftxEJrqqA6sF18xQmsCaQH47AICR24LoHqv1UuDCs/homKw0 ZvP9SFKDypi2ygJAegkAt6QWqrwbVg10MEzJsEZrNjgEYnOyroie0sAFmh7C683+pHE/LHO n5fYd2BGWQSRVd1zdevSA== X-UI-Out-Filterresults: notjunk:1; V01:K0:tPfDZpWBZ2Q=:tJx1d0PADlfYatI+XnXWqu qNzdMR3+RIHiX1mHC+YzokBwy6Y9rTvkWAskzeUINgKAT83qxCAMno2z5Jjqs/EfVC7Edvvnv Rt8eIfnST+CqMLnItuKuwD8MhSxmhdqOtyWI9oj2it4r6kg0TnmkdKOrrQri7inyfgfSnE25N FUJd//sG0ImlZ1ZfuVUb+UIJhgmC0550KiLz/Ekj775X5iX0pIQnMZLTZ2RrCCZoPz47Ch+/g nGbdXPWIlVdiix/rbZVru4A0vFzavZyksQemBww8vLLRPcbyt9+ELPVzj9HkMZ1gbRUYLpnKc nJEpokNGrYZNL46fBH7ipPQn1Y7QfEQaS3hNzeGtz2VtZ1CUtnnOKcKjjVRzpt2lO9VbKvry2 BhbcG6h9IuKLbGSWDTJBmZ/k8FdY3UvEbMe0AT9RWx4XJQbGgkBNx5TGngH6GLZ1+FURWaxtq JTeuiaeRy7mjRSTaJJEm8BAyRk3u01HaQGM57RxPBXVievNyDimkFtopnllH8b9IbtHAHe3Qd Whs2QBnxG9MkrCkxmo8Mc63YNiidhCX8iriawHYLN3tOdBJRuOpPsTM5tJ2YtEszaRyEoyaz8 CKfKwfDOTmimAFAcSaBQl0r6P0j7CXWJ7S9PYW1ICXzm9DuDgi6QshfHe+nOhq6J2psiThgiH wK8uB+Olp1DNXVsB0cBhU46FMSKFuRYsLtgpBJNsQSut/Wd+bv9X5hXnZJAkJ6YWh3uamRpCA YT1qVNbu0kxB1z362rAJDuYXcWa5f1LGXK3CGfK7DpucZq8jkujnlFUa5bg= Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH 5/9] efi_loader: refactor efi_install_protocol_interface 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" For the implementation of InstallMultipleProtocolInterfaces we need to call efi_install_protocol_interface. In internal calls we should not pass through EFI_EXIT. The patch introduces a wrapper function efi_install_protocol_interface_ext. Signed-off-by: Heinrich Schuchardt --- lib/efi_loader/efi_boottime.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index b3a59b4219..0075ccaaa2 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -307,9 +307,6 @@ static efi_status_t EFIAPI efi_install_protocol_interface(void **handle, int i; efi_status_t r; - EFI_ENTRY("%p, %p, %d, %p", handle, protocol, protocol_interface_type, - protocol_interface); - if (!handle || !protocol || protocol_interface_type != EFI_NATIVE_INTERFACE) { r = EFI_INVALID_PARAMETER; @@ -354,7 +351,19 @@ static efi_status_t EFIAPI efi_install_protocol_interface(void **handle, } r = EFI_INVALID_PARAMETER; out: - return EFI_EXIT(r); + return r; +} + +static efi_status_t EFIAPI efi_install_protocol_interface_ext(void **handle, + efi_guid_t *protocol, int protocol_interface_type, + void *protocol_interface) +{ + EFI_ENTRY("%p, %p, %d, %p", handle, protocol, protocol_interface_type, + protocol_interface); + + return EFI_EXIT(efi_install_protocol_interface(handle, protocol, + protocol_interface_type, + protocol_interface)); } static efi_status_t EFIAPI efi_reinstall_protocol_interface(void *handle, @@ -889,7 +898,7 @@ static const struct efi_boot_services efi_boot_services = { .signal_event = efi_signal_event, .close_event = efi_close_event, .check_event = efi_check_event, - .install_protocol_interface = efi_install_protocol_interface, + .install_protocol_interface = efi_install_protocol_interface_ext, .reinstall_protocol_interface = efi_reinstall_protocol_interface, .uninstall_protocol_interface = efi_uninstall_protocol_interface, .handle_protocol = efi_handle_protocol,