All of lore.kernel.org
 help / color / mirror / Atom feed
* Compaq Evo N610c in almost perfect ACPI support shocker
@ 2003-10-01 16:35 Faye Pearson
       [not found] ` <20031001163539.GA22358-6JSjyQ0Qj1ReoWH0uzbU5w@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Faye Pearson @ 2003-10-01 16:35 UTC (permalink / raw)
  To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

I've just received a Compaq Evo N610c which I wanted to put Linux on.
I'd previously owned a Presario 2701ea which had a buggy DSDT (usual off
by one errors etc) so was expecting a bit of a bumpy ride.

Kudos to HP/Compaq though, the new BIOS runs almost flawlessly through
Linux's ACPI and the only errors on boot seem to be on the interpreter
side (although I'd love to be proved wrong ;)

One of the problems seems to be long standing - I found a kludge on the
mailing list to fix it:

            Method (C051, 4, NotSerialized)
            {
// Copy Arg1 pointer to Local2 (in theory)
                Store (Arg1, Local2)
                Store (Arg3, Local4)
                Add (Local4, 0x1A, Local5)
                While (LLess (Local4, Local5))
                {
                    Store (DerefOf (Index (C04F, Local4)), Index (Arg0,
Local2))
                    Increment (Local4)
// Nasty side-effect, also increments Arg1
                    Increment (Local2)
                }

// Let's reset Local2 to Arg1 again.. oh dear it's the same value.
//                Store (Arg1, Local2)
// Here comes the kludge
                Subtract (Local2, 0x1A, Local2)
// This was making it go past end of buffer
                Add (Local2, 0x0A, Local2)

As you can see I've applied the Subtract kludge other people have used,
but there's nothing actually wrong with the ASL here AFAICS, it should
work.

The other part may just be ACPI being over-verbose on something it's
handling correctly - I don't think I'm losing any functionality because
of it:

    ACPI-1121: *** Error: Method execution failed
[\_SB_.C045.C059.C0E2.C13F] (N
ode cff95e40), AE_AML_UNINITIALIZED_LOCAL
    ACPI-1121: *** Error: Method execution failed
[\_SB_.C045.C059.C0E2.C14E] (N
ode cff931c0), AE_AML_UNINITIALIZED_LOCAL
    ACPI-1121: *** Error: Method execution failed [\_SB_.C198._BTP]
(Node cff8ec
80), AE_AML_UNINITIALIZED_LOCAL
ACPI: Battery Slot [C198] (battery present)

Here's the DSDT snippet:
                    Method (C13F, 3, Serialized)
                    {
                        Add (Arg2, 0x01, Local3)
                        Store (Buffer (Local3)
                            {
                                0x10
                            }, Local2)
                        Store (0x0A, Local5)
                        Store (0x01, Local1)
// This next line has been added by me to satisfy the parser
						Store (0x00, Local0)

                        While (LAnd (Local1, LGreater (Local5, 0x00)))
                        {
                            Store (C12E (0x00), Local1)
                            If (LNot (Local1))
                            {
                                Store (C12D (Arg0, Arg1), Local1)
                                If (LAnd (LNot (Local1), LGreater (Arg2,
0x00)))
                                {
                                    Store (C12C (Arg0, Arg2), Local0)
                                    Store (DerefOf (Index (Local0,
0x00)), Local
1)
                                }

                                Or (C12F (), Local1, Local1)
                            }

                            Decrement (Local5)
                            If (LAnd (Local1, LGreater (Local5, 0x00)))
                            {
                                Sleep (0x64)
                            }
                        }

                        If (Local1)
                        {
                            Return (Local2)
                        }

// Not initialised if the While loop isn't entered, but if that's the
// case then Local1 is true (1) and this point is not reached.

                        Return (Local0)
                    }

With the kludge I apply above, there are no errors during boot.

Now, onto the HP/Compaq problem I've found (where do I apply for a
ROMPAQ?)  There are only two settings for Intel Speedstep in the BIOS
(fine thought I) Auto and Disabled.  Disabled, as expected, disables the
Speedstep functionality and you see <Not Supported> in
processor...performance.  Good so far.

Auto means that the laptop fully controls the Speedstep functionality
and it cannot be overridden by the OS.  I've tested this by installing
CPUFREQ which accesses speedstep outside of ACPI, configuring it for
60%60%powersave and when running glxgears I get a jump up to the same
FPS I get on 100%100%performance.  I can confirm this for several
seconds afterward with cat /proc/sys/cpu/0/speed showing the maximum cpu
speed.  ACPI is not being informed of the processor state changes and
shows P0: regardless of which P state the laptop is in.

I've just tagged this on because I know there are a few HP/Compaq people
on here and I hope they'll be able to provide a ROMPAQ which at least
exposes "Enabled" or "OS" which would allow the OS to control the
speedstep state (or at least point me in the right direction)
It may also help others who are currently baffled by the behaviour :)

It's currently running F15A BIOS, which appears to be the latest
available on the site.

I'd like to finish by saying that this is the best Compaq laptop I've
ever had and I believe that I have every piece of hardware working on it
(modem unnecessary and untested).  I'd definitely recommend it to the
company I work for if the Speedstep issue can be resolved.

I'll have the usual stuff up on my website when I get around to it :)
(actually precious little because everything is so well supported!)
but in the meantime:

An error free dmesg:
http://dude.noc.clara.net/~faye/evo_n610c/dmesg.txt
The F15A dsdt:
http://dude.noc.clara.net/~faye/evo_n610c/dsdt
The patched dsdt:
http://dude.noc.clara.net/~faye/evo_n610c/dsdt.dsl

I'm going to be moving the site to http://www.zippysoft.com/linux/
some time in the near future.


Faye

-- 
Faye Pearson,
Covert Development
ClaraNET Ltd.       Tel 020 7903 3000

Of all the animals, the boy is the most unmanageable.
		-- Plato


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Compaq Evo N610c in almost perfect ACPI support shocker
       [not found] ` <20031001163539.GA22358-6JSjyQ0Qj1ReoWH0uzbU5w@public.gmane.org>
@ 2003-10-01 17:42   ` Ducrot Bruno
  0 siblings, 0 replies; 3+ messages in thread
From: Ducrot Bruno @ 2003-10-01 17:42 UTC (permalink / raw)
  To: Faye Pearson; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Wed, Oct 01, 2003 at 05:35:39PM +0100, Faye Pearson wrote:
> I've just received a Compaq Evo N610c which I wanted to put Linux on.
> I'd previously owned a Presario 2701ea which had a buggy DSDT (usual off
> by one errors etc) so was expecting a bit of a bumpy ride.
> 
> Kudos to HP/Compaq though, the new BIOS runs almost flawlessly through
> Linux's ACPI and the only errors on boot seem to be on the interpreter
> side (although I'd love to be proved wrong ;)
> 
> One of the problems seems to be long standing - I found a kludge on the
> mailing list to fix it:
> 
>             Method (C051, 4, NotSerialized)
>             {
> // Copy Arg1 pointer to Local2 (in theory)
>                 Store (Arg1, Local2)
>                 Store (Arg3, Local4)
>                 Add (Local4, 0x1A, Local5)
>                 While (LLess (Local4, Local5))
>                 {
>                     Store (DerefOf (Index (C04F, Local4)), Index (Arg0,
> Local2))
>                     Increment (Local4)
> // Nasty side-effect, also increments Arg1
>                     Increment (Local2)
>                 }
> 
> // Let's reset Local2 to Arg1 again.. oh dear it's the same value.
> //                Store (Arg1, Local2)
> // Here comes the kludge
>                 Subtract (Local2, 0x1A, Local2)
> // This was making it go past end of buffer
>                 Add (Local2, 0x0A, Local2)
> 
> As you can see I've applied the Subtract kludge other people have used,
> but there's nothing actually wrong with the ASL here AFAICS, it should
> work.

Ah yes.  That seems funny.  I wasn't aware for that.

> 
> The other part may just be ACPI being over-verbose on something it's
> handling correctly - I don't think I'm losing any functionality because
> of it:
> 
>     ACPI-1121: *** Error: Method execution failed
> [\_SB_.C045.C059.C0E2.C13F] (N
> ode cff95e40), AE_AML_UNINITIALIZED_LOCAL
>     ACPI-1121: *** Error: Method execution failed
> [\_SB_.C045.C059.C0E2.C14E] (N
> ode cff931c0), AE_AML_UNINITIALIZED_LOCAL
>     ACPI-1121: *** Error: Method execution failed [\_SB_.C198._BTP]
> (Node cff8ec
> 80), AE_AML_UNINITIALIZED_LOCAL
> ACPI: Battery Slot [C198] (battery present)
> 
> Here's the DSDT snippet:
>                     Method (C13F, 3, Serialized)
>                     {
>                         Add (Arg2, 0x01, Local3)
>                         Store (Buffer (Local3)
>                             {
>                                 0x10
>                             }, Local2)
>                         Store (0x0A, Local5)
>                         Store (0x01, Local1)
> // This next line has been added by me to satisfy the parser
> 						Store (0x00, Local0)
> 
>                         While (LAnd (Local1, LGreater (Local5, 0x00)))
>                         {
>                             Store (C12E (0x00), Local1)
>                             If (LNot (Local1))
>                             {
>                                 Store (C12D (Arg0, Arg1), Local1)
>                                 If (LAnd (LNot (Local1), LGreater (Arg2,
> 0x00)))
>                                 {
>                                     Store (C12C (Arg0, Arg2), Local0)
>                                     Store (DerefOf (Index (Local0,
> 0x00)), Local
> 1)
>                                 }
> 
>                                 Or (C12F (), Local1, Local1)
>                             }
> 
>                             Decrement (Local5)
>                             If (LAnd (Local1, LGreater (Local5, 0x00)))
>                             {
>                                 Sleep (0x64)
>                             }
>                         }
> 
>                         If (Local1)
>                         {
>                             Return (Local2)
>                         }
> 
> // Not initialised if the While loop isn't entered, but if that's the
> // case then Local1 is true (1) and this point is not reached.
> 
>                         Return (Local0)
>                     }
> 
> With the kludge I apply above, there are no errors during boot.

I don't have fully looked the while loop, but it seems for me you
can have Local0 not initialised, but Local1 contains 0.

> Now, onto the HP/Compaq problem I've found (where do I apply for a
> ROMPAQ?)  There are only two settings for Intel Speedstep in the BIOS
> (fine thought I) Auto and Disabled.  Disabled, as expected, disables the
> Speedstep functionality and you see <Not Supported> in
> processor...performance.  Good so far.
> 
> Auto means that the laptop fully controls the Speedstep functionality
> and it cannot be overridden by the OS.  I've tested this by installing
> CPUFREQ which accesses speedstep outside of ACPI, configuring it for
> 60%60%powersave and when running glxgears I get a jump up to the same
> FPS I get on 100%100%performance.  I can confirm this for several
> seconds afterward with cat /proc/sys/cpu/0/speed showing the maximum cpu
> speed.  ACPI is not being informed of the processor state changes and
> shows P0: regardless of which P state the laptop is in.
> 

I don't understand the cpufreq trouble.  But my english is bad...
What cpufreq driver are you using btw (the ich or the newer smi
one?).

the smi should work like you want (that is no speedstep if
you disable it), but the ich one talk directly to the hardware,
regardless of what 'think' bios.
And, (but that may change soon), acpi performance and cpufreq have
diferent API, so no, if you are using acpi P-state and cpufreq at
the same time, then only weird things, confusions about
the 2 way happens (that is true *only* for the 2.4 kernel,
not for 2.6).

-- 
Ducrot Bruno

--  Which is worse:  ignorance or apathy?
--  Don't know.  Don't care.


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: Compaq Evo N610c in almost perfect ACPI support shocker
@ 2003-10-03  3:55 Cagle, John (ISS-Houston)
  0 siblings, 0 replies; 3+ messages in thread
From: Cagle, John (ISS-Houston) @ 2003-10-03  3:55 UTC (permalink / raw)
  To: Faye Pearson, acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

> -----Original Message-----
> From: Faye Pearson [mailto:faye-6JSjyQ0Qj1ReoWH0uzbU5w@public.gmane.org] 
> Sent: Wednesday, October 01, 2003 11:36 AM
> To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> Subject: [ACPI] Compaq Evo N610c in almost perfect ACPI 
> support shocker
> 
> I've just received a Compaq Evo N610c which I wanted to put Linux on.
> I'd previously owned a Presario 2701ea which had a buggy DSDT 
> (usual off
> by one errors etc) so was expecting a bit of a bumpy ride.
> 
> Kudos to HP/Compaq though, the new BIOS runs almost flawlessly through
> Linux's ACPI and the only errors on boot seem to be on the interpreter
> side (although I'd love to be proved wrong ;)


Thanks for the Kudo's!


> One of the problems seems to be long standing - I found a 
> kludge on the
> mailing list to fix it:
> 
>             Method (C051, 4, NotSerialized)
>             {
> // Copy Arg1 pointer to Local2 (in theory)
>                 Store (Arg1, Local2)
>                 Store (Arg3, Local4)
>                 Add (Local4, 0x1A, Local5)
>                 While (LLess (Local4, Local5))
>                 {
>                     Store (DerefOf (Index (C04F, Local4)), 
> Index (Arg0,
> Local2))
>                     Increment (Local4)
> // Nasty side-effect, also increments Arg1
>                     Increment (Local2)
>                 }
> 
> // Let's reset Local2 to Arg1 again.. oh dear it's the same value.
> //                Store (Arg1, Local2)
> // Here comes the kludge
>                 Subtract (Local2, 0x1A, Local2)
> // This was making it go past end of buffer
>                 Add (Local2, 0x0A, Local2)
> 
> As you can see I've applied the Subtract kludge other people 
> have used,
> but there's nothing actually wrong with the ASL here AFAICS, it should
> work.
> 
> The other part may just be ACPI being over-verbose on something it's
> handling correctly - I don't think I'm losing any 
> functionality because
> of it:
> 
>     ACPI-1121: *** Error: Method execution failed
> [\_SB_.C045.C059.C0E2.C13F] (N
> ode cff95e40), AE_AML_UNINITIALIZED_LOCAL
>     ACPI-1121: *** Error: Method execution failed
> [\_SB_.C045.C059.C0E2.C14E] (N
> ode cff931c0), AE_AML_UNINITIALIZED_LOCAL
>     ACPI-1121: *** Error: Method execution failed [\_SB_.C198._BTP]
> (Node cff8ec
> 80), AE_AML_UNINITIALIZED_LOCAL
> ACPI: Battery Slot [C198] (battery present)
> 
> Here's the DSDT snippet:
>                     Method (C13F, 3, Serialized)
>                     {
>                         Add (Arg2, 0x01, Local3)
>                         Store (Buffer (Local3)
>                             {
>                                 0x10
>                             }, Local2)
>                         Store (0x0A, Local5)
>                         Store (0x01, Local1)
> // This next line has been added by me to satisfy the parser
> 						Store (0x00, Local0)
> 
>                         While (LAnd (Local1, LGreater (Local5, 0x00)))
>                         {
>                             Store (C12E (0x00), Local1)
>                             If (LNot (Local1))
>                             {
>                                 Store (C12D (Arg0, Arg1), Local1)
>                                 If (LAnd (LNot (Local1), 
> LGreater (Arg2,
> 0x00)))
>                                 {
>                                     Store (C12C (Arg0, Arg2), Local0)
>                                     Store (DerefOf (Index (Local0,
> 0x00)), Local
> 1)
>                                 }
> 
>                                 Or (C12F (), Local1, Local1)
>                             }
> 
>                             Decrement (Local5)
>                             If (LAnd (Local1, LGreater 
> (Local5, 0x00)))
>                             {
>                                 Sleep (0x64)
>                             }
>                         }
> 
>                         If (Local1)
>                         {
>                             Return (Local2)
>                         }
> 
> // Not initialised if the While loop isn't entered, but if that's the
> // case then Local1 is true (1) and this point is not reached.
> 
>                         Return (Local0)
>                     }
> 
> With the kludge I apply above, there are no errors during boot.
> 
> Now, onto the HP/Compaq problem I've found (where do I apply for a
> ROMPAQ?)  There are only two settings for Intel Speedstep in the BIOS
> (fine thought I) Auto and Disabled.  Disabled, as expected, 
> disables the
> Speedstep functionality and you see <Not Supported> in
> processor...performance.  Good so far.
> 
> Auto means that the laptop fully controls the Speedstep functionality
> and it cannot be overridden by the OS.  I've tested this by installing
> CPUFREQ which accesses speedstep outside of ACPI, configuring it for
> 60%60%powersave and when running glxgears I get a jump up to the same
> FPS I get on 100%100%performance.  I can confirm this for several
> seconds afterward with cat /proc/sys/cpu/0/speed showing the 
> maximum cpu
> speed.  ACPI is not being informed of the processor state changes and
> shows P0: regardless of which P state the laptop is in.
> 
> I've just tagged this on because I know there are a few 
> HP/Compaq people
> on here and I hope they'll be able to provide a ROMPAQ which at least
> exposes "Enabled" or "OS" which would allow the OS to control the
> speedstep state (or at least point me in the right direction)
> It may also help others who are currently baffled by the behaviour :)
> 
> It's currently running F15A BIOS, which appears to be the latest
> available on the site.
> 
> I'd like to finish by saying that this is the best Compaq laptop I've
> ever had and I believe that I have every piece of hardware 
> working on it
> (modem unnecessary and untested).  I'd definitely recommend it to the
> company I work for if the Speedstep issue can be resolved.

Faye -- Here is a response from one of our Evo BIOS engineers.
Hopefully this information will be helpful to you:

-----------------------------------------
Actually "auto" essentially means enabled.  There are essentially 3
different interfaces/methods to control Speedstep.
1)  Intel Speedstep applet (used in OSs like Microsoft Windows 2000)
2)  ACPI 2.0 processor performance control objects (used in OSs like
Microsoft Windows XP)
3)  BIOS control - usually high on AC and low on DC.  These changes are
typically only made on an AC/DC change or resuming from a sleep state
(off, standby, hibernate).

If a user does not want the BIOS to be in control, then one of the other
interfaces must be used to control Speedstep.  Nothing should be
changing the performance state without using these interfaces.

I agree that the other 2 issues seem to be problems with the intepreter.
-----------------------------------------

Regards,
John

-----------------------------
John Cagle  john.cagle-VXdhtT5mjnY@public.gmane.org
HP Distinguished Technologist
ProLiant Software Development
  http://www.hp.com/linux/
  Hewlett-Packard Company


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-10-03  3:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-01 16:35 Compaq Evo N610c in almost perfect ACPI support shocker Faye Pearson
     [not found] ` <20031001163539.GA22358-6JSjyQ0Qj1ReoWH0uzbU5w@public.gmane.org>
2003-10-01 17:42   ` Ducrot Bruno
2003-10-03  3:55 Cagle, John (ISS-Houston)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.