NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: port-amd64/30654: Not all PCI busses configured on Tyan Thunder K8WE when using ACPI



On Thu, May 22, 2008 at 08:35:05PM +0000, Joerg Sonnenberger wrote:
> The following reply was made to PR port-amd64/30654; it has been noted by 
> GNATS.
> 
> From: Joerg Sonnenberger <joerg%NetBSD.org@localhost>
> To: gnats-bugs%NetBSD.org@localhost
> Cc: 
> Subject: Re: port-amd64/30654: Not all PCI busses configured on Tyan
>       Thunder K8WE when using ACPI
> Date: Thu, 22 May 2008 20:33:31 +0000
> 
>  On Sat, Jan 19, 2008 at 02:30:03PM +0000, Nicolas Joly wrote:
>  >  The problem is that the DSDT is missing the PCI Routing Table (_PRT)
>  >  for this bus, which is AFAIK mandatory.
>  >  
>  >      Device(PCIB) {
>  >          Name(_HID, 0x030ad041)
>  >          Name(_ADR, 0x00180000)
>  >          Method(^BN0B) {
>  >              Return(0x0)
>  >          }
>  >          Method(_BBN) {
>  >              Return(BN0B())
>  >          }
>  >          Name(_UID, 0xb)
>  >          Device(PBP2) {
>  >              Name(_ADR, 0x00010000)
>  >              Method(_PRT) {
>  >                  If(PICM) {
>  >                      Return(AR02)
>  >                  }
>  >                  Return(PR02)
>  >              }
>  >          }
>  >      }
>  
>  Actually, even more suspicious is the _BBN value. Does the main PCI
>  bridge have the same value of 0? I think this is the same problem
>  Martin Husemann reported in a slightly different configuration.

Exact, both use the same _BBN value of 0.

    Device(PCI0) {
        Name(_HID, 0x030ad041)
        Name(_ADR, 0x00180002)
        Name(_BBN, 0x00)
        Name(_UID, 0x00)
        Method(_PRT) {
            If(PICM) {
                Return(AR00)
            }
            Return(PR00)
        }

In the mean tine, i already made a slightly modified DSDT version
which use 0 for PCI0, and 1 for PCIB, but this does not makes any
difference ...

Before any _BBN problem can arise, we fail to detect PCI busses that
do not have _PRT from sys/arch/x86/x86/mpacpi.c in mpacpi_pcibus_cb():

        /* try get _PRT. if this fails, we're not interested in it */
        rv = acpi_get(handle, &mpr->mpr_buf, AcpiGetIrqRoutingTable);
        if (ACPI_FAILURE(rv)) {
                free(mpr, M_TEMP);
                goto out;
        }

-- 
Nicolas Joly

Biological Software and Databanks.
Institut Pasteur, Paris.


Home | Main Index | Thread Index | Old Index