On Sun, Dec 14, 2014 at 06:22:37PM +0100, Hrvoje Popovski wrote:
> Hi all,
> 
> I have got two new Dell R630 and have current on them from Sun Dec
> 14 15:07:17. Installation went great and very fast.
> The problem is that I see around 11k interrupts on acpi0. First I
> thought that problem is similar to this thread
> http://marc.info/?l=openbsd-misc&m=140551906923931&w=2
> 
> But if in dell bios system profile settings is set to performance or
> to DAPC there are always interrupts on acpi0.
> In links bellow you can find acpidump and dmesg from performance and
> DAPC settings in dell bios.

We just got some r630s too, so I spent some time last week figuring out what's
going on here.  Something in the AML wants to talk to the intel MEI device.
Normally this works, but on the new generation of dell machines (we've seen it
on r630s and r730s), it's been moved outside the pci memory range we currently
allow on amd64.  You can see this in your dmesgs:

0:22:0: mem address conflict 0x33ffff03000/0x10
0:22:1: mem address conflict 0x33ffff02000/0x10

The interrupt will keep triggering until it manages to talk to the device,
which will never happen.

kettenis@ says we can get the pci memory range information we need to deal with
this from acpi.  Until that happens, expanding the allowed pci memory range
makes things work properly.

ok?


Index: pci_machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/pci/pci_machdep.c,v
retrieving revision 1.59
diff -u -p -u -p -r1.59 pci_machdep.c
--- pci_machdep.c       19 Apr 2014 11:53:42 -0000      1.59
+++ pci_machdep.c       16 Dec 2014 04:21:53 -0000
@@ -622,13 +622,17 @@ pci_init_extents(void)
                 * here.  As long as vendors continue to support
                 * 32-bit operating systems, we should never see BARs
                 * outside that region.
+                *
+                * Dell 13G servers have important devices outside the
+                * 36-bit address space.  Until we can extract the address
+                * ranges from acpi, expand the allowed range to suit.
                 */
                pcimem_ex = extent_create("pcimem", 0, 0xffffffffffffffffUL,
                    M_DEVBUF, NULL, 0, EX_NOWAIT);
                if (pcimem_ex == NULL)
                        return;
-               extent_alloc_region(pcimem_ex, 0x1000000000UL,
-                   0xfffffff000000000UL, EX_NOWAIT);
+               extent_alloc_region(pcimem_ex, 0x40000000000UL,
+                   0xfffffc0000000000UL, EX_NOWAIT);
 
                for (bmp = bios_memmap; bmp->type != BIOS_MAP_END; bmp++) {
                        /*

Reply via email to