Re: BUG() on apm resume in 2.6.18-rc2

Andrew Morton
2006-07-27T07:09:04Z

On Thu, 27 Jul 2006 08:29:32 +0200
Johannes Weiner <hnazfoo@googlemail.com> wrote:

> Hi,
>
> On Wed, Jul 26, 2006 at 11:10:49PM -0700, Andrew Morton wrote:
> > This?
> >
> > --- a/./arch/i386/kernel/cpu/mcheck/mce.h~mce-section-fix
> > +++ a/./arch/i386/kernel/cpu/mcheck/mce.h
> > @@ -9,6 +9,6 @@ void winchip_mcheck_init(struct cpuinfo_
> > /* Call the installed machine check handler for this CPU setup. */
> > extern fastcall void (*machine_check_vector)(struct pt_regs *, long error_code);
> >
> > -extern int mce_disabled __initdata;
> > +extern int mce_disabled;
> > extern int nr_mce_banks;
>
> What hinted you to that? I didn't read much oopses, so...
>

(please always do reply-to-all)

That was an easy one - it crashed at

EIP is at mcheck_init+0x4/0x80

right at the start of mcheck_init(), so it had to be the access of
mce_disabled.

It accessed the address c0729c38:

BUG: unable to handle kernel paging request at virtual address c0729c38

and the code dump shows an access to that address.

And the only way in which an access to a global variable of this nature can
oops is if that variable has been unmapped from the kenrel address space.
We unmap (and reuse) the __init memory, so it had to be a sectioning bug.