We did together some patch which makes finally a MMCONFIG workable in

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
This commit is contained in:
Rudolf Marek 2009-07-23 08:10:51 +00:00
parent 8dee52d7a8
commit b2bd9963a5
2 changed files with 14 additions and 1 deletions

View File

@ -40,7 +40,7 @@ unsigned long acpi_fill_mcfg(unsigned long current)
device_t dev; device_t dev;
struct resource *res; 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) if (!dev)
return current; return current;

View File

@ -22,9 +22,22 @@
#include <device/pci_ids.h> #include <device/pci_ids.h>
#include <boot/tables.h> #include <boot/tables.h>
#include "chip.h" #include "chip.h"
#include <../../../southbridge/via/k8t890/k8t890.h>
int add_mainboard_resources(struct lb_memory *mem) 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 #if CONFIG_HAVE_ACPI_RESUME == 1
lb_add_memory_range(mem, LB_MEM_RESERVED, lb_add_memory_range(mem, LB_MEM_RESERVED,
CONFIG_RAMBASE, ((CONFIG_LB_MEM_TOPK<<10) - CONFIG_RAMBASE)); CONFIG_RAMBASE, ((CONFIG_LB_MEM_TOPK<<10) - CONFIG_RAMBASE));