Move initialization of MMCONF BAR to cache_as_ram setup phase, in order

to make sure MMCONF is set up before use.  Otherwise, PCI config
accesses run before init_cpus() will be lost if MMCONF is enabled
(unless explicitly done as port-based accesses).

This obsoletes removal of RES_PCI_IO, PCI_ADDR(0, 1, 0, 0x78) in
mcp55_early_setup, so reinsert.

Signed-off-by: Arne Georg Gleditsch <arne.gleditsch@numascale.com>
Acked-by: Myles Watson <mylesgw@gmail.com>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5810 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Arne Georg Gleditsch
2010-09-13 15:11:35 +00:00
committed by Myles Watson
parent d09d1f7846
commit e7a5b76a74
3 changed files with 16 additions and 35 deletions

View File

@@ -58,30 +58,6 @@ static void set_EnableCf8ExtCfg(void) { }
#endif
#define _ULLx(x) x ## ULL
#define _ULL(x) _ULLx(x)
/*[63:0] */
#define PCI_MMIO_BASE _ULL(CONFIG_MMCONF_BASE_ADDRESS)
static void set_pci_mmio_conf_reg(void)
{
#if CONFIG_MMCONF_SUPPORT
# if PCI_MMIO_BASE > 0xffffffff
# error CONFIG_MMCONF_BASE_ADDRESS must currently fit in 32 bits!
# endif
msr_t msr;
msr = rdmsr(0xc0010058);
msr.lo &= ~(0xfff00000 | (0xf << 2));
// 256 buses, one segment. Total 256M address space.
msr.lo |= (PCI_MMIO_BASE & 0xfff00000) | (8 << 2) | (1 << 0);
msr.hi &= ~(0x0000ffff);
msr.hi |= (PCI_MMIO_BASE >> (32));
wrmsr(0xc0010058, msr); // MMIO Config Base Address Reg
#endif
}
typedef void (*process_ap_t) (u32 apicid, void *gp);
//core_range = 0 : all cores
@@ -295,9 +271,6 @@ static u32 init_cpus(u32 cpu_init_detectedx)
* already set early mtrr in cache_as_ram.inc
*/
/* enable access pci conf via mmio */
set_pci_mmio_conf_reg();
/* that is from initial apicid, we need nodeid and coreid
later */
id = get_node_core_id_x();