ACPI errors on amd64 (sempron)

Moore, Robert robert.moore at intel.com
Fri Oct 28 13:45:28 PDT 2005


If you are using ACPI_RESOURCE, then you are probably getting the list
from the resource manager (GetCurrentResources, etc.)


> -----Original Message-----
> From: Nate Lawson [mailto:nate at root.org]
> Sent: Friday, October 28, 2005 1:18 PM
> To: Moore, Robert
> Cc: John Baldwin; Jung-uk Kim; freebsd-acpi at freebsd.org; Mathieu
Prevot
> Subject: Re: ACPI errors on amd64 (sempron)
> 
> Moore, Robert wrote:
> >>>>This looks to me
> >>>>like the pci_link code is pointing the interrupt source at the
> >>>>wrong part of the resource descriptor.  Perhaps it is not
> >>>>incrementing the pointer correctly for 64-bit arches.
> >
> >
> > I would be interested in knowing if FreeBSD is using the ACPI CA
> > resource manager code, or is parsing the raw AML resource template
> > buffers on its own.
> >
> > One advantage to using the resource manager is that the resources
are
> > converted to a format that is easier for upper code to analyze (and
> > therefore less prone to error.)
> 
> We use our own (acpi_resource.c):
>      while (curr < last) {
> 	res = (ACPI_RESOURCE *)curr;
> 	curr += res->Length;
> 
> 	/* Handle the individual resource types */
> 	switch(res->Id) {
> 	case ACPI_RSTYPE_END_TAG:
> 	    ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "EndTag\n"));
> 	    curr = last;
> 	    break;
> 	case ACPI_RSTYPE_FIXED_IO:
> 	    if (res->Data.FixedIo.RangeLength <= 0)
> 		break;
> 	    ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "FixedIo 0x%x/%d\n",
> 			     res->Data.FixedIo.BaseAddress,
> 			     res->Data.FixedIo.RangeLength));
> 	    set->set_ioport(dev, context,
> 			    res->Data.FixedIo.BaseAddress,
> 			    res->Data.FixedIo.RangeLength);
> 	    break;
> 
> I haven't looked at the acpi ca resource manager but it will have to
> match the rest of our rman system to be a viable replacement.
> 
> --
> Nate


More information about the freebsd-acpi mailing list