S3 state handled in BIOS?

Alexandre "Sunny" Kovalenko Alex.Kovalenko at verizon.net
Mon May 23 21:35:20 GMT 2005


On Mon, 2005-05-23 at 10:35 -0700, Nate Lawson wrote:
> Bruno Ducrot wrote:
> > On Sun, May 22, 2005 at 09:30:42PM -0400, Alexandre Sunny Kovalenko wrote:
> > 
> >>Good people,
> >>
> >>after much pocking around my laptop (Averatec
> >>3150H), /usr/src/sys/i386/acpica/acpi_wakeup.c
> >>and /usr/src/sys/contrib/dev/acpica/hwsleep.c, I came to conclusion that
> >>S3 state in my case causes BIOS to suspend machine at the point when
> >>SLP_TYP and SLP_EN are set and resume it from that same point,
> >>completely ignoring wakeup vector.
> >>
> >>This would cause FreeBSD to hit infinite loop in acpi_sleep_machdep
> >>(acpi_wakeup.c) and never come back. Replacing that loop with
> >>AcpiOsSleep(5000) lets system resume properly.
> >>
> >>This kind of sleep (pseudo S3?) about doubles battery life, which is not
> >>much to write home about, but matches what Windows does on the same
> >>hardware, so, I guess, it is best I am going to get.
> >>
> >>Question that I have to the list is whether somebody who knows ACPI
> >>thinks that it is common enough situation to warrant tunable along the
> >>lines of 'hw.acpi.s3bios', which would eliminate infinite loop if set?
> >>
> >>I have unconditionally eliminated the loop for now and have been testing
> >>it here for awhile without any bad side effects.
> >>
> >>If your system appears to hang after resume from S3 while turning power
> >>on, you might want to try attached very simplistic patch.
> >>
> > 
> > 
> > I think your machine actually perform S1, not S3, likely because the
> > values associated to _S3 (a package in the asl) are for _S1.
> 
> 
> In that case, it would be interesting to see the acpidump -t -d and 
> compare values for the _S1 and _S3 nodes.
> 
It does not seem to have S1 entry in ASL (see below). I will play with
it a little bit more and see whether creating S1 node with the set of
flags from \_S3 results in some logical behavior. Is it sufficient to 
duplicate an entry, or do I need to add it elsewhere?

    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S3, Package (0x04)
    {
        0x04, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S4, Package (0x04)
    {
        0x02, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S5, Package (0x04)
    {
        0x02, 
        0x00, 
        0x00, 
        0x00
    })
    
Thank you for your help,
-- 
Alexandre "Sunny" Kovalenko (Олександр Коваленко)



More information about the freebsd-acpi mailing list