Received: by 10.213.65.68 with SMTP id h4csp791289imn; Sat, 31 Mar 2018 09:59:51 -0700 (PDT) X-Google-Smtp-Source: AIpwx49iXdZ54MOQGDkIdnTZx5HXtXolBAG3NejbWLDTzyMt9vimSrjzTTx7ClSwlUjAt5N/8GGh X-Received: by 10.99.171.72 with SMTP id k8mr2319601pgp.355.1522515591297; Sat, 31 Mar 2018 09:59:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522515591; cv=none; d=google.com; s=arc-20160816; b=CSX6koRHnmNRQFX1w/clTQRSULCV0ZyPc94NldikDBlN3Le2v1Ho+pgQJADSUVObaW Igvqh60vWcbDbX4ynxkbXAxumFs/ZjeS7d5FvTLkPdMrvLITa/qefZWHsWOdlQHCifY4 sHzm4cGDTo+Cs/gSfIgVIQBOJONHK5y2VdFN1+AhEUyrwJjqTGNbk9/DEr8Fg91Tg3ze 9BkRxb+ZpcMHc1fSh+lpZAxJWrEY5ts9y4uzZ8kGArrkqYp4yVU6YaI/6+2e3wVqZsFd SLFLl6KGApmAImFTbnsknWd+MMc2O6TMsQxSzUOdeU5M6JmaSaNlSJNKq4AummDX0nex NTbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=Jo2ZxghcO1oN5+XmUA8x1OdnQb5agB+P3VCpHDn06Rg=; b=XcU3UWXXy1cwkXpZRSCAU+QRmRSOWvJa8HzIk86xuYvX2Ky8s6WT+uoIkURNeOKDUZ A1Zu45p0WFEtsOHuI0G1GoNbG5ihjqJCKg9DToB7Bmrv+XkqgRT6wn3XXFNIH6z3Yz83 5rA/6u6OQa4VK7VwFltX0WwRBEaItwjF3aFPuLCGnmyWUVlUKG/oTn11lDeFTeOrX1YK VAAML4fAM8qdwp6JhRoyDPbQbNe8MwRIyXdGO0+Cb9SI5HMwCoHrND5WigQykwOI6Wn8 S1NxuIpjguh62TSrp0jX7/PFU6UbyTtNWcMeXJM5sWqJXzrKViXXsz1OC78XtplHHeUU bWEw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y10-v6si11163849plt.533.2018.03.31.09.59.23; Sat, 31 Mar 2018 09:59:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753011AbeCaQ5e (ORCPT + 99 others); Sat, 31 Mar 2018 12:57:34 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:50603 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752522AbeCaQ5c (ORCPT ); Sat, 31 Mar 2018 12:57:32 -0400 Received: by mail-wm0-f66.google.com with SMTP id l201so19495312wmg.0 for ; Sat, 31 Mar 2018 09:57:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Jo2ZxghcO1oN5+XmUA8x1OdnQb5agB+P3VCpHDn06Rg=; b=h+oMDTyyNWHIl+v6+gboJFUURDWaD87rNl1PQlXw2UBkXDEy7TvmYhzDiA6kvjm1T/ mIKsLHQOllPfA5YvXNFnfG7Q3w0mDrpC7Dar3tdcJBjpDDWta8fIAt/CMPAIR4X57Ay5 Rf1JlaBvqHDSMdsGgcphCh6Jtn9WPFPQOxAqB+BF4ukCRboWbaHxMB/QbnXfYdt2hrRR Pzpi0rw/QUcqy9o5H3PiLGP2Fbe+rQ2kpB4bdKHfQwqe0F3shrGHqgdumoNMAG9irlU7 MTUMbZdriweW0NYbHPZqQ3qQxiqMCpfIhNBOJ/umIql6EHigL3GTk5f3v0iXosmJdl2W fXrQ== X-Gm-Message-State: AElRT7Fz/PH3DGu4Mumm+SFiOzCrSaxPq3SVujtZyk1hPYEbnG6ytih1 fZjU50gr1Y47zR6gWmvXn1uDSA== X-Received: by 10.80.165.6 with SMTP id y6mr6851495edb.268.1522515451599; Sat, 31 Mar 2018 09:57:31 -0700 (PDT) Received: from dhcp-44-202.space.revspace.nl ([2001:470:7a95:4242:97d5:94a:fff6:e77a]) by smtp.gmail.com with ESMTPSA id q6sm6283005edh.48.2018.03.31.09.57.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 31 Mar 2018 09:57:30 -0700 (PDT) Subject: Re: [PATCH 1/2] efi: Export boot-services code and data as debugfs-blobs To: Greg Kroah-Hartman Cc: Ard Biesheuvel , "Luis R . Rodriguez" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , linux-kernel@vger.kernel.org, Peter Jones , Dave Olsthoorn , x86@kernel.org, linux-efi@vger.kernel.org References: <20180331121944.8618-1-hdegoede@redhat.com> <20180331141030.GB1074@kroah.com> From: Hans de Goede Message-ID: <646d64dc-0c14-a96a-f91b-787a74f7ca35@redhat.com> Date: Sat, 31 Mar 2018 18:57:29 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180331141030.GB1074@kroah.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 03/31/2018 04:10 PM, Greg Kroah-Hartman wrote: > On Sat, Mar 31, 2018 at 02:19:43PM +0200, Hans de Goede wrote: >> Sometimes it is useful to be able to dump the efi boot-services code and >> data. This commit adds these as debugfs-blobs to /sys/kernel/debug/efi, >> but only if efi=debug is passed on the kernel-commandline as this requires >> not freeing those memory-regions, which costs 20+ MB of RAM. >> >> Signed-off-by: Hans de Goede >> --- >> arch/x86/platform/efi/quirks.c | 4 +++ >> drivers/firmware/efi/efi.c | 57 ++++++++++++++++++++++++++++++++++ >> 2 files changed, 61 insertions(+) >> >> diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c >> index 5b513ccffde4..0f968c7bcfec 100644 >> --- a/arch/x86/platform/efi/quirks.c >> +++ b/arch/x86/platform/efi/quirks.c >> @@ -374,6 +374,10 @@ void __init efi_free_boot_services(void) >> int num_entries = 0; >> void *new, *new_md; >> >> + /* Keep all regions for /sys/kernel/debug/efi */ >> + if (efi_enabled(EFI_DBG)) >> + return; >> + >> for_each_efi_memory_desc(md) { >> unsigned long long start = md->phys_addr; >> unsigned long long size = md->num_pages << EFI_PAGE_SHIFT; >> diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c >> index cd42f66a7c85..fddc5f706fd2 100644 >> --- a/drivers/firmware/efi/efi.c >> +++ b/drivers/firmware/efi/efi.c >> @@ -18,6 +18,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -316,6 +317,59 @@ static __init int efivar_ssdt_load(void) >> static inline int efivar_ssdt_load(void) { return 0; } >> #endif >> >> +#ifdef CONFIG_DEBUG_FS >> + >> +#define EFI_DEBUGFS_MAX_BLOBS 32 >> + >> +struct debugfs_blob_wrapper debugfs_blob[EFI_DEBUGFS_MAX_BLOBS]; >> + >> +static void __init efi_debugfs_init(void) >> +{ >> + struct dentry *efi_debugfs; >> + efi_memory_desc_t *md; >> + char name[32]; >> + int type_count[EFI_BOOT_SERVICES_DATA + 1] = {}; >> + int i = 0; >> + >> + efi_debugfs = debugfs_create_dir("efi", NULL); >> + if (IS_ERR_OR_NULL(efi_debugfs)) { >> + pr_warn("Could not create efi debugfs entry\n"); >> + return; >> + } > > {sigh} > > No, don't warn, or complain, or do anything else if a debugfs call > fails. Just keep on moving, you can always use the return value > properly in any future call if you need it, and no code flow should ever > care if a debugfs call succeeded or failed. Ok. >> /* >> * We register the efi subsystem with the firmware subsystem and the >> * efivars subsystem with the efi subsystem, if the system was booted with >> @@ -360,6 +414,9 @@ static int __init efisubsys_init(void) >> goto err_remove_group; >> } >> >> + if (efi_enabled(EFI_DBG)) >> + efi_debugfs_init(); > > You never remove the directory? Correct, this is happening from a subsys_initcall as such there is no efi_cleanup() counterpart. Note the "if (efi_enabled(EFI_DBG))" check checks for efi=debug on the kernel cmdline, so this only happens if the user asked for it. Regards, Hans