[regression]: acpi_aiboost fails to attach on Asus P5Q3 Deluxe
in 8.0 (Was: [regression] : 8.0-BETA3 (and BETA2?) acpi_hpet0
fails on TYAN H2000M)
John Baldwin
jhb at freebsd.org
Tue Sep 22 16:52:02 UTC 2009
On Saturday 19 September 2009 1:09:19 pm Olivier Smedts wrote:
> 2009/8/24 John Baldwin <jhb at freebsd.org>
> >
> > On Monday 24 August 2009 4:54:13 pm Olivier Smedts wrote:
> > > 2009/8/24 John Baldwin <jhb at freebsd.org>:
> > > > On Saturday 22 August 2009 1:20:18 pm Arno J. Klaassen wrote:
> > > >>
> > > >> Hello,
> > > >>
> > > >> I have a regression with acpi_hpet on a Tyan H2000M MB :
> > > >>
> > > >> acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed03fff on
> > acpi0
> > > >> acpi_hpet0: HPET never increments, disabling
> > > >> device_attach: acpi_hpet0 attach returned 6
> > > >> [twice]
> > > >>
> > > >> it exists at least since Aug16 sources (I just looked at
> > > >> the 'netif' problems on this board which BTW are indeed fixed
> > > >> by recent flowtable init changes)
> > > >
> > > > Perhaps the recent ACPI-CA update is when this broke?
> > >
> > > Sorry for hijacking the thread (and not reporting this before) but
> > > maybe my issues with acpi_aiboost are related. It won't attach on my
> > > ASUS P5Q3 Deluxe (latest BIOS) since the ACPICA update (which also
> > > made "est" attach successfully on this ASUS board) :
> > >
> > > acpi_aiboost0: <ASUStek AIBOOSTER> on acpi0
> > > NOREF
> > > BAD DATA
> > > device_attach: acpi_aiboost0 attach returned 22
> >
> > I would figure out what function in it's attach routine is failing with EINVAL
> > and drill down from there. It looks like it is dying trying to
> > evaluate "TSIF", "VSIF", or "FSIF". Maybe add some printfs to see which one
> > and print out the 'elem->Type' in the "NOREF" error message. You could also
> > just print the 'name' there as well which would help perhaps.
> >
> > --
> > John Baldwin
Ok, try this. I believe that the newer ACPI-CA is expanding the package
inline and there is no reason the subpackages have to be external
references rather than inline.
Index: acpi_aiboost.c
===================================================================
--- acpi_aiboost.c (revision 197402)
+++ acpi_aiboost.c (working copy)
@@ -46,7 +46,6 @@
#define DESCSTRLEN 32
struct acpi_aiboost_element{
- ACPI_HANDLE h;
uint32_t id;
char desc[DESCSTRLEN];
};
@@ -127,22 +126,23 @@
for(i = 1 ; i < o->Package.Count; i++){
elem = &o->Package.Elements[i];
- if(elem->Type != ACPI_TYPE_ANY){
- printf("NOREF\n");
- goto error;
- }
- c->elem[ i - 1].h = elem->Reference.Handle;
+ if (elem->type == ACPI_TYPE_ANY) {
+ buf2.Pointer = NULL;
+ buf2.Length = ACPI_ALLOCATE_BUFFER;
- buf2.Pointer = NULL;
- buf2.Length = ACPI_ALLOCATE_BUFFER;
-
- status = AcpiEvaluateObject(c->elem[i - 1].h, NULL, NULL,
- &buf2);
- if(ACPI_FAILURE(status)){
- printf("FETCH OBJECT\n");
+ status = AcpiEvaluateObject(elem->Reference.Handle,
+ NULL, NULL, &buf2);
+ if (ACPI_FAILURE(status)){
+ printf("FETCH OBJECT\n");
+ goto error;
+ }
+ subobj = buf2.Pointer;
+ } else if (elem->type == ACPI_TYPE_PACKAGE)
+ subobj = elem;
+ else {
+ printf("NO PACKAGE\n");
goto error;
}
- subobj = buf2.Pointer;
if(ACPI_FAILURE(acpi_PkgInt32(subobj,0, &c->elem[i -1].id))){
printf("ID FAILED\n");
goto error;
@@ -151,15 +151,17 @@
sizeof(c->elem[i - 1].desc));
if(ACPI_FAILURE(status)){
if(status == E2BIG){
- c->elem[i-1].desc[DESCSTRLEN-1] = 0;
+ c->elem[i - 1].desc[DESCSTRLEN-1] = 0;
}else{
printf("DESC FAILED %d\n", i-1);
goto error;
}
}
- if(buf2.Pointer)
- AcpiOsFree(buf2.Pointer);
+ if (buf2.Pointer) {
+ AcpiOsFree(buf2.Pointer);
+ buf2.Pointer = NULL;
+ }
}
if(buf.Pointer)
--
John Baldwin
More information about the freebsd-current
mailing list