All of lore.kernel.org
 help / color / mirror / Atom feed
* Fw: ata-piix ACPI errors
@ 2007-02-23 10:08 Andrew Morton
  2007-02-24 22:13 ` Adrian Bunk
  2007-02-27 14:29 ` Thomas Renninger
  0 siblings, 2 replies; 6+ messages in thread
From: Andrew Morton @ 2007-02-23 10:08 UTC (permalink / raw)
  To: linux-acpi; +Cc: Meelis Roos, Adrian Bunk


I'm starting to think that big acpi merge came a bit too soon.

Begin forwarded message:

Date: Thu, 22 Feb 2007 15:29:42 +0200 (EET)
From: Meelis Roos <mroos@linux.ee>
To: Linux Kernel list <linux-kernel@vger.kernel.org>
Subject: ata-piix ACPI errors


Testbooted 2.6.21-rc1+todays git on a PC with Intel 845 chipset and PATA 
HDD. Works fine but I now have these ACPI errors in dmesg, maybe someone 
is interested:

ata_piix 0000:00:1f.1: version 2.00ac7
PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)
ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
PCI: Setting latency timer of device 0000:00:1f.1 to 64
ata1: PATA max UDMA/100 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001ffa0 irq 14
ata2: PATA max UDMA/100 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001ffa8 irq 15
scsi0 : ata_piix
ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN0.DRV0._GTF] (Node c18ed608), AE_AML_OPERAND_VALUE
ata1.00: ATA-5: ST380021A, 3.19, max UDMA/100
ata1.00: 156301488 sectors, multi 16: LBA
ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN0.DRV0._GTF] (Node c18ed608), AE_AML_OPERAND_VALUE
ata1.00: configured for UDMA/100
scsi1 : ata_piix
ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node c18ed464), AE_AML_OPERAND_VALUE
ata2.00: ATAPI, max UDMA/33
ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node c18ed464), AE_AML_OPERAND_VALUE
ata2.00: configured for UDMA/33
scsi 0:0:0:0: Direct-Access     ATA      ST380021A        3.19 PQ: 0 ANSI: 5
scsi 1:0:0:0: CD-ROM            _NEC     DV-5800B         G9H3 PQ: 0 ANSI: 5

-- 
Meelis Roos (mroos@linux.ee)
-
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/

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

* Re: Fw: ata-piix ACPI errors
  2007-02-23 10:08 Fw: ata-piix ACPI errors Andrew Morton
@ 2007-02-24 22:13 ` Adrian Bunk
  2007-02-27 14:29 ` Thomas Renninger
  1 sibling, 0 replies; 6+ messages in thread
From: Adrian Bunk @ 2007-02-24 22:13 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-acpi, Meelis Roos

On Fri, Feb 23, 2007 at 02:08:56AM -0800, Andrew Morton wrote:
> 
> I'm starting to think that big acpi merge came a bit too soon.
> 
> Begin forwarded message:

Thanks, noted.

> Date: Thu, 22 Feb 2007 15:29:42 +0200 (EET)
> From: Meelis Roos <mroos@linux.ee>
> To: Linux Kernel list <linux-kernel@vger.kernel.org>
> Subject: ata-piix ACPI errors
> 
> 
> Testbooted 2.6.21-rc1+todays git on a PC with Intel 845 chipset and PATA 
> HDD. Works fine but I now have these ACPI errors in dmesg, maybe someone 
> is interested:
> 
> ata_piix 0000:00:1f.1: version 2.00ac7
> PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)
> ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
> PCI: Setting latency timer of device 0000:00:1f.1 to 64
> ata1: PATA max UDMA/100 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001ffa0 irq 14
> ata2: PATA max UDMA/100 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001ffa8 irq 15
> scsi0 : ata_piix
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN0.DRV0._GTF] (Node c18ed608), AE_AML_OPERAND_VALUE
> ata1.00: ATA-5: ST380021A, 3.19, max UDMA/100
> ata1.00: 156301488 sectors, multi 16: LBA
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN0.DRV0._GTF] (Node c18ed608), AE_AML_OPERAND_VALUE
> ata1.00: configured for UDMA/100
> scsi1 : ata_piix
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node c18ed464), AE_AML_OPERAND_VALUE
> ata2.00: ATAPI, max UDMA/33
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node c18ed464), AE_AML_OPERAND_VALUE
> ata2.00: configured for UDMA/33
> scsi 0:0:0:0: Direct-Access     ATA      ST380021A        3.19 PQ: 0 ANSI: 5
> scsi 1:0:0:0: CD-ROM            _NEC     DV-5800B         G9H3 PQ: 0 ANSI: 5
> 
> -- 
> Meelis Roos (mroos@linux.ee)

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


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

* Re: Fw: ata-piix ACPI errors
  2007-02-23 10:08 Fw: ata-piix ACPI errors Andrew Morton
  2007-02-24 22:13 ` Adrian Bunk
@ 2007-02-27 14:29 ` Thomas Renninger
  2007-02-28 18:17   ` Tejun Heo
  1 sibling, 1 reply; 6+ messages in thread
From: Thomas Renninger @ 2007-02-27 14:29 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-acpi, Meelis Roos, Adrian Bunk, htejun

On Fri, 2007-02-23 at 02:08 -0800, Andrew Morton wrote:
> I'm starting to think that big acpi merge came a bit too soon.
> 
> Begin forwarded message:
> 
> Date: Thu, 22 Feb 2007 15:29:42 +0200 (EET)
> From: Meelis Roos <mroos@linux.ee>
> To: Linux Kernel list <linux-kernel@vger.kernel.org>
> Subject: ata-piix ACPI errors
> 
> 
> Testbooted 2.6.21-rc1+todays git on a PC with Intel 845 chipset and PATA 
> HDD. Works fine but I now have these ACPI errors in dmesg, maybe someone 
> is interested:
> 
> ata_piix 0000:00:1f.1: version 2.00ac7
> PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)
> ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
> PCI: Setting latency timer of device 0000:00:1f.1 to 64
> ata1: PATA max UDMA/100 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001ffa0 irq 14
> ata2: PATA max UDMA/100 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001ffa8 irq 15
> scsi0 : ata_piix
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
I expect this to be ACPI (interpreter) unrelated and the bug should be
in drivers/ata/libata-acpi.c.
The problem is that libata-acpi.c calls _GTF function before _STM has
been called. This is forbidden by ACPI spec.
The Field is created in _STM. When _GTF is called first, an
uninitialized Field is tried to be accessed. ACPI subsystem behaves
correctly here.

libata.ata_acpi=0
boot param should workaround the bug?

Related/same bugs:
https://bugzilla.novell.com/show_bug.cgi?id=216853
http://bugzilla.kernel.org/show_bug.cgi?id=7907

    Thomas

> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN0.DRV0._GTF] (Node c18ed608), AE_AML_OPERAND_VALUE
> ata1.00: ATA-5: ST380021A, 3.19, max UDMA/100
> ata1.00: 156301488 sectors, multi 16: LBA
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN0.DRV0._GTF] (Node c18ed608), AE_AML_OPERAND_VALUE
> ata1.00: configured for UDMA/100
> scsi1 : ata_piix
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node c18ed464), AE_AML_OPERAND_VALUE
> ata2.00: ATAPI, max UDMA/33
> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node c18edbf8), AE_AML_OPERAND_VALUE
> ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node c18ed464), AE_AML_OPERAND_VALUE
> ata2.00: configured for UDMA/33
> scsi 0:0:0:0: Direct-Access     ATA      ST380021A        3.19 PQ: 0 ANSI: 5
> scsi 1:0:0:0: CD-ROM            _NEC     DV-5800B         G9H3 PQ: 0 ANSI: 5
Rest are aftereffects/subsequent faults.


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

* Re: Fw: ata-piix ACPI errors
  2007-02-27 14:29 ` Thomas Renninger
@ 2007-02-28 18:17   ` Tejun Heo
  2007-03-01  9:58     ` Thomas Renninger
  0 siblings, 1 reply; 6+ messages in thread
From: Tejun Heo @ 2007-02-28 18:17 UTC (permalink / raw)
  To: trenn; +Cc: Andrew Morton, linux-acpi, Meelis Roos, Adrian Bunk

Hello, Thomas.

Thomas Renninger wrote:
> On Fri, 2007-02-23 at 02:08 -0800, Andrew Morton wrote:
>> I'm starting to think that big acpi merge came a bit too soon.
>>
>> Begin forwarded message:
>>
>> Date: Thu, 22 Feb 2007 15:29:42 +0200 (EET)
>> From: Meelis Roos <mroos@linux.ee>
>> To: Linux Kernel list <linux-kernel@vger.kernel.org>
>> Subject: ata-piix ACPI errors
>>
>>
>> Testbooted 2.6.21-rc1+todays git on a PC with Intel 845 chipset and PATA 
>> HDD. Works fine but I now have these ACPI errors in dmesg, maybe someone 
>> is interested:
>>
>> ata_piix 0000:00:1f.1: version 2.00ac7
>> PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)
>> ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
>> PCI: Setting latency timer of device 0000:00:1f.1 to 64
>> ata1: PATA max UDMA/100 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001ffa0 irq 14
>> ata2: PATA max UDMA/100 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001ffa8 irq 15
>> scsi0 : ata_piix
>> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
>
> I expect this to be ACPI (interpreter) unrelated and the bug should be
> in drivers/ata/libata-acpi.c.
> The problem is that libata-acpi.c calls _GTF function before _STM has
> been called. This is forbidden by ACPI spec.

I can't find such wording in acpi 3.0a spec.  It says _STM may make
adjustments to the result of _GTF.  Hmmm... the suspend/resume order
does specify that _STM should be called before _GTF but nothing seems to
mandate use of _GTM and _STM.

I think libata-acpi has several issues here.

1. Missing _GTM/_STM support.  This is because mode programming is
essential to PATA controllers and we do it in more conventional way
(poking PCI / controller registers) regardless of ACPI, so this feature
is kind of redundant.

2. Doing _GTF on boot.  _GTF is supposed to configure the device as the
firmware would have configured it during a normal boot, so we shouldn't
be doing it during boot.  This too is in gray area as if we're doing
kexec, we might want to do _GTF during boot.

It would be the cleanest if _GTF can be modified by but doesn't depend
on _STM.  Oh, well, there seem to be enough motherboards out there hit
by this.  I'll cook something up.

Thanks.

-- 
tejun

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

* Re: Fw: ata-piix ACPI errors
  2007-02-28 18:17   ` Tejun Heo
@ 2007-03-01  9:58     ` Thomas Renninger
  2007-03-02 22:03       ` Moore, Robert
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Renninger @ 2007-03-01  9:58 UTC (permalink / raw)
  To: Tejun Heo
  Cc: Andrew Morton, linux-acpi, Meelis Roos, Adrian Bunk, Hannes Reinecke

On Thu, 2007-03-01 at 03:17 +0900, Tejun Heo wrote:
> Hello, Thomas.
> 
> Thomas Renninger wrote:
> > On Fri, 2007-02-23 at 02:08 -0800, Andrew Morton wrote:
> >> I'm starting to think that big acpi merge came a bit too soon.
> >>
> >> Begin forwarded message:
> >>
> >> Date: Thu, 22 Feb 2007 15:29:42 +0200 (EET)
> >> From: Meelis Roos <mroos@linux.ee>
> >> To: Linux Kernel list <linux-kernel@vger.kernel.org>
> >> Subject: ata-piix ACPI errors
> >>
> >>
> >> Testbooted 2.6.21-rc1+todays git on a PC with Intel 845 chipset and PATA 
> >> HDD. Works fine but I now have these ACPI errors in dmesg, maybe someone 
> >> is interested:
> >>
> >> ata_piix 0000:00:1f.1: version 2.00ac7
> >> PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)
> >> ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
> >> PCI: Setting latency timer of device 0000:00:1f.1 to 64
> >> ata1: PATA max UDMA/100 cmd 0x000101f0 ctl 0x000103f6 bmdma 0x0001ffa0 irq 14
> >> ata2: PATA max UDMA/100 cmd 0x00010170 ctl 0x00010376 bmdma 0x0001ffa8 irq 15
> >> scsi0 : ata_piix
> >> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero [20070126]
> >
> > I expect this to be ACPI (interpreter) unrelated and the bug should be
> > in drivers/ata/libata-acpi.c.
> > The problem is that libata-acpi.c calls _GTF function before _STM has
> > been called. This is forbidden by ACPI spec.
> 
> I can't find such wording in acpi 3.0a spec.  It says _STM may make
> adjustments to the result of _GTF.  Hmmm... the suspend/resume order
> does specify that _STM should be called before _GTF but nothing seems to
> mandate use of _GTM and _STM.
I also can't find the explicit statement there now.
It seems that the steps described must be processed in the same order as
written down there(9.9.2 IDE Controller Device):
Powering up:
• Power up drive (calls _PS0 method if present and turns
  on power planes).
• Call _STM passing info from _GTM (possibly modified),
  with ID data from each drive.
• Initialize the channel.
• May modify the results of _GTF.
• For each drive: Call _GTF. Execute task file (possibly modified).

Libata subsystem has no choice here as AML code (C&Ped through
several BIOSes?) already relies on that.
I put some info of a bug report here to reproduce:
ftp.suse.com/pub/people/trenn/sata_acpi_errors_216853

If you do:
acpiexec DSDT.dat
 -> execute \_SB_.PCI0.IDE0.CHN0.DRV0._GTF
you get exactly the error spit out in kernel/dmesg log:
ACPI Error (dsopcode-0601): Attempt to CreateField of length zero
[20060912]

If you quit and try again, calling:
 -> execute \_SB_.PCI0.IDE0.CHN0._STM 0 0 0
 -> execute \_SB_.PCI0.IDE0.CHN0.DRV0._GTF

Everything is fine...

I looked a bit at the asl code:
At end of _STM "Store (GTF (0x00, Arg1), ATA0)" (not _GTF!, GTF is just
a helper function) is called.
ATA0 gets filled here and is the field that is later used in _GTF which
throws an error in the called RATA func, if ATA0 has not been filled
yet.

It's not that easy and a bit difficult to put in words...

> 
> I think libata-acpi has several issues here.
> 
> 1. Missing _GTM/_STM support.  This is because mode programming is
> essential to PATA controllers and we do it in more conventional way
> (poking PCI / controller registers) regardless of ACPI, so this feature
> is kind of redundant.

Ok, that is the problem.
If using _GTF you won't come around also using _STM/_GTM.
We already have libata-acpi patches in our 2.6.16 kernel which have
_STM/_GTM support.
AFAIK those come from Hannes who also posted this some time ago
(to some ide-xy mailinglist, don't know)?
You may want to wait for his answer, there already exist stuff doing
this and as code is in our kernels it also should be rather well
tested...

    Thomas



> 2. Doing _GTF on boot.  _GTF is supposed to configure the device as the
> firmware would have configured it during a normal boot, so we shouldn't
> be doing it during boot.  This too is in gray area as if we're doing
> kexec, we might want to do _GTF during boot.
> 
> It would be the cleanest if _GTF can be modified by but doesn't depend
> on _STM.  Oh, well, there seem to be enough motherboards out there hit
> by this.  I'll cook something up.


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

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

* RE: Fw: ata-piix ACPI errors
  2007-03-01  9:58     ` Thomas Renninger
@ 2007-03-02 22:03       ` Moore, Robert
  0 siblings, 0 replies; 6+ messages in thread
From: Moore, Robert @ 2007-03-02 22:03 UTC (permalink / raw)
  To: trenn, Tejun Heo, Brown, Len, Therien, Guy
  Cc: Andrew Morton, linux-acpi, Meelis Roos, Adrian Bunk, Hannes Reinecke

Here is the key phrase from the ACPI spec. It is not perfectly clear,
but it is my understanding that the meaning is that _GTF can only be
called after _STM has been called.

Bob


9.9.1.1   _GTF (Get Task File)
...

This Control Method is listed under each drive device object. _GTF must
be called after calling _STM.



> -----Original Message-----
> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> owner@vger.kernel.org] On Behalf Of Thomas Renninger
> Sent: Thursday, March 01, 2007 1:58 AM
> To: Tejun Heo
> Cc: Andrew Morton; linux-acpi@vger.kernel.org; Meelis Roos; Adrian
Bunk;
> Hannes Reinecke
> Subject: Re: Fw: ata-piix ACPI errors
> 
> On Thu, 2007-03-01 at 03:17 +0900, Tejun Heo wrote:
> > Hello, Thomas.
> >
> > Thomas Renninger wrote:
> > > On Fri, 2007-02-23 at 02:08 -0800, Andrew Morton wrote:
> > >> I'm starting to think that big acpi merge came a bit too soon.
> > >>
> > >> Begin forwarded message:
> > >>
> > >> Date: Thu, 22 Feb 2007 15:29:42 +0200 (EET)
> > >> From: Meelis Roos <mroos@linux.ee>
> > >> To: Linux Kernel list <linux-kernel@vger.kernel.org>
> > >> Subject: ata-piix ACPI errors
> > >>
> > >>
> > >> Testbooted 2.6.21-rc1+todays git on a PC with Intel 845 chipset
and
> PATA
> > >> HDD. Works fine but I now have these ACPI errors in dmesg, maybe
> someone
> > >> is interested:
> > >>
> > >> ata_piix 0000:00:1f.1: version 2.00ac7
> > >> PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)
> > >> ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ
18
> > >> PCI: Setting latency timer of device 0000:00:1f.1 to 64
> > >> ata1: PATA max UDMA/100 cmd 0x000101f0 ctl 0x000103f6 bmdma
> 0x0001ffa0 irq 14
> > >> ata2: PATA max UDMA/100 cmd 0x00010170 ctl 0x00010376 bmdma
> 0x0001ffa8 irq 15
> > >> scsi0 : ata_piix
> > >> ACPI Error (dsopcode-0481): Attempt to CreateField of length zero
> [20070126]
> > >
> > > I expect this to be ACPI (interpreter) unrelated and the bug
should be
> > > in drivers/ata/libata-acpi.c.
> > > The problem is that libata-acpi.c calls _GTF function before _STM
has
> > > been called. This is forbidden by ACPI spec.
> >
> > I can't find such wording in acpi 3.0a spec.  It says _STM may make
> > adjustments to the result of _GTF.  Hmmm... the suspend/resume order
> > does specify that _STM should be called before _GTF but nothing
seems to
> > mandate use of _GTM and _STM.
> I also can't find the explicit statement there now.
> It seems that the steps described must be processed in the same order
as
> written down there(9.9.2 IDE Controller Device):
> Powering up:
> * Power up drive (calls _PS0 method if present and turns
>   on power planes).
> * Call _STM passing info from _GTM (possibly modified),
>   with ID data from each drive.
> * Initialize the channel.
> * May modify the results of _GTF.
> * For each drive: Call _GTF. Execute task file (possibly modified).
> 
> Libata subsystem has no choice here as AML code (C&Ped through
> several BIOSes?) already relies on that.
> I put some info of a bug report here to reproduce:
> ftp.suse.com/pub/people/trenn/sata_acpi_errors_216853
> 
> If you do:
> acpiexec DSDT.dat
>  -> execute \_SB_.PCI0.IDE0.CHN0.DRV0._GTF
> you get exactly the error spit out in kernel/dmesg log:
> ACPI Error (dsopcode-0601): Attempt to CreateField of length zero
> [20060912]
> 
> If you quit and try again, calling:
>  -> execute \_SB_.PCI0.IDE0.CHN0._STM 0 0 0
>  -> execute \_SB_.PCI0.IDE0.CHN0.DRV0._GTF
> 
> Everything is fine...
> 
> I looked a bit at the asl code:
> At end of _STM "Store (GTF (0x00, Arg1), ATA0)" (not _GTF!, GTF is
just
> a helper function) is called.
> ATA0 gets filled here and is the field that is later used in _GTF
which
> throws an error in the called RATA func, if ATA0 has not been filled
> yet.
> 
> It's not that easy and a bit difficult to put in words...
> 
> >
> > I think libata-acpi has several issues here.
> >
> > 1. Missing _GTM/_STM support.  This is because mode programming is
> > essential to PATA controllers and we do it in more conventional way
> > (poking PCI / controller registers) regardless of ACPI, so this
feature
> > is kind of redundant.
> 
> Ok, that is the problem.
> If using _GTF you won't come around also using _STM/_GTM.
> We already have libata-acpi patches in our 2.6.16 kernel which have
> _STM/_GTM support.
> AFAIK those come from Hannes who also posted this some time ago
> (to some ide-xy mailinglist, don't know)?
> You may want to wait for his answer, there already exist stuff doing
> this and as code is in our kernels it also should be rather well
> tested...
> 
>     Thomas
> 
> 
> 
> > 2. Doing _GTF on boot.  _GTF is supposed to configure the device as
the
> > firmware would have configured it during a normal boot, so we
shouldn't
> > be doing it during boot.  This too is in gray area as if we're doing
> > kexec, we might want to do _GTF during boot.
> >
> > It would be the cleanest if _GTF can be modified by but doesn't
depend
> > on _STM.  Oh, well, there seem to be enough motherboards out there
hit
> > by this.  I'll cook something up.
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi"
in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2007-03-02 22:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-23 10:08 Fw: ata-piix ACPI errors Andrew Morton
2007-02-24 22:13 ` Adrian Bunk
2007-02-27 14:29 ` Thomas Renninger
2007-02-28 18:17   ` Tejun Heo
2007-03-01  9:58     ` Thomas Renninger
2007-03-02 22:03       ` Moore, Robert

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.