Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp3142451ybf; Tue, 3 Mar 2020 00:01:44 -0800 (PST) X-Google-Smtp-Source: ADFU+vvaNlxktjcb12Q8X4Z8Oogke5Tt/TkGvuJ5j7AfiwvcZ7ujwTlwLRmafvfoR+R9phgzIzwT X-Received: by 2002:a05:6830:1684:: with SMTP id k4mr2570542otr.75.1583222503783; Tue, 03 Mar 2020 00:01:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583222503; cv=none; d=google.com; s=arc-20160816; b=nI3IZ8s4QhSbCzkAJKnflctZuTSRZznTqDlezxGnAWKw/wakSkezh5F/Fs1Gii/Z47 szNPag22aIbsOWN+qIgbHXRRa0cn3OwoK91Fl6f9YWeDwYlFVwQJ9uxpJmzs6DdJrL01 S5VehDRwkpTI0SiUOUw4Gk6rxulku4xHflmTehpMygUwI/JHCpB5vGcZ2qy+GL9ce5mn svEVA6V4b+8FdyuLAQ4Jin5+SN1z2O7xMBaTvSAulh2iRzWeaNvyFmCgeiP3le7lhXqF wV+pQKDYZ360KKKBGeL3iBoPnegaFlmtzJYfLhoD4iCoAnSYIm7Ik0t/5+IOGsfrslfs O6Sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=1KFVCRDxDtzub9zZu4H3xTogihEXNQAo7KqjGf/X5ds=; b=aXUJP0Hlb9c4hXiHIzfKmXVRNp/zJxXxhTGLrSw+K+8OXh5JbOGNPUKhhsX9WzUI6M 3hAA52I4HK0gadQ2CVHWAte6IUdFxlMU1dpQl/TJOM0Cw2u+BqaYgs+M3IfUf8Xspcgv uWWuGeDNX281nBxgoDa7hixwfD7lzloNkIn0DZ0w8qF135LmXzvVpRHU+ZuccsK5wWca moulmOJLxOt2K2WLg9bYjnvxoS92eSVgxnYgp5njzPXvTTpnBz85xiCkqtqPTCFlkrBe 8y6ObQH3QHljTZF2IeQnZ3+3I+GcVc9HVcB+1fd2O74iNgI6F7eJiJ6bgj815tG1A9We TFBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=EIYNgH7l; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d14si6729720oic.201.2020.03.03.00.01.31; Tue, 03 Mar 2020 00:01:43 -0800 (PST) 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; dkim=pass header.i=@linaro.org header.s=google header.b=EIYNgH7l; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727656AbgCCIBY (ORCPT + 99 others); Tue, 3 Mar 2020 03:01:24 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:51068 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727565AbgCCIBX (ORCPT ); Tue, 3 Mar 2020 03:01:23 -0500 Received: by mail-wm1-f68.google.com with SMTP id a5so1954100wmb.0 for ; Tue, 03 Mar 2020 00:01:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1KFVCRDxDtzub9zZu4H3xTogihEXNQAo7KqjGf/X5ds=; b=EIYNgH7ltAnh/xuunt1NPohmKiypqOkqB+g7AB19td4meB3xEI9LzjrtpsSEUoFA5m k93KAhkLIKXtXdu7WekEm5Ofn7EhY8huVn18GNJ8633kgdpWpBuy6oHiZ1K+n5AqYgQR r7BvnXMo2/BIDIYw95KSNU/+OQ60UQ5SnAwOZjrN0WTKL/2dE1yBSMn/wJTVX4Uk9wcx dxXcZtrLUfz1BbCJLrvANf3UVMyKyjWC7UMrixWttACi937C0WGvGAFkZ1tZ/vTI8IeT XULbHPuvRIn69wpxyQ/CKRMwi4sR1bIN8ikjjR57ijE3aQMmVAlYzj8Sf7nJk7v+ZNXA grqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=1KFVCRDxDtzub9zZu4H3xTogihEXNQAo7KqjGf/X5ds=; b=PVSFn1PNIlCjZZKZKujZgiS3my+EWrdHvXiREz02e/MM4OTQ0wai2tXBJ32ehqF0sK JIwrBBMeUHzurOaWgAGEHXpOcu28YbvEcI2l6+9VS/MvgQdGTL/At0WOHIwnVGDDAphp JlFrZ8CIMKVl02r7yqgQ8LECFi9Y2v9aU5vdshNvcfBDWxNtgurgn+ipQS72ZHcrrDYw SGrUW+GOBuLzw56CtstMEGMDmeiJEfiGnkBg3LBmBVGLooOON2XMqFYvA+4ZYPxAbiBZ J8jXsm2QLa3NtJ0qHV1AG1npKB3lfeQIFftuM6KoZ/Vtk5kSnAdxnRxCeaCUvHzeE1/N mTCw== X-Gm-Message-State: ANhLgQ3A61OXJeZ5dd35gsl5FcWTMhYMhgXcO7SkkpGuPuf04UN/rw9w 0Neiyqprxj7xw9VkF+9xXWjxRIjWBTgqVZF1iwLgjw== X-Received: by 2002:a05:600c:24b:: with SMTP id 11mr2902120wmj.1.1583222480788; Tue, 03 Mar 2020 00:01:20 -0800 (PST) MIME-Version: 1.0 References: <158318759687.2216124.4684754859068906007.stgit@dwillia2-desk3.amr.corp.intel.com> <158318760967.2216124.7838939599184768260.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: <158318760967.2216124.7838939599184768260.stgit@dwillia2-desk3.amr.corp.intel.com> From: Ard Biesheuvel Date: Tue, 3 Mar 2020 09:01:09 +0100 Message-ID: Subject: Re: [PATCH 2/5] efi/fake_mem: Arrange for a resource entry per efi_fake_mem instance To: Dan Williams Cc: ACPI Devel Maling List , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , "the arch/x86 maintainers" , Peter Zijlstra , Dave Hansen , linux-nvdimm , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2 Mar 2020 at 23:36, Dan Williams wrote: > > In preparation for attaching a platform device per iomem resource teach > the efi_fake_mem code to create an e820 entry per instance. Similar to > E820_TYPE_PRAM, bypass merging resource when the e820 map is sanitized. > > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: Borislav Petkov > Cc: "H. Peter Anvin" > Cc: x86@kernel.org > Cc: Ard Biesheuvel > Signed-off-by: Dan Williams Acked-by: Ard Biesheuvel > --- > arch/x86/kernel/e820.c | 16 +++++++++++++++- > drivers/firmware/efi/x86_fake_mem.c | 12 +++++++++--- > 2 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c > index c5399e80c59c..96babb3a6629 100644 > --- a/arch/x86/kernel/e820.c > +++ b/arch/x86/kernel/e820.c > @@ -305,6 +305,20 @@ static int __init cpcompare(const void *a, const void *b) > return (ap->addr != ap->entry->addr) - (bp->addr != bp->entry->addr); > } > > +static bool e820_nomerge(enum e820_type type) > +{ > + /* > + * These types may indicate distinct platform ranges aligned to > + * numa node, protection domain, performance domain, or other > + * boundaries. Do not merge them. > + */ > + if (type == E820_TYPE_PRAM) > + return true; > + if (type == E820_TYPE_SOFT_RESERVED) > + return true; > + return false; > +} > + > int __init e820__update_table(struct e820_table *table) > { > struct e820_entry *entries = table->entries; > @@ -380,7 +394,7 @@ int __init e820__update_table(struct e820_table *table) > } > > /* Continue building up new map based on this information: */ > - if (current_type != last_type || current_type == E820_TYPE_PRAM) { > + if (current_type != last_type || e820_nomerge(current_type)) { > if (last_type != 0) { > new_entries[new_nr_entries].size = change_point[chg_idx]->addr - last_addr; > /* Move forward only if the new size was non-zero: */ > diff --git a/drivers/firmware/efi/x86_fake_mem.c b/drivers/firmware/efi/x86_fake_mem.c > index e5d6d5a1b240..0bafcc1bb0f6 100644 > --- a/drivers/firmware/efi/x86_fake_mem.c > +++ b/drivers/firmware/efi/x86_fake_mem.c > @@ -38,7 +38,7 @@ void __init efi_fake_memmap_early(void) > m_start = mem->range.start; > m_end = mem->range.end; > for_each_efi_memory_desc(md) { > - u64 start, end; > + u64 start, end, size; > > if (md->type != EFI_CONVENTIONAL_MEMORY) > continue; > @@ -58,11 +58,17 @@ void __init efi_fake_memmap_early(void) > */ > start = max(start, m_start); > end = min(end, m_end); > + size = end - start + 1; > > if (end <= start) > continue; > - e820__range_update(start, end - start + 1, E820_TYPE_RAM, > - E820_TYPE_SOFT_RESERVED); > + > + /* > + * Ensure each efi_fake_mem instance results in > + * a unique e820 resource > + */ > + e820__range_remove(start, size, E820_TYPE_RAM, 1); > + e820__range_add(start, size, E820_TYPE_SOFT_RESERVED); > e820__update_table(e820_table); > } > } >