http://bugzilla.kernel.org/show_bug.cgi?id=9487





------- Comment #10 from [EMAIL PROTECTED]  2007-12-25 07:46 -------
The AML buffers are more interesting (cf. ACPI spec, p. 203):

Here's what _CRS returns:
47 01 38 03 38 03 01 08 // IO
23 10 00 01 // IRQ: IRQ 4, 3 bytes, High true, edge sensitive, non-shareable
79 8c // END TAG

And here's what the kernel passes to _SRS:
47 01 38 03 3f 03 00 08 // IO
22 10 00 // IRQ: IRQ 4, 2 bytes, hence it defaults to High true, edge
sensitive, non-shareable
79 00 00 // END TAG

Apparently the firmware has problems interpreting 2-byte IRQ descriptors.  If I
remove the code in drivers/acpi/resources/rsio.c that checks if the third byte
is necessary, the following AML buffer is passed instead:

47 01 38 03 3f 03 00 08 23 10 00 01 79 00

and the device resumes properly.

I'm not sure what to do now,  since what the kernel does is correct the problem
is buggy firmware.  Just disabling the check could potentially break devices
that are not standard-compliant in the opposite direction (I'm not sure how
likely this is though).
I think there is something to be said about being as faithful as possible to
what _CRS returns, though.  So maybe adding a field u8 use_3_byte_descriptor to
acpi_resource_irq that keeps track of whether _CRS returned a 3-byte descriptor
even though this wasn't necessary would be a better idea?


-- 
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
acpi-bugzilla mailing list
acpi-bugzilla@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla

Reply via email to