We did together some patch which makes finally a MMCONFIG workable in
authorRudolf Marek <r.marek@assembler.cz>
Thu, 23 Jul 2009 08:10:51 +0000 (08:10 +0000)
committerRudolf Marek <r.marek@assembler.cz>
Thu, 23 Jul 2009 08:10:51 +0000 (08:10 +0000)
linux out of the box. There were two problems. First was that the
mmconfig ACPI structure was empty because of cut and paste (PCI ID of
K8M890 is different).

Second problem is now nicely solvable by add_region. Linux expects that
the mmconfig region is found as reserved memory. Otherwise it does not
trust it.

Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Acked-by: Luc Verhaegen <libv@skynet.be>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4464 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/mainboard/asus/m2v-mx_se/acpi_tables.c
src/mainboard/asus/m2v-mx_se/mainboard.c

index 606321791ec21ce93ac20c221efbebb751c76d8a..ca1327af51179ea2b4d9d73d48568ceb92c7b81a 100644 (file)
@@ -40,7 +40,7 @@ unsigned long acpi_fill_mcfg(unsigned long current)
        device_t dev;
        struct resource *res;
 
-       dev = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_K8T890CE_5, 0);
+       dev = dev_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_K8M890CE_5, 0);
        if (!dev)
                return current;
 
index c68fe6174bcfc2fdfea4a708ea7b24a5eaae9034..d25a8edf0481c010e67128441f6cae005d8c9ed2 100644 (file)
 #include <device/pci_ids.h>
 #include <boot/tables.h>
 #include "chip.h"
+#include <../../../southbridge/via/k8t890/k8t890.h>
 
 int add_mainboard_resources(struct lb_memory *mem)
 {
+       device_t dev;
+
+       dev = dev_find_device(PCI_VENDOR_ID_VIA,
+                             PCI_DEVICE_ID_VIA_K8M890CE_5, 0);
+       if (dev) {
+               struct resource *res =
+                       find_resource(dev, K8T890_MMCONFIG_MBAR);
+               if (res)
+                       lb_add_memory_range(mem, LB_MEM_RESERVED, res->base,
+                                           res->size);
+       }
+
 #if CONFIG_HAVE_ACPI_RESUME == 1
        lb_add_memory_range(mem, LB_MEM_RESERVED,
                CONFIG_RAMBASE, ((CONFIG_LB_MEM_TOPK<<10) - CONFIG_RAMBASE));