From patchwork Wed Nov 4 22:37:43 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Fwd:,Re:,[Fwd:,Re:,[Fwd:,Re:,arima,hdama,problem] ]] Date: Wed, 04 Nov 2009 22:37:43 -0000 From: Hugh Greenberg X-Patchwork-Id: 535 Message-Id: <4AF20237.6030904@lanl.gov> To: Myles Watson Cc: coreboot Attached is the output from svn diff. I'll test it with gcc 4.4 and let you know if it hangs or not. Index: src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c =================================================================== --- src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c (revision 4887) +++ src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c (working copy) @@ -50,6 +50,7 @@ #include "southbridge/amd/amd8111/amd8111_early_smbus.c" #include "northbridge/amd/amdk8/raminit.h" #include "cpu/amd/model_fxx/apic_timer.c" +#include "northbridge/amd/amdk8/util.c" #endif @@ -393,6 +394,7 @@ dump_pci_device_index_wait(PCI_DEV(0, 0x19, 2), 0x98); #endif + showallroutes(BIOS_DEBUG, PCI_DEV(0, 0x18, 1)); post_cache_as_ram(); // bsp swtich stack to ram and copy sysinfo ram now } Index: src/mainboard/arima/hdama/Kconfig =================================================================== --- src/mainboard/arima/hdama/Kconfig (revision 4887) +++ src/mainboard/arima/hdama/Kconfig (working copy) @@ -73,7 +73,7 @@ config SB_HT_CHAIN_ON_BUS0 int - default 0 + default 1 depends on BOARD_ARIMA_HDAMA config HT_CHAIN_END_UNITID_BASE Index: src/mainboard/arima/hdama/mptable.c =================================================================== --- src/mainboard/arima/hdama/mptable.c (revision 4887) +++ src/mainboard/arima/hdama/mptable.c (working copy) @@ -65,7 +65,7 @@ dev = dev_find_slot(0, PCI_DEVFN(0x18, 1)); if (!dev) { - return 0; + return 0xff; } for(reg = 0xE0; reg < 0xF0; reg += 0x04) { uint32_t config_map; @@ -89,7 +89,7 @@ return bus_base; } } - return 0; + return 0xff; } unsigned max_apicid(void) @@ -152,9 +152,9 @@ /* HT chain 0 */ bus_chain_0 = node_link_to_bus(0, 0); - if (bus_chain_0 == 0) { + if (bus_chain_0 == 0xff) { printk_debug("ERROR - cound not find bus for node 0 chain 0, using defaults\n"); - bus_chain_0 = 1; + bus_chain_0 = 0; } /* 8111 */ @@ -165,7 +165,7 @@ bus_isa++; } else { - printk_debug("ERROR - could not find PCI 1:03.0, using defaults\n"); + printk_debug("ERROR - could not find PCI %02x:03.0, using defaults\n", bus_chain_0); bus_8111_1 = 4; bus_isa = 5; @@ -177,7 +177,7 @@ } else { - printk_debug("ERROR - could not find PCI 1:01.0, using defaults\n"); + printk_debug("ERROR - could not find PCI %02x:01.0, using defaults\n", bus_chain_0); bus_8131_1 = 2; } @@ -188,7 +188,7 @@ } else { - printk_debug("ERROR - could not find PCI 1:02.0, using defaults\n"); + printk_debug("ERROR - could not find PCI %02x:02.0, using defaults\n", bus_chain_0); bus_8131_2 = 3; } @@ -327,16 +327,21 @@ int reset; int i; + unsigned char bus_chain_0 = node_link_to_bus(0, 0); reset = 0; printk_debug("Looking for bad PCIX MHz input\n"); - dev = dev_find_slot(1, PCI_DEVFN(0x02,0)); + dev = dev_find_slot(bus_chain_0, PCI_DEVFN(0x02,0)); + if (!dev) + printk_debug("Couldn't find %02x:02.0 \n", bus_chain_0); data = pci_read_config32(dev, 0xa0); if(!(((data>>16)&0x03)==0x03)) { reset=1; printk_debug("Bad PCIX MHz - Reset\n"); } printk_debug("Looking for bad Hot Swap Enable\n"); - dev = dev_find_slot(1, PCI_DEVFN(0x01,0)); + dev = dev_find_slot(bus_chain_0, PCI_DEVFN(0x01,0)); + if (!dev) + printk_debug("Couldn't find %02x:01.0 \n", bus_chain_0); data = pci_read_config32(dev, 0x48); if(data & 0x0c) { reset=1; Index: src/mainboard/arima/hdama/cache_as_ram_auto.c =================================================================== --- src/mainboard/arima/hdama/cache_as_ram_auto.c (revision 4887) +++ src/mainboard/arima/hdama/cache_as_ram_auto.c (working copy) @@ -19,6 +19,7 @@ #include "southbridge/amd/amd8111/amd8111_early_smbus.c" #include "northbridge/amd/amdk8/raminit.h" #include "cpu/amd/model_fxx/apic_timer.c" +#include "northbridge/amd/amdk8/util.c" #include "lib/delay.c" #include "cpu/x86/lapic/boot_cpu.c" @@ -213,5 +214,6 @@ sdram_initialize(nodes, ctrl); + showallroutes(BIOS_DEBUG, PCI_DEV(0, 0x18, 1)); post_cache_as_ram(); } Index: src/northbridge/amd/amdk8/Makefile.inc =================================================================== --- src/northbridge/amd/amdk8/Makefile.inc (revision 4887) +++ src/northbridge/amd/amdk8/Makefile.inc (working copy) @@ -2,6 +2,7 @@ driver-y += misc_control.o obj-y += get_sblk_pci1234.o obj-$(CONFIG_GENERATE_ACPI_TABLES) += amdk8_acpi.o +obj-y += util.o # Not sure what to do with these yet. How did raminit_test even work? # Should be a target in -y form. Index: src/northbridge/amd/amdk8/northbridge.c =================================================================== --- src/northbridge/amd/amdk8/northbridge.c (revision 4887) +++ src/northbridge/amd/amdk8/northbridge.c (working copy) @@ -575,6 +575,7 @@ #if 0 printk_debug("NB: Function 0 Misc Control.. "); #endif + showallroutes(BIOS_DEBUG, dev_find_slot(0, PCI_DEVFN(0x18,1))); #if 0 printk_debug("done.\n"); #endif @@ -1075,6 +1076,7 @@ } assign_resources(&dev->link[0]); + showallroutes(BIOS_DEBUG, dev_find_slot(0, PCI_DEVFN(0x18,1))); } static unsigned int amdk8_domain_scan_bus(device_t dev, unsigned int max) Index: src/northbridge/amd/amdk8/amdk8.h =================================================================== --- src/northbridge/amd/amdk8/amdk8.h (revision 4887) +++ src/northbridge/amd/amdk8/amdk8.h (working copy) @@ -8,4 +8,6 @@ #include "amdk8_pre_f.h" #endif +void showallroutes(int level, device_t dev); + #endif /* AMDK8_H */ Index: src/arch/i386/lib/pci_ops_auto.c =================================================================== --- src/arch/i386/lib/pci_ops_auto.c (revision 4887) +++ src/arch/i386/lib/pci_ops_auto.c (working copy) @@ -47,6 +47,9 @@ { unsigned int tmp; + printk_debug("%s\n", __func__); + printk_debug("PCI: Forcing configuration type 1\n"); + return &pci_cf8_conf1; /* * Check if configuration type 1 works. */