Submitter | Myles Watson |
---|---|
Date | 2009-10-20 21:14:54 |
Message ID | <2831fecf0910201414ve1ac7b7pb6cd8569a1676029@mail.gmail.com> |
Download | mbox | patch |
Permalink | /patch/446/ |
State | Superseded |
Headers | show |
Comments
Ok, here is the output: coreboot-2.3 Tue Oct 20 15:20:40 MDT 2009 starting... Enabling routing table for node 00 done. Enabling UP settings Disabling read/write/fill probes for UP... done. coherent_ht_finalize done started ap apicid: SBLink=00 NC node|link=00 entering ht_optimize_link pos=0x8a, unfiltered freq_cap=0x8075 pos=0x8a, filtered freq_cap=0x35 pos=0xce, unfiltered freq_cap=0x35 freq_cap1=0x35, freq_cap2=0x15 dev1 old_freq=0x0, freq=0x4, needs_reset=0x1 dev2 old_freq=0x0, freq=0x4, needs_reset=0x1 width_cap1=0x11, width_cap2=0x11 dev1 input ln_width1=0x4, ln_width2=0x4 dev1 input width=0x1 dev1 output ln_width1=0x4, ln_width2=0x4 dev1 input|output width=0x11 old dev1 input|output width=0x11 dev2 input|output width=0x11 old dev2 input|output width=0x11 entering ht_optimize_link pos=0xd2, unfiltered freq_cap=0x35 pos=0xce, unfiltered freq_cap=0x1 pos=0xce, filtered freq_cap=0x1 freq_cap1=0x15, freq_cap2=0x1 dev1 old_freq=0x0, freq=0x0, needs_reset=0x0 dev2 old_freq=0x0, freq=0x0, needs_reset=0x0 width_cap1=0x0, width_cap2=0x0 dev1 input ln_width1=0x3, ln_width2=0x3 dev1 input width=0x0 dev1 output ln_width1=0x3, ln_width2=0x3 dev1 input|output width=0x0 old dev1 input|output width=0x0 dev2 input|output width=0x0 old dev2 input|output width=0x0 ht reset - coreboot-2.3 Tue Oct 20 15:20:40 MDT 2009 starting... Enabling routing table for node 00 done. Enabling UP settings Disabling read/write/fill probes for UP... done. coherent_ht_finalize done started ap apicid: SBLink=00 NC node|link=00 entering ht_optimize_link pos=0x8a, unfiltered freq_cap=0x8075 pos=0x8a, filtered freq_cap=0x35 pos=0xce, unfiltered freq_cap=0x35 freq_cap1=0x35, freq_cap2=0x15 dev1 old_freq=0x4, freq=0x4, needs_reset=0x0 dev2 old_freq=0x4, freq=0x4, needs_reset=0x0 width_cap1=0x11, width_cap2=0x11 dev1 input ln_width1=0x4, ln_width2=0x4 dev1 input width=0x1 dev1 output ln_width1=0x4, ln_width2=0x4 dev1 input|output width=0x11 old dev1 input|output width=0x11 dev2 input|output width=0x11 old dev2 input|output width=0x11 entering ht_optimize_link pos=0xd2, unfiltered freq_cap=0x35 pos=0xce, unfiltered freq_cap=0x1 pos=0xce, filtered freq_cap=0x1 freq_cap1=0x15, freq_cap2=0x1 dev1 old_freq=0x0, freq=0x0, needs_reset=0x0 dev2 old_freq=0x0, freq=0x0, needs_reset=0x0 width_cap1=0x0, width_cap2=0x0 dev1 input ln_width1=0x3, ln_width2=0x3 dev1 input width=0x0 dev1 output ln_width1=0x3, ln_width2=0x3 dev1 input|output width=0x0 old dev1 input|output width=0x0 dev2 input|output width=0x0 old dev2 input|output width=0x0 SMBus controller enabled Ram1.00 setting up CPU00 northbridge registers done. Ram2.00 Enabling dual channel memory Registered 166Mhz RAM end at 0x00100000 kB Lower RAM end at 0x00100000 kB Ram3 Before starting clocks: Before memreset:
Patch
Index: svn/src/lib/generic_sdram.c =================================================================== --- svn.orig/src/lib/generic_sdram.c +++ svn/src/lib/generic_sdram.c @@ -58,6 +58,7 @@ void sdram_initialize(int controllers, c print_debug("Ram3\r\n"); #if RAMINIT_SYSINFO == 1 + #error "RAMINIT_SYSINFO set " sdram_enable(controllers, ctrl, sysinfo); #else sdram_enable(controllers, ctrl); Index: svn/src/mainboard/arima/hdama/cache_as_ram_auto.c =================================================================== --- svn.orig/src/mainboard/arima/hdama/cache_as_ram_auto.c +++ svn/src/mainboard/arima/hdama/cache_as_ram_auto.c @@ -157,33 +157,22 @@ void cache_as_ram_main(unsigned long bis void real_main(unsigned long bist, unsigned long cpu_init_detectedx) { - static const struct mem_controller cpu[] = { - { - .node_id = 0, - .f0 = PCI_DEV(0, 0x18, 0), - .f1 = PCI_DEV(0, 0x18, 1), - .f2 = PCI_DEV(0, 0x18, 2), - .f3 = PCI_DEV(0, 0x18, 3), - .channel0 = { (0xa<<3)|0, (0xa<<3)|2, 0, 0 }, - .channel1 = { (0xa<<3)|1, (0xa<<3)|3, 0, 0 }, - }, + static const uint16_t spd_addr [] = { + (0xa<<3)|0, (0xa<<3)|2, 0, 0, + (0xa<<3)|1, (0xa<<3)|3, 0, 0, #if CONFIG_MAX_PHYSICAL_CPUS > 1 - { - .node_id = 1, - .f0 = PCI_DEV(0, 0x19, 0), - .f1 = PCI_DEV(0, 0x19, 1), - .f2 = PCI_DEV(0, 0x19, 2), - .f3 = PCI_DEV(0, 0x19, 3), - .channel0 = { (0xa<<3)|4, (0xa<<3)|6, 0, 0 }, - .channel1 = { (0xa<<3)|5, (0xa<<3)|7, 0, 0 }, - }, + (0xa<<3)|4, (0xa<<3)|6, 0, 0, + (0xa<<3)|5, (0xa<<3)|7, 0, 0, #endif }; int needs_reset; + unsigned bsp_apicid = 0; + struct mem_controller ctrl[8]; + unsigned nodes; if (bist == 0) { - init_cpus(cpu_init_detectedx); + bsp_apicid = init_cpus(cpu_init_detectedx); } pc87360_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); @@ -200,6 +189,7 @@ void real_main(unsigned long bist, unsig #if CONFIG_LOGICAL_CPUS==1 // It is said that we should start core1 after all core0 launched start_other_cores(); + wait_all_other_cores_started(bsp_apicid); #endif // automatically set that for you, but you might meet tight space needs_reset |= ht_setup_chains_x(); @@ -209,11 +199,17 @@ void real_main(unsigned long bist, unsig soft_reset(); } + allow_all_aps_stop(bsp_apicid); + + nodes = get_nodes(); + + fill_mem_ctrl(nodes, ctrl, spd_addr); + enable_smbus(); memreset_setup(); - sdram_initialize(ARRAY_SIZE(cpu), cpu); - post_cache_as_ram(); + sdram_initialize(nodes, ctrl); + post_cache_as_ram(); } Index: svn/src/northbridge/amd/amdk8/raminit.c =================================================================== --- svn.orig/src/northbridge/amd/amdk8/raminit.c +++ svn/src/northbridge/amd/amdk8/raminit.c @@ -2237,6 +2237,7 @@ static void sdram_enable(int controllers die("No memory\n"); } + printk_debug("Before starting clocks: "); /* Before enabling memory start the memory clocks */ for (i = 0; i < controllers; i++) { uint32_t dch; @@ -2256,10 +2257,12 @@ static void sdram_enable(int controllers } } + printk_debug("Before memreset: "); /* We need to wait a minimum of 20 MEMCLKS to enable the InitDram */ /* And if necessary toggle the the reset on the dimms by hand */ memreset(controllers, ctrl); + printk_debug("Before controllers loop: "); for (i = 0; i < controllers; i++) { uint32_t dcl, dch; if (!controller_present(ctrl + i)) @@ -2292,6 +2295,7 @@ static void sdram_enable(int controllers pci_write_config32(ctrl[i].f2, DRAM_CONFIG_LOW, dcl); } + printk_debug("Before 2nd controllers loop: "); for (i = 0; i < controllers; i++) { uint32_t dcl, dch; if (!controller_present(ctrl + i)) @@ -2328,6 +2332,7 @@ static void sdram_enable(int controllers printk_debug(" done\n"); } + printk_debug("Before hole: "); #if CONFIG_HW_MEM_HOLE_SIZEK != 0 // init hw mem hole here /* DramHoleValid bit only can be set after MemClrStatus is set by Hardware */