Re: [PATCH] x86: order functions in cpu/common.c andcpu/common_64.c

From: Ingo Molnar
Date: Thu Sep 04 2008 - 16:58:51 EST



* Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:

> On Thu, Sep 4, 2008 at 1:32 PM, Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:
> > On Thu, Sep 4, 2008 at 1:07 PM, Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:
> >> On Thu, Sep 4, 2008 at 1:04 PM, Ingo Molnar <mingo@xxxxxxx> wrote:
> >>>
> >>> * Ingo Molnar <mingo@xxxxxxx> wrote:
> >>>
> >>>> > i've pushed out the broken tree into tip/tmp.master.broken (havent
> >>>> > updated tip/master with the breakage). I've removed the broken
> >>>> > printk in kernel/resource.c that Andrew found, see commit
> >>>> > 06e44f6af324 - so that's not the cause.
> >>>>
> >>>> i've double checked that 06e44f6af324 is applied. I'll bisect this.
> >>>
> >>> bisection came up with:
> >>>
> >>> # good: [8bfd9710] Merge branch 'x86/xsave'
> >>> # bad: [06e44f6a] IO resources: fix/remove printk
> >>> # good: [282a5f84] Merge branch 'irq/sparseirq'
> >>> # bad: [a0854a46] x86: make 32bit support show_msr like 64 bit
> >>> # good: [5031088d] x86: delay early cpu initialization until cpuid is
> >>> # good: [9d31d35b] x86: order functions in cpu/common.c and cpu/commo
> >>> # bad: [10a434fc] x86: remove cpu_vendor_dev
> >>>
> >>> | 10a434fcb23a57c385177a0086955fae01003f64 is first bad commit
> >>> | commit 10a434fcb23a57c385177a0086955fae01003f64
> >>> | Author: Yinghai Lu <yhlu.kernel@xxxxxxxxx>
> >>> | Date: Thu Sep 4 21:09:45 2008 +0200
> >>> |
> >>> | x86: remove cpu_vendor_dev
> >>>
> >>> and the thing is, 10a434fc is way too big:
> >>>
> >>> | 15 files changed, 106 insertions(+), 106 deletions(-)
> >>>
> >>> and it's not obvious at first (neither at second) sight what the problem
> >>> is. You really need to start doing much smaller patches for such
> >>> critical/hard-to-debug code areas.
> >>>
> >> could be alignment again...
> >
> > ffffffff80d86c20 d __cpu_dev_amd_cpu_dev
> > ffffffff80d86c20 A __x86_cpu_dev_start
> > ffffffff80d86c28 d __dyn_array_ptr_irq_2_pin_head
> > ffffffff80d86c28 D __dyn_array_start
> > ffffffff80d86c30 d __dyn_array_ptr_irq_cfgx
> > ffffffff80d86c38 d __dyn_array_ptr_sparse_irqs
> > ffffffff80d86c40 D __dyn_array_end
> > ffffffff80d86c40 d __initcall_selinux_init
> > ffffffff80d86c40 D __per_cpu_dyn_array_end
> > ffffffff80d86c40 D __per_cpu_dyn_array_start
> > ffffffff80d86c40 D __security_initcall_start
> > ffffffff80d86c48 R __parainstructions
> > ffffffff80d86c48 D __security_initcall_end
> > ffffffff80d86c48 A __x86_cpu_dev_end
> >
> > don't know how could the linker squash others tables into cpu_dev
> > pointer array..
>
> it seems there is some merging problem.. please check
>
> index 192f6d8..30973db 100644
> --- a/arch/x86/kernel/vmlinux_64.lds.S
> +++ b/arch/x86/kernel/vmlinux_64.lds.S
> @@ -172,11 +172,11 @@ SECTIONS
> .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) {
> *(.x86_cpu_dev.init)
> }
> + __x86_cpu_dev_end = .;
>
> DYN_ARRAY_INIT(8)
>
> SECURITY_INIT
> - __x86_cpu_dev_end = .;
>
> . = ALIGN(8);
> .parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) {

indeed, that was my fault and it probably explains the crash i was
seeing - thanks!

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/