summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/tyan/s2850/auto.c13
-rw-r--r--src/mainboard/tyan/s2850/failover.c5
-rw-r--r--src/mainboard/tyan/s2875/auto.c14
-rw-r--r--src/mainboard/tyan/s2875/failover.c5
-rw-r--r--src/mainboard/tyan/s2880/auto.c14
-rw-r--r--src/mainboard/tyan/s2880/failover.c6
-rw-r--r--src/mainboard/tyan/s2881/auto.c15
-rw-r--r--src/mainboard/tyan/s2881/failover.c5
-rw-r--r--src/mainboard/tyan/s2882/auto.c14
-rw-r--r--src/mainboard/tyan/s2882/failover.c9
-rw-r--r--src/mainboard/tyan/s2885/auto.c22
-rw-r--r--src/mainboard/tyan/s2885/failover.c9
-rw-r--r--src/mainboard/tyan/s4880/auto.c14
-rw-r--r--src/mainboard/tyan/s4880/failover.c9
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 {