diff options
Diffstat (limited to 'src/mainboard')
-rw-r--r-- | src/mainboard/tyan/s2850/auto.c | 13 | ||||
-rw-r--r-- | src/mainboard/tyan/s2850/failover.c | 5 | ||||
-rw-r--r-- | src/mainboard/tyan/s2875/auto.c | 14 | ||||
-rw-r--r-- | src/mainboard/tyan/s2875/failover.c | 5 | ||||
-rw-r--r-- | src/mainboard/tyan/s2880/auto.c | 14 | ||||
-rw-r--r-- | src/mainboard/tyan/s2880/failover.c | 6 | ||||
-rw-r--r-- | src/mainboard/tyan/s2881/auto.c | 15 | ||||
-rw-r--r-- | src/mainboard/tyan/s2881/failover.c | 5 | ||||
-rw-r--r-- | src/mainboard/tyan/s2882/auto.c | 14 | ||||
-rw-r--r-- | src/mainboard/tyan/s2882/failover.c | 9 | ||||
-rw-r--r-- | src/mainboard/tyan/s2885/auto.c | 22 | ||||
-rw-r--r-- | src/mainboard/tyan/s2885/failover.c | 9 | ||||
-rw-r--r-- | src/mainboard/tyan/s4880/auto.c | 14 | ||||
-rw-r--r-- | src/mainboard/tyan/s4880/failover.c | 9 |
14 files changed, 71 insertions, 83 deletions
diff --git a/src/mainboard/tyan/s2850/auto.c b/src/mainboard/tyan/s2850/auto.c index 0ab4286557..93578dac62 100644 --- a/src/mainboard/tyan/s2850/auto.c +++ b/src/mainboard/tyan/s2850/auto.c @@ -137,23 +137,18 @@ static void main(unsigned long bist) }; int needs_reset; + unsigned nodeid; if (bist == 0) { /* Skip this if there was a built in self test failure */ amd_early_mtrr_init(); enable_lapic(); init_timer(); - if (cpu_init_detected()) { -#if 1 + nodeid = lapicid() & 0xf; + if (cpu_init_detected(nodeid)) { asm volatile ("jmp __cpu_reset"); -#else - /* cpu reset also reset the memtroller ???? - need soft_reset to reset all except keep HT link freq and width */ - distinguish_cpu_resets(); - soft2_reset(); -#endif } - distinguish_cpu_resets(); + distinguish_cpu_resets(nodeid); if (!boot_cpu()) { stop_this_cpu(); } diff --git a/src/mainboard/tyan/s2850/failover.c b/src/mainboard/tyan/s2850/failover.c index 2f63cc85b7..e6ecb65c4d 100644 --- a/src/mainboard/tyan/s2850/failover.c +++ b/src/mainboard/tyan/s2850/failover.c @@ -13,11 +13,14 @@ static unsigned long main(unsigned long bist) { + unsigned nodeid; /* Make cerain my local apic is useable */ enable_lapic(); + + nodeid = lapicid() & 0xf; /* Is this a cpu only reset? */ - if (cpu_init_detected()) { + if (cpu_init_detected(nodeid)) { if (last_boot_normal()) { goto normal_image; } else { diff --git a/src/mainboard/tyan/s2875/auto.c b/src/mainboard/tyan/s2875/auto.c index ab19338a6e..6bbdaa9a43 100644 --- a/src/mainboard/tyan/s2875/auto.c +++ b/src/mainboard/tyan/s2875/auto.c @@ -165,24 +165,20 @@ static void main(unsigned long bist) }; int needs_reset; + unsigned nodeid; if (bist == 0) { /* Skip this if there was a built in self test failure */ amd_early_mtrr_init(); enable_lapic(); init_timer(); + + nodeid = lapicid() & 0xf; - if (cpu_init_detected()) { -#if 1 + if (cpu_init_detected(nodeid)) { asm volatile ("jmp __cpu_reset"); -#else - /* cpu reset also reset the memtroller ???? - need soft_reset to reset all except keep HT link freq and width */ - distinguish_cpu_resets(); - soft2_reset(); -#endif } - distinguish_cpu_resets(); + distinguish_cpu_resets(nodeid); if (!boot_cpu()) { stop_this_cpu(); } diff --git a/src/mainboard/tyan/s2875/failover.c b/src/mainboard/tyan/s2875/failover.c index 2f63cc85b7..e6ecb65c4d 100644 --- a/src/mainboard/tyan/s2875/failover.c +++ b/src/mainboard/tyan/s2875/failover.c @@ -13,11 +13,14 @@ static unsigned long main(unsigned long bist) { + unsigned nodeid; /* Make cerain my local apic is useable */ enable_lapic(); + + nodeid = lapicid() & 0xf; /* Is this a cpu only reset? */ - if (cpu_init_detected()) { + if (cpu_init_detected(nodeid)) { if (last_boot_normal()) { goto normal_image; } else { diff --git a/src/mainboard/tyan/s2880/auto.c b/src/mainboard/tyan/s2880/auto.c index 0c744f1039..6384f4d152 100644 --- a/src/mainboard/tyan/s2880/auto.c +++ b/src/mainboard/tyan/s2880/auto.c @@ -160,24 +160,20 @@ static void main(unsigned long bist) #endif }; int needs_reset; + unsigned nodeid; if (bist == 0) { /* Skip this if there was a built in self test failure */ amd_early_mtrr_init(); enable_lapic(); init_timer(); + + nodeid = lapicid() & 0xf; - if (cpu_init_detected()) { -#if 1 + if (cpu_init_detected(nodeid)) { asm volatile ("jmp __cpu_reset"); -#else - /* cpu reset also reset the memtroller ???? - need soft_reset to reset all except keep HT link freq and width */ - distinguish_cpu_resets(); - soft2_reset(); -#endif } - distinguish_cpu_resets(); + distinguish_cpu_resets(nodeid); if (!boot_cpu()) { stop_this_cpu(); } diff --git a/src/mainboard/tyan/s2880/failover.c b/src/mainboard/tyan/s2880/failover.c index 2f63cc85b7..e68164db7c 100644 --- a/src/mainboard/tyan/s2880/failover.c +++ b/src/mainboard/tyan/s2880/failover.c @@ -13,11 +13,15 @@ static unsigned long main(unsigned long bist) { + unsigned nodeid; + /* Make cerain my local apic is useable */ enable_lapic(); + + nodeid = lapicid() & 0xf; /* Is this a cpu only reset? */ - if (cpu_init_detected()) { + if (cpu_init_detected(nodeid)) { if (last_boot_normal()) { goto normal_image; } else { diff --git a/src/mainboard/tyan/s2881/auto.c b/src/mainboard/tyan/s2881/auto.c index b53f4ff078..e1161ac9a3 100644 --- a/src/mainboard/tyan/s2881/auto.c +++ b/src/mainboard/tyan/s2881/auto.c @@ -161,23 +161,20 @@ static void main(unsigned long bist) #endif }; int needs_reset; + unsigned nodeid; + if (bist == 0) { /* Skip this if there was a built in self test failure */ amd_early_mtrr_init(); enable_lapic(); init_timer(); - if (cpu_init_detected()) { -#if 1 + nodeid = lapicid() & 0xf; + + if (cpu_init_detected(nodeid)) { asm volatile ("jmp __cpu_reset"); -#else - /* cpu reset also reset the memtroller ???? - need soft_reset to reset all except keep HT link freq and width */ - distinguish_cpu_resets(); - soft2_reset(); -#endif } - distinguish_cpu_resets(); + distinguish_cpu_resets(nodeid); if (!boot_cpu()) { stop_this_cpu(); } diff --git a/src/mainboard/tyan/s2881/failover.c b/src/mainboard/tyan/s2881/failover.c index 2f63cc85b7..780b3052eb 100644 --- a/src/mainboard/tyan/s2881/failover.c +++ b/src/mainboard/tyan/s2881/failover.c @@ -13,11 +13,14 @@ static unsigned long main(unsigned long bist) { + unsigned nodeid; /* Make cerain my local apic is useable */ enable_lapic(); + nodeid = lapicid() & 0xf; + /* Is this a cpu only reset? */ - if (cpu_init_detected()) { + if (cpu_init_detected(nodeid)) { if (last_boot_normal()) { goto normal_image; } else { diff --git a/src/mainboard/tyan/s2882/auto.c b/src/mainboard/tyan/s2882/auto.c index 73aeda4107..db50fde657 100644 --- a/src/mainboard/tyan/s2882/auto.c +++ b/src/mainboard/tyan/s2882/auto.c @@ -167,6 +167,7 @@ static void main(unsigned long bist) }; int needs_reset; + unsigned nodeid; if (bist == 0) { /* Skip this if there was a built in self test failure */ @@ -174,17 +175,12 @@ static void main(unsigned long bist) enable_lapic(); init_timer(); - if (cpu_init_detected()) { -#if 1 + nodeid = lapicid() & 0xf; + + if (cpu_init_detected(nodeid)) { asm volatile ("jmp __cpu_reset"); -#else - /* cpu reset also reset the memtroller ???? - need soft_reset to reset all except keep HT link freq and width */ - distinguish_cpu_resets(); - soft2_reset(); -#endif } - distinguish_cpu_resets(); + distinguish_cpu_resets(nodeid); if (!boot_cpu()) { stop_this_cpu(); } diff --git a/src/mainboard/tyan/s2882/failover.c b/src/mainboard/tyan/s2882/failover.c index 2f63cc85b7..45315521ac 100644 --- a/src/mainboard/tyan/s2882/failover.c +++ b/src/mainboard/tyan/s2882/failover.c @@ -13,11 +13,14 @@ static unsigned long main(unsigned long bist) { - /* Make cerain my local apic is useable */ - enable_lapic(); + unsigned nodeid; + /* Make cerain my local apic is useable */ + enable_lapic(); + + nodeid = lapicid() & 0xf; /* Is this a cpu only reset? */ - if (cpu_init_detected()) { + if (cpu_init_detected(nodeid)) { if (last_boot_normal()) { goto normal_image; } else { diff --git a/src/mainboard/tyan/s2885/auto.c b/src/mainboard/tyan/s2885/auto.c index 723a6ec377..aacb4b007b 100644 --- a/src/mainboard/tyan/s2885/auto.c +++ b/src/mainboard/tyan/s2885/auto.c @@ -178,30 +178,20 @@ static void main(unsigned long bist) }; int needs_reset; + unsigned nodeid; + if (bist == 0) { /* Skip this if there was a built in self test failure */ amd_early_mtrr_init(); enable_lapic(); init_timer(); + + nodeid = lapicid() & 0xf; - if (cpu_init_detected()) { -#if 1 + if (cpu_init_detected(nodeid)) { asm volatile ("jmp __cpu_reset"); -#else - /* cpu reset also reset the memtroller ???? - need soft_reset to reset all except keep HT link freq and width */ - /* So we don't need to - 1. jmp to __cpu_reset - 2. jmp to __main to copy ROM to ram (It costs some time) - 3. call hardwaremain(), it will according to boot_complete to issue hard_reset in southbridge. - (Actually it is soft2_reset(); --- without call hard_reset, the memory is corrupted. - We will call soft2_reset directly to spare time in 1 and 2 and 3.2 - */ - distinguish_cpu_resets(); - soft2_reset(); -#endif } - distinguish_cpu_resets(); + distinguish_cpu_resets(nodeid); if (!boot_cpu()) { stop_this_cpu(); } diff --git a/src/mainboard/tyan/s2885/failover.c b/src/mainboard/tyan/s2885/failover.c index 2f63cc85b7..45315521ac 100644 --- a/src/mainboard/tyan/s2885/failover.c +++ b/src/mainboard/tyan/s2885/failover.c @@ -13,11 +13,14 @@ static unsigned long main(unsigned long bist) { - /* Make cerain my local apic is useable */ - enable_lapic(); + unsigned nodeid; + /* Make cerain my local apic is useable */ + enable_lapic(); + + nodeid = lapicid() & 0xf; /* Is this a cpu only reset? */ - if (cpu_init_detected()) { + if (cpu_init_detected(nodeid)) { if (last_boot_normal()) { goto normal_image; } else { diff --git a/src/mainboard/tyan/s4880/auto.c b/src/mainboard/tyan/s4880/auto.c index b083ce0c91..21855aa51c 100644 --- a/src/mainboard/tyan/s4880/auto.c +++ b/src/mainboard/tyan/s4880/auto.c @@ -228,6 +228,7 @@ static void main(unsigned long bist) }; int i; int needs_reset; + unsigned nodeid; if (bist == 0) { /* Skip this if there was a built in self test failure */ @@ -235,17 +236,12 @@ static void main(unsigned long bist) enable_lapic(); init_timer(); - if (cpu_init_detected()) { -#if 1 + nodeid = lapicid() & 0xf; + + if (cpu_init_detected(nodeid)) { asm volatile ("jmp __cpu_reset"); -#else - /* cpu reset also reset the memtroller ???? - need soft_reset to reset all except keep HT link freq and width */ - distinguish_cpu_resets(); - soft2_reset(); -#endif } - distinguish_cpu_resets(); + distinguish_cpu_resets(nodeid); if (!boot_cpu()) { stop_this_cpu(); } diff --git a/src/mainboard/tyan/s4880/failover.c b/src/mainboard/tyan/s4880/failover.c index 2f63cc85b7..45315521ac 100644 --- a/src/mainboard/tyan/s4880/failover.c +++ b/src/mainboard/tyan/s4880/failover.c @@ -13,11 +13,14 @@ static unsigned long main(unsigned long bist) { - /* Make cerain my local apic is useable */ - enable_lapic(); + unsigned nodeid; + /* Make cerain my local apic is useable */ + enable_lapic(); + + nodeid = lapicid() & 0xf; /* Is this a cpu only reset? */ - if (cpu_init_detected()) { + if (cpu_init_detected(nodeid)) { if (last_boot_normal()) { goto normal_image; } else { |