Subject: Re: MPACPI fix (for those who had trouble with it, urgent!)
To: None <current-users@netbsd.org, port-i386@netbsd.org,>
From: Takayoshi Kochi <kochi@netbsd.org>
List: port-amd64
Date: 05/16/2004 22:45:09
Hi,

Thanks for everyone who tested the patches!

It seems that the new mpacpi.c seems *no worse* than the old one.
From reports, I identified a couple of problems so far:

 1. On some nForce2 motherboards, interrupts are not configured correctly
 2. ASUS P4P800 motherboard gets interrupt routing wrong

for 1, the PCI interrupt routing table describes what we don't
expect now.  As the borads are for uni-processor, it can be
worked around by not enabling MPACPI (and ioapics).  But this
should be fixed.  If someone who wants to help implementing this,
I can share the information about what's missing.

for 2, I haven't had any idea what's wrong in the mpacpi.c code,
though I already have enough information to investigate (Thanks
to Martin Husemann).  This looks really wierd, as I have a similar
(P4HT-based, ICH5 southbridge) motherboard and it works fine
and don't see much difference yet.

As I have seen other two P4P800 users on the list seeing mpacpi.c
panic and as P4P800 are very popular motherboards, I'd like to
fix this problem first.

If you have any P4P800 or its variants and have time to test
the patch, these information would be very appreciated:

0. success or failure :)

1. apcidump output
   acpidump can be obtained from pkgsrc/sysutils/acpidump.

   % acpidump -o acpi.aml > acpi.asl

   Please send both acpi.aml and acpi.asl.

2. full dmesg output with 'options MPVERBOSE'

3. 'lspci -vvv' (PCI device information) output
   lspci can be obtained from pkgsrc/sysutils/pciutils

4. 'vmstat -i' (interrupt statistics) output
   After boot, test something (like fiddling with ethernet, filesystem etc),
   then get output.

Of course, if you don't have P4P800 or its variants but having
trouble with MPACPI, these information are very helpful to identify
the problem.

---
Takayoshi Kochi


From: Takayoshi Kochi <kochi@netbsd.org>
Subject: Re: MPACPI fix (for those who had trouble with it, urgent!)
Date: Wed, 05 May 2004 23:43:52 +0900 (JST)

> Hi,
> 
> While looking into interrupt related problems, I found a bug
> in arch/x86/x86/intr.c, which can result in wrong interrupt
> routing for devices behind PCI-to-PCI bridge (with MPACPI or
> MPBIOS).
> 
> For -current, I commited the fix (in rev 1.16) and issued
> a pullup request for 2.0.  The patch is attached to this mail.
> 
> Also, I found a corner case in MPACPI when a card containing
> PCI-to-PCI bridge is inserted in the last PCI bus.
> 
> For example, pci0..pci2 is found in ACPI namespace, mp_busses[]
> will be:
> 
> mp_busses[0] : PCI
> mp_busses[1] : PCI
> mp_busses[2] : PCI
> mp_busses[3] : ISA
> 
> and if a PCI-to-PCI bridge card is on the bus2, the secondary bus
> number will be 3.  Then interrupt routing code gets confused.
> 
> I think ideally we would like to have separate arrays for each type
> of busses, but it requires agreement with others and somewhat big
> change.  So I don't think this will eligible for 2.0.
> 
> So I workaround this by adding some space between last PCI bus
> and ISA to accomodate some PCI-to-PCI busses.
> The revised mpacpi.c is attached.
> 
> This arch/x86/x86/mpacpi.c works for both -current and 2.0_BETA.
> 
> Comments, test reports are welcome.
> ---
> Takayoshi Kochi