On Fri, 19 Apr 2013 15:21:10 -0700, Benjamin Lee <b...@b1c1l1.com> wrote: > On Fri, 19 Apr 2013 17:26:31 -0400, John Baldwin <j...@freebsd.org> wrote: > > On Friday, April 19, 2013 4:18:49 pm Benjamin Lee wrote: > > > On Fri, 19 Apr 2013 11:31:49 -0400, John Baldwin <j...@freebsd.org> wrote: > > > > On Thursday, April 18, 2013 3:49:40 pm Benjamin Lee wrote: > > > > > I have a system that panics on boot with 10-CURRENT and boots with > > > > > many > > > > > ACPI error messages and non-functional devices with 9.1-RELEASE. > > > > > > > > > > Motherboard is Foxconn C51XEM2AA (NVIDIA nForce 590) desktop board. > > > [...] > > > > > Even though 9.1-RELEASE boots successfully, devices such as the ehci > > > > > USB > > > > > controller and SATA controller do not work. > > > > > > > > Ugh, your BIOS does unexpected things. It uses a _CRS for these pci > > > > link > > > > devices that uses a "short" IRQ resource, but uses an extended IRQ > > resource in > > > > _PRS (and expects an extended one in _SRS). We use _CRS as a template > > > > for > > the > > > > resource to build. > > > > > > > > Try this patch. It's a bit hackish, but it forces us to not use _CRS > > > > as a > > > > template if _CRS uses a "short" IRQ resource, but the link supports non- > > ISA > > > > IRQs. > > > [...] > > > > > > Thanks, that fixed the panic and the system boots. Now it is > > > complaining about AE_AML_BAD_RESOURCE_LENGTH and still unable to route > > > IRQs, but it definitely looks better than the ACPI parsing errors in 9: > > > > > > pcib0: allocated type 3 (0xdffff000-0xdfffffff) for rid 10 of pci0:0:10:0 > > > pcib0: matched entry for 0.10.INTA (src \_SB_.PCI0.AUBA:0) > > > pci_link26: Picked IRQ 20 with weight 0 > > > pci_link26: Unable to route IRQs: AE_AML_BAD_RESOURCE_LENGTH > > > > > > Full boot -v output: > > > http://www.b1c1l1.com/media/debug/20130419-10-patched- > > boot.txt.gz > > > > Can you add some printfs to the places that return the > > AE_AML_BAD_RESOURCE_LENGTH to see which one is being triggered? (Just look > > for that constant in sys/contrib/dev/acpica to find the possible places.) > > Is there a macro for dumping information about Resource or > Resource->Data? Here's what I have for now at > sys/contrib/dev/acpica/resources/rscalc.c line 237: > > pcib0: matched entry for 0.10.INTA (src \_SB_.PCI0.AUBA:0) > pci_link26: Picked IRQ 20 with weight 0 > rscalc.c:237 > Resource->Type: 7 > Resource->Length: 0 > pci_link26: Unable to route IRQs: AE_AML_BAD_RESOURCE_LENGTH > > All of the errors are from there and look identical (Type 7, Length 0). > Type 7 appears to be ACPI_RESOURCE_TYPE_END_TAG.
This hack fixes everything (now the SATA controller works). It seems that the Resource->Length check might not be necessary for ACPI_RESOURCE_TYPE_END_TAG. blee@genesis /usr/src/sys/contrib/dev/acpica $ svn diff Index: components/resources/rscalc.c =================================================================== --- components/resources/rscalc.c (revision 249624) +++ components/resources/rscalc.c (working copy) @@ -234,6 +234,15 @@ if (!Resource->Length) { + if (Resource->Type == ACPI_RESOURCE_TYPE_END_TAG) { + TotalSize = AcpiGbl_AmlResourceSizes [Resource->Type]; + printf("TotalSize: %u\n", TotalSize); + if (TotalSize != 0) { + printf("ACPI_RESOURCE_TYPE_END_TAG hack\n"); + *SizeNeeded = AmlSizeNeeded + TotalSize; + return_ACPI_STATUS (AE_OK); + } + } return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); } Index: components/resources/rslist.c =================================================================== --- components/resources/rslist.c (revision 249624) +++ components/resources/rslist.c (working copy) @@ -203,6 +203,11 @@ if (!Resource->Length) { + if (Resource->Type == ACPI_RESOURCE_TYPE_END_TAG) { + printf("ACPI_RESOURCE_TYPE_END_TAG hack 2\n"); + return_ACPI_STATUS (AE_OK); + } + ACPI_ERROR ((AE_INFO, "Invalid zero length descriptor in resource list\n")); return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); -- Benjamin Lee http://www.b1c1l1.com/
signature.asc
Description: PGP signature