* bug report: multi-byte access in indexfields broken
@ 2003-09-21 20:05 Robert Vollmert
[not found] ` <20030921200525.GB2968-duT3ICHXG/I@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Robert Vollmert @ 2003-09-21 20:05 UTC (permalink / raw)
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Hello,
it appears the problems I mailed about earlier are due to a bug in the
ACPI code. Reading from multi-byte fields in a ByteAccess-IndexField
seems to be broken.
When I replace
IndexField (EIND, EDAT, ByteAcc, NoLock, Preserve)
{
Offset (0x10),
IKFG, 8,
FRPN, 16,
RAMB, 32,
AVOL, 8,
...
}
Method (CRMB, 0, NotSerialized)
{
Return (RAMB)
}
with
IndexField (EIND, EDAT, ByteAcc, NoLock, Preserve)
{
Offset (0x10),
IKFG, 8,
FRPN, 16,
RAM0, 8,
RAM1, 8,
RAM2, 8,
RAM3, 8,
AVOL, 8,
...
}
Method (CRMB, 0, NotSerialized)
{
Store (RAM3, Local0)
ShiftLeft (Local0, 0x8, Local0)
Add (RAM2, Local0, Local0)
ShiftLeft (Local0, 0x8, Local0)
Add (RAM1, Local0, Local0)
ShiftLeft (Local0, 0x8, Local0)
Add (RAM0, Local0, Local0)
Return (Local0)
}
the first version of CRMB computes 0x64646464, while the second
version computes the correct 0x0F750064. The least byte seems to just
be copied to the other positions.
Cheers
Robert
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: bug report: multi-byte access in indexfields broken
[not found] ` <20030921200525.GB2968-duT3ICHXG/I@public.gmane.org>
@ 2003-09-21 20:16 ` Robert Vollmert
2003-09-22 14:02 ` Ducrot Bruno
2003-09-22 17:29 ` bug report: multi-byte access in indexfields broken [patch] Robert Vollmert
2 siblings, 0 replies; 5+ messages in thread
From: Robert Vollmert @ 2003-09-21 20:16 UTC (permalink / raw)
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
> it appears the problems I mailed about earlier are due to a bug in the
> ACPI code. Reading from multi-byte fields in a ByteAccess-IndexField
> seems to be broken.
That's with Linux 2.4.22 + ACPI 20030916 + DSDT patch.
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: bug report: multi-byte access in indexfields broken
[not found] ` <20030921200525.GB2968-duT3ICHXG/I@public.gmane.org>
2003-09-21 20:16 ` Robert Vollmert
@ 2003-09-22 14:02 ` Ducrot Bruno
2003-09-22 17:29 ` bug report: multi-byte access in indexfields broken [patch] Robert Vollmert
2 siblings, 0 replies; 5+ messages in thread
From: Ducrot Bruno @ 2003-09-22 14:02 UTC (permalink / raw)
To: Robert Vollmert; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
On Sun, Sep 21, 2003 at 10:05:25PM +0200, Robert Vollmert wrote:
> Hello,
>
> it appears the problems I mailed about earlier are due to a bug in the
> ACPI code. Reading from multi-byte fields in a ByteAccess-IndexField
> seems to be broken.
>
> When I replace
>
> IndexField (EIND, EDAT, ByteAcc, NoLock, Preserve)
> {
> Offset (0x10),
> IKFG, 8,
> FRPN, 16,
> RAMB, 32,
> AVOL, 8,
> ...
> }
>
> Method (CRMB, 0, NotSerialized)
> {
> Return (RAMB)
> }
>
After some testing, I found that this bug happens with word access
as well, and only when the field is not aligned with 8 (in case
of dword), which do not make sence as a buggy ASL due to the ByteAcc.
I consider that bug being critical. I'm not sure if that happens for
other types other than Index one (that piece of code being shared between
4 kind of OR).
Anyway, most of use done by IndexField is to access CMOS data. I prefer
not to think what happens if a write is done, and if the write is buggy
as well.
--
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] 5+ messages in thread
* Re: bug report: multi-byte access in indexfields broken [patch]
[not found] ` <20030921200525.GB2968-duT3ICHXG/I@public.gmane.org>
2003-09-21 20:16 ` Robert Vollmert
2003-09-22 14:02 ` Ducrot Bruno
@ 2003-09-22 17:29 ` Robert Vollmert
2 siblings, 0 replies; 5+ messages in thread
From: Robert Vollmert @ 2003-09-22 17:29 UTC (permalink / raw)
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Here's a patch.
--- exfldio.c.orig 2003-09-22 18:22:09.000000000 +0200
+++ exfldio.c 2003-09-22 19:16:11.000000000 +0200
@@ -346,6 +346,7 @@
{
acpi_status status;
acpi_integer local_value;
+ acpi_integer index_field_value;
ACPI_FUNCTION_TRACE_U32 ("ex_field_datum_io", field_datum_byte_offset);
@@ -448,18 +449,22 @@
case ACPI_TYPE_LOCAL_INDEX_FIELD:
+ /* Compute index value to access the current datum */
+
+ index_field_value = (acpi_integer) obj_desc->index_field.value
+ + field_datum_byte_offset;
/* Ensure that the index_value is not beyond the capacity of the register */
if (acpi_ex_register_overflow (obj_desc->index_field.index_obj,
- (acpi_integer) obj_desc->index_field.value)) {
+ index_field_value)) {
return_ACPI_STATUS (AE_AML_REGISTER_LIMIT);
}
/* Write the index value to the index_register (itself a region_field) */
status = acpi_ex_insert_into_field (obj_desc->index_field.index_obj,
- &obj_desc->index_field.value,
+ &index_field_value,
sizeof (obj_desc->index_field.value));
if (ACPI_FAILURE (status)) {
return_ACPI_STATUS (status);
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: bug report: multi-byte access in indexfields broken
@ 2003-09-23 1:46 Li, Shaohua
0 siblings, 0 replies; 5+ messages in thread
From: Li, Shaohua @ 2003-09-23 1:46 UTC (permalink / raw)
To: Ducrot Bruno; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Robert Vollmert
Hi,
I opened a track in OSDL 1260. Please add you in the CC list.
Thanks,
Shaohua
-----Original Message-----
From: acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of Ducrot Bruno
Sent: 2003年9月22日 22:03
To: Robert Vollmert
Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [ACPI] bug report: multi-byte access in indexfields broken
On Sun, Sep 21, 2003 at 10:05:25PM +0200, Robert Vollmert wrote:
> Hello,
>
> it appears the problems I mailed about earlier are due to a bug in the
> ACPI code. Reading from multi-byte fields in a ByteAccess-IndexField
> seems to be broken.
>
> When I replace
>
> IndexField (EIND, EDAT, ByteAcc, NoLock, Preserve)
> {
> Offset (0x10),
> IKFG, 8,
> FRPN, 16,
> RAMB, 32,
> AVOL, 8,
> ...
> }
>
> Method (CRMB, 0, NotSerialized)
> {
> Return (RAMB)
> }
>
After some testing, I found that this bug happens with word access
as well, and only when the field is not aligned with 8 (in case
of dword), which do not make sence as a buggy ASL due to the ByteAcc.
I consider that bug being critical. I'm not sure if that happens for
other types other than Index one (that piece of code being shared between
4 kind of OR).
Anyway, most of use done by IndexField is to access CMOS data. I prefer
not to think what happens if a write is done, and if the write is buggy
as well.
--
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
_______________________________________________
Acpi-devel mailing list
Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/acpi-devel
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-09-23 1:46 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-09-21 20:05 bug report: multi-byte access in indexfields broken Robert Vollmert
[not found] ` <20030921200525.GB2968-duT3ICHXG/I@public.gmane.org>
2003-09-21 20:16 ` Robert Vollmert
2003-09-22 14:02 ` Ducrot Bruno
2003-09-22 17:29 ` bug report: multi-byte access in indexfields broken [patch] Robert Vollmert
-- strict thread matches above, loose matches on Subject: below --
2003-09-23 1:46 bug report: multi-byte access in indexfields broken Li, Shaohua
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.