RE: reality check: dsdt.dsl - compile - DSDT.aml - decompile -DSDT.dsl but dsdt.dsl neq DSDT.dsl

2006-01-29 Thread Simon Bridge
On Wed, 2006-01-25 at 09:55 -0800, Moore, Robert wrote:
 Well, yes, if the external cannot be resolved at runtime, it will
 generate an error -- Unless you have the update to ACPICA that allows
 unresolved references within packages, AND you enable the interpreter
 slack mode.
 
  I got the DSDT.aml (the result of successfully compiling dsdt.dsl
  remember) and decompiled it - the result is expected to be the same as
  dsdt.dsl... but it wasn't! There were substantial differences. When
 this
  new version was compiled, it produced errors.
 
 Any disassembler is not *guaranteed* to generate the exact source code.
 I would be interested in a bit more explanation, however.
 

Considering this reply and others, I've made some time to actually sit
down and *carefully* watch what I'm doing.

I started from scratch, so everything is clean, and ran iASL in
compatibility mode (-oa flag enabled). I kept a log of everything I did.
I figured it would help if folk didn't have to second-guess my thought
processes. Summary below - exact commands and output available.

I have discovered that decompiling seems to remove external
declarations.

All other changes involve substituting for ones and such like with the
appropriate, explicit, form needed (0x01 or 0x0001 or whatever). This
doesn't happen if iASL is run in compatibility mode.

The missing variables were:
\_PR.CPU0._PPC
Z007

If I just stick external statements for these at the top of the code, I
get the following from the compiler:
No back ptr to Op: type 8
No back ptr to Op: type 8
dsdt.dsl   150: Processor (CPU0, 0x00, 0x8010, 0x06) {}
Error1054 -   ^ Name already exists in scope
(CPU0)

If I put the external statement after line 150 - then there are no
compiler errors. (To what extent does this matter? Is there a better way
of accommodating this?)

The remaining kernel errors are:
[4342789.367000] ACPI-0508: *** Error: Method execution failed
[\_SB_.BAT1._BST] (Node cbed7be0), AE_NOT_FOUND
[4342819.371000] ACPI-0362: *** Error: Looking up [Z007] in
namespace, AE_NOT_FOUND

This would seem to suggest that the external statements are removed by
decompiling (rather than compiling - whew), and that Z007 does not exist
anywhere.[1]

Perhaps the first error is the infamous acer smart-battery issue?
(Later: I see Acer 3002WLMi in the readme for the patch-set -
http://sourceforge.net/projects/sbs-linux/ -  but not 3003LC)

Anyway - it would appear I have a dsdt suitable for including in the
archive...

[1] From previous discussions - there is a patch waiting, and I can try
the latest vanilla kernel with all the acpi patches.



-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: reality check: dsdt.dsl - compile - DSDT.aml - decompile -DSDT.dsl but dsdt.dsl neq DSDT.dsl

2006-01-26 Thread Suietov, Fiodor F
Wednesday, January 25 Moore, Robert wrote:
 Any disassembler is not *guaranteed* to generate the exact source
code.
 I would be interested in a bit more explanation, however.
 
There are at least three points in iASL compile phase which
result in mentioned difference between dsdt.dsl and DSDT.dsl:
 - updating of the table header fields (Creator ID, Creator Revision,
   Length);
 - the hex constant leading zeroes excision (like 0x02 instead 0x0002
   substitution);
 - default iASL compiler optimization (named reference optimization,
   integer optimization to constants, folding on normal expressions).

So, to minimize the difference between dsdt.dsl and DSDT.dsl the iASL
compiler should be called with -oa flag (when compiling dsdt.dsl to
DSDT.aml) disabling in such a way all optimizations (and of course apply
-f flag, if any Errors are detected).

Fiodor

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:linux-acpi-
 [EMAIL PROTECTED] On Behalf Of Moore, Robert
 Sent: Wednesday, January 25, 2006 8:55 PM
 To: Simon Bridge
 Cc: Thomas Renninger; linux-acpi@vger.kernel.org
 Subject: RE: reality check: dsdt.dsl - compile - DSDT.aml -
decompile -
 DSDT.dsl but dsdt.dsl neq DSDT.dsl
 
 Well, yes, if the external cannot be resolved at runtime, it will
 generate an error -- Unless you have the update to ACPICA that allows
 unresolved references within packages, AND you enable the interpreter
 slack mode.
 
  I got the DSDT.aml (the result of successfully compiling dsdt.dsl
  remember) and decompiled it - the result is expected to be the same
as
  dsdt.dsl... but it wasn't! There were substantial differences. When
 this
  new version was compiled, it produced errors.
 
 Any disassembler is not *guaranteed* to generate the exact source
code.
 I would be interested in a bit more explanation, however.
 
 Bob
 
  -Original Message-
  From: [EMAIL PROTECTED] [mailto:linux-acpi-
  [EMAIL PROTECTED] On Behalf Of Simon Bridge
  Sent: Tuesday, January 24, 2006 7:42 PM
  To: Moore, Robert
  Cc: Thomas Renninger; linux-acpi@vger.kernel.org
  Subject: RE: reality check: dsdt.dsl - compile - DSDT.aml -
 decompile -
  DSDT.dsl but dsdt.dsl neq DSDT.dsl
 
  On Tue, 2006-01-24 at 14:39 -0800, Moore, Robert wrote:
   The change to ACPICA to support such non-existent names was
   implemented in the run-time interpreter but not the compiler.
  
   The iASL compiler will still emit an error in this case, and I
feel
 this
   is correct since we want the compiler to catch these kinds of
 errors.
   The -f flag will override this and any other errors, however.
  
   Another very simple fix to this kind of error is to add an
 External
   statement to the ASL code (for the missing symbol), same as any
 other
   symbol which is defined in another table.
  
   Bob
  
  
  Cool - thanks guys. (Robert and Thomas)
 
  I should note, in responce here, that Z007 is not in the code.
  Externalling it produces the same kernel messages.
 
  The CPU0 symbol is different - neither of you seemed to have spotted
  that (correct me).
 
  The firmware dsdt was decompiled to dsdt.dsl and this edited. It
  compiled *without error* to DSDT.aml and was acepted by the kernel.
 
  There were kernel messages (explained by Thomas - thanks) which I
  thought I'd got rid of. So I decided to check that the aml code was
 what
  I thought it was.
 
  I got the DSDT.aml (the result of successfully compiling dsdt.dsl
  remember) and decompiled it - the result is expected to be the same
as
  dsdt.dsl... but it wasn't! There were substantial differences. When
 this
  new version was compiled, it produced errors.
 
  I was hoping this was a known problem with iasl or something. Has
 nobody
  seen this before - it happens every time on this machine. Perhaps
it's
  just me. But if I cannot trust the compiler to render the code
 properly
  where am I?
 
  Thomas: I'll try the patches ... isn't the patch you posted for the
  2.6.16 kernel? (Hmmm... to self: isn't that what he said?)
 
  It has already occurred to me to test this all out with a vanilla
 kernel
  - done it before - only I'm going to have to support this distro to
  others so I'd rather do what's possible with the distro kernel as
 well.
 
  (I'd normally do this sort of fiddling in Fedora. I hoped to keep
the
  Ubuntu box standard as possible so I can anticipate what users are
  experiencing.)
 
  If you think I'll really need to upgrade the kernel, you're probably
  right. My old problem of the DSDT not being taken into the kernel
was
  solved by a kernel upgrade :)
 
  Hopefully the ubuntu folk will add the next big ACPI patch to their
  repos in good time.
 
  
  
-Original Message-
From: [EMAIL PROTECTED] [mailto:linux-acpi-
[EMAIL PROTECTED] On Behalf Of Thomas Renninger
Sent: Tuesday, January 24, 2006 1:11 AM
To: Simon Bridge
Cc: linux-acpi@vger.kernel.org
Subject: Re: reality check: dsdt.dsl - compile - DSDT.aml -
   decompile -
 DSDT.dsl

Re: reality check: dsdt.dsl - compile - DSDT.aml - decompile - DSDT.dsl but dsdt.dsl neq DSDT.dsl

2006-01-24 Thread Thomas Renninger

Simon Bridge wrote:

# iasl -ta dsdt.dsl

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20050930 [Nov 20 2005]
Copyright (C) 2000 - 2005 Intel Corporation
Supports ACPI Specification Revision 3.0

ASL Input:  dsdt.dsl - 3471 lines, 121247 bytes, 1565 keywords
AML Output: DSDT.aml - 13975 bytes 377 named objects 1188 executable
opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 542 Optimizations

... which seems fine so far.

# cp DSDT.amp /etc/mkinitramfs/DSDT.aml

reboot.
I see a syslog saying that this DSDT.aml is detected and loaded.
However, I get errors as follows:

ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node
cbed7be0), AE_NOT_FOUND
ACPI-0362: *** Error: Looking up [Z007] in namespace, AE_NOT_FOUND

... ad infinitum.

Those Z00X objects should get fixed as soon as the next big ACPI patch from
Len goes mainline.

This should be interesting for a lot people here, currently patching
there DSDTs because of this error.

See: http://bugzilla.kernel.org/show_bug.cgi?id=5322
I expect you used an iasl compiler newer than 20051216 that already includes
the fix and therefore does not complain about the missing Z007 object.
Your kernel is probably still missing this fix and constantly complains.

You may want to patch 2.6.16-rc1 with Len's latest patches:
http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/test/2.6.16/
If you try this out, I'd be glad if you could report back whether the
Z00X issue is really finally solved for you.



Puzzled - especially since Z007 does not appear in dsdt.dsl (replaced by
ones on advice from this forum - a la acer laptops and Z007 being
nonexistant anywhere.)

...


which provides the following error:
Error 1061 - Object does not exist (\_PR.CPU0._PPC)

The object is probably declared in SSDT.
acpidmp /tmp/acpidmp
acpixtract ssdt acpidmp ssdt
iasl -d ssdt

To get rid of the compiler error just declare it:
External (\_PR.CPU0._PPC)
So that the compiler knows it is declared in some
other, later loaded ACPI table.


This appears six times overall, across methods:
_Q8A, _Q8D, _Q8D ... which seem unhelpful.

I see /proc/acpi/processor/CPU0 contains files; 
info  limit  power  throttling


I see that _PPC is a reserved method name:
_PPCMethod with 0 arguments, must return a value

It is probably because of the above missing external().

If the Z00x is your only problem, don't waste time by trying
to rewrite your DSDT, better try out Len's patches
and let us know if you still see anything bad.

  Thomas
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: reality check: dsdt.dsl - compile - DSDT.aml - decompile - DSDT.dsl but dsdt.dsl neq DSDT.dsl

2006-01-24 Thread Moore, Robert
The change to ACPICA to support such non-existent names was
implemented in the run-time interpreter but not the compiler.

The iASL compiler will still emit an error in this case, and I feel this
is correct since we want the compiler to catch these kinds of errors.
The -f flag will override this and any other errors, however.

Another very simple fix to this kind of error is to add an External
statement to the ASL code (for the missing symbol), same as any other
symbol which is defined in another table.

Bob




 -Original Message-
 From: [EMAIL PROTECTED] [mailto:linux-acpi-
 [EMAIL PROTECTED] On Behalf Of Thomas Renninger
 Sent: Tuesday, January 24, 2006 1:11 AM
 To: Simon Bridge
 Cc: linux-acpi@vger.kernel.org
 Subject: Re: reality check: dsdt.dsl - compile - DSDT.aml -
decompile -
  DSDT.dsl but dsdt.dsl neq DSDT.dsl
 
 Simon Bridge wrote:
  # iasl -ta dsdt.dsl
 
  Intel ACPI Component Architecture
  ASL Optimizing Compiler version 20050930 [Nov 20 2005]
  Copyright (C) 2000 - 2005 Intel Corporation
  Supports ACPI Specification Revision 3.0
 
  ASL Input:  dsdt.dsl - 3471 lines, 121247 bytes, 1565 keywords
  AML Output: DSDT.aml - 13975 bytes 377 named objects 1188 executable
  opcodes
 
  Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 542
Optimizations
 
  ... which seems fine so far.
 
  # cp DSDT.amp /etc/mkinitramfs/DSDT.aml
 
  reboot.
  I see a syslog saying that this DSDT.aml is detected and loaded.
  However, I get errors as follows:
 
  ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST]
(Node
  cbed7be0), AE_NOT_FOUND
  ACPI-0362: *** Error: Looking up [Z007] in namespace, AE_NOT_FOUND
 
  ... ad infinitum.
 Those Z00X objects should get fixed as soon as the next big ACPI patch
 from
 Len goes mainline.
 
 This should be interesting for a lot people here, currently patching
 there DSDTs because of this error.
 
 See: http://bugzilla.kernel.org/show_bug.cgi?id=5322
 I expect you used an iasl compiler newer than 20051216 that already
 includes
 the fix and therefore does not complain about the missing Z007 object.
 Your kernel is probably still missing this fix and constantly
complains.
 
 You may want to patch 2.6.16-rc1 with Len's latest patches:

http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/test/2.6
.1
 6/
 If you try this out, I'd be glad if you could report back whether the
 Z00X issue is really finally solved for you.
 
 
  Puzzled - especially since Z007 does not appear in dsdt.dsl
(replaced by
  ones on advice from this forum - a la acer laptops and Z007 being
  nonexistant anywhere.)
 ...
 
  which provides the following error:
  Error 1061 - Object does not exist (\_PR.CPU0._PPC)
 The object is probably declared in SSDT.
 acpidmp /tmp/acpidmp
 acpixtract ssdt acpidmp ssdt
 iasl -d ssdt
 
 To get rid of the compiler error just declare it:
 External (\_PR.CPU0._PPC)
 So that the compiler knows it is declared in some
 other, later loaded ACPI table.
 
  This appears six times overall, across methods:
  _Q8A, _Q8D, _Q8D ... which seem unhelpful.
 
  I see /proc/acpi/processor/CPU0 contains files;
  info  limit  power  throttling
 
  I see that _PPC is a reserved method name:
  _PPCMethod with 0 arguments, must return a value
 It is probably because of the above missing external().
 
 If the Z00x is your only problem, don't waste time by trying
 to rewrite your DSDT, better try out Len's patches
 and let us know if you still see anything bad.
 
Thomas
 -
 To unsubscribe from this list: send the line unsubscribe linux-acpi
in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: reality check: dsdt.dsl - compile - DSDT.aml - decompile - DSDT.dsl but dsdt.dsl neq DSDT.dsl

2006-01-24 Thread Simon Bridge
On Tue, 2006-01-24 at 14:39 -0800, Moore, Robert wrote:
 The change to ACPICA to support such non-existent names was
 implemented in the run-time interpreter but not the compiler.
 
 The iASL compiler will still emit an error in this case, and I feel this
 is correct since we want the compiler to catch these kinds of errors.
 The -f flag will override this and any other errors, however.
 
 Another very simple fix to this kind of error is to add an External
 statement to the ASL code (for the missing symbol), same as any other
 symbol which is defined in another table.
 
 Bob
 
 
Cool - thanks guys. (Robert and Thomas)

I should note, in responce here, that Z007 is not in the code.
Externalling it produces the same kernel messages.

The CPU0 symbol is different - neither of you seemed to have spotted
that (correct me).

The firmware dsdt was decompiled to dsdt.dsl and this edited. It
compiled *without error* to DSDT.aml and was acepted by the kernel.

There were kernel messages (explained by Thomas - thanks) which I
thought I'd got rid of. So I decided to check that the aml code was what
I thought it was.

I got the DSDT.aml (the result of successfully compiling dsdt.dsl
remember) and decompiled it - the result is expected to be the same as
dsdt.dsl... but it wasn't! There were substantial differences. When this
new version was compiled, it produced errors.

I was hoping this was a known problem with iasl or something. Has nobody
seen this before - it happens every time on this machine. Perhaps it's
just me. But if I cannot trust the compiler to render the code properly
where am I?

Thomas: I'll try the patches ... isn't the patch you posted for the
2.6.16 kernel? (Hmmm... to self: isn't that what he said?)

It has already occurred to me to test this all out with a vanilla kernel
- done it before - only I'm going to have to support this distro to
others so I'd rather do what's possible with the distro kernel as well.

(I'd normally do this sort of fiddling in Fedora. I hoped to keep the
Ubuntu box standard as possible so I can anticipate what users are
experiencing.)

If you think I'll really need to upgrade the kernel, you're probably
right. My old problem of the DSDT not being taken into the kernel was
solved by a kernel upgrade :)

Hopefully the ubuntu folk will add the next big ACPI patch to their
repos in good time.

 
 
  -Original Message-
  From: [EMAIL PROTECTED] [mailto:linux-acpi-
  [EMAIL PROTECTED] On Behalf Of Thomas Renninger
  Sent: Tuesday, January 24, 2006 1:11 AM
  To: Simon Bridge
  Cc: linux-acpi@vger.kernel.org
  Subject: Re: reality check: dsdt.dsl - compile - DSDT.aml -
 decompile -
   DSDT.dsl but dsdt.dsl neq DSDT.dsl
  
  Simon Bridge wrote:
   # iasl -ta dsdt.dsl
  
   Intel ACPI Component Architecture
   ASL Optimizing Compiler version 20050930 [Nov 20 2005]
   Copyright (C) 2000 - 2005 Intel Corporation
   Supports ACPI Specification Revision 3.0
  
   ASL Input:  dsdt.dsl - 3471 lines, 121247 bytes, 1565 keywords
   AML Output: DSDT.aml - 13975 bytes 377 named objects 1188 executable
   opcodes
  
   Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 542
 Optimizations
  
   ... which seems fine so far.
  
   # cp DSDT.amp /etc/mkinitramfs/DSDT.aml
  
   reboot.
   I see a syslog saying that this DSDT.aml is detected and loaded.
   However, I get errors as follows:
  
   ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST]
 (Node
   cbed7be0), AE_NOT_FOUND
   ACPI-0362: *** Error: Looking up [Z007] in namespace, AE_NOT_FOUND
  
   ... ad infinitum.
  Those Z00X objects should get fixed as soon as the next big ACPI patch
  from
  Len goes mainline.
  
  This should be interesting for a lot people here, currently patching
  there DSDTs because of this error.
  
  See: http://bugzilla.kernel.org/show_bug.cgi?id=5322
  I expect you used an iasl compiler newer than 20051216 that already
  includes
  the fix and therefore does not complain about the missing Z007 object.
  Your kernel is probably still missing this fix and constantly
 complains.
  
  You may want to patch 2.6.16-rc1 with Len's latest patches:
 
 http://ftp.kernel.org/pub/linux/kernel/people/lenb/acpi/patches/test/2.6
 .1
  6/
  If you try this out, I'd be glad if you could report back whether the
  Z00X issue is really finally solved for you.
  
  
   Puzzled - especially since Z007 does not appear in dsdt.dsl
 (replaced by
   ones on advice from this forum - a la acer laptops and Z007 being
   nonexistant anywhere.)
  ...
  
   which provides the following error:
   Error 1061 - Object does not exist (\_PR.CPU0._PPC)
  The object is probably declared in SSDT.
  acpidmp /tmp/acpidmp
  acpixtract ssdt acpidmp ssdt
  iasl -d ssdt
  
  To get rid of the compiler error just declare it:
  External (\_PR.CPU0._PPC)
  So that the compiler knows it is declared in some
  other, later loaded ACPI table.
  
   This appears six times overall, across methods:
   _Q8A, _Q8D, _Q8D ... which seem unhelpful

reality check: dsdt.dsl - compile - DSDT.aml - decompile - DSDT.dsl but dsdt.dsl neq DSDT.dsl

2006-01-21 Thread Simon Bridge
I am attempting to hack my dsdt ...
There are two puzzling things here. Comment is invited.
1. what/where is RSDT
2. if I compile dsdt.dsl to get DSDT.aml, then decompile DSDT.aml to get
DSDT.dsl ... shouldn't I expect DSDT.dsl == dsdt.dsl?

here's the gory details:


machine: acer aspire 3003LC
linux: ubuntu 5.10
kernel: 2.6.12-9-686 (ubuntu standard - via apt-get)

# iasl -g

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20050930 [Nov 20 2005]
Copyright (C) 2000 - 2005 Intel Corporation
Supports ACPI Specification Revision 3.0

Could not obtain RSDT
Could not get ACPI tables, AE_NO_ACPI_TABLES

... Well, OK.
/proc/acpi exists and contains a file called dsdt.

# cp /proc/acpi/dsdt dsdt.dat
# iasl -d dsdt.dat
# iasl -ta dsdt.dsl

generates a bunch of errors - I googled them, and applied the
recommended hacks until the following result:

# iasl -ta dsdt.dsl

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20050930 [Nov 20 2005]
Copyright (C) 2000 - 2005 Intel Corporation
Supports ACPI Specification Revision 3.0

ASL Input:  dsdt.dsl - 3471 lines, 121247 bytes, 1565 keywords
AML Output: DSDT.aml - 13975 bytes 377 named objects 1188 executable
opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 542 Optimizations

... which seems fine so far.

# cp DSDT.amp /etc/mkinitramfs/DSDT.aml

reboot.
I see a syslog saying that this DSDT.aml is detected and loaded.
However, I get errors as follows:

ACPI-0508: *** Error: Method execution failed [\_SB_.BAT1._BST] (Node
cbed7be0), AE_NOT_FOUND
ACPI-0362: *** Error: Looking up [Z007] in namespace, AE_NOT_FOUND

... ad infinitum.

Puzzled - especially since Z007 does not appear in dsdt.dsl (replaced by
ones on advice from this forum - a la acer laptops and Z007 being
nonexistant anywhere.)

OK - so I try:

# acpi -dc DSDT.aml

which provides the following error:
Error 1061 - Object does not exist (\_PR.CPU0._PPC)

This appears six times overall, across methods:
_Q8A, _Q8D, _Q8D ... which seem unhelpful.

I see /proc/acpi/processor/CPU0 contains files; 
info  limit  power  throttling

I see that _PPC is a reserved method name:
_PPCMethod with 0 arguments, must return a value

CPU0 is AMD Mobile Sempron.

So I'm starting to feel a little out to sea.
I could attempt to hack a fix for these new errors, but there's no point
if they are an artifact of the decompilation process. I've tried to test
this by compiling in compatability mode - the same error crop up,
suggesting this is no artifact. However, if I decompile an aml file with
the same compiler it was compiled with, shouldn't I end up with the same
dsl file I started out with?

I thought it may be that the computer alters the DSDT.aml it uses, but
the same result is available from a copy the computer hasn't access to.

Any comments on anything here would be appreciated.
Thanks.




-
To unsubscribe from this list: send the line unsubscribe linux-acpi in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html