* (no subject) @ 2015-12-18 1:28 Robert Elliott 2015-12-18 1:28 ` [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap Robert Elliott ` (3 more replies) 0 siblings, 4 replies; 25+ messages in thread From: Robert Elliott @ 2015-12-18 1:28 UTC (permalink / raw) To: matt, tglx, mingo, hpa; +Cc: x86, linux-efi, linux-kernel, Robert Elliott Date: Thu, 17 Dec 2015 17:40:55 -0600 Subject: [PATCH 0/4] x86/efi: support persistent memory in efi_print_memmap This series adds support for persistent memory type and NV attribute in the efi_print_memmap function, which is only used if EFI_DEBUG is true (which is the case for x86). Robert Elliott (4): x86/efi: show actual ending addresses in efi_print_memmap efi: add NV memory attribute efi: add Persistent Memory type name x86/efi: print size and base in binary units in efi_print_memmap arch/x86/platform/efi/efi.c | 29 +++++++++++++++++++++++++---- drivers/firmware/efi/efi.c | 8 ++++++-- include/linux/efi.h | 1 + 3 files changed, 32 insertions(+), 6 deletions(-) -- 2.4.3 ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-18 1:28 Robert Elliott @ 2015-12-18 1:28 ` Robert Elliott 2015-12-21 15:50 ` Matt Fleming 2015-12-18 1:28 ` [PATCH 2/4] efi: add NV memory attribute Robert Elliott ` (2 subsequent siblings) 3 siblings, 1 reply; 25+ messages in thread From: Robert Elliott @ 2015-12-18 1:28 UTC (permalink / raw) To: matt, tglx, mingo, hpa; +Cc: x86, linux-efi, linux-kernel, Robert Elliott Adjust efi_print_memmap to print the real end address of each range, not 1 byte beyond. This matches other prints like those for SRAT and nosave memory. Change the closing ) to ] to match the opening [. old: efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c80000000) (16384MB) new: efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16384MB) Example other address range prints: SRAT: Node 1 PXM 1 [mem 0x480000000-0x87fffffff] PM: Registered nosave memory: [mem 0x880000000-0xc7fffffff] Signed-off-by: Robert Elliott <elliott@hpe.com> --- arch/x86/platform/efi/efi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index ad28540..635a955 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c @@ -235,10 +235,10 @@ void __init efi_print_memmap(void) char buf[64]; md = p; - pr_info("mem%02u: %s range=[0x%016llx-0x%016llx) (%lluMB)\n", + pr_info("mem%02u: %s range=[0x%016llx-0x%016llx] (%lluMB)\n", i, efi_md_typeattr_format(buf, sizeof(buf), md), md->phys_addr, - md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), + md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1, (md->num_pages >> (20 - EFI_PAGE_SHIFT))); } #endif /* EFI_DEBUG */ -- 2.4.3 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-18 1:28 ` [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap Robert Elliott @ 2015-12-21 15:50 ` Matt Fleming 2015-12-21 16:06 ` Matt Fleming 2015-12-21 16:44 ` Elliott, Robert (Persistent Memory) 0 siblings, 2 replies; 25+ messages in thread From: Matt Fleming @ 2015-12-21 15:50 UTC (permalink / raw) To: Robert Elliott; +Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel On Thu, 17 Dec, at 07:28:31PM, Robert Elliott wrote: > Adjust efi_print_memmap to print the real end address of each > range, not 1 byte beyond. This matches other prints like those for > SRAT and nosave memory. > > Change the closing ) to ] to match the opening [. > > old: > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c80000000) (16384MB) > > new: > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16384MB) > > Example other address range prints: > SRAT: Node 1 PXM 1 [mem 0x480000000-0x87fffffff] > PM: Registered nosave memory: [mem 0x880000000-0xc7fffffff] > > Signed-off-by: Robert Elliott <elliott@hpe.com> > --- > arch/x86/platform/efi/efi.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Is this change purely for aesthetic reasons? We're usually not in the habit of changing the output of print messages without a good reason because people downstream do rely on them being consistent. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-21 15:50 ` Matt Fleming @ 2015-12-21 16:06 ` Matt Fleming 2015-12-22 20:08 ` Elliott, Robert (Persistent Memory) 2015-12-21 16:44 ` Elliott, Robert (Persistent Memory) 1 sibling, 1 reply; 25+ messages in thread From: Matt Fleming @ 2015-12-21 16:06 UTC (permalink / raw) To: Robert Elliott; +Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel On Mon, 21 Dec, at 03:50:38PM, Matt Fleming wrote: > On Thu, 17 Dec, at 07:28:31PM, Robert Elliott wrote: > > Adjust efi_print_memmap to print the real end address of each > > range, not 1 byte beyond. This matches other prints like those for > > SRAT and nosave memory. > > > > Change the closing ) to ] to match the opening [. > > > > old: > > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c80000000) (16384MB) > > > > new: > > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16384MB) > > > > Example other address range prints: > > SRAT: Node 1 PXM 1 [mem 0x480000000-0x87fffffff] > > PM: Registered nosave memory: [mem 0x880000000-0xc7fffffff] > > > > Signed-off-by: Robert Elliott <elliott@hpe.com> > > --- > > arch/x86/platform/efi/efi.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > Is this change purely for aesthetic reasons? We're usually not in the > habit of changing the output of print messages without a good reason > because people downstream do rely on them being consistent. I just noticed the bracket change. My comment above only refers to printing the range addresses. Swapping ')' for ']' is a perfectly valid change. ^ permalink raw reply [flat|nested] 25+ messages in thread
* RE: [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-21 16:06 ` Matt Fleming @ 2015-12-22 20:08 ` Elliott, Robert (Persistent Memory) 2015-12-23 12:44 ` Matt Fleming 0 siblings, 1 reply; 25+ messages in thread From: Elliott, Robert (Persistent Memory) @ 2015-12-22 20:08 UTC (permalink / raw) To: Matt Fleming; +Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel --- Robert Elliott, HPE Persistent Memory > -----Original Message----- > From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel- > owner@vger.kernel.org] On Behalf Of Matt Fleming > Sent: Monday, December 21, 2015 10:06 AM > To: Elliott, Robert (Persistent Memory) <elliott@hpe.com> > Cc: tglx@linutronix.de; mingo@redhat.com; hpa@zytor.com; x86@kernel.org; > linux-efi@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: Re: [PATCH 1/4] x86/efi: show actual ending addresses in > efi_print_memmap > > On Mon, 21 Dec, at 03:50:38PM, Matt Fleming wrote: > > On Thu, 17 Dec, at 07:28:31PM, Robert Elliott wrote: > > > Adjust efi_print_memmap to print the real end address of each > > > range, not 1 byte beyond. This matches other prints like those for > > > SRAT and nosave memory. > > > > > > Change the closing ) to ] to match the opening [. > > > > > > old: > > > efi: mem61: [Persistent Memory | | | | | | | > |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c80000000) (16384MB) > > > > > > new: > > > efi: mem61: [Persistent Memory | | | | | | | > |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16384MB) > > > > > > Example other address range prints: > > > SRAT: Node 1 PXM 1 [mem 0x480000000-0x87fffffff] > > > PM: Registered nosave memory: [mem 0x880000000-0xc7fffffff] > > > > > > Signed-off-by: Robert Elliott <elliott@hpe.com> > > > --- > > > arch/x86/platform/efi/efi.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > Is this change purely for aesthetic reasons? We're usually not in the > > habit of changing the output of print messages without a good reason > > because people downstream do rely on them being consistent. > > I just noticed the bracket change. > > My comment above only refers to printing the range addresses. Swapping > ')' for ']' is a perfectly valid change. While investigating the grub persistent memory corruption issues, it was helpful to make this table match the ending address convention used by: * the kernel's e820 table prints * the kernel's nosave memory prints * grub's lsmmap and lsefimmap commands * the UEFI shell's memmap command Using the excerpts from the patch, if you grep all the various logs for c7fffffff, you won't find the line with c80000000. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-22 20:08 ` Elliott, Robert (Persistent Memory) @ 2015-12-23 12:44 ` Matt Fleming 0 siblings, 0 replies; 25+ messages in thread From: Matt Fleming @ 2015-12-23 12:44 UTC (permalink / raw) To: Elliott, Robert (Persistent Memory) Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel On Tue, 22 Dec, at 08:08:19PM, Elliott, Robert (Persistent Memory) wrote: > > While investigating the grub persistent memory corruption > issues, it was helpful to make this table match the ending > address convention used by: > * the kernel's e820 table prints > * the kernel's nosave memory prints > * grub's lsmmap and lsefimmap commands > * the UEFI shell's memmap command > > Using the excerpts from the patch, if you grep all the various > logs for c7fffffff, you won't find the line with c80000000. I like this. This is reasonable justification. Please inclue it in the commit log. ^ permalink raw reply [flat|nested] 25+ messages in thread
* RE: [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-21 15:50 ` Matt Fleming 2015-12-21 16:06 ` Matt Fleming @ 2015-12-21 16:44 ` Elliott, Robert (Persistent Memory) 2015-12-23 12:47 ` Matt Fleming 1 sibling, 1 reply; 25+ messages in thread From: Elliott, Robert (Persistent Memory) @ 2015-12-21 16:44 UTC (permalink / raw) To: Matt Fleming; +Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel > -----Original Message----- > From: Matt Fleming [mailto:matt@codeblueprint.co.uk] > Sent: Monday, December 21, 2015 9:51 AM > To: Elliott, Robert (Persistent Memory) <elliott@hpe.com> > Cc: tglx@linutronix.de; mingo@redhat.com; hpa@zytor.com; x86@kernel.org; > linux-efi@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: Re: [PATCH 1/4] x86/efi: show actual ending addresses in > efi_print_memmap > > On Thu, 17 Dec, at 07:28:31PM, Robert Elliott wrote: > > Adjust efi_print_memmap to print the real end address of each > > range, not 1 byte beyond. This matches other prints like those for > > SRAT and nosave memory. > > > > Change the closing ) to ] to match the opening [. > > > > old: > > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] > range=[0x0000000880000000-0x0000000c80000000) (16384MB) > > > > new: > > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] > range=[0x0000000880000000-0x0000000c7fffffff] (16384MB) > > > > Example other address range prints: > > SRAT: Node 1 PXM 1 [mem 0x480000000-0x87fffffff] > > PM: Registered nosave memory: [mem 0x880000000-0xc7fffffff] > > > > Signed-off-by: Robert Elliott <elliott@hpe.com> > > --- > > arch/x86/platform/efi/efi.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > Is this change purely for aesthetic reasons? We're usually not in the > habit of changing the output of print messages without a good reason > because people downstream do rely on them being consistent. The format of that line is architecture-specific and only appears under the efi=debug kernel parameter, so I don't know how much anyone relies on the specific format. Good question for the lists. arch/ia64/kernel/efi.c shares the range=[...) format, but prints the range after the bitmask rather than before: printk("mem%02d: %s " "range=[0x%016lx-0x%016lx) (%4lu%s)\n", i, efi_md_typeattr_format(buf, sizeof(buf), md), md->phys_addr, md->phys_addr + efi_md_size(md), size, unit); arch/arm64/kernel/efi.c has no mem prefix, or range=[...) text surrounding the range: pr_info(" 0x%012llx-0x%012llx %s", paddr, paddr + (npages << EFI_PAGE_SHIFT) - 1, efi_md_typeattr_format(buf, sizeof(buf), md)); pr_cont("*"); pr_cont("\n"); The x86 code is inside ifdef EFI_DEBUG, which is always defined in that file. I wonder if it was supposed to change to efi_enabled(EFI_DBG) to be based off the efi=debug kernel parameter? efi_init() qualified the call to this function based on that: if (efi_enabled(EFI_DBG)) efi_print_memmap(); In arch/ia64/kernel/efi.c efi_init(), EFI_DEBUG is set to 0 so the print doesn't happen at all without editing the source code. It doesn't use efi_enabled(EFI_DBG). arch/arm64/kernel/efi.c uses efi_enabled(EFI_DBG) exclusively. --- Robert Elliott, HPE Persistent Memory ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-21 16:44 ` Elliott, Robert (Persistent Memory) @ 2015-12-23 12:47 ` Matt Fleming 2015-12-24 1:07 ` [PATCH v2 " Robert Elliott 0 siblings, 1 reply; 25+ messages in thread From: Matt Fleming @ 2015-12-23 12:47 UTC (permalink / raw) To: Elliott, Robert (Persistent Memory) Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel, Ard Biesheuvel, Leif Lindholm On Mon, 21 Dec, at 04:44:19PM, Elliott, Robert (Persistent Memory) wrote: > > The format of that line is architecture-specific and only appears > under the efi=debug kernel parameter, so I don't know how much > anyone relies on the specific format. Good question for the lists. Both kernel and non-kernel developers are consumers of these debug statements, and people do come to rely on the format of the text. I have certainly become acustomed to the current format we have, particularly when debugging issues via other users, i.e. when I'm not the person running the kernel being debugged. Just because it's a debug option doesn't mean it's completely open to modification. Reasonable Justification must be provided. Having said that, I think you provide a good argument in your other email, https://lkml.kernel.org/r/94D0CD8314A33A4D9D801C0FE68B40295BEC74CF@G9W0745.americas.hpqcorp.net > arch/ia64/kernel/efi.c shares the range=[...) format, but prints > the range after the bitmask rather than before: > printk("mem%02d: %s " > "range=[0x%016lx-0x%016lx) (%4lu%s)\n", > i, efi_md_typeattr_format(buf, sizeof(buf), md), > md->phys_addr, > md->phys_addr + efi_md_size(md), size, unit); > > arch/arm64/kernel/efi.c has no mem prefix, or range=[...) text > surrounding the range: > pr_info(" 0x%012llx-0x%012llx %s", > paddr, paddr + (npages << EFI_PAGE_SHIFT) - 1, > efi_md_typeattr_format(buf, sizeof(buf), md)); > pr_cont("*"); > pr_cont("\n"); > > The x86 code is inside ifdef EFI_DEBUG, which is always > defined in that file. I wonder if it was supposed to change > to efi_enabled(EFI_DBG) to be based off the efi=debug kernel > parameter? efi_init() qualified the call to this function > based on that: > if (efi_enabled(EFI_DBG)) > efi_print_memmap(); The EFI_DEBUG symbol should just be deleted. It's been enabled since forever and really provides no value, because as you point out, printing of the memory map is guarded by EFI_DBG anyway. I'll send out a patch for ripping that out. > In arch/ia64/kernel/efi.c efi_init(), EFI_DEBUG is set to 0 > so the print doesn't happen at all without editing the > source code. It doesn't use efi_enabled(EFI_DBG). > > arch/arm64/kernel/efi.c uses efi_enabled(EFI_DBG) exclusively. ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v2 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-23 12:47 ` Matt Fleming @ 2015-12-24 1:07 ` Robert Elliott 2016-01-08 12:04 ` Matt Fleming 0 siblings, 1 reply; 25+ messages in thread From: Robert Elliott @ 2015-12-24 1:07 UTC (permalink / raw) To: matt Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel, ard.biesheuvel, leif.lindholm, Robert Elliott Adjust efi_print_memmap to print the real end address of each range, not 1 byte beyond. This matches other prints like those for SRAT and nosave memory. While investigating grub persistent memory corruption issues, it was helpful to make this table match the ending address convention used by: * the kernel's e820 table prints BIOS-e820: [mem 0x0000001680000000-0x0000001c7fffffff] reserved * the kernel's nosave memory prints PM: Registered nosave memory: [mem 0x880000000-0xc7fffffff] * the kernel's ACPI System Resource Affinity Table prints SRAT: Node 1 PXM 1 [mem 0x480000000-0x87fffffff] * grub's lsmmap and lsefimmap commands reserved 0000001680000000-0000001c7fffffff 00600000 24GiB UC WC WT WB NV * the UEFI shell's memmap command Reserved 000000007FC00000-000000007FFFFFFF 0000000000000400 0000000000000001 For example, if you grep all the various logs for c7fffffff, you won't find the kernel's line if it uses c80000000. Also, change the closing ) to ] to match the opening [. old: efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c80000000) (16384MB) new: efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16384MB) Signed-off-by: Robert Elliott <elliott@hpe.com> --- Changes in v2: - Expanded rationale in the commit message --- arch/x86/platform/efi/efi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index ad28540..635a955 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c @@ -235,10 +235,10 @@ void __init efi_print_memmap(void) char buf[64]; md = p; - pr_info("mem%02u: %s range=[0x%016llx-0x%016llx) (%lluMB)\n", + pr_info("mem%02u: %s range=[0x%016llx-0x%016llx] (%lluMB)\n", i, efi_md_typeattr_format(buf, sizeof(buf), md), md->phys_addr, - md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), + md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1, (md->num_pages >> (20 - EFI_PAGE_SHIFT))); } #endif /* EFI_DEBUG */ -- 2.4.3 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v2 1/4] x86/efi: show actual ending addresses in efi_print_memmap 2015-12-24 1:07 ` [PATCH v2 " Robert Elliott @ 2016-01-08 12:04 ` Matt Fleming 0 siblings, 0 replies; 25+ messages in thread From: Matt Fleming @ 2016-01-08 12:04 UTC (permalink / raw) To: Robert Elliott Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel, ard.biesheuvel, leif.lindholm On Wed, 23 Dec, at 07:07:23PM, Robert Elliott wrote: > Adjust efi_print_memmap to print the real end address of each > range, not 1 byte beyond. This matches other prints like those for > SRAT and nosave memory. > > While investigating grub persistent memory corruption issues, it > was helpful to make this table match the ending address convention > used by: > * the kernel's e820 table prints > BIOS-e820: [mem 0x0000001680000000-0x0000001c7fffffff] reserved > * the kernel's nosave memory prints > PM: Registered nosave memory: [mem 0x880000000-0xc7fffffff] > * the kernel's ACPI System Resource Affinity Table prints > SRAT: Node 1 PXM 1 [mem 0x480000000-0x87fffffff] > * grub's lsmmap and lsefimmap commands > reserved 0000001680000000-0000001c7fffffff 00600000 24GiB UC WC WT WB NV > * the UEFI shell's memmap command > Reserved 000000007FC00000-000000007FFFFFFF 0000000000000400 0000000000000001 > > For example, if you grep all the various logs for c7fffffff, you > won't find the kernel's line if it uses c80000000. > > Also, change the closing ) to ] to match the opening [. > > old: > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c80000000) (16384MB) > > new: > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16384MB) > > Signed-off-by: Robert Elliott <elliott@hpe.com> > --- > Changes in v2: > - Expanded rationale in the commit message > --- > arch/x86/platform/efi/efi.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Thanks Robert, I've queued this up for v4.6. ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 2/4] efi: add NV memory attribute 2015-12-18 1:28 Robert Elliott 2015-12-18 1:28 ` [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap Robert Elliott @ 2015-12-18 1:28 ` Robert Elliott 2015-12-21 15:54 ` Matt Fleming 2015-12-18 1:28 ` [PATCH 3/4] efi: add Persistent Memory type name Robert Elliott 2015-12-18 1:28 ` [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap Robert Elliott 3 siblings, 1 reply; 25+ messages in thread From: Robert Elliott @ 2015-12-18 1:28 UTC (permalink / raw) To: matt, tglx, mingo, hpa; +Cc: x86, linux-efi, linux-kernel, Robert Elliott Add the NV memory attribute introduced in UEFI 2.5 and add a column for it in the types and attributes string used when printing the UEFI memory map. old: efi: mem61: [type=14 | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) new: efi: mem61: [type=14 | | |NV| | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) Signed-off-by: Robert Elliott <elliott@hpe.com> --- drivers/firmware/efi/efi.c | 5 ++++- include/linux/efi.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 027ca21..4dd5464 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -611,13 +611,16 @@ char * __init efi_md_typeattr_format(char *buf, size_t size, if (attr & ~(EFI_MEMORY_UC | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB | EFI_MEMORY_UCE | EFI_MEMORY_RO | EFI_MEMORY_WP | EFI_MEMORY_RP | EFI_MEMORY_XP | + EFI_MEMORY_NV | EFI_MEMORY_RUNTIME | EFI_MEMORY_MORE_RELIABLE)) snprintf(pos, size, "|attr=0x%016llx]", (unsigned long long)attr); else - snprintf(pos, size, "|%3s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]", + snprintf(pos, size, + "|%3s|%2s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]", attr & EFI_MEMORY_RUNTIME ? "RUN" : "", attr & EFI_MEMORY_MORE_RELIABLE ? "MR" : "", + attr & EFI_MEMORY_NV ? "NV" : "", attr & EFI_MEMORY_XP ? "XP" : "", attr & EFI_MEMORY_RP ? "RP" : "", attr & EFI_MEMORY_WP ? "WP" : "", diff --git a/include/linux/efi.h b/include/linux/efi.h index 569b5a8..9ce9e9e 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -97,6 +97,7 @@ typedef struct { #define EFI_MEMORY_WP ((u64)0x0000000000001000ULL) /* write-protect */ #define EFI_MEMORY_RP ((u64)0x0000000000002000ULL) /* read-protect */ #define EFI_MEMORY_XP ((u64)0x0000000000004000ULL) /* execute-protect */ +#define EFI_MEMORY_NV ((u64)0x0000000000008000ULL) /* non-volatile */ #define EFI_MEMORY_MORE_RELIABLE \ ((u64)0x0000000000010000ULL) /* higher reliability */ #define EFI_MEMORY_RO ((u64)0x0000000000020000ULL) /* read-only */ -- 2.4.3 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 2/4] efi: add NV memory attribute 2015-12-18 1:28 ` [PATCH 2/4] efi: add NV memory attribute Robert Elliott @ 2015-12-21 15:54 ` Matt Fleming 0 siblings, 0 replies; 25+ messages in thread From: Matt Fleming @ 2015-12-21 15:54 UTC (permalink / raw) To: Robert Elliott Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel, Ard Biesheuvel, Taku Izumi (Cc'ing people that have worked in this area recently) On Thu, 17 Dec, at 07:28:32PM, Robert Elliott wrote: > Add the NV memory attribute introduced in UEFI 2.5 and add a column > for it in the types and attributes string used when printing the UEFI > memory map. > > old: > efi: mem61: [type=14 | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) > > new: > efi: mem61: [type=14 | | |NV| | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) > > Signed-off-by: Robert Elliott <elliott@hpe.com> > --- > drivers/firmware/efi/efi.c | 5 ++++- > include/linux/efi.h | 1 + > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c > index 027ca21..4dd5464 100644 > --- a/drivers/firmware/efi/efi.c > +++ b/drivers/firmware/efi/efi.c > @@ -611,13 +611,16 @@ char * __init efi_md_typeattr_format(char *buf, size_t size, > if (attr & ~(EFI_MEMORY_UC | EFI_MEMORY_WC | EFI_MEMORY_WT | > EFI_MEMORY_WB | EFI_MEMORY_UCE | EFI_MEMORY_RO | > EFI_MEMORY_WP | EFI_MEMORY_RP | EFI_MEMORY_XP | > + EFI_MEMORY_NV | > EFI_MEMORY_RUNTIME | EFI_MEMORY_MORE_RELIABLE)) > snprintf(pos, size, "|attr=0x%016llx]", > (unsigned long long)attr); > else > - snprintf(pos, size, "|%3s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]", > + snprintf(pos, size, > + "|%3s|%2s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]", > attr & EFI_MEMORY_RUNTIME ? "RUN" : "", > attr & EFI_MEMORY_MORE_RELIABLE ? "MR" : "", > + attr & EFI_MEMORY_NV ? "NV" : "", > attr & EFI_MEMORY_XP ? "XP" : "", > attr & EFI_MEMORY_RP ? "RP" : "", > attr & EFI_MEMORY_WP ? "WP" : "", > diff --git a/include/linux/efi.h b/include/linux/efi.h > index 569b5a8..9ce9e9e 100644 > --- a/include/linux/efi.h > +++ b/include/linux/efi.h > @@ -97,6 +97,7 @@ typedef struct { > #define EFI_MEMORY_WP ((u64)0x0000000000001000ULL) /* write-protect */ > #define EFI_MEMORY_RP ((u64)0x0000000000002000ULL) /* read-protect */ > #define EFI_MEMORY_XP ((u64)0x0000000000004000ULL) /* execute-protect */ > +#define EFI_MEMORY_NV ((u64)0x0000000000008000ULL) /* non-volatile */ > #define EFI_MEMORY_MORE_RELIABLE \ > ((u64)0x0000000000010000ULL) /* higher reliability */ > #define EFI_MEMORY_RO ((u64)0x0000000000020000ULL) /* read-only */ Seems straight forward to me. Applied, thanks. ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 3/4] efi: add Persistent Memory type name 2015-12-18 1:28 Robert Elliott 2015-12-18 1:28 ` [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap Robert Elliott 2015-12-18 1:28 ` [PATCH 2/4] efi: add NV memory attribute Robert Elliott @ 2015-12-18 1:28 ` Robert Elliott 2016-01-08 12:20 ` Matt Fleming 2015-12-18 1:28 ` [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap Robert Elliott 3 siblings, 1 reply; 25+ messages in thread From: Robert Elliott @ 2015-12-18 1:28 UTC (permalink / raw) To: matt, tglx, mingo, hpa; +Cc: x86, linux-efi, linux-kernel, Robert Elliott Add the "Persistent Memory" string for type 14 introduced in UEFI 2.5. This is used when printing the UEFI memory map. old: efi: mem61: [type=14 | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) new: efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) Signed-off-by: Robert Elliott <elliott@hpe.com> --- drivers/firmware/efi/efi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 4dd5464..0b16e88 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -584,7 +584,8 @@ static __initdata char memory_type_name[][20] = { "ACPI Memory NVS", "Memory Mapped I/O", "MMIO Port Space", - "PAL Code" + "PAL Code", + "Persistent Memory" }; char * __init efi_md_typeattr_format(char *buf, size_t size, -- 2.4.3 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 3/4] efi: add Persistent Memory type name 2015-12-18 1:28 ` [PATCH 3/4] efi: add Persistent Memory type name Robert Elliott @ 2016-01-08 12:20 ` Matt Fleming 0 siblings, 0 replies; 25+ messages in thread From: Matt Fleming @ 2016-01-08 12:20 UTC (permalink / raw) To: Robert Elliott; +Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel On Thu, 17 Dec, at 07:28:33PM, Robert Elliott wrote: > Add the "Persistent Memory" string for type 14 introduced in > UEFI 2.5. This is used when printing the UEFI memory map. > > old: > efi: mem61: [type=14 | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) > > new: > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) > > Signed-off-by: Robert Elliott <elliott@hpe.com> > --- > drivers/firmware/efi/efi.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) Thanks, applied. ^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2015-12-18 1:28 Robert Elliott ` (2 preceding siblings ...) 2015-12-18 1:28 ` [PATCH 3/4] efi: add Persistent Memory type name Robert Elliott @ 2015-12-18 1:28 ` Robert Elliott 2015-12-21 16:16 ` Matt Fleming 3 siblings, 1 reply; 25+ messages in thread From: Robert Elliott @ 2015-12-18 1:28 UTC (permalink / raw) To: matt, tglx, mingo, hpa; +Cc: x86, linux-efi, linux-kernel, Robert Elliott Print the base address for each range in decimal alongside the size. Use a "(size @ base)" format similar to the fake_memmap kernel parameter. Print the range and base in the best-fit B, KiB, MiB, etc. units rather than always MiB. This avoids rounding, which can be misleading. Use proper IEC binary units (KiB, MiB, etc.) rather than misuse SI decimal units (KB, MB, etc.). old: efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) new: efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16 GiB @ 34 GiB) Signed-off-by: Robert Elliott <elliott@hpe.com> --- arch/x86/platform/efi/efi.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index 635a955..030ba91 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) return 0; } +char * __init efi_size_format(char *buf, size_t size, u64 bytes) +{ + if (!bytes || (bytes & 0x3ff)) + snprintf(buf, size, "%llu B", bytes); + else if (bytes & 0xfffff) + snprintf(buf, size, "%llu KiB", bytes >> 10); + else if (bytes & 0x3fffffff) + snprintf(buf, size, "%llu MiB", bytes >> 20); + else if (bytes & 0xffffffffff) + snprintf(buf, size, "%llu GiB", bytes >> 30); + else if (bytes & 0x3ffffffffffff) + snprintf(buf, size, "%llu TiB", bytes >> 40); + else if (bytes & 0xfffffffffffffff) + snprintf(buf, size, "%llu PiB", bytes >> 50); + else + snprintf(buf, size, "%llu EiB", bytes >> 60); + return buf; +} + void __init efi_print_memmap(void) { #ifdef EFI_DEBUG @@ -232,14 +251,16 @@ void __init efi_print_memmap(void) for (p = memmap.map, i = 0; p < memmap.map_end; p += memmap.desc_size, i++) { - char buf[64]; + char buf[64], buf2[32], buf3[32]; md = p; - pr_info("mem%02u: %s range=[0x%016llx-0x%016llx] (%lluMB)\n", + pr_info("mem%02u: %s range=[0x%016llx-0x%016llx] (%s @ %s)\n", i, efi_md_typeattr_format(buf, sizeof(buf), md), md->phys_addr, md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1, - (md->num_pages >> (20 - EFI_PAGE_SHIFT))); + efi_size_format(buf3, sizeof(buf3), + md->num_pages << EFI_PAGE_SHIFT), + efi_size_format(buf2, sizeof(buf2), md->phys_addr)); } #endif /* EFI_DEBUG */ } -- 2.4.3 ^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2015-12-18 1:28 ` [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap Robert Elliott @ 2015-12-21 16:16 ` Matt Fleming 2015-12-23 0:11 ` Elliott, Robert (Persistent Memory) 2015-12-27 14:35 ` Andy Shevchenko 0 siblings, 2 replies; 25+ messages in thread From: Matt Fleming @ 2015-12-21 16:16 UTC (permalink / raw) To: Robert Elliott; +Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel On Thu, 17 Dec, at 07:28:34PM, Robert Elliott wrote: > Print the base address for each range in decimal alongside the size. > Use a "(size @ base)" format similar to the fake_memmap kernel parameter. > > Print the range and base in the best-fit B, KiB, MiB, etc. units rather > than always MiB. This avoids rounding, which can be misleading. > > Use proper IEC binary units (KiB, MiB, etc.) rather than misuse SI > decimal units (KB, MB, etc.). > > old: > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) > > new: > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16 GiB @ 34 GiB) > > Signed-off-by: Robert Elliott <elliott@hpe.com> > --- > arch/x86/platform/efi/efi.c | 27 ++++++++++++++++++++++++--- > 1 file changed, 24 insertions(+), 3 deletions(-) I'm not at all sure of the value of printing the physical address as a size. I would have thought that you'd have to convert it back to an address whenever you wanted to use it anyway. > diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c > index 635a955..030ba91 100644 > --- a/arch/x86/platform/efi/efi.c > +++ b/arch/x86/platform/efi/efi.c > @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) > return 0; > } > > +char * __init efi_size_format(char *buf, size_t size, u64 bytes) > +{ > + if (!bytes || (bytes & 0x3ff)) > + snprintf(buf, size, "%llu B", bytes); > + else if (bytes & 0xfffff) > + snprintf(buf, size, "%llu KiB", bytes >> 10); > + else if (bytes & 0x3fffffff) > + snprintf(buf, size, "%llu MiB", bytes >> 20); > + else if (bytes & 0xffffffffff) > + snprintf(buf, size, "%llu GiB", bytes >> 30); > + else if (bytes & 0x3ffffffffffff) > + snprintf(buf, size, "%llu TiB", bytes >> 40); > + else if (bytes & 0xfffffffffffffff) > + snprintf(buf, size, "%llu PiB", bytes >> 50); > + else > + snprintf(buf, size, "%llu EiB", bytes >> 60); > + return buf; > +} > + Can we use string_get_size() instead of rolling our own function? ^ permalink raw reply [flat|nested] 25+ messages in thread
* RE: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2015-12-21 16:16 ` Matt Fleming @ 2015-12-23 0:11 ` Elliott, Robert (Persistent Memory) 2015-12-23 15:52 ` Matt Fleming 2015-12-27 14:35 ` Andy Shevchenko 1 sibling, 1 reply; 25+ messages in thread From: Elliott, Robert (Persistent Memory) @ 2015-12-23 0:11 UTC (permalink / raw) To: Matt Fleming; +Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel > -----Original Message----- > From: Matt Fleming [mailto:matt@codeblueprint.co.uk] > Sent: Monday, December 21, 2015 10:16 AM > To: Elliott, Robert (Persistent Memory) <elliott@hpe.com> > Cc: tglx@linutronix.de; mingo@redhat.com; hpa@zytor.com; x86@kernel.org; > linux-efi@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: Re: [PATCH 4/4] x86/efi: print size and base in binary units in > efi_print_memmap > > On Thu, 17 Dec, at 07:28:34PM, Robert Elliott wrote: > > Print the base address for each range in decimal alongside the size. > > Use a "(size @ base)" format similar to the fake_memmap kernel > parameter. > > > > Print the range and base in the best-fit B, KiB, MiB, etc. units rather > > than always MiB. This avoids rounding, which can be misleading. > > > > Use proper IEC binary units (KiB, MiB, etc.) rather than misuse SI > > decimal units (KB, MB, etc.). > > > > old: > > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] > range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) > > > > new: > > efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] > range=[0x0000000880000000-0x0000000c7fffffff] (16 GiB @ 34 GiB) > > > > Signed-off-by: Robert Elliott <elliott@hpe.com> > > --- > > arch/x86/platform/efi/efi.c | 27 ++++++++++++++++++++++++--- > > 1 file changed, 24 insertions(+), 3 deletions(-) > > I'm not at all sure of the value of printing the physical address as a > size. I would have thought that you'd have to convert it back to an > address whenever you wanted to use it anyway. I was trying to make it resemble the memmap=size@address kernel parameter format for creating e820 entries, which does accept abbreviations in addition to hex values: memmap=nn[KMG]@ss[KMG] for usable DRAM memmap=nn[KMG]#ss[KMG] for ACPI data memmap=nn[KMG]$ss[KMG] for reserved memmap=nn[KMG]!ss[KMG] for persistent memory Mapping the UEFI type to the corresponding @, #, $, or ! was more than I wanted to tackle, so it's not a drop-in replacement string. memparse() also accepts T, P, and E units; I guess those need to be added to Documentation/kernel-parameters.txt. > > diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c > > index 635a955..030ba91 100644 > > --- a/arch/x86/platform/efi/efi.c > > +++ b/arch/x86/platform/efi/efi.c > > @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) > > return 0; > > } > > > > +char * __init efi_size_format(char *buf, size_t size, u64 bytes) > > +{ > > + if (!bytes || (bytes & 0x3ff)) > > + snprintf(buf, size, "%llu B", bytes); > > + else if (bytes & 0xfffff) > > + snprintf(buf, size, "%llu KiB", bytes >> 10); > > + else if (bytes & 0x3fffffff) > > + snprintf(buf, size, "%llu MiB", bytes >> 20); > > + else if (bytes & 0xffffffffff) > > + snprintf(buf, size, "%llu GiB", bytes >> 30); > > + else if (bytes & 0x3ffffffffffff) > > + snprintf(buf, size, "%llu TiB", bytes >> 40); > > + else if (bytes & 0xfffffffffffffff) > > + snprintf(buf, size, "%llu PiB", bytes >> 50); > > + else > > + snprintf(buf, size, "%llu EiB", bytes >> 60); > > + return buf; > > +} > > + > > Can we use string_get_size() instead of rolling our own function? Thanks for the pointer; I wondered if there was a similar function somewhere. However, that function throws away precision in favor of printing just 3 significant digits; I think that's dangerous. Its non-integer output is not supported by memmap=, and the function appears to use assembly code to get CPU divide instructions, losing the ability to use shifts for these power of two divisions. Example results... efi: mem01:... range=[0x0000000000093000-0x0000000000093fff] (4 KiB @ 588 KiB) efi: mem01:... range=[0x0000000000093000-0x0000000000093fff] (4.00 KiB @ 588 KiB) SGS efi: mem03:... range=[0x0000000000100000-0x00000000013e8fff] (19364 KiB @ 1 MiB) efi: mem03:... range=[0x0000000000100000-0x00000000013e8fff] (18.9 MiB @ 1.00 MiB) SGS (example of lost precision: 19364 KiB is really 18.91015625 MiB) efi: mem04:... range=[0x00000000013e9000-0x0000000001ffffff] (12380 KiB @ 20388 KiB) efi: mem04:... range=[0x00000000013e9000-0x0000000001ffffff] (12.0 MiB @ 19.9 MiB) SGS efi: mem28:... range=[0x00000000717c2000-0x0000000072acafff] (19492 KiB @ 1859336 KiB) efi: mem28:... range=[0x00000000717c2000-0x0000000072acafff] (19.0 MiB @ 1.77 GiB) SGS efi: mem57:... range=[0x0000000880000000-0x0000000e7fffffff] (24 GiB @ 34 GiB) efi: mem57:... range=[0x0000000880000000-0x0000000e7fffffff] (24.0 GiB @ 34.0 GiB) SGS --- Robert Elliott, HPE Persistent Memory ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2015-12-23 0:11 ` Elliott, Robert (Persistent Memory) @ 2015-12-23 15:52 ` Matt Fleming 0 siblings, 0 replies; 25+ messages in thread From: Matt Fleming @ 2015-12-23 15:52 UTC (permalink / raw) To: Elliott, Robert (Persistent Memory) Cc: tglx, mingo, hpa, x86, linux-efi, linux-kernel On Wed, 23 Dec, at 12:11:56AM, Elliott, Robert (Persistent Memory) wrote: > > I was trying to make it resemble the memmap=size@address > kernel parameter format for creating e820 entries, which > does accept abbreviations in addition to hex values: > memmap=nn[KMG]@ss[KMG] for usable DRAM > memmap=nn[KMG]#ss[KMG] for ACPI data > memmap=nn[KMG]$ss[KMG] for reserved > memmap=nn[KMG]!ss[KMG] for persistent memory > > Mapping the UEFI type to the corresponding @, #, $, or ! was > more than I wanted to tackle, so it's not a drop-in > replacement string. > > memparse() also accepts T, P, and E units; I guess those > need to be added to Documentation/kernel-parameters.txt. I think the value of the "@ address" portion of the string is questionable. > Thanks for the pointer; I wondered if there was a similar > function somewhere. However, that function throws away > precision in favor of printing just 3 significant digits; > I think that's dangerous. Its non-integer output is not > supported by memmap=, and the function appears to use > assembly code to get CPU divide instructions, losing the > ability to use shifts for these power of two divisions. > > Example results... > > efi: mem01:... range=[0x0000000000093000-0x0000000000093fff] (4 KiB @ 588 KiB) > efi: mem01:... range=[0x0000000000093000-0x0000000000093fff] (4.00 KiB @ 588 KiB) SGS > > efi: mem03:... range=[0x0000000000100000-0x00000000013e8fff] (19364 KiB @ 1 MiB) > efi: mem03:... range=[0x0000000000100000-0x00000000013e8fff] (18.9 MiB @ 1.00 MiB) SGS > (example of lost precision: 19364 KiB is really 18.91015625 MiB) > > efi: mem04:... range=[0x00000000013e9000-0x0000000001ffffff] (12380 KiB @ 20388 KiB) > efi: mem04:... range=[0x00000000013e9000-0x0000000001ffffff] (12.0 MiB @ 19.9 MiB) SGS > > efi: mem28:... range=[0x00000000717c2000-0x0000000072acafff] (19492 KiB @ 1859336 KiB) > efi: mem28:... range=[0x00000000717c2000-0x0000000072acafff] (19.0 MiB @ 1.77 GiB) SGS > > efi: mem57:... range=[0x0000000880000000-0x0000000e7fffffff] (24 GiB @ 34 GiB) > efi: mem57:... range=[0x0000000880000000-0x0000000e7fffffff] (24.0 GiB @ 34.0 GiB) SGS Good points! I agree that string_get_size() (unfortunately) doesn't look useful in this scenario. The code in efi_size_format() looks fine. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2015-12-21 16:16 ` Matt Fleming 2015-12-23 0:11 ` Elliott, Robert (Persistent Memory) @ 2015-12-27 14:35 ` Andy Shevchenko 2016-01-08 12:19 ` Matt Fleming 1 sibling, 1 reply; 25+ messages in thread From: Andy Shevchenko @ 2015-12-27 14:35 UTC (permalink / raw) To: Matt Fleming Cc: Robert Elliott, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel On Mon, Dec 21, 2015 at 6:16 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: > On Thu, 17 Dec, at 07:28:34PM, Robert Elliott wrote: >> Print the base address for each range in decimal alongside the size. >> Use a "(size @ base)" format similar to the fake_memmap kernel parameter. >> >> Print the range and base in the best-fit B, KiB, MiB, etc. units rather >> than always MiB. This avoids rounding, which can be misleading. >> >> Use proper IEC binary units (KiB, MiB, etc.) rather than misuse SI >> decimal units (KB, MB, etc.). >> >> old: >> efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB) >> >> new: >> efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16 GiB @ 34 GiB) >> >> Signed-off-by: Robert Elliott <elliott@hpe.com> >> --- >> arch/x86/platform/efi/efi.c | 27 ++++++++++++++++++++++++--- >> 1 file changed, 24 insertions(+), 3 deletions(-) > > I'm not at all sure of the value of printing the physical address as a > size. I would have thought that you'd have to convert it back to an > address whenever you wanted to use it anyway. > >> diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c >> index 635a955..030ba91 100644 >> --- a/arch/x86/platform/efi/efi.c >> +++ b/arch/x86/platform/efi/efi.c >> @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) >> return 0; >> } >> >> +char * __init efi_size_format(char *buf, size_t size, u64 bytes) >> +{ >> + if (!bytes || (bytes & 0x3ff)) >> + snprintf(buf, size, "%llu B", bytes); >> + else if (bytes & 0xfffff) >> + snprintf(buf, size, "%llu KiB", bytes >> 10); >> + else if (bytes & 0x3fffffff) >> + snprintf(buf, size, "%llu MiB", bytes >> 20); >> + else if (bytes & 0xffffffffff) >> + snprintf(buf, size, "%llu GiB", bytes >> 30); >> + else if (bytes & 0x3ffffffffffff) >> + snprintf(buf, size, "%llu TiB", bytes >> 40); >> + else if (bytes & 0xfffffffffffffff) >> + snprintf(buf, size, "%llu PiB", bytes >> 50); >> + else >> + snprintf(buf, size, "%llu EiB", bytes >> 60); >> + return buf; For me it looks like ffs with name in the table can be used. >> +} >> + > > Can we use string_get_size() instead of rolling our own function? > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2015-12-27 14:35 ` Andy Shevchenko @ 2016-01-08 12:19 ` Matt Fleming 2016-01-08 16:38 ` Elliott, Robert (Persistent Memory) 2016-01-08 16:39 ` Andy Shevchenko 0 siblings, 2 replies; 25+ messages in thread From: Matt Fleming @ 2016-01-08 12:19 UTC (permalink / raw) To: Andy Shevchenko Cc: Robert Elliott, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel On Sun, 27 Dec, at 04:35:12PM, Andy Shevchenko wrote: > On Mon, Dec 21, 2015 at 6:16 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: > >> diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c > >> index 635a955..030ba91 100644 > >> --- a/arch/x86/platform/efi/efi.c > >> +++ b/arch/x86/platform/efi/efi.c > >> @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) > >> return 0; > >> } > >> > >> +char * __init efi_size_format(char *buf, size_t size, u64 bytes) > >> +{ > >> + if (!bytes || (bytes & 0x3ff)) > >> + snprintf(buf, size, "%llu B", bytes); > >> + else if (bytes & 0xfffff) > >> + snprintf(buf, size, "%llu KiB", bytes >> 10); > >> + else if (bytes & 0x3fffffff) > >> + snprintf(buf, size, "%llu MiB", bytes >> 20); > >> + else if (bytes & 0xffffffffff) > >> + snprintf(buf, size, "%llu GiB", bytes >> 30); > >> + else if (bytes & 0x3ffffffffffff) > >> + snprintf(buf, size, "%llu TiB", bytes >> 40); > >> + else if (bytes & 0xfffffffffffffff) > >> + snprintf(buf, size, "%llu PiB", bytes >> 50); > >> + else > >> + snprintf(buf, size, "%llu EiB", bytes >> 60); > >> + return buf; > > For me it looks like ffs with name in the table can be used. Could you provide a patch? ^ permalink raw reply [flat|nested] 25+ messages in thread
* RE: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2016-01-08 12:19 ` Matt Fleming @ 2016-01-08 16:38 ` Elliott, Robert (Persistent Memory) 2016-01-08 16:44 ` Andy Shevchenko 2016-01-08 16:39 ` Andy Shevchenko 1 sibling, 1 reply; 25+ messages in thread From: Elliott, Robert (Persistent Memory) @ 2016-01-08 16:38 UTC (permalink / raw) To: Matt Fleming, Andy Shevchenko Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel > -----Original Message----- > From: Matt Fleming [mailto:matt@codeblueprint.co.uk] > Sent: Friday, January 8, 2016 6:19 AM > To: Andy Shevchenko <andy.shevchenko@gmail.com> > Cc: Elliott, Robert (Persistent Memory) <elliott@hpe.com>; Thomas Gleixner > <tglx@linutronix.de>; Ingo Molnar <mingo@redhat.com>; H. Peter Anvin > <hpa@zytor.com>; x86@kernel.org; linux-efi@vger.kernel.org; linux- > kernel@vger.kernel.org > Subject: Re: [PATCH 4/4] x86/efi: print size and base in binary units in > efi_print_memmap > > On Sun, 27 Dec, at 04:35:12PM, Andy Shevchenko wrote: > > On Mon, Dec 21, 2015 at 6:16 PM, Matt Fleming <matt@codeblueprint.co.uk> > wrote: > > >> diff --git a/arch/x86/platform/efi/efi.c > b/arch/x86/platform/efi/efi.c > > >> index 635a955..030ba91 100644 > > >> --- a/arch/x86/platform/efi/efi.c > > >> +++ b/arch/x86/platform/efi/efi.c > > >> @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) > > >> return 0; > > >> } > > >> > > >> +char * __init efi_size_format(char *buf, size_t size, u64 bytes) > > >> +{ > > >> + if (!bytes || (bytes & 0x3ff)) > > >> + snprintf(buf, size, "%llu B", bytes); > > >> + else if (bytes & 0xfffff) > > >> + snprintf(buf, size, "%llu KiB", bytes >> 10); > > >> + else if (bytes & 0x3fffffff) > > >> + snprintf(buf, size, "%llu MiB", bytes >> 20); > > >> + else if (bytes & 0xffffffffff) > > >> + snprintf(buf, size, "%llu GiB", bytes >> 30); > > >> + else if (bytes & 0x3ffffffffffff) > > >> + snprintf(buf, size, "%llu TiB", bytes >> 40); > > >> + else if (bytes & 0xfffffffffffffff) > > >> + snprintf(buf, size, "%llu PiB", bytes >> 50); > > >> + else > > >> + snprintf(buf, size, "%llu EiB", bytes >> 60); > > >> + return buf; > > > > For me it looks like ffs with name in the table can be used. > > Could you provide a patch? I think this is functionally equivalent: #include <string.h> char * efi_size_format_ffsl(char *buf, size_t size, u64 bytes) { if (!bytes || ffsl(bytes) < 10) snprintf(buf, size, "%llu B", bytes); else if (ffsl(bytes) < 20) snprintf(buf, size, "%llu KiB", bytes >> 10); else if (ffsl(bytes) < 30) snprintf(buf, size, "%llu MiB", bytes >> 20); else if (ffsl(bytes) < 40) snprintf(buf, size, "%llu GiB", bytes >> 30); else if (ffsl(bytes) < 50) snprintf(buf, size, "%llu TiB", bytes >> 40); else if (ffsl(bytes) < 60) snprintf(buf, size, "%llu PiB", bytes >> 50); else snprintf(buf, size, "%llu EiB", bytes >> 60); return buf; } Compiled as a user program with gcc -O2, the original results in mov and testq instructions: movq %rdi, %rbx je .L2 testl $1023, %edx jne .L2 testl $1048575, %edx jne .L15 testl $1073741823, %edx jne .L16 movabsq $1099511627775, %rax testq %rax, %rdx jne .L17 movabsq $1125899906842623, %rax testq %rax, %rdx jne .L18 movabsq $1152921504606846975, %rax movq %rdx, %rcx testq %rax, %rdx jne .L19 while the ffs version uses bit scan forward (bsfq) and only needs cmpl instructions since the values are smaller: movq %rdi, %rbx je .L21 bsfq %rdx, %rcx addq $1, %rcx cmpl $9, %ecx jle .L21 cmpl $19, %ecx jle .L33 cmpl $29, %ecx jle .L34 cmpl $39, %ecx .p2align 4,,2 jle .L35 cmpl $49, %ecx .p2align 4,,2 jle .L36 cmpl $59, %ecx .p2align 4,,2 jle .L37 The kernel offers ffs(int x) but not ffsl(), and it uses inline assembly for one of these: bsfl bsfl, cmovzl bsfl, jnz, movl I don't know which code is the most efficient. --- Robert Elliott, HPE Persistent Memory ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2016-01-08 16:38 ` Elliott, Robert (Persistent Memory) @ 2016-01-08 16:44 ` Andy Shevchenko 0 siblings, 0 replies; 25+ messages in thread From: Andy Shevchenko @ 2016-01-08 16:44 UTC (permalink / raw) To: Elliott, Robert (Persistent Memory) Cc: Matt Fleming, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel On Fri, Jan 8, 2016 at 6:38 PM, Elliott, Robert (Persistent Memory) <elliott@hpe.com> wrote: >> -----Original Message----- >> From: Matt Fleming [mailto:matt@codeblueprint.co.uk] >> Sent: Friday, January 8, 2016 6:19 AM >> To: Andy Shevchenko <andy.shevchenko@gmail.com> >> Cc: Elliott, Robert (Persistent Memory) <elliott@hpe.com>; Thomas Gleixner >> <tglx@linutronix.de>; Ingo Molnar <mingo@redhat.com>; H. Peter Anvin >> <hpa@zytor.com>; x86@kernel.org; linux-efi@vger.kernel.org; linux- >> kernel@vger.kernel.org >> Subject: Re: [PATCH 4/4] x86/efi: print size and base in binary units in >> efi_print_memmap >> >> On Sun, 27 Dec, at 04:35:12PM, Andy Shevchenko wrote: >> > On Mon, Dec 21, 2015 at 6:16 PM, Matt Fleming <matt@codeblueprint.co.uk> >> wrote: >> > >> diff --git a/arch/x86/platform/efi/efi.c >> b/arch/x86/platform/efi/efi.c >> > >> index 635a955..030ba91 100644 >> > >> --- a/arch/x86/platform/efi/efi.c >> > >> +++ b/arch/x86/platform/efi/efi.c >> > >> @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) >> > >> return 0; >> > >> } >> > >> >> > >> +char * __init efi_size_format(char *buf, size_t size, u64 bytes) >> > >> +{ >> > >> + if (!bytes || (bytes & 0x3ff)) >> > >> + snprintf(buf, size, "%llu B", bytes); >> > >> + else if (bytes & 0xfffff) >> > >> + snprintf(buf, size, "%llu KiB", bytes >> 10); >> > >> + else if (bytes & 0x3fffffff) >> > >> + snprintf(buf, size, "%llu MiB", bytes >> 20); >> > >> + else if (bytes & 0xffffffffff) >> > >> + snprintf(buf, size, "%llu GiB", bytes >> 30); >> > >> + else if (bytes & 0x3ffffffffffff) >> > >> + snprintf(buf, size, "%llu TiB", bytes >> 40); >> > >> + else if (bytes & 0xfffffffffffffff) >> > >> + snprintf(buf, size, "%llu PiB", bytes >> 50); >> > >> + else >> > >> + snprintf(buf, size, "%llu EiB", bytes >> 60); >> > >> + return buf; >> > >> > For me it looks like ffs with name in the table can be used. >> >> Could you provide a patch? > > I think this is functionally equivalent: > #include <string.h> > > char * efi_size_format_ffsl(char *buf, size_t size, u64 bytes) > { > if (!bytes || ffsl(bytes) < 10) > snprintf(buf, size, "%llu B", bytes); > else if (ffsl(bytes) < 20) > snprintf(buf, size, "%llu KiB", bytes >> 10); > else if (ffsl(bytes) < 30) > snprintf(buf, size, "%llu MiB", bytes >> 20); > else if (ffsl(bytes) < 40) > snprintf(buf, size, "%llu GiB", bytes >> 30); > else if (ffsl(bytes) < 50) > snprintf(buf, size, "%llu TiB", bytes >> 40); > else if (ffsl(bytes) < 60) > snprintf(buf, size, "%llu PiB", bytes >> 50); > else > snprintf(buf, size, "%llu EiB", bytes >> 60); > return buf; > } No, no, I meant something slightly different. We already have a table of units. Needs to be shared (patch already cooked), second stage is to provide proper number and units. Something like units = string_units_2; units_index = __ffs64(value) / 10; value >>= units_index * 10; snprintf("%llu%s", value, units[units_index]); > > Compiled as a user program with gcc -O2, the original results > in mov and testq instructions: > movq %rdi, %rbx > je .L2 > testl $1023, %edx > jne .L2 > testl $1048575, %edx > jne .L15 > testl $1073741823, %edx > jne .L16 > movabsq $1099511627775, %rax > testq %rax, %rdx > jne .L17 > movabsq $1125899906842623, %rax > testq %rax, %rdx > jne .L18 > movabsq $1152921504606846975, %rax > movq %rdx, %rcx > testq %rax, %rdx > jne .L19 > > while the ffs version uses bit scan forward (bsfq) > and only needs cmpl instructions since the values > are smaller: > movq %rdi, %rbx > je .L21 > bsfq %rdx, %rcx > addq $1, %rcx > cmpl $9, %ecx > jle .L21 > cmpl $19, %ecx > jle .L33 > cmpl $29, %ecx > jle .L34 > cmpl $39, %ecx > .p2align 4,,2 > jle .L35 > cmpl $49, %ecx > .p2align 4,,2 > jle .L36 > cmpl $59, %ecx > .p2align 4,,2 > jle .L37 > > The kernel offers ffs(int x) but not ffsl(), See above. > and it > uses inline assembly for one of these: > bsfl > bsfl, cmovzl > bsfl, jnz, movl > > I don't know which code is the most efficient. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2016-01-08 12:19 ` Matt Fleming 2016-01-08 16:38 ` Elliott, Robert (Persistent Memory) @ 2016-01-08 16:39 ` Andy Shevchenko 2016-01-11 14:09 ` Matt Fleming 1 sibling, 1 reply; 25+ messages in thread From: Andy Shevchenko @ 2016-01-08 16:39 UTC (permalink / raw) To: Matt Fleming Cc: Robert Elliott, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel On Fri, Jan 8, 2016 at 2:19 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: > On Sun, 27 Dec, at 04:35:12PM, Andy Shevchenko wrote: >> On Mon, Dec 21, 2015 at 6:16 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: >> >> diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c >> >> index 635a955..030ba91 100644 >> >> --- a/arch/x86/platform/efi/efi.c >> >> +++ b/arch/x86/platform/efi/efi.c >> >> @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) >> >> return 0; >> >> } >> >> >> >> +char * __init efi_size_format(char *buf, size_t size, u64 bytes) >> >> +{ >> >> + if (!bytes || (bytes & 0x3ff)) >> >> + snprintf(buf, size, "%llu B", bytes); >> >> + else if (bytes & 0xfffff) >> >> + snprintf(buf, size, "%llu KiB", bytes >> 10); >> >> + else if (bytes & 0x3fffffff) >> >> + snprintf(buf, size, "%llu MiB", bytes >> 20); >> >> + else if (bytes & 0xffffffffff) >> >> + snprintf(buf, size, "%llu GiB", bytes >> 30); >> >> + else if (bytes & 0x3ffffffffffff) >> >> + snprintf(buf, size, "%llu TiB", bytes >> 40); >> >> + else if (bytes & 0xfffffffffffffff) >> >> + snprintf(buf, size, "%llu PiB", bytes >> 50); >> >> + else >> >> + snprintf(buf, size, "%llu EiB", bytes >> 60); >> >> + return buf; >> >> For me it looks like ffs with name in the table can be used. > > Could you provide a patch? I will prepare something this weekend, or latest next week. I suppose I can apply Robert's one on top of your efi/next and update it, right? -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2016-01-08 16:39 ` Andy Shevchenko @ 2016-01-11 14:09 ` Matt Fleming 2016-01-12 13:17 ` Andy Shevchenko 0 siblings, 1 reply; 25+ messages in thread From: Matt Fleming @ 2016-01-11 14:09 UTC (permalink / raw) To: Andy Shevchenko Cc: Robert Elliott, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel On Fri, 08 Jan, at 06:39:28PM, Andy Shevchenko wrote: > On Fri, Jan 8, 2016 at 2:19 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: > > On Sun, 27 Dec, at 04:35:12PM, Andy Shevchenko wrote: > >> On Mon, Dec 21, 2015 at 6:16 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: > >> >> diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c > >> >> index 635a955..030ba91 100644 > >> >> --- a/arch/x86/platform/efi/efi.c > >> >> +++ b/arch/x86/platform/efi/efi.c > >> >> @@ -222,6 +222,25 @@ int __init efi_memblock_x86_reserve_range(void) > >> >> return 0; > >> >> } > >> >> > >> >> +char * __init efi_size_format(char *buf, size_t size, u64 bytes) > >> >> +{ > >> >> + if (!bytes || (bytes & 0x3ff)) > >> >> + snprintf(buf, size, "%llu B", bytes); > >> >> + else if (bytes & 0xfffff) > >> >> + snprintf(buf, size, "%llu KiB", bytes >> 10); > >> >> + else if (bytes & 0x3fffffff) > >> >> + snprintf(buf, size, "%llu MiB", bytes >> 20); > >> >> + else if (bytes & 0xffffffffff) > >> >> + snprintf(buf, size, "%llu GiB", bytes >> 30); > >> >> + else if (bytes & 0x3ffffffffffff) > >> >> + snprintf(buf, size, "%llu TiB", bytes >> 40); > >> >> + else if (bytes & 0xfffffffffffffff) > >> >> + snprintf(buf, size, "%llu PiB", bytes >> 50); > >> >> + else > >> >> + snprintf(buf, size, "%llu EiB", bytes >> 60); > >> >> + return buf; > >> > >> For me it looks like ffs with name in the table can be used. > > > > Could you provide a patch? > > I will prepare something this weekend, or latest next week. > > I suppose I can apply Robert's one on top of your efi/next and update it, right? Yeah, that should work. Thanks. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap 2016-01-11 14:09 ` Matt Fleming @ 2016-01-12 13:17 ` Andy Shevchenko 0 siblings, 0 replies; 25+ messages in thread From: Andy Shevchenko @ 2016-01-12 13:17 UTC (permalink / raw) To: Matt Fleming Cc: Robert Elliott, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, linux-efi, linux-kernel On Mon, Jan 11, 2016 at 4:09 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: > On Fri, 08 Jan, at 06:39:28PM, Andy Shevchenko wrote: >> On Fri, Jan 8, 2016 at 2:19 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: >> > On Sun, 27 Dec, at 04:35:12PM, Andy Shevchenko wrote: >> >> On Mon, Dec 21, 2015 at 6:16 PM, Matt Fleming <matt@codeblueprint.co.uk> wrote: >> I will prepare something this weekend, or latest next week. >> >> I suppose I can apply Robert's one on top of your efi/next and update it, right? > > Yeah, that should work. Thanks. Just sent as promised. -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2016-01-12 13:17 UTC | newest] Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-12-18 1:28 Robert Elliott 2015-12-18 1:28 ` [PATCH 1/4] x86/efi: show actual ending addresses in efi_print_memmap Robert Elliott 2015-12-21 15:50 ` Matt Fleming 2015-12-21 16:06 ` Matt Fleming 2015-12-22 20:08 ` Elliott, Robert (Persistent Memory) 2015-12-23 12:44 ` Matt Fleming 2015-12-21 16:44 ` Elliott, Robert (Persistent Memory) 2015-12-23 12:47 ` Matt Fleming 2015-12-24 1:07 ` [PATCH v2 " Robert Elliott 2016-01-08 12:04 ` Matt Fleming 2015-12-18 1:28 ` [PATCH 2/4] efi: add NV memory attribute Robert Elliott 2015-12-21 15:54 ` Matt Fleming 2015-12-18 1:28 ` [PATCH 3/4] efi: add Persistent Memory type name Robert Elliott 2016-01-08 12:20 ` Matt Fleming 2015-12-18 1:28 ` [PATCH 4/4] x86/efi: print size and base in binary units in efi_print_memmap Robert Elliott 2015-12-21 16:16 ` Matt Fleming 2015-12-23 0:11 ` Elliott, Robert (Persistent Memory) 2015-12-23 15:52 ` Matt Fleming 2015-12-27 14:35 ` Andy Shevchenko 2016-01-08 12:19 ` Matt Fleming 2016-01-08 16:38 ` Elliott, Robert (Persistent Memory) 2016-01-08 16:44 ` Andy Shevchenko 2016-01-08 16:39 ` Andy Shevchenko 2016-01-11 14:09 ` Matt Fleming 2016-01-12 13:17 ` Andy Shevchenko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).