Re: [REPOST] "apm: suspend: Unable to enter requested state" after 2.5.31 (incl. 2.6.0testX)

From: Stephen Rothwell (sfr@canb.auug.org.au)
Date: Tue Jul 29 2003 - 20:05:48 EST


Hi Charles,

I may have missed this, but do you have the APIC or IO-APIC enabled?

The patch in question merely moved where the 0x40 descriptor was installed
in the descriptor table.

On 29 Jul 2003 19:10:42 +0100 Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
>
> > -static struct desc_struct bad_bios_desc = { 0, 0x00409200 };
> > +static struct desc_struct bad_bios_desc = { 0x00109300, 0x00409200 };
> > static char driver_version[] = "1.16ac"; /* no
> > spaces */
> >
> > I tried this on top of 2.6.0-test2, and it didn't work. Where does the
> > first number in that initializer come from?
>
> I wasnt sure if the kernel code was initialising all the flag and control bits
> of the segment entry. That should have set the bits required anyway just in
> case if I got it right (Pentium pro dev manual vol III chapter 7)
>
> It might be 0x00009300, it might be set already, or it might be some other
> effect thats breaking your laptop of course

The 0 above initialises the base and limit parts of the descriptor and
should be zero as it is filled in later (or should be).

The 0x00409200 means this is a byte granularity (0x800000 not present)
32-bit (0x400000) present (0x8000) memory (0x1000) read/write (0x200)
descriptor. The 32-bit part should be irrelevent as this descriptor
should only be loaded into the DS register (that bit only affect code and
stack segments).

The base and limit parts of the descriptor get initialised at run time by
the code:

        set_base(bad_bios_desc, __va((unsigned long)0x40 << 4));
        _set_limit((char *)&bad_bios_desc, 4095 - (0x40 << 4));

These could be set statically, but it was easier to use the availble
macros.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
-
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/



This archive was generated by hypermail 2b29 : Thu Jul 31 2003 - 22:00:43 EST