From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E76A2C4332F for ; Sat, 24 Dec 2022 12:25:51 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 13D9285496; Sat, 24 Dec 2022 13:25:49 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=sancloud.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id A414D85499; Sat, 24 Dec 2022 13:25:47 +0100 (CET) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2051.outbound.protection.outlook.com [40.107.255.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7B4B485458 for ; Sat, 24 Dec 2022 13:25:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=sancloud.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=paul.barker@sancloud.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gkFH5LcD6FB6CxBwQDdCt9m7PfOb3i+7plmZTT1+8CKccgMdzNoCRvgWX5X83JO87nrRVOlu1TzpwUSPnXZGyG+ZvVT6rGr+ZIiGSJhB5YsbJ/AGTsdWFQxxOJgXwiDnRbPW/gzy1o4cp7yhg4nXD6ZnbgDACDwFuY3pUmjVA3bQwDjISYixgPbO64jCIbzlA4aMt1pQLtV8944NwAEqpn1df5U84DRPYq28Adwc6pcUpF7qaLnIXRk3zpm5w4nW3Gp9eM61VpZ5btlfHsezlpBIJ779hPgkay7m/TRanqw2ns3eKinKytoAFDiSGODUDz26JpFROBhRdkqfmtOfEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=T5W1GqmLrmHjQshix+DippnJpsLsGrpjcDJC4Jyc0N4=; b=e/r+fq0FcaIAv7YpaWeo+CT9YAHWwDdHsDWrYyyH476QbvyyHPC/26ZQCsEjtx6Y9ZtY8NFy1CGA59jSUEb1kodOFD7pZlGrQzMOLXtFdvJyURXVd/+jei1iNAQmI8E/IXG3k0/ryQaTbH91gZXgrmIMVnT/sKxZ0T/fGtHuZFOjGkIGvhqggMetjFeIXuU1v1ul/0djLqToZdavPCmMZEQffbsO+4KsJgmd0JLivpjwii/87c9z+qAbIgBywVErKttz6YqfKgWGkENlFJjDrmjdesnrT3RmESpAF+NE0Br0vZJP/zQH3+y3ukXVTvea6D/Yb6iYQkGSGOptYsn/pQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sancloud.com; dmarc=pass action=none header.from=sancloud.com; dkim=pass header.d=sancloud.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=sancloud.com; Received: from SEYPR06MB5064.apcprd06.prod.outlook.com (2603:1096:101:55::13) by TYZPR06MB4173.apcprd06.prod.outlook.com (2603:1096:400:26::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.15; Sat, 24 Dec 2022 12:25:37 +0000 Received: from SEYPR06MB5064.apcprd06.prod.outlook.com ([fe80::195a:2d6f:8000:fe5a]) by SEYPR06MB5064.apcprd06.prod.outlook.com ([fe80::195a:2d6f:8000:fe5a%3]) with mapi id 15.20.5944.013; Sat, 24 Dec 2022 12:25:37 +0000 Message-ID: <0b4e6d32-a5f1-34c3-24d8-b500a538b8da@sancloud.com> Date: Sat, 24 Dec 2022 12:25:26 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH v5 1/3] efi_loader: Add SPI I/O protocol support To: Ilias Apalodimas Cc: u-boot@lists.denx.de, Simon Glass , Tom Rini , Heinrich Schuchardt , Jagan Teki References: <20221123175006.4080122-1-paul.barker@sancloud.com> <20221123175006.4080122-2-paul.barker@sancloud.com> From: Paul Barker In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P265CA0199.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:318::16) To SEYPR06MB5064.apcprd06.prod.outlook.com (2603:1096:101:55::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SEYPR06MB5064:EE_|TYZPR06MB4173:EE_ X-MS-Office365-Filtering-Correlation-Id: b67195e9-526c-4f62-3675-08dae5a9f616 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: amNHXxqjWXbnhxTWfksqXfqbHZorA4wzliXa2ONfMKy8+r790f06PNUnqfnkle7TKTgDElC3V9E4aPRbi6h5iytPZxnCb2z7K2p+h3L6/6732VWjNL6ptmuvlkXL2XdKn39dmG+m1iPlrK+GpRItQRk5CNm4ysr5LmSIX1+5phyiOderkt4ld61TmAum+wFepN3HuWQhINd/artj+a/xn5qAkSZYeyqsvt+u9h+u14AWbvtoZYsoW2dN//f6rYsadt+0QCVreZTMQ93WkkTwwOLmfbGggLCqZraMtmC44MXr5unijZgZCjXf30Nx0ctTvUNnEWJKcFKe7+wISwrAx2BcwZ1yUgLWIIZJM7UUGypsVUmvK+A02OjQGb2wl8XH1MwRceNSF2Lo1gZiHJa+0MNTyp4iSwf3tzB9szck0+KZsGNJhQvSP8T92ggZG6FWI94VmRTp5l7OBChXo6g0v/A34xKujpLdesD3JCRv90r0zLPsx2kMGBk/93zlWZPvShWf2+zFJQMzNzseuuDq8RREIFJKM1+Eo5Di7y4L2/iDOlGCkszyaFjuJFwEcBc1AdxMhDUTE3JjeMlEBdgUirOwcsSDkA349BBR438b5rwxzslYpG1Sou2lPG8/RaMjH8CeCSrkEjzuC7mbLOGk8hIKNKKP0PalMg+r/rTbyIDW9R8jA4rF2/hiSZImLRBntAmucoa8i91U62TSojSdwcchAq6PLloi5a+FYfA7sOIx1w4aO2J25HdZpoSn9fKy X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SEYPR06MB5064.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(366004)(376002)(39830400003)(396003)(136003)(346002)(451199015)(54906003)(6916009)(83380400001)(2906002)(36756003)(6666004)(316002)(786003)(44832011)(41320700001)(2616005)(478600001)(6486002)(186003)(6512007)(38100700002)(26005)(53546011)(6506007)(966005)(86362001)(31696002)(4326008)(31686004)(8676002)(66556008)(66946007)(41300700001)(66476007)(8936002)(5660300002)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QlNKNDlLMWYzM3ZndmsyUUJVWHR4VFBZMWZadFRZRWxYQUhHMFdxcWdiWk1H?= =?utf-8?B?L3Fha2xLL2wrMVJDSVJzalBsSVZXWUNiWnV3N2Y5d3NmRWwwTFZFZUZNWGdC?= =?utf-8?B?eU9oYmFaa3QwaXRlcnE3NEl1NkoxWkRnQ2pFL2FOL0NyZkh3RlYyY1ROUHEr?= =?utf-8?B?WncwaDBmUEU5S2MxRGYwTnc2NndERndsNGUxZFJkSGFSdEY0ODE2SGF2aEhn?= =?utf-8?B?dDIxNGZ2RVRML0pWc3pQTExLNEI4ZFBkcUdoL016MERYekduZkM3THlCcXVP?= =?utf-8?B?WVR4S0grQWdiSkNZbUNVOFhlQXpZcWplclB3NHpTbEtHcFFiNUVkTUthQmZJ?= =?utf-8?B?ejJuSWJqOFBjNEhZa2hMRmhXZ0hnUSs4TGg3NEFwN0ZTWUJldUYzRFRqMFVt?= =?utf-8?B?T0tBbXVOQ0JqcUZIVis4N09PTnJ0K0pxNm5MdjNmanUreUlqWjdYU2V0dE1a?= =?utf-8?B?dzRZWVJEMVNTWm9iNjZCK0dnYUlmN3duVzk0MmVnY0hkdUV5OEc4WHpDVElp?= =?utf-8?B?NWtPV0xyMFBkWlN2SmNTZVMvWFhTbmdVNG5lcDh2SUxqNFBOTmorVU1CVU9z?= =?utf-8?B?aXdaSFR1WHBwUUU1U0dyZ0xWRWVrREdMRWM2Y01HNitDMDlJckVKZ0tXeWJB?= =?utf-8?B?SEI4WTRBZ1JrL0tvRnFFQkhwOEsrM3FqRW9xRm1WWGszOGNNOWtFcDVYRFpT?= =?utf-8?B?SXFneG96OTEzOHo3MVdCeHVBZ0NFU25hK2NxQlU2eUl5T2ZiRDJPalJEeXFN?= =?utf-8?B?c2xFNURzM1VvSDd4bEJaREhDUVRzMUxnNkN2Q1pyTXJDQ1ZvQUdHQU95aS8x?= =?utf-8?B?NTY0ZkhTaUdWZTd4WHVKZXRFYTdvaHQwNGxIWU85bzlqQVRTNjRCd21ybjB2?= =?utf-8?B?ZGRTRjROTys0Z0VsWVY5VVFheWRISzlPbjZ0WWg5bmhnUmova0FPTjk3MVRO?= =?utf-8?B?LzN5Rll2RHcwVFZidUVyMElZeVJEbmNlY25LQkJ3M3hnOEZ5SHQxS3grTk1y?= =?utf-8?B?cysrS2JFcW8yanVTam51Mnd0ejB3Qk9mYTJiUnFON1l1bCtIZmtNSUc0akhz?= =?utf-8?B?Z3JaRGFRQmFnSE1ObktWTW9SMEovcDVkYVlPbVBlb0xFRm8vL2kxS1l1U0Qw?= =?utf-8?B?OWU4ZTU0L0ZPWVMxNG5GSThvbHpyZW11S3RQTlUzc2F0MVVHNjBBZEpKVDN1?= =?utf-8?B?SU15MnBQZmU2MkxFbjJRU0Z3VGRYUUFROURKUkFKd0ptU1VtRjhMaVpILzZo?= =?utf-8?B?UHpvdlNET00weklXTDVyTzlTbmg0RTh3ZENpeUNJM1IrbnMvaS9tZ3pPcEJ3?= =?utf-8?B?anNtdlQvbE5YNHF3aHhXSzdZOUFDL0M3cUw0QkJKRHA5Q0gzTzdwYS9VL0Jo?= =?utf-8?B?OStDYUpoSndvQWNkQXZ6cEhKMjJmbDlLazk0bHVFRmw0THA1Tms5TEE2eVg0?= =?utf-8?B?UVZnZXBPS05zSlNYVUxBY1hsYnk0MHJOVG96RktIMUlBSlZwZ29DLytSRThV?= =?utf-8?B?TnFlbldldW50Z3FObk1ob2QxcFNHMkQzTFRHM0R0a1BSbUNXcWluTm1mNU14?= =?utf-8?B?SlEzbjk5ZlJSSkpqSThNTEhET0h2aTFRYUxjZzkwRWhhK0J0bG1HazNEdDNn?= =?utf-8?B?OG5xNXM0RXl0dUhtUmEvOHY1blZXaXJUSmhaWWd2Mm9ERWFBTUFTQXVKcHFR?= =?utf-8?B?TUtNTk1BemtuQm90OUZneFRyODVSeHdtdU02Z3FpMnRTUkM2cU1wb0luWTB1?= =?utf-8?B?RDBNZlR1QnQ2OWRzQTBBbEdUcUFVaTJuU0V3K3huM21wZUE0UWYzUGczWjV5?= =?utf-8?B?RE96WHZpZFErK0NFWXZuUTF6TDBzRm1vZlUwRkgrT3VVckp3ZmtvUlI1VFZS?= =?utf-8?B?dzdheVZNTHFYMHBlTW1Kb2x3MFQ2OTFCOVZhbHZadUZSeFVLT29CMVV6NitY?= =?utf-8?B?VFdwblY3RGFrR05hNWlRU0NzZFdlRXlDempYejZPSFZsZDIwdVJuOWI5NytS?= =?utf-8?B?N2IzM2I4ODZUVlZxOXFSMWd1YjZYb3dVT002TDl0TGNlSXk2L2lTWWRNcGIr?= =?utf-8?B?Zlp2QW1JYitQUTBtVmNNUTlSWGd0eFh3MHFUc2xKbmFtUmhuY29QbDljV1Fs?= =?utf-8?B?bmVBYnI3bVBLNXg2azFQVmVmQlJRZ0NnRGJQT1NodkY1MVdHKzFqOEcxc0xK?= =?utf-8?B?WEE9PQ==?= X-OriginatorOrg: sancloud.com X-MS-Exchange-CrossTenant-Network-Message-Id: b67195e9-526c-4f62-3675-08dae5a9f616 X-MS-Exchange-CrossTenant-AuthSource: SEYPR06MB5064.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Dec 2022 12:25:37.0511 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3e0f949f-6a74-4378-baf2-0abfca8d5e06 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: G048zJ2V4CHvU5RADeeEHc4EWZ9Yyu0ZZfwzl90oHo79Dwv3RSM0jLm6bbO1gu2JLJeMXaL5LWp85SjnycQl63EKK5gH8wwjkKsCZrYWWss= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR06MB4173 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean On 13/12/2022 07:15, Ilias Apalodimas wrote: > Hi Paul, > > Apologies for the delayed reply. > > [...] > >> +static efi_status_t >> +export_spi_peripheral(struct efi_spi_bus *bus, struct udevice *dev) >> +{ >> + efi_string_t name_utf16, vendor_utf16, part_number_utf16; >> + struct efi_spi_peripheral_priv *priv; >> + efi_status_t status; >> + efi_handle_t handle = NULL; >> + struct udevice *dev_bus = dev->parent; >> + struct spi_slave *target; >> + const char *name = dev_read_name(dev); >> + const char *vendor = dev_read_string(dev, "u-boot,uefi-spi-vendor"); >> + const char *part_number = dev_read_string(dev, >> + "u-boot,uefi-spi-part-number"); >> + efi_guid_t *guid = (efi_guid_t *)dev_read_u8_array_ptr(dev, >> + "u-boot,uefi-spi-io-guid", 16); >> + >> + if (device_get_uclass_id(dev) == UCLASS_SPI_EMUL) { >> + debug("Skipping emulated SPI peripheral %s\n", name); >> + goto fail_1; >> + } >> + >> + if (!vendor || !part_number || !guid) { >> + debug("Skipping SPI peripheral %s\n", name); >> + status = EFI_UNSUPPORTED; >> + goto fail_1; >> + } >> + >> + if (!device_active(dev)) { >> + int ret = device_probe(dev); >> + if (ret) { >> + debug("Skipping SPI peripheral %s, probe failed\n", >> + name); >> + goto fail_1; >> + } >> + } >> + >> + target = dev_get_parent_priv(dev); >> + if (!target) { >> + debug("Skipping uninitialized SPI peripheral %s\n", name); >> + status = EFI_UNSUPPORTED; >> + goto fail_1; >> + } >> + >> + debug("Registering SPI dev %d:%d, name %s\n", >> + dev_bus->seq_, spi_chip_select(dev), name); >> + >> + priv = calloc(1, sizeof(*priv)); >> + if (!priv) { >> + status = EFI_OUT_OF_RESOURCES; >> + goto fail_1; >> + } >> + >> + vendor_utf16 = efi_convert_string(vendor); >> + if (!vendor_utf16) { >> + status = EFI_OUT_OF_RESOURCES; >> + goto fail_2; >> + } >> + >> + part_number_utf16 = efi_convert_string(part_number); >> + if (!part_number_utf16) { >> + status = EFI_OUT_OF_RESOURCES; >> + goto fail_3; >> + } >> + >> + name_utf16 = efi_convert_string(name); >> + if (!name_utf16) { >> + status = EFI_OUT_OF_RESOURCES; >> + goto fail_4; >> + } >> + >> + priv->target = target; >> + >> + efi_spi_init_part(&priv->part, target, vendor_utf16, part_number_utf16); >> + >> + efi_spi_init_peripheral(&priv->peripheral, &priv->part, >> + bus, target, guid, name_utf16); >> + >> + efi_spi_append_peripheral(&priv->peripheral, bus); >> + >> + efi_spi_init_io_protocol(&priv->io_protocol, &priv->peripheral, target); >> + >> + status = efi_install_multiple_protocol_interfaces(&handle, guid, >> + &priv->io_protocol, >> + NULL); > > There's a protocols installed here as well as in > efi_spi_protocol_register(). But I don't see those being uninstalled > somewhere. Shouldn't destroy_efi_spi_bus() call > efi_uninstall_multiple_protocol_interfaces() as well ? Yes, `destroy_efi_spi_bus()` and `destroy_efi_spi_peripheral()` should cleanup everything created by `export_spi_bus()` and `export_spi_peripheral()` respectively. I think we can just call `efi_delete_handle()` on the relevant handle in `destroy_efi_spi_peripheral()` as that will remove all protocols anyway and the call is simpler. I can make that change in v6 of the series. Thanks, -- Paul Barker Principal Software Engineer SanCloud Ltd e: paul.barker@sancloud.com w: https://sancloud.com/