2007-11-16 02:33:19

by Ken'ichi Ohmichi

[permalink] [raw]
Subject: [PATCH 4/5] Fix the configuration dependencies


This patch fixes the configuration dependencies in the vmcoreinfo data.

i386's "node_data" is defined in arch/x86/mm/discontig_32.c,
and x86_64's one is defined in arch/x86/mm/numa_64.c.
They depend on CONFIG_NUMA:
arch/x86/mm/Makefile_32:7
obj-$(CONFIG_NUMA) += discontig_32.o
arch/x86/mm/Makefile_64:7
obj-$(CONFIG_NUMA) += numa_64.o

ia64's "pgdat_list" is defined in arch/ia64/mm/discontig.c,
and it depends on CONFIG_DISCONTIGMEM and CONFIG_SPARSEMEM:
arch/ia64/mm/Makefile:9-10
obj-$(CONFIG_DISCONTIGMEM) += discontig.o
obj-$(CONFIG_SPARSEMEM) += discontig.o

ia64's "node_memblk" is defined in arch/ia64/mm/numa.c,
and it depends on CONFIG_NUMA:
arch/ia64/mm/Makefile:8
obj-$(CONFIG_NUMA) += numa.o

Signed-off-by: Ken'ichi Ohmichi <[email protected]>
---
diff -rpuN a/arch/ia64/kernel/machine_kexec.c b/arch/ia64/kernel/machine_kexec.c
--- a/arch/ia64/kernel/machine_kexec.c 2007-11-14 15:39:06.000000000 +0900
+++ b/arch/ia64/kernel/machine_kexec.c 2007-11-14 15:41:41.000000000 +0900
@@ -129,10 +129,11 @@ void machine_kexec(struct kimage *image)

void arch_crash_save_vmcoreinfo(void)
{
-#if defined(CONFIG_ARCH_DISCONTIGMEM_ENABLE) && defined(CONFIG_NUMA)
+#if defined(CONFIG_DISCONTIGMEM) || defined(CONFIG_SPARSEMEM)
VMCOREINFO_SYMBOL(pgdat_list);
VMCOREINFO_LENGTH(pgdat_list, MAX_NUMNODES);
-
+#endif
+#ifdef CONFIG_NUMA
VMCOREINFO_SYMBOL(node_memblk);
VMCOREINFO_LENGTH(node_memblk, NR_NODE_MEMBLKS);
VMCOREINFO_STRUCT_SIZE(node_memblk_s);
diff -rpuN a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
--- a/arch/x86/kernel/machine_kexec_32.c 2007-11-14 15:39:19.000000000 +0900
+++ b/arch/x86/kernel/machine_kexec_32.c 2007-11-14 15:39:33.000000000 +0900
@@ -151,7 +151,7 @@ NORET_TYPE void machine_kexec(struct kim

void arch_crash_save_vmcoreinfo(void)
{
-#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
+#ifdef CONFIG_NUMA
VMCOREINFO_SYMBOL(node_data);
VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
#endif
diff -rpuN a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
--- a/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:19.000000000 +0900
+++ b/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:33.000000000 +0900
@@ -235,7 +235,7 @@ void arch_crash_save_vmcoreinfo(void)
{
VMCOREINFO_SYMBOL(init_level4_pgt);

-#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
+#ifdef CONFIG_NUMA
VMCOREINFO_SYMBOL(node_data);
VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
#endif
_



2007-11-16 16:25:40

by Simon Horman

[permalink] [raw]
Subject: Re: [PATCH 4/5] Fix the configuration dependencies

On Fri, Nov 16, 2007 at 11:33:20AM +0900, Ken'ichi Ohmichi wrote:
>
> This patch fixes the configuration dependencies in the vmcoreinfo data.
>
> i386's "node_data" is defined in arch/x86/mm/discontig_32.c,
> and x86_64's one is defined in arch/x86/mm/numa_64.c.
> They depend on CONFIG_NUMA:
> arch/x86/mm/Makefile_32:7
> obj-$(CONFIG_NUMA) += discontig_32.o
> arch/x86/mm/Makefile_64:7
> obj-$(CONFIG_NUMA) += numa_64.o
>
> ia64's "pgdat_list" is defined in arch/ia64/mm/discontig.c,
> and it depends on CONFIG_DISCONTIGMEM and CONFIG_SPARSEMEM:
> arch/ia64/mm/Makefile:9-10
> obj-$(CONFIG_DISCONTIGMEM) += discontig.o
> obj-$(CONFIG_SPARSEMEM) += discontig.o
>
> ia64's "node_memblk" is defined in arch/ia64/mm/numa.c,
> and it depends on CONFIG_NUMA:
> arch/ia64/mm/Makefile:8
> obj-$(CONFIG_NUMA) += numa.o
>
> Signed-off-by: Ken'ichi Ohmichi <[email protected]>

This appears correct to me, checking through the symbols and the
location of their deffinitions, though I have not had a chance to run
many build checks.

I also note that CONFIG_ARCH_DISCONTIGMEM_ENABLE does not even
appear to exist on i386, so it looks that without this change
the code in question whould never be enabled.

Acked-by: Simon Horman <[email protected]>

> ---
> diff -rpuN a/arch/ia64/kernel/machine_kexec.c b/arch/ia64/kernel/machine_kexec.c
> --- a/arch/ia64/kernel/machine_kexec.c 2007-11-14 15:39:06.000000000 +0900
> +++ b/arch/ia64/kernel/machine_kexec.c 2007-11-14 15:41:41.000000000 +0900
> @@ -129,10 +129,11 @@ void machine_kexec(struct kimage *image)
>
> void arch_crash_save_vmcoreinfo(void)
> {
> -#if defined(CONFIG_ARCH_DISCONTIGMEM_ENABLE) && defined(CONFIG_NUMA)
> +#if defined(CONFIG_DISCONTIGMEM) || defined(CONFIG_SPARSEMEM)
> VMCOREINFO_SYMBOL(pgdat_list);
> VMCOREINFO_LENGTH(pgdat_list, MAX_NUMNODES);
> -
> +#endif
> +#ifdef CONFIG_NUMA
> VMCOREINFO_SYMBOL(node_memblk);
> VMCOREINFO_LENGTH(node_memblk, NR_NODE_MEMBLKS);
> VMCOREINFO_STRUCT_SIZE(node_memblk_s);
> diff -rpuN a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
> --- a/arch/x86/kernel/machine_kexec_32.c 2007-11-14 15:39:19.000000000 +0900
> +++ b/arch/x86/kernel/machine_kexec_32.c 2007-11-14 15:39:33.000000000 +0900
> @@ -151,7 +151,7 @@ NORET_TYPE void machine_kexec(struct kim
>
> void arch_crash_save_vmcoreinfo(void)
> {
> -#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
> +#ifdef CONFIG_NUMA
> VMCOREINFO_SYMBOL(node_data);
> VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
> #endif
> diff -rpuN a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
> --- a/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:19.000000000 +0900
> +++ b/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:33.000000000 +0900
> @@ -235,7 +235,7 @@ void arch_crash_save_vmcoreinfo(void)
> {
> VMCOREINFO_SYMBOL(init_level4_pgt);
>
> -#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
> +#ifdef CONFIG_NUMA
> VMCOREINFO_SYMBOL(node_data);
> VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
> #endif
> _
>
>
>

> _______________________________________________
> kexec mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/kexec


--
$BJuRX(B $B@>Lg(B ($B%[%&%^%s!&%5%$%b%s(B) | Simon Horman (Horms)

2007-11-21 02:50:04

by Ken'ichi Ohmichi

[permalink] [raw]
Subject: Re: [PATCH 4/5] Fix the configuration dependencies


Hi Simon,

Thank you for reviewing and your "Acked-by" signs.

Simon Horman wrote:
> On Fri, Nov 16, 2007 at 11:33:20AM +0900, Ken'ichi Ohmichi wrote:
>> This patch fixes the configuration dependencies in the vmcoreinfo data.
>>
>> i386's "node_data" is defined in arch/x86/mm/discontig_32.c,
>> and x86_64's one is defined in arch/x86/mm/numa_64.c.
>> They depend on CONFIG_NUMA:
>> arch/x86/mm/Makefile_32:7
>> obj-$(CONFIG_NUMA) += discontig_32.o
>> arch/x86/mm/Makefile_64:7
>> obj-$(CONFIG_NUMA) += numa_64.o
>>
>> ia64's "pgdat_list" is defined in arch/ia64/mm/discontig.c,
>> and it depends on CONFIG_DISCONTIGMEM and CONFIG_SPARSEMEM:
>> arch/ia64/mm/Makefile:9-10
>> obj-$(CONFIG_DISCONTIGMEM) += discontig.o
>> obj-$(CONFIG_SPARSEMEM) += discontig.o
>>
>> ia64's "node_memblk" is defined in arch/ia64/mm/numa.c,
>> and it depends on CONFIG_NUMA:
>> arch/ia64/mm/Makefile:8
>> obj-$(CONFIG_NUMA) += numa.o
>>
>> Signed-off-by: Ken'ichi Ohmichi <[email protected]>
>
> This appears correct to me, checking through the symbols and the
> location of their deffinitions, though I have not had a chance to run
> many build checks.
>
> I also note that CONFIG_ARCH_DISCONTIGMEM_ENABLE does not even
> appear to exist on i386, so it looks that without this change
> the code in question whould never be enabled.

If you enable "Numa Memory Allocation and Scheduler Support" in i386's
menuconfig, CONFIG_ARCH_DISCONTIGMEM_ENABLE is enabled.


Thanks
Ken'ichi Ohmichi

2007-11-26 07:59:17

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 4/5] Fix the configuration dependencies

On Fri, 16 Nov 2007 11:33:20 +0900 "Ken'ichi Ohmichi" <[email protected]> wrote:

>
> This patch fixes the configuration dependencies in the vmcoreinfo data.
>
> i386's "node_data" is defined in arch/x86/mm/discontig_32.c,
> and x86_64's one is defined in arch/x86/mm/numa_64.c.
> They depend on CONFIG_NUMA:
> arch/x86/mm/Makefile_32:7
> obj-$(CONFIG_NUMA) += discontig_32.o
> arch/x86/mm/Makefile_64:7
> obj-$(CONFIG_NUMA) += numa_64.o
>
> ia64's "pgdat_list" is defined in arch/ia64/mm/discontig.c,
> and it depends on CONFIG_DISCONTIGMEM and CONFIG_SPARSEMEM:
> arch/ia64/mm/Makefile:9-10
> obj-$(CONFIG_DISCONTIGMEM) += discontig.o
> obj-$(CONFIG_SPARSEMEM) += discontig.o
>
> ia64's "node_memblk" is defined in arch/ia64/mm/numa.c,
> and it depends on CONFIG_NUMA:
> arch/ia64/mm/Makefile:8
> obj-$(CONFIG_NUMA) += numa.o
>
> Signed-off-by: Ken'ichi Ohmichi <[email protected]>
> ---
> diff -rpuN a/arch/ia64/kernel/machine_kexec.c b/arch/ia64/kernel/machine_kexec.c
> --- a/arch/ia64/kernel/machine_kexec.c 2007-11-14 15:39:06.000000000 +0900
> +++ b/arch/ia64/kernel/machine_kexec.c 2007-11-14 15:41:41.000000000 +0900
> @@ -129,10 +129,11 @@ void machine_kexec(struct kimage *image)
>
> void arch_crash_save_vmcoreinfo(void)
> {
> -#if defined(CONFIG_ARCH_DISCONTIGMEM_ENABLE) && defined(CONFIG_NUMA)
> +#if defined(CONFIG_DISCONTIGMEM) || defined(CONFIG_SPARSEMEM)
> VMCOREINFO_SYMBOL(pgdat_list);
> VMCOREINFO_LENGTH(pgdat_list, MAX_NUMNODES);
> -
> +#endif
> +#ifdef CONFIG_NUMA
> VMCOREINFO_SYMBOL(node_memblk);
> VMCOREINFO_LENGTH(node_memblk, NR_NODE_MEMBLKS);
> VMCOREINFO_STRUCT_SIZE(node_memblk_s);
> diff -rpuN a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c
> --- a/arch/x86/kernel/machine_kexec_32.c 2007-11-14 15:39:19.000000000 +0900
> +++ b/arch/x86/kernel/machine_kexec_32.c 2007-11-14 15:39:33.000000000 +0900
> @@ -151,7 +151,7 @@ NORET_TYPE void machine_kexec(struct kim
>
> void arch_crash_save_vmcoreinfo(void)
> {
> -#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
> +#ifdef CONFIG_NUMA
> VMCOREINFO_SYMBOL(node_data);
> VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
> #endif
> diff -rpuN a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
> --- a/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:19.000000000 +0900
> +++ b/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:33.000000000 +0900
> @@ -235,7 +235,7 @@ void arch_crash_save_vmcoreinfo(void)
> {
> VMCOREINFO_SYMBOL(init_level4_pgt);
>
> -#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
> +#ifdef CONFIG_NUMA
> VMCOREINFO_SYMBOL(node_data);
> VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
> #endif
> _
>

x86_64-make-sparsemem-vmemmap-the-default-memory-model-v2.patch removes the
`VMCOREINFO_SYMBOL(node_data);' from arch/x86/kernel/machine_kexec_64.c
altogether, so I dropped that part of your patch.

2007-11-27 09:38:16

by Ken'ichi Ohmichi

[permalink] [raw]
Subject: Re: [PATCH 4/5] Fix the configuration dependencies


Hi Andrew,

Andrew Morton wrote:
>> diff -rpuN a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
>> --- a/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:19.000000000 +0900
>> +++ b/arch/x86/kernel/machine_kexec_64.c 2007-11-14 15:39:33.000000000 +0900
>> @@ -235,7 +235,7 @@ void arch_crash_save_vmcoreinfo(void)
>> {
>> VMCOREINFO_SYMBOL(init_level4_pgt);
>>
>> -#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE
>> +#ifdef CONFIG_NUMA
>> VMCOREINFO_SYMBOL(node_data);
>> VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
>> #endif
>> _
>>
>
> x86_64-make-sparsemem-vmemmap-the-default-memory-model-v2.patch removes the
> `VMCOREINFO_SYMBOL(node_data);' from arch/x86/kernel/machine_kexec_64.c
> altogether, so I dropped that part of your patch.

The above part is necessary for a NUMA kernel.
Could you please merge the attached patch ?

I guess that Christoph Lameter deleted the above part (which is added
by the attached patch again) with the other part of discontigmem lines,
because it depended on CONFIG_ARCH_DISCONTIGMEM_ENABLE.
But the dependency was wrong, and it should depend on CONFIG_NUMA.
The part is necessary for a NUMA kernel even if sparsemem.


Thanks
Ken'ichi Ohmichi

---
Signed-off-by: Ken'ichi Ohmichi <[email protected]>
---
diff -rpuN a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
--- a/arch/x86/kernel/machine_kexec_64.c 2007-11-27 13:36:32.000000000 +0900
+++ b/arch/x86/kernel/machine_kexec_64.c 2007-11-27 13:37:37.000000000 +0900
@@ -234,5 +234,10 @@ NORET_TYPE void machine_kexec(struct kim
void arch_crash_save_vmcoreinfo(void)
{
VMCOREINFO_SYMBOL(init_level4_pgt);
+
+#ifdef CONFIG_NUMA
+ VMCOREINFO_SYMBOL(node_data);
+ VMCOREINFO_LENGTH(node_data, MAX_NUMNODES);
+#endif
}

_

2007-11-27 18:18:34

by Christoph Lameter

[permalink] [raw]
Subject: Re: [PATCH 4/5] Fix the configuration dependencies

On Tue, 27 Nov 2007, Ken'ichi Ohmichi wrote:

> I guess that Christoph Lameter deleted the above part (which is added
> by the attached patch again) with the other part of discontigmem lines,
> because it depended on CONFIG_ARCH_DISCONTIGMEM_ENABLE.
> But the dependency was wrong, and it should depend on CONFIG_NUMA.
> The part is necessary for a NUMA kernel even if sparsemem.

Acked-by: Christoph Lameter <[email protected]>