Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Oct 2005 13:45:25 -0700
From:      "Moore, Robert" <robert.moore@intel.com>
To:        "Nate Lawson" <nate@root.org>
Cc:        freebsd-acpi@freebsd.org, Jung-uk Kim <jkim@freebsd.org>, Mathieu Prevot <mathieu_prevot@yahoo.fr>
Subject:   RE: ACPI errors on amd64 (sempron)
Message-ID:  <971FCB6690CD0E4898387DBF7552B90E033A9B38@orsmsx403.amr.corp.intel.com>

next in thread | raw e-mail | index | archive | help
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@root.org]
> Sent: Friday, October 28, 2005 1:18 PM
> To: Moore, Robert
> Cc: John Baldwin; Jung-uk Kim; freebsd-acpi@freebsd.org; Mathieu
Prevot
> Subject: Re: ACPI errors on amd64 (sempron)
>=20
> 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.)
>=20
> We use our own (acpi_resource.c):
>      while (curr < last) {
> 	res =3D (ACPI_RESOURCE *)curr;
> 	curr +=3D res->Length;
>=20
> 	/* Handle the individual resource types */
> 	switch(res->Id) {
> 	case ACPI_RSTYPE_END_TAG:
> 	    ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "EndTag\n"));
> 	    curr =3D last;
> 	    break;
> 	case ACPI_RSTYPE_FIXED_IO:
> 	    if (res->Data.FixedIo.RangeLength <=3D 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;
>=20
> 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.
>=20
> --
> Nate



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?971FCB6690CD0E4898387DBF7552B90E033A9B38>