Re: page fault panic in device_get_softc/acpi_pcib_route_interrupt

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Fri, 7 Jan 2005 11:01:02 -0500
On Thursday 06 January 2005 06:26 pm, Pawel Worach wrote:
> Nate Lawson wrote:
> > A possible fix is to change each reference to LP* in the PICM and APIC
> > packages to be \LPUS, \LP05, etc.  Then recompile and load your asl via
> > the instructions for overriding it in acpi(4).
> >
> > I'm still not sure why this is broken though so I think it's a red
> > herring and suspect the asl fix won't help.  I suspect the real reason
> > is that \LPUS is not probed/attached before calling pci_add_child() on
> > PCI0.  Pawel, can you stick a printf in acpi_pci_link_attach() right
> > before the return (0) like this:
> >
> > printf("pci link attached: %s\n", acpi_name(acpi_get_handle(dev)));
> >
> > I suspect we won't see LPUS there before it panics.
>
> I do not even see the code enter acpi_pci_link_attach(), even added a dummy
> printf at the top of the method.

This is because the references don't work during the force-attach either 
(which happens before pci_add_child() as I explained to Nate in my earlier 
e-mail).

> I modified the AML, changed all LP* to \LP* (except for the Device(LP*)
> ones, should I change these too?) the result was a couple of errors during
> boot. I broke something didn't I?
>
> can't fetch resources for \_SB_.PCI0 - AE_AML_INVALID_RESOURCE_TYPE
> can't fetch resources for \_SB_.PCI0.ISA_.SIOM - AE_AML_NO_RESOURCE_END_TAG
> can't fetch resources for \_SB_.PCI0.ISA_.PS2M - AE_AML_NO_RESOURCE_END_TAG
> can't fetch resources for \_SB_.PCI0.ISA_.FDC0 - AE_AML_NO_RESOURCE_END_TAG
> can't fetch resources for \_SB_.PCI0.ISA_.COM1 - AE_AML_NO_RESOURCE_END_TAG
> can't fetch resources for \_SB_.PCI1 - AE_AML_INVALID_RESOURCE_TYPE
> can't fetch resources for \_SB_.PCI2 - AE_AML_INVALID_RESOURCE_TYPE
> can't fetch resources for \_SB_.PCI3 - AE_AML_INVALID_RESOURCE_TYPE
> can't fetch resources for \_SB_.PCI4 - AE_AML_INVALID_RESOURCE_TYPE
> ..
> Fatal trap 12: page fault while in kernel mode
> [same old story]
> ...

Only change the LPxx entries in the _PRT tables.  Specifically, find the PICM 
package and change their entries.  Something like this:

--- ibm-x345.aml.orig	Fri Jan  7 10:59:26 2005
+++ ibm-x345.aml	Fri Jan  7 11:00:23 2005
_at__at_ -4417,7 +4417,7 _at__at_
             {
                 0x0005FFFF, 
                 0x00, 
-                LP08, 
+                \LP08, 
                 0x00
             }, 
 
_at__at_ -4425,7 +4425,7 _at__at_
             {
                 0x0005FFFF, 
                 0x01, 
-                LP09, 
+                \LP09, 
                 0x00
             }, 
 
_at__at_ -4433,7 +4433,7 _at__at_
             {
                 0x0005FFFF, 
                 0x02, 
-                LP08, 
+                \LP08, 
                 0x00
             }, 
 
_at__at_ -4441,7 +4441,7 _at__at_
             {
                 0x0005FFFF, 
                 0x03, 
-                LP09, 
+                \LP09, 
                 0x00
             }, 
 
_at__at_ -4449,7 +4449,7 _at__at_
             {
                 0x0006FFFF, 
                 0x00, 
-                LP0A, 
+                \LP0A, 
                 0x00
             }, 
 
_at__at_ -4457,7 +4457,7 _at__at_
             {
                 0x000FFFFF, 
                 0x00, 
-                LPUS, 
+                \LPUS, 
                 0x00
             }
         })
_at__at_ -4507,7 +4507,7 _at__at_
             {
                 0x000FFFFF, 
                 0x00, 
-                LPUS, 
+                \LPUS, 
                 0x00
             }
         })
_at__at_ -4533,7 +4533,7 _at__at_
             {
                 0x0003FFFF, 
                 0x00, 
-                LP04, 
+                \LP04, 
                 0x00
             }, 
 
_at__at_ -4541,7 +4541,7 _at__at_
             {
                 0x0003FFFF, 
                 0x01, 
-                LP05, 
+                \LP05, 
                 0x00
             }, 
 
_at__at_ -4549,7 +4549,7 _at__at_
             {
                 0x0003FFFF, 
                 0x02, 
-                LP04, 
+                \LP04, 
                 0x00
             }, 
 
_at__at_ -4557,7 +4557,7 _at__at_
             {
                 0x0003FFFF, 
                 0x03, 
-                LP05, 
+                \LP05, 
                 0x00
             }
         })
_at__at_ -4617,7 +4617,7 _at__at_
             {
                 0x0004FFFF, 
                 0x00, 
-                LP06, 
+                \LP06, 
                 0x00
             }, 
 
_at__at_ -4625,7 +4625,7 _at__at_
             {
                 0x0004FFFF, 
                 0x01, 
-                LP07, 
+                \LP07, 
                 0x00
             }, 
 
_at__at_ -4633,7 +4633,7 _at__at_
             {
                 0x0004FFFF, 
                 0x02, 
-                LP06, 
+                \LP06, 
                 0x00
             }, 
 
_at__at_ -4641,7 +4641,7 _at__at_
             {
                 0x0004FFFF, 
                 0x03, 
-                LP07, 
+                \LP07, 
                 0x00
             }
         })
_at__at_ -4701,7 +4701,7 _at__at_
             {
                 0x0001FFFF, 
                 0x00, 
-                LP00, 
+                \LP00, 
                 0x00
             }, 
 
_at__at_ -4709,7 +4709,7 _at__at_
             {
                 0x0001FFFF, 
                 0x01, 
-                LP01, 
+                \LP01, 
                 0x00
             }, 
 
_at__at_ -4717,7 +4717,7 _at__at_
             {
                 0x0001FFFF, 
                 0x02, 
-                LP00, 
+                \LP00, 
                 0x00
             }, 
 
_at__at_ -4725,7 +4725,7 _at__at_
             {
                 0x0001FFFF, 
                 0x03, 
-                LP01, 
+                \LP01, 
                 0x00
             }, 
 
_at__at_ -4733,7 +4733,7 _at__at_
             {
                 0x0008FFFF, 
                 0x00, 
-                LP0D, 
+                \LP0D, 
                 0x00
             }, 
 
_at__at_ -4741,7 +4741,7 _at__at_
             {
                 0x0008FFFF, 
                 0x01, 
-                LP0E, 
+                \LP0E, 
                 0x00
             }
         })
_at__at_ -4817,7 +4817,7 _at__at_
             {
                 0x0002FFFF, 
                 0x00, 
-                LP02, 
+                \LP02, 
                 0x00
             }, 
 
_at__at_ -4825,7 +4825,7 _at__at_
             {
                 0x0002FFFF, 
                 0x01, 
-                LP03, 
+                \LP03, 
                 0x00
             }, 
 
_at__at_ -4833,7 +4833,7 _at__at_
             {
                 0x0002FFFF, 
                 0x02, 
-                LP10, 
+                \LP10, 
                 0x00
             }, 
 
_at__at_ -4841,7 +4841,7 _at__at_
             {
                 0x0002FFFF, 
                 0x03, 
-                LP11, 
+                \LP11, 
                 0x00
             }, 
 
_at__at_ -4849,7 +4849,7 _at__at_
             {
                 0x0007FFFF, 
                 0x00, 
-                LP0B, 
+                \LP0B, 
                 0x00
             }, 
 
_at__at_ -4857,7 +4857,7 _at__at_
             {
                 0x0007FFFF, 
                 0x01, 
-                LP0C, 
+                \LP0C, 
                 0x00
             }
         })

-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Fri Jan 07 2005 - 16:59:43 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:25 UTC