From: Vivek Goyal <vgoyal@redhat.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: muli@il.ibm.com, kexec@lists.infradead.org, horms@verge.net.au,
ebiederm@xmission.com, jdmason@kudzu.us, dyoung@redhat.com,
Thomas Renninger <trenn@suse.de>, WANG Chao <chaowang@redhat.com>
Subject: Re: [PATCH v2 0/4] kexec-tools, x86: E820 memmap pass for kdump
Date: Mon, 24 Feb 2014 10:11:03 -0500 [thread overview]
Message-ID: <20140224151103.GB4631@redhat.com> (raw)
In-Reply-To: <7125bd4c-b394-4180-b564-f2002c9d9a2e@email.android.com>
On Mon, Feb 24, 2014 at 07:03:07AM -0800, H. Peter Anvin wrote:
> First question is if Calgary even exists anymore and if so if someone actually cares about it enough to maintain it.
Atleast MAINTAINERS file says it is maintained.
CALGARY x86-64 IOMMU
M: Muli Ben-Yehuda <muli@il.ibm.com>
M: "Jon D. Mason" <jdmason@kudzu.us>
L: discuss@x86-64.org
S: Maintained
F: arch/x86/kernel/pci-calgary_64.c
F: arch/x86/kernel/tce_64.c
F: arch/x86/include/asm/calgary.h
F: arch/x86/include/asm/tce.h
I am add maintainers to CC list and they can shed more light on if
calgary still exists and if somebody actually cares about it.
Thanks
Vivek
>
> On February 24, 2014 6:58:41 AM PST, WANG Chao <chaowang@redhat.com> wrote:
> >On 02/24/14 at 11:38am, Thomas Renninger wrote:
> >> On Thursday, February 20, 2014 05:28:28 PM WANG Chao wrote:
> >> > Hi, All
> >> >
> >> > When kaslr comes in and kdump is broken, it seems about the right
> >time to
> >> > use E820 instead of memmap=exactmap to pass memmap for kdump for
> >the
> >> > default memmap passing mechanism:
> >> >
> >http://lists.infradead.org/pipermail/kexec/2014-February/011048.html
> >> >
> >> > Unfortunately, saved_max_pfn still got its user out there (calgry
> >pci, it
> >> > looks like the only one). So for backward compatibility, I'm
> >introducing a
> >> > new option --pass-memmap-cmdline to force kexec-tools to pass
> >> > memmap=exactmap, the old way.
> >> The saved_max_pfn usage is calgary pci looks bad/wrong and I wonder:
> >> - whether this is still worth touching, so that the old mechanism:
> >> --pass-memmap-cmdline could vanish in the one or other year and
> >need
> >> not to be carried forever
> >> I tried to find such a machine, but couldn't find anything mentioning
> >calgary
> >> in quite some machines' dmesg.
> >>
> >> Approaches to avoid saved_max_pfn in calgary case:
> >> 1) If done correctly from the beginning, the TCE table size would
> >have
> >> been exposed via /sys and kexec-tools could simply add:
> >> calgary="128k|512K...|8M" which is already caught by pci-calgary
> >and
> >> saved_max_pfn is not needed/touched anymore.
> >> -> Disadvantage: needs a new sysfs entry
> >> 2) When finding max_pfn for calgary table size usage, we could try
> >in
> >> kdump case to use the highest memory (RAM or RESERVED) showing
> >up
> >> in e820 map.
> >
> >How could this replace saved_max_pfn? The highest memory in kdump can't
> >necessarily be the real ram size. In kdump, RAM range is just part of
> >the real
> >ram, not mentioning we don't pass RESERVED range to kdump E820.
> >
> >Thanks
> >WANG Chao
> >
> >>
> >> Please find below a patch which would eleminate the last
> >saved_max_pfn
> >> user. Unfortunately I could not find a calgary system to test this
> >on.
> >>
> >> Be aware: I could not test this.
> >> If someone tells me for what kind of machine (and BIOS stuff
> >enabled?)
> >> I should look for, I can try to search for such a platform.
> >>
> >> Something else: There is quite some duplicate code in kexec-tools
> >when it
> >> is about retrieving the e820 table info (normal kexec vs kdump).
> >> Did you see my cleanups I posted long ago? Do you plan to still clean
> >up
> >> a bit after this series?
> >
> >Yes, I saw them and find some of them are pretty useful for this
> >patchset. I suppose some cleanups can be done later. Feel free to clean
> >up after this patchset is settled.
> >
> >>
> >> Thomas
> >>
> >>
> >>
> >> X86: Eliminate saved_max_pfn user in pci-calgary and remove the
> >unused variable
> >>
> >> Searching for the highest value of RAM and RESERVED memory in kdump
> >case
> >> should be the same as max_pfn of the original kernel.
> >> At least this is always the case as long as type usable RAM is the
> >highest
> >> entry in original e820 map.
> >>
> >> Signed-off-by: Thomas Renninger <trenn@suse.de>
> >>
> >> diff --git a/arch/x86/include/asm/e820.h
> >b/arch/x86/include/asm/e820.h
> >> index 779c2ef..712173e 100644
> >> --- a/arch/x86/include/asm/e820.h
> >> +++ b/arch/x86/include/asm/e820.h
> >> @@ -49,6 +49,7 @@ static inline void early_memtest(unsigned long
> >start, unsigned long end)
> >> #endif
> >>
> >> extern unsigned long e820_end_of_ram_pfn(void);
> >> +extern unsigned long e820_end_of_e820_pfn(void);
> >> extern unsigned long e820_end_of_low_ram_pfn(void);
> >> extern u64 early_reserve_e820(u64 sizet, u64 align);
> >>
> >> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
> >> index 988c00a..699e8fe 100644
> >> --- a/arch/x86/kernel/e820.c
> >> +++ b/arch/x86/kernel/e820.c
> >> @@ -757,7 +757,7 @@ u64 __init early_reserve_e820(u64 size, u64
> >align)
> >> /*
> >> * Find the highest page frame number we have available
> >> */
> >> -static unsigned long __init e820_end_pfn(unsigned long limit_pfn,
> >unsigned type)
> >> +unsigned long __init e820_end_pfn(unsigned long limit_pfn, unsigned
> >type)
> >> {
> >> int i;
> >> unsigned long last_pfn = 0;
> >> @@ -796,6 +796,12 @@ unsigned long __init e820_end_of_ram_pfn(void)
> >> return e820_end_pfn(MAX_ARCH_PFN, E820_RAM);
> >> }
> >>
> >> +unsigned long __init e820_end_of_e820_pfn(void)
> >> +{
> >> + return max(e820_end_pfn(MAX_ARCH_PFN, E820_RAM),
> >> + e820_end_pfn(MAX_ARCH_PFN, E820_RESERVED);
> >> +}
> >> +
> >> unsigned long __init e820_end_of_low_ram_pfn(void)
> >> {
> >> return e820_end_pfn(1UL<<(32 - PAGE_SHIFT), E820_RAM);
> >> @@ -847,14 +853,6 @@ static int __init parse_memmap_one(char *p)
> >> return -EINVAL;
> >>
> >> if (!strncmp(p, "exactmap", 8)) {
> >> -#ifdef CONFIG_CRASH_DUMP
> >> - /*
> >> - * If we are doing a crash dump, we still need to know
> >> - * the real mem size before original memory map is
> >> - * reset.
> >> - */
> >> - saved_max_pfn = e820_end_of_ram_pfn();
> >> -#endif
> >> e820.nr_map = 0;
> >> userdef = 1;
> >> return 0;
> >> diff --git a/arch/x86/kernel/pci-calgary_64.c
> >b/arch/x86/kernel/pci-calgary_64.c
> >> index 299d493..89ae766 100644
> >> --- a/arch/x86/kernel/pci-calgary_64.c
> >> +++ b/arch/x86/kernel/pci-calgary_64.c
> >> @@ -1371,6 +1371,7 @@ int __init detect_calgary(void)
> >> unsigned long ptr;
> >> unsigned int offset, prev_offset;
> >> int ret;
> >> + unsigned long orig_max_pfn = max_pfn;
> >>
> >> /*
> >> * if the user specified iommu=off or iommu=soft or we found
> >> @@ -1418,8 +1419,10 @@ int __init detect_calgary(void)
> >> return -ENOMEM;
> >> }
> >>
> >> - specified_table_size = determine_tce_table_size((is_kdump_kernel()
> >?
> >> - saved_max_pfn : max_pfn) * PAGE_SIZE);
> >> + if (is_kdump_kernel())
> >> + orig_max_pfn = e820_end_of_e820_pfn();
> >> + specified_table_size = determine_tce_table_size(orig_max_pfn
> >> + * PAGE_SIZE);
> >>
> >> for (bus = 0; bus < MAX_PHB_BUS_NUM; bus++) {
> >> struct calgary_bus_info *info = &bus_info[bus];
> >> diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
> >> index 7032518..bce4d97 100644
> >> --- a/include/linux/crash_dump.h
> >> +++ b/include/linux/crash_dump.h
> >> @@ -87,5 +87,4 @@ extern void unregister_oldmem_pfn_is_ram(void);
> >> static inline int is_kdump_kernel(void) { return 0; }
> >> #endif /* CONFIG_CRASH_DUMP */
> >>
> >> -extern unsigned long saved_max_pfn;
> >> #endif /* LINUX_CRASHDUMP_H */
> >> diff --git a/kernel/crash_dump.c b/kernel/crash_dump.c
> >> index c766ee5..9d50486 100644
> >> --- a/kernel/crash_dump.c
> >> +++ b/kernel/crash_dump.c
> >> @@ -5,12 +5,6 @@
> >> #include <linux/export.h>
> >>
> >> /*
> >> - * If we have booted due to a crash, max_pfn will be a very low
> >value. We need
> >> - * to know the amount of memory that the previous kernel used.
> >> - */
> >> -unsigned long saved_max_pfn;
> >> -
> >> -/*
> >> * stores the physical address of elf header of crash image
> >> *
> >> * Note: elfcorehdr_addr is not just limited to vmcore. It is also
> >used by
> >>
>
> --
> Sent from my mobile phone. Please pardon brevity and lack of formatting.
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2014-02-24 15:12 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-20 9:28 [PATCH v2 0/4] kexec-tools, x86: E820 memmap pass for kdump WANG Chao
2014-02-20 9:28 ` [PATCH v2 1/4] cleanup: add dbgprint_mem_range function WANG Chao
2014-02-20 9:28 ` [PATCH v2 2/4] x86: Store memory ranges globally used for crash kernel to boot into WANG Chao
2014-02-20 9:28 ` [PATCH v2 3/4] x86: add --pass-memmap-cmdline option WANG Chao
2014-02-20 9:28 ` [PATCH v2 4/4] x86: Pass memory range via E820 for kdump WANG Chao
2014-02-27 20:53 ` Linn Crosetto
2014-02-28 8:32 ` WANG Chao
2014-02-24 10:38 ` [PATCH v2 0/4] kexec-tools, x86: E820 memmap pass " Thomas Renninger
2014-02-24 14:58 ` WANG Chao
2014-02-24 15:03 ` H. Peter Anvin
2014-02-24 15:11 ` Vivek Goyal [this message]
2014-02-24 15:24 ` Vivek Goyal
2014-02-24 15:28 ` H. Peter Anvin
2014-02-24 15:22 ` Vivek Goyal
2014-02-24 15:27 ` H. Peter Anvin
2014-02-24 15:34 ` Thomas Renninger
2014-02-24 15:45 ` Vivek Goyal
2014-02-24 15:50 ` H. Peter Anvin
2014-02-24 15:59 ` Vivek Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140224151103.GB4631@redhat.com \
--to=vgoyal@redhat.com \
--cc=chaowang@redhat.com \
--cc=dyoung@redhat.com \
--cc=ebiederm@xmission.com \
--cc=horms@verge.net.au \
--cc=hpa@zytor.com \
--cc=jdmason@kudzu.us \
--cc=kexec@lists.infradead.org \
--cc=muli@il.ibm.com \
--cc=trenn@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.