[coreboot] Patch set updated for coreboot: eae1696 mptable: Get rid of fixup_virtual_wire

Patrick Georgi (patrick@georgi-clan.de) gerrit at coreboot.org
Fri Oct 7 23:08:36 CEST 2011


Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/245

-gerrit

commit eae1696809d6e6834d08ef22aa08c8f200870c59
Author: Patrick Georgi <patrick at georgi-clan.de>
Date:   Fri Oct 7 22:41:07 2011 +0200

    mptable: Get rid of fixup_virtual_wire
    
    As stated in some code files, fixup_virtual_wire was established
    to avoid touching 200 invocations of the mptable code.
    
    Let Coccinelle do it:
      @@
      type T;
      identifier v;
      @@
      -void fixup_virtual_wire(T v)
      -{ ... }
    
      @@
      expression A;
      identifier v;
      @@
      -v = smp_write_floating_table(A);
      +v = smp_write_floating_table(A, 0);
    
      @@
      expression A;
      identifier v;
      @@
      -v = smp_write_floating_table(A, 0);
      -fixup_virtual_wire(v);
      +v = smp_write_floating_table(A, 1);
    
    Change-Id: Icad8a063380bf4726be7cebb414d13b574112b14
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
 src/arch/x86/boot/mpspec.c                         |   18 +++++++++---------
 src/arch/x86/include/arch/smp/mpspec.h             |    4 +---
 src/mainboard/advansus/a785e-i/mptable.c           |    2 +-
 src/mainboard/amd/bimini_fam10/mptable.c           |    2 +-
 src/mainboard/amd/dbm690t/mptable.c                |    2 +-
 src/mainboard/amd/inagua/mptable.c                 |    2 +-
 src/mainboard/amd/mahogany/mptable.c               |    2 +-
 src/mainboard/amd/mahogany_fam10/mptable.c         |    2 +-
 src/mainboard/amd/persimmon/mptable.c              |    2 +-
 src/mainboard/amd/pistachio/mptable.c              |    2 +-
 src/mainboard/amd/serengeti_cheetah/mptable.c      |    2 +-
 .../amd/serengeti_cheetah_fam10/mptable.c          |    2 +-
 src/mainboard/amd/tilapia_fam10/mptable.c          |    2 +-
 src/mainboard/amd/torpedo/mptable.c                |    2 +-
 src/mainboard/arima/hdama/mptable.c                |    2 +-
 src/mainboard/asrock/939a785gmh/mptable.c          |    2 +-
 src/mainboard/asrock/e350m1/mptable.c              |    2 +-
 src/mainboard/asus/a8n_e/mptable.c                 |    2 +-
 src/mainboard/asus/a8v-e_deluxe/mptable.c          |    2 +-
 src/mainboard/asus/a8v-e_se/mptable.c              |    2 +-
 src/mainboard/asus/m2n-e/mptable.c                 |    2 +-
 src/mainboard/asus/m2v/mptable.c                   |    2 +-
 src/mainboard/asus/m4a78-em/mptable.c              |    2 +-
 src/mainboard/asus/m4a785-m/mptable.c              |    2 +-
 src/mainboard/asus/p2b-d/mptable.c                 |    2 +-
 src/mainboard/asus/p2b-ds/mptable.c                |    2 +-
 src/mainboard/avalue/eax-785e/mptable.c            |    2 +-
 src/mainboard/broadcom/blast/mptable.c             |    2 +-
 src/mainboard/dell/s1850/mptable.c                 |    2 +-
 src/mainboard/getac/p470/mptable.c                 |    2 +-
 src/mainboard/gigabyte/ga_2761gxdk/mptable.c       |    2 +-
 src/mainboard/gigabyte/m57sli/mptable.c            |    2 +-
 src/mainboard/gigabyte/ma785gmt/mptable.c          |    2 +-
 src/mainboard/gigabyte/ma78gm/mptable.c            |    2 +-
 src/mainboard/hp/dl145_g1/mptable.c                |    2 +-
 src/mainboard/hp/dl145_g3/mptable.c                |    2 +-
 src/mainboard/hp/dl165_g6_fam10/mptable.c          |    2 +-
 src/mainboard/ibase/mb899/mptable.c                |   19 +------------------
 src/mainboard/ibm/e325/mptable.c                   |    2 +-
 src/mainboard/ibm/e326/mptable.c                   |    2 +-
 src/mainboard/iei/kino-780am2-fam10/mptable.c      |    2 +-
 src/mainboard/intel/d945gclf/mptable.c             |    2 +-
 src/mainboard/intel/eagleheights/mptable.c         |    2 +-
 src/mainboard/intel/jarrell/mptable.c              |    2 +-
 src/mainboard/intel/mtarvon/mptable.c              |    2 +-
 src/mainboard/intel/truxton/mptable.c              |    2 +-
 src/mainboard/intel/xe7501devkit/mptable.c         |    2 +-
 src/mainboard/iwave/iWRainbowG6/mptable.c          |    2 +-
 src/mainboard/iwill/dk8_htx/mptable.c              |    2 +-
 src/mainboard/iwill/dk8s2/mptable.c                |    2 +-
 src/mainboard/iwill/dk8x/mptable.c                 |    2 +-
 src/mainboard/jetway/pa78vm5/mptable.c             |    2 +-
 src/mainboard/kontron/986lcd-m/mptable.c           |   19 +------------------
 src/mainboard/kontron/kt690/mptable.c              |    2 +-
 src/mainboard/lenovo/t60/mptable.c                 |    2 +-
 src/mainboard/lenovo/x60/mptable.c                 |    2 +-
 src/mainboard/msi/ms7135/mptable.c                 |    2 +-
 src/mainboard/msi/ms7260/mptable.c                 |    2 +-
 src/mainboard/msi/ms9185/mptable.c                 |    2 +-
 src/mainboard/msi/ms9282/mptable.c                 |    2 +-
 src/mainboard/msi/ms9652_fam10/mptable.c           |    2 +-
 src/mainboard/newisys/khepri/mptable.c             |    2 +-
 src/mainboard/nvidia/l1_2pvv/mptable.c             |    2 +-
 src/mainboard/roda/rk886ex/mptable.c               |    2 +-
 src/mainboard/siemens/sitemp_g1p1/mptable.c        |   12 +-----------
 src/mainboard/sunw/ultra40/mptable.c               |    2 +-
 src/mainboard/supermicro/h8dme/mptable.c           |    2 +-
 src/mainboard/supermicro/h8dmr/mptable.c           |    2 +-
 src/mainboard/supermicro/h8dmr_fam10/mptable.c     |    2 +-
 src/mainboard/supermicro/h8qgi/mptable.c           |    2 +-
 src/mainboard/supermicro/h8qme_fam10/mptable.c     |    2 +-
 src/mainboard/supermicro/h8scm_fam10/mptable.c     |    2 +-
 src/mainboard/supermicro/x6dai_g/mptable.c         |    2 +-
 src/mainboard/supermicro/x6dhe_g/mptable.c         |    2 +-
 src/mainboard/supermicro/x6dhe_g2/mptable.c        |    2 +-
 src/mainboard/supermicro/x6dhr_ig/mptable.c        |    2 +-
 src/mainboard/supermicro/x6dhr_ig2/mptable.c       |    2 +-
 src/mainboard/technexion/tim5690/mptable.c         |    2 +-
 src/mainboard/technexion/tim8690/mptable.c         |    2 +-
 src/mainboard/tyan/s2735/mptable.c                 |    2 +-
 src/mainboard/tyan/s2850/mptable.c                 |    2 +-
 src/mainboard/tyan/s2875/mptable.c                 |    2 +-
 src/mainboard/tyan/s2880/mptable.c                 |    2 +-
 src/mainboard/tyan/s2881/mptable.c                 |    2 +-
 src/mainboard/tyan/s2882/mptable.c                 |    2 +-
 src/mainboard/tyan/s2885/mptable.c                 |    2 +-
 src/mainboard/tyan/s2891/mptable.c                 |    2 +-
 src/mainboard/tyan/s2892/mptable.c                 |    2 +-
 src/mainboard/tyan/s2895/mptable.c                 |    2 +-
 src/mainboard/tyan/s2912/mptable.c                 |    2 +-
 src/mainboard/tyan/s2912_fam10/mptable.c           |    2 +-
 src/mainboard/tyan/s4880/mptable.c                 |    2 +-
 src/mainboard/tyan/s4882/mptable.c                 |    2 +-
 src/mainboard/via/epia-n/mptable.c                 |    2 +-
 src/mainboard/via/pc2500e/mptable.c                |    2 +-
 src/mainboard/via/vt8454c/mptable.c                |    2 +-
 96 files changed, 104 insertions(+), 150 deletions(-)

diff --git a/src/arch/x86/boot/mpspec.c b/src/arch/x86/boot/mpspec.c
index 6c81430..604f191 100644
--- a/src/arch/x86/boot/mpspec.c
+++ b/src/arch/x86/boot/mpspec.c
@@ -53,14 +53,7 @@ unsigned char smp_compute_checksum(void *v, int len)
 	return checksum;
 }
 
-void *smp_write_floating_table(unsigned long addr)
-{
-	/* 16 byte align the table address */
-	addr = (addr + 0xf) & (~0xf);
-	return smp_write_floating_table_physaddr(addr, addr + SMP_FLOATING_TABLE_LEN);
-}
-
-void *smp_write_floating_table_physaddr(unsigned long addr, unsigned long mpf_physptr)
+static void *smp_write_floating_table_physaddr(unsigned long addr, unsigned long mpf_physptr, unsigned int virtualwire)
 {
         struct intel_mp_floating *mf;
         void *v;
@@ -76,7 +69,7 @@ void *smp_write_floating_table_physaddr(unsigned long addr, unsigned long mpf_ph
         mf->mpf_specification = 4;
         mf->mpf_checksum = 0;
         mf->mpf_feature1 = 0;
-        mf->mpf_feature2 = 0;
+        mf->mpf_feature2 = virtualwire?MP_FEATURE_VIRTUALWIRE:0;
         mf->mpf_feature3 = 0;
         mf->mpf_feature4 = 0;
         mf->mpf_feature5 = 0;
@@ -84,6 +77,13 @@ void *smp_write_floating_table_physaddr(unsigned long addr, unsigned long mpf_ph
         return v;
 }
 
+void *smp_write_floating_table(unsigned long addr, unsigned int virtualwire)
+{
+	/* 16 byte align the table address */
+	addr = (addr + 0xf) & (~0xf);
+	return smp_write_floating_table_physaddr(addr, addr + SMP_FLOATING_TABLE_LEN, virtualwire);
+}
+
 void *smp_next_mpc_entry(struct mp_config_table *mc)
 {
 	void *v;
diff --git a/src/arch/x86/include/arch/smp/mpspec.h b/src/arch/x86/include/arch/smp/mpspec.h
index 1f194cd..e9a20c3 100644
--- a/src/arch/x86/include/arch/smp/mpspec.h
+++ b/src/arch/x86/include/arch/smp/mpspec.h
@@ -268,9 +268,7 @@ void smp_write_compatibility_address_space(struct mp_config_table *mc,
 	unsigned char busid, unsigned char address_modifier,
 	unsigned int range_list);
 unsigned char smp_compute_checksum(void *v, int len);
-void *smp_write_floating_table(unsigned long addr);
-void *smp_write_floating_table_physaddr(unsigned long addr,
-		unsigned long mpf_physptr);
+void *smp_write_floating_table(unsigned long addr, unsigned int virtualwire);
 unsigned long write_smp_table(unsigned long addr);
 
 void mptable_lintsrc(struct mp_config_table *mc, unsigned long bus_isa);
diff --git a/src/mainboard/advansus/a785e-i/mptable.c b/src/mainboard/advansus/a785e-i/mptable.c
index 72733c6..d331929 100644
--- a/src/mainboard/advansus/a785e-i/mptable.c
+++ b/src/mainboard/advansus/a785e-i/mptable.c
@@ -151,6 +151,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/bimini_fam10/mptable.c b/src/mainboard/amd/bimini_fam10/mptable.c
index a39c9ba..65852af 100644
--- a/src/mainboard/amd/bimini_fam10/mptable.c
+++ b/src/mainboard/amd/bimini_fam10/mptable.c
@@ -155,6 +155,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/dbm690t/mptable.c b/src/mainboard/amd/dbm690t/mptable.c
index cb731a7..6d2c535 100644
--- a/src/mainboard/amd/dbm690t/mptable.c
+++ b/src/mainboard/amd/dbm690t/mptable.c
@@ -165,6 +165,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/inagua/mptable.c b/src/mainboard/amd/inagua/mptable.c
index e3cd5d0..1fc69cb 100644
--- a/src/mainboard/amd/inagua/mptable.c
+++ b/src/mainboard/amd/inagua/mptable.c
@@ -240,6 +240,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
   void *v;
-  v = smp_write_floating_table(addr);
+  v = smp_write_floating_table(addr, 0);
   return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/mahogany/mptable.c b/src/mainboard/amd/mahogany/mptable.c
index f07877b..e31bce7 100644
--- a/src/mainboard/amd/mahogany/mptable.c
+++ b/src/mainboard/amd/mahogany/mptable.c
@@ -172,6 +172,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/mahogany_fam10/mptable.c b/src/mainboard/amd/mahogany_fam10/mptable.c
index dabda5b..024e87a 100644
--- a/src/mainboard/amd/mahogany_fam10/mptable.c
+++ b/src/mainboard/amd/mahogany_fam10/mptable.c
@@ -171,6 +171,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/persimmon/mptable.c b/src/mainboard/amd/persimmon/mptable.c
index ec74b92..3e57ea0 100644
--- a/src/mainboard/amd/persimmon/mptable.c
+++ b/src/mainboard/amd/persimmon/mptable.c
@@ -158,6 +158,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
   void *v;
-  v = smp_write_floating_table(addr);
+  v = smp_write_floating_table(addr, 0);
   return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/pistachio/mptable.c b/src/mainboard/amd/pistachio/mptable.c
index cb731a7..6d2c535 100644
--- a/src/mainboard/amd/pistachio/mptable.c
+++ b/src/mainboard/amd/pistachio/mptable.c
@@ -165,6 +165,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/serengeti_cheetah/mptable.c b/src/mainboard/amd/serengeti_cheetah/mptable.c
index 6478704..71e2d0e 100644
--- a/src/mainboard/amd/serengeti_cheetah/mptable.c
+++ b/src/mainboard/amd/serengeti_cheetah/mptable.c
@@ -169,6 +169,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/serengeti_cheetah_fam10/mptable.c b/src/mainboard/amd/serengeti_cheetah_fam10/mptable.c
index 7a65c9f..d3ebafb 100644
--- a/src/mainboard/amd/serengeti_cheetah_fam10/mptable.c
+++ b/src/mainboard/amd/serengeti_cheetah_fam10/mptable.c
@@ -193,6 +193,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/tilapia_fam10/mptable.c b/src/mainboard/amd/tilapia_fam10/mptable.c
index dabda5b..024e87a 100644
--- a/src/mainboard/amd/tilapia_fam10/mptable.c
+++ b/src/mainboard/amd/tilapia_fam10/mptable.c
@@ -171,6 +171,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/amd/torpedo/mptable.c b/src/mainboard/amd/torpedo/mptable.c
index 755b4a3..91213d8 100755
--- a/src/mainboard/amd/torpedo/mptable.c
+++ b/src/mainboard/amd/torpedo/mptable.c
@@ -247,6 +247,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
   void *v;
-  v = smp_write_floating_table(addr);
+  v = smp_write_floating_table(addr, 0);
   return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/arima/hdama/mptable.c b/src/mainboard/arima/hdama/mptable.c
index 93959df..648a313 100644
--- a/src/mainboard/arima/hdama/mptable.c
+++ b/src/mainboard/arima/hdama/mptable.c
@@ -309,7 +309,7 @@ unsigned long write_smp_table(unsigned long addr)
 	void *v;
 	reboot_if_hotswap();
 
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/asrock/939a785gmh/mptable.c b/src/mainboard/asrock/939a785gmh/mptable.c
index 94002ff..f1f4a46 100644
--- a/src/mainboard/asrock/939a785gmh/mptable.c
+++ b/src/mainboard/asrock/939a785gmh/mptable.c
@@ -170,6 +170,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asrock/e350m1/mptable.c b/src/mainboard/asrock/e350m1/mptable.c
index 05c2275..712419a 100644
--- a/src/mainboard/asrock/e350m1/mptable.c
+++ b/src/mainboard/asrock/e350m1/mptable.c
@@ -158,6 +158,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
   void *v;
-  v = smp_write_floating_table(addr);
+  v = smp_write_floating_table(addr, 0);
   return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/a8n_e/mptable.c b/src/mainboard/asus/a8n_e/mptable.c
index 2191fef..d790c76 100644
--- a/src/mainboard/asus/a8n_e/mptable.c
+++ b/src/mainboard/asus/a8n_e/mptable.c
@@ -123,6 +123,6 @@ static void *smp_write_config_table(void *v)
 
 unsigned long write_smp_table(unsigned long addr)
 {
-	void *v = smp_write_floating_table(addr);
+	void *v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/a8v-e_deluxe/mptable.c b/src/mainboard/asus/a8v-e_deluxe/mptable.c
index 8d8059f..6c67533 100644
--- a/src/mainboard/asus/a8v-e_deluxe/mptable.c
+++ b/src/mainboard/asus/a8v-e_deluxe/mptable.c
@@ -115,6 +115,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/a8v-e_se/mptable.c b/src/mainboard/asus/a8v-e_se/mptable.c
index 8d8059f..6c67533 100644
--- a/src/mainboard/asus/a8v-e_se/mptable.c
+++ b/src/mainboard/asus/a8v-e_se/mptable.c
@@ -115,6 +115,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/m2n-e/mptable.c b/src/mainboard/asus/m2n-e/mptable.c
index 66c4ee9..716c754 100644
--- a/src/mainboard/asus/m2n-e/mptable.c
+++ b/src/mainboard/asus/m2n-e/mptable.c
@@ -105,6 +105,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/m2v/mptable.c b/src/mainboard/asus/m2v/mptable.c
index 0f84ad6..9dd57f5 100644
--- a/src/mainboard/asus/m2v/mptable.c
+++ b/src/mainboard/asus/m2v/mptable.c
@@ -146,6 +146,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/m4a78-em/mptable.c b/src/mainboard/asus/m4a78-em/mptable.c
index dabda5b..024e87a 100644
--- a/src/mainboard/asus/m4a78-em/mptable.c
+++ b/src/mainboard/asus/m4a78-em/mptable.c
@@ -171,6 +171,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/m4a785-m/mptable.c b/src/mainboard/asus/m4a785-m/mptable.c
index dabda5b..024e87a 100644
--- a/src/mainboard/asus/m4a785-m/mptable.c
+++ b/src/mainboard/asus/m4a785-m/mptable.c
@@ -171,6 +171,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/p2b-d/mptable.c b/src/mainboard/asus/p2b-d/mptable.c
index c8e32c0..7030023 100644
--- a/src/mainboard/asus/p2b-d/mptable.c
+++ b/src/mainboard/asus/p2b-d/mptable.c
@@ -63,6 +63,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/asus/p2b-ds/mptable.c b/src/mainboard/asus/p2b-ds/mptable.c
index 88028b7..31d360d 100644
--- a/src/mainboard/asus/p2b-ds/mptable.c
+++ b/src/mainboard/asus/p2b-ds/mptable.c
@@ -64,6 +64,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/avalue/eax-785e/mptable.c b/src/mainboard/avalue/eax-785e/mptable.c
index e4fc23b..5182ee7 100644
--- a/src/mainboard/avalue/eax-785e/mptable.c
+++ b/src/mainboard/avalue/eax-785e/mptable.c
@@ -153,6 +153,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/broadcom/blast/mptable.c b/src/mainboard/broadcom/blast/mptable.c
index 9debc04..dc09fad 100644
--- a/src/mainboard/broadcom/blast/mptable.c
+++ b/src/mainboard/broadcom/blast/mptable.c
@@ -144,6 +144,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/dell/s1850/mptable.c b/src/mainboard/dell/s1850/mptable.c
index 11a4a61..334e6ff 100644
--- a/src/mainboard/dell/s1850/mptable.c
+++ b/src/mainboard/dell/s1850/mptable.c
@@ -159,7 +159,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/getac/p470/mptable.c b/src/mainboard/getac/p470/mptable.c
index 989c892..33b256f 100644
--- a/src/mainboard/getac/p470/mptable.c
+++ b/src/mainboard/getac/p470/mptable.c
@@ -85,6 +85,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/gigabyte/ga_2761gxdk/mptable.c b/src/mainboard/gigabyte/ga_2761gxdk/mptable.c
index a4b15af..b79ddfb 100644
--- a/src/mainboard/gigabyte/ga_2761gxdk/mptable.c
+++ b/src/mainboard/gigabyte/ga_2761gxdk/mptable.c
@@ -118,6 +118,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/gigabyte/m57sli/mptable.c b/src/mainboard/gigabyte/m57sli/mptable.c
index 8cb3cd2..57fea2c 100644
--- a/src/mainboard/gigabyte/m57sli/mptable.c
+++ b/src/mainboard/gigabyte/m57sli/mptable.c
@@ -124,6 +124,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/gigabyte/ma785gmt/mptable.c b/src/mainboard/gigabyte/ma785gmt/mptable.c
index dabda5b..024e87a 100644
--- a/src/mainboard/gigabyte/ma785gmt/mptable.c
+++ b/src/mainboard/gigabyte/ma785gmt/mptable.c
@@ -171,6 +171,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/gigabyte/ma78gm/mptable.c b/src/mainboard/gigabyte/ma78gm/mptable.c
index dabda5b..024e87a 100644
--- a/src/mainboard/gigabyte/ma78gm/mptable.c
+++ b/src/mainboard/gigabyte/ma78gm/mptable.c
@@ -171,6 +171,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/hp/dl145_g1/mptable.c b/src/mainboard/hp/dl145_g1/mptable.c
index c45e1f4..1d63af8 100644
--- a/src/mainboard/hp/dl145_g1/mptable.c
+++ b/src/mainboard/hp/dl145_g1/mptable.c
@@ -97,6 +97,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/hp/dl145_g3/mptable.c b/src/mainboard/hp/dl145_g3/mptable.c
index 1f75dad..f0786a0 100644
--- a/src/mainboard/hp/dl145_g3/mptable.c
+++ b/src/mainboard/hp/dl145_g3/mptable.c
@@ -189,6 +189,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/hp/dl165_g6_fam10/mptable.c b/src/mainboard/hp/dl165_g6_fam10/mptable.c
index 97b0c0e..860b86b 100644
--- a/src/mainboard/hp/dl165_g6_fam10/mptable.c
+++ b/src/mainboard/hp/dl165_g6_fam10/mptable.c
@@ -167,6 +167,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/ibase/mb899/mptable.c b/src/mainboard/ibase/mb899/mptable.c
index 18af2a1..7ee2ed8 100644
--- a/src/mainboard/ibase/mb899/mptable.c
+++ b/src/mainboard/ibase/mb899/mptable.c
@@ -130,26 +130,9 @@ static void *smp_write_config_table(void *v)
 	return smp_next_mpe_entry(mc);
 }
 
-/* MP table generation in coreboot is not very well designed;
- * One of the issues is that it knows nothing about Virtual
- * Wire mode, which everyone uses since a decade or so. This
- * function fixes up our floating table. This spares us doing
- * a half-baked fix of adding a new parameter to 200+ calls
- * to smp_write_floating_table()
- */
-static void fixup_virtual_wire(void *v)
-{
-        struct intel_mp_floating *mf = v;
-
-        mf->mpf_checksum = 0;
-        mf->mpf_feature2 = MP_FEATURE_VIRTUALWIRE;
-        mf->mpf_checksum = smp_compute_checksum(mf, mf->mpf_length*16);
-}
-
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
-	fixup_virtual_wire(v);
+	v = smp_write_floating_table(addr, 1);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/ibm/e325/mptable.c b/src/mainboard/ibm/e325/mptable.c
index 1128f0f..2a4c7f3 100644
--- a/src/mainboard/ibm/e325/mptable.c
+++ b/src/mainboard/ibm/e325/mptable.c
@@ -130,7 +130,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/ibm/e326/mptable.c b/src/mainboard/ibm/e326/mptable.c
index f7a41cc..0b66b44 100644
--- a/src/mainboard/ibm/e326/mptable.c
+++ b/src/mainboard/ibm/e326/mptable.c
@@ -129,7 +129,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/iei/kino-780am2-fam10/mptable.c b/src/mainboard/iei/kino-780am2-fam10/mptable.c
index dabda5b..024e87a 100644
--- a/src/mainboard/iei/kino-780am2-fam10/mptable.c
+++ b/src/mainboard/iei/kino-780am2-fam10/mptable.c
@@ -171,6 +171,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/intel/d945gclf/mptable.c b/src/mainboard/intel/d945gclf/mptable.c
index 3e26beb..6dcdf72 100644
--- a/src/mainboard/intel/d945gclf/mptable.c
+++ b/src/mainboard/intel/d945gclf/mptable.c
@@ -90,6 +90,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/intel/eagleheights/mptable.c b/src/mainboard/intel/eagleheights/mptable.c
index be89bf8..1717b36 100644
--- a/src/mainboard/intel/eagleheights/mptable.c
+++ b/src/mainboard/intel/eagleheights/mptable.c
@@ -229,6 +229,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/intel/jarrell/mptable.c b/src/mainboard/intel/jarrell/mptable.c
index a68aaaf..5b28642 100644
--- a/src/mainboard/intel/jarrell/mptable.c
+++ b/src/mainboard/intel/jarrell/mptable.c
@@ -238,7 +238,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/intel/mtarvon/mptable.c b/src/mainboard/intel/mtarvon/mptable.c
index 6e211f9..b578ce8 100644
--- a/src/mainboard/intel/mtarvon/mptable.c
+++ b/src/mainboard/intel/mtarvon/mptable.c
@@ -111,7 +111,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/intel/truxton/mptable.c b/src/mainboard/intel/truxton/mptable.c
index d8f9787..c602fa8 100644
--- a/src/mainboard/intel/truxton/mptable.c
+++ b/src/mainboard/intel/truxton/mptable.c
@@ -139,7 +139,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/intel/xe7501devkit/mptable.c b/src/mainboard/intel/xe7501devkit/mptable.c
index f1be1d7..9b28db1 100644
--- a/src/mainboard/intel/xe7501devkit/mptable.c
+++ b/src/mainboard/intel/xe7501devkit/mptable.c
@@ -141,6 +141,6 @@ static void *smp_write_config_table(void* v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/iwave/iWRainbowG6/mptable.c b/src/mainboard/iwave/iWRainbowG6/mptable.c
index a79b70b..45a3c14 100644
--- a/src/mainboard/iwave/iWRainbowG6/mptable.c
+++ b/src/mainboard/iwave/iWRainbowG6/mptable.c
@@ -104,6 +104,6 @@ void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/iwill/dk8_htx/mptable.c b/src/mainboard/iwill/dk8_htx/mptable.c
index 3b4578a..8aad009 100644
--- a/src/mainboard/iwill/dk8_htx/mptable.c
+++ b/src/mainboard/iwill/dk8_htx/mptable.c
@@ -181,6 +181,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/iwill/dk8s2/mptable.c b/src/mainboard/iwill/dk8s2/mptable.c
index 3108c3c..7fd370f 100644
--- a/src/mainboard/iwill/dk8s2/mptable.c
+++ b/src/mainboard/iwill/dk8s2/mptable.c
@@ -163,7 +163,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/iwill/dk8x/mptable.c b/src/mainboard/iwill/dk8x/mptable.c
index 3108c3c..7fd370f 100644
--- a/src/mainboard/iwill/dk8x/mptable.c
+++ b/src/mainboard/iwill/dk8x/mptable.c
@@ -163,7 +163,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/jetway/pa78vm5/mptable.c b/src/mainboard/jetway/pa78vm5/mptable.c
index f465b97..e8afa39 100644
--- a/src/mainboard/jetway/pa78vm5/mptable.c
+++ b/src/mainboard/jetway/pa78vm5/mptable.c
@@ -172,6 +172,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/kontron/986lcd-m/mptable.c b/src/mainboard/kontron/986lcd-m/mptable.c
index 84c3b2a..8280203 100644
--- a/src/mainboard/kontron/986lcd-m/mptable.c
+++ b/src/mainboard/kontron/986lcd-m/mptable.c
@@ -113,26 +113,9 @@ static void *smp_write_config_table(void *v)
 	return smp_next_mpe_entry(mc);
 }
 
-/* MP table generation in coreboot is not very well designed;
- * One of the issues is that it knows nothing about Virtual
- * Wire mode, which everyone uses since a decade or so. This
- * function fixes up our floating table. This spares us doing
- * a half-baked fix of adding a new parameter to 200+ calls
- * to smp_write_floating_table()
- */
-static void fixup_virtual_wire(void *v)
-{
-        struct intel_mp_floating *mf = v;
-
-        mf->mpf_checksum = 0;
-        mf->mpf_feature2 = MP_FEATURE_VIRTUALWIRE;
-        mf->mpf_checksum = smp_compute_checksum(mf, mf->mpf_length*16);
-}
-
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
-	fixup_virtual_wire(v);
+	v = smp_write_floating_table(addr, 1);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/kontron/kt690/mptable.c b/src/mainboard/kontron/kt690/mptable.c
index 05dc951..1b32543 100644
--- a/src/mainboard/kontron/kt690/mptable.c
+++ b/src/mainboard/kontron/kt690/mptable.c
@@ -164,6 +164,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/lenovo/t60/mptable.c b/src/mainboard/lenovo/t60/mptable.c
index 3181e28..5d8ce23 100644
--- a/src/mainboard/lenovo/t60/mptable.c
+++ b/src/mainboard/lenovo/t60/mptable.c
@@ -78,6 +78,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/lenovo/x60/mptable.c b/src/mainboard/lenovo/x60/mptable.c
index 5bf9775..a366860 100644
--- a/src/mainboard/lenovo/x60/mptable.c
+++ b/src/mainboard/lenovo/x60/mptable.c
@@ -80,6 +80,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/msi/ms7135/mptable.c b/src/mainboard/msi/ms7135/mptable.c
index b30182c..3b19141 100644
--- a/src/mainboard/msi/ms7135/mptable.c
+++ b/src/mainboard/msi/ms7135/mptable.c
@@ -160,6 +160,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/msi/ms7260/mptable.c b/src/mainboard/msi/ms7260/mptable.c
index b6142d6..d14dd72 100644
--- a/src/mainboard/msi/ms7260/mptable.c
+++ b/src/mainboard/msi/ms7260/mptable.c
@@ -110,6 +110,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/msi/ms9185/mptable.c b/src/mainboard/msi/ms9185/mptable.c
index a754390..314acf0 100644
--- a/src/mainboard/msi/ms9185/mptable.c
+++ b/src/mainboard/msi/ms9185/mptable.c
@@ -160,6 +160,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
        void *v;
-       v = smp_write_floating_table(addr);
+       v = smp_write_floating_table(addr, 0);
        return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/msi/ms9282/mptable.c b/src/mainboard/msi/ms9282/mptable.c
index 4c7774a..5a6ec69 100644
--- a/src/mainboard/msi/ms9282/mptable.c
+++ b/src/mainboard/msi/ms9282/mptable.c
@@ -129,6 +129,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
        void *v;
-       v = smp_write_floating_table(addr);
+       v = smp_write_floating_table(addr, 0);
        return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/msi/ms9652_fam10/mptable.c b/src/mainboard/msi/ms9652_fam10/mptable.c
index 87afa99..279f1a7 100644
--- a/src/mainboard/msi/ms9652_fam10/mptable.c
+++ b/src/mainboard/msi/ms9652_fam10/mptable.c
@@ -118,6 +118,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/newisys/khepri/mptable.c b/src/mainboard/newisys/khepri/mptable.c
index b11718b..dca1cff 100644
--- a/src/mainboard/newisys/khepri/mptable.c
+++ b/src/mainboard/newisys/khepri/mptable.c
@@ -164,7 +164,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/nvidia/l1_2pvv/mptable.c b/src/mainboard/nvidia/l1_2pvv/mptable.c
index 043e473..50b1849 100644
--- a/src/mainboard/nvidia/l1_2pvv/mptable.c
+++ b/src/mainboard/nvidia/l1_2pvv/mptable.c
@@ -175,6 +175,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/roda/rk886ex/mptable.c b/src/mainboard/roda/rk886ex/mptable.c
index 989c892..33b256f 100644
--- a/src/mainboard/roda/rk886ex/mptable.c
+++ b/src/mainboard/roda/rk886ex/mptable.c
@@ -85,6 +85,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/siemens/sitemp_g1p1/mptable.c b/src/mainboard/siemens/sitemp_g1p1/mptable.c
index 889810f..3abadcf 100644
--- a/src/mainboard/siemens/sitemp_g1p1/mptable.c
+++ b/src/mainboard/siemens/sitemp_g1p1/mptable.c
@@ -76,19 +76,9 @@ static void *smp_write_config_table(void *v)
 	return smp_next_mpe_entry(mc);
 }
 
-static void fixup_virtual_wire(void *v)
-{
-        struct intel_mp_floating *mf = v;
-
-        mf->mpf_checksum = 0;
-        mf->mpf_feature2 = MP_FEATURE_VIRTUALWIRE;
-        mf->mpf_checksum = smp_compute_checksum(mf, mf->mpf_length*16);
-}
-
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
-	fixup_virtual_wire(v);
+	v = smp_write_floating_table(addr, 1);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/sunw/ultra40/mptable.c b/src/mainboard/sunw/ultra40/mptable.c
index 9dbcf97..7e6c018 100644
--- a/src/mainboard/sunw/ultra40/mptable.c
+++ b/src/mainboard/sunw/ultra40/mptable.c
@@ -196,6 +196,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/supermicro/h8dme/mptable.c b/src/mainboard/supermicro/h8dme/mptable.c
index dafa92a..f16c4b2 100644
--- a/src/mainboard/supermicro/h8dme/mptable.c
+++ b/src/mainboard/supermicro/h8dme/mptable.c
@@ -131,6 +131,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/supermicro/h8dmr/mptable.c b/src/mainboard/supermicro/h8dmr/mptable.c
index 041aef8..96ba983 100644
--- a/src/mainboard/supermicro/h8dmr/mptable.c
+++ b/src/mainboard/supermicro/h8dmr/mptable.c
@@ -132,6 +132,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/supermicro/h8dmr_fam10/mptable.c b/src/mainboard/supermicro/h8dmr_fam10/mptable.c
index 54264e5..50697d7 100644
--- a/src/mainboard/supermicro/h8dmr_fam10/mptable.c
+++ b/src/mainboard/supermicro/h8dmr_fam10/mptable.c
@@ -118,6 +118,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/supermicro/h8qgi/mptable.c b/src/mainboard/supermicro/h8qgi/mptable.c
index 4d32f39..6956027 100755
--- a/src/mainboard/supermicro/h8qgi/mptable.c
+++ b/src/mainboard/supermicro/h8qgi/mptable.c
@@ -195,6 +195,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/supermicro/h8qme_fam10/mptable.c b/src/mainboard/supermicro/h8qme_fam10/mptable.c
index 5a0ba63..b59c2ad 100644
--- a/src/mainboard/supermicro/h8qme_fam10/mptable.c
+++ b/src/mainboard/supermicro/h8qme_fam10/mptable.c
@@ -116,6 +116,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/supermicro/h8scm_fam10/mptable.c b/src/mainboard/supermicro/h8scm_fam10/mptable.c
index f271402..eb6e6a4 100644
--- a/src/mainboard/supermicro/h8scm_fam10/mptable.c
+++ b/src/mainboard/supermicro/h8scm_fam10/mptable.c
@@ -185,6 +185,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/supermicro/x6dai_g/mptable.c b/src/mainboard/supermicro/x6dai_g/mptable.c
index 62751e3..4b86f3d 100644
--- a/src/mainboard/supermicro/x6dai_g/mptable.c
+++ b/src/mainboard/supermicro/x6dai_g/mptable.c
@@ -88,7 +88,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/supermicro/x6dhe_g/mptable.c b/src/mainboard/supermicro/x6dhe_g/mptable.c
index ba07bc7..07fbe9d 100644
--- a/src/mainboard/supermicro/x6dhe_g/mptable.c
+++ b/src/mainboard/supermicro/x6dhe_g/mptable.c
@@ -132,7 +132,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/supermicro/x6dhe_g2/mptable.c b/src/mainboard/supermicro/x6dhe_g2/mptable.c
index 35da882..2fae456 100644
--- a/src/mainboard/supermicro/x6dhe_g2/mptable.c
+++ b/src/mainboard/supermicro/x6dhe_g2/mptable.c
@@ -133,7 +133,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/supermicro/x6dhr_ig/mptable.c b/src/mainboard/supermicro/x6dhr_ig/mptable.c
index 7b182c8..1782726 100644
--- a/src/mainboard/supermicro/x6dhr_ig/mptable.c
+++ b/src/mainboard/supermicro/x6dhr_ig/mptable.c
@@ -180,7 +180,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/supermicro/x6dhr_ig2/mptable.c b/src/mainboard/supermicro/x6dhr_ig2/mptable.c
index 33ed3bb..a6ee5a6 100644
--- a/src/mainboard/supermicro/x6dhr_ig2/mptable.c
+++ b/src/mainboard/supermicro/x6dhr_ig2/mptable.c
@@ -168,7 +168,7 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
 
diff --git a/src/mainboard/technexion/tim5690/mptable.c b/src/mainboard/technexion/tim5690/mptable.c
index 05dc951..1b32543 100644
--- a/src/mainboard/technexion/tim5690/mptable.c
+++ b/src/mainboard/technexion/tim5690/mptable.c
@@ -164,6 +164,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/technexion/tim8690/mptable.c b/src/mainboard/technexion/tim8690/mptable.c
index 05dc951..1b32543 100644
--- a/src/mainboard/technexion/tim8690/mptable.c
+++ b/src/mainboard/technexion/tim8690/mptable.c
@@ -164,6 +164,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2735/mptable.c b/src/mainboard/tyan/s2735/mptable.c
index 8f5a6b8..91fca62 100644
--- a/src/mainboard/tyan/s2735/mptable.c
+++ b/src/mainboard/tyan/s2735/mptable.c
@@ -129,6 +129,6 @@ Compatibility Bus Address
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2850/mptable.c b/src/mainboard/tyan/s2850/mptable.c
index 4267baf..cd772b9 100644
--- a/src/mainboard/tyan/s2850/mptable.c
+++ b/src/mainboard/tyan/s2850/mptable.c
@@ -162,6 +162,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2875/mptable.c b/src/mainboard/tyan/s2875/mptable.c
index 4f9e50a..f29f4cf 100644
--- a/src/mainboard/tyan/s2875/mptable.c
+++ b/src/mainboard/tyan/s2875/mptable.c
@@ -179,6 +179,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2880/mptable.c b/src/mainboard/tyan/s2880/mptable.c
index 559f768..7566de3 100644
--- a/src/mainboard/tyan/s2880/mptable.c
+++ b/src/mainboard/tyan/s2880/mptable.c
@@ -205,6 +205,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2881/mptable.c b/src/mainboard/tyan/s2881/mptable.c
index bad4ae6..e303bfb 100644
--- a/src/mainboard/tyan/s2881/mptable.c
+++ b/src/mainboard/tyan/s2881/mptable.c
@@ -108,6 +108,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2882/mptable.c b/src/mainboard/tyan/s2882/mptable.c
index b380dc1..8ec323c 100644
--- a/src/mainboard/tyan/s2882/mptable.c
+++ b/src/mainboard/tyan/s2882/mptable.c
@@ -217,6 +217,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2885/mptable.c b/src/mainboard/tyan/s2885/mptable.c
index e41e750..a33f7c5 100644
--- a/src/mainboard/tyan/s2885/mptable.c
+++ b/src/mainboard/tyan/s2885/mptable.c
@@ -120,6 +120,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2891/mptable.c b/src/mainboard/tyan/s2891/mptable.c
index aec325e..85248cc 100644
--- a/src/mainboard/tyan/s2891/mptable.c
+++ b/src/mainboard/tyan/s2891/mptable.c
@@ -145,6 +145,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2892/mptable.c b/src/mainboard/tyan/s2892/mptable.c
index 0fc260c..aafe043 100644
--- a/src/mainboard/tyan/s2892/mptable.c
+++ b/src/mainboard/tyan/s2892/mptable.c
@@ -167,6 +167,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2895/mptable.c b/src/mainboard/tyan/s2895/mptable.c
index 67fa39f..ef4f4ef 100644
--- a/src/mainboard/tyan/s2895/mptable.c
+++ b/src/mainboard/tyan/s2895/mptable.c
@@ -195,6 +195,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2912/mptable.c b/src/mainboard/tyan/s2912/mptable.c
index 10c132c..e105442 100644
--- a/src/mainboard/tyan/s2912/mptable.c
+++ b/src/mainboard/tyan/s2912/mptable.c
@@ -116,6 +116,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s2912_fam10/mptable.c b/src/mainboard/tyan/s2912_fam10/mptable.c
index 7efccd0..6778565 100644
--- a/src/mainboard/tyan/s2912_fam10/mptable.c
+++ b/src/mainboard/tyan/s2912_fam10/mptable.c
@@ -116,6 +116,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s4880/mptable.c b/src/mainboard/tyan/s4880/mptable.c
index 71c7ff0..dde7f88 100644
--- a/src/mainboard/tyan/s4880/mptable.c
+++ b/src/mainboard/tyan/s4880/mptable.c
@@ -211,6 +211,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/tyan/s4882/mptable.c b/src/mainboard/tyan/s4882/mptable.c
index 668c880..ee78b11 100644
--- a/src/mainboard/tyan/s4882/mptable.c
+++ b/src/mainboard/tyan/s4882/mptable.c
@@ -210,6 +210,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/via/epia-n/mptable.c b/src/mainboard/via/epia-n/mptable.c
index 3be2f0a..3b217ae 100644
--- a/src/mainboard/via/epia-n/mptable.c
+++ b/src/mainboard/via/epia-n/mptable.c
@@ -49,6 +49,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/via/pc2500e/mptable.c b/src/mainboard/via/pc2500e/mptable.c
index e62c576..82cbad6 100644
--- a/src/mainboard/via/pc2500e/mptable.c
+++ b/src/mainboard/via/pc2500e/mptable.c
@@ -99,6 +99,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }
diff --git a/src/mainboard/via/vt8454c/mptable.c b/src/mainboard/via/vt8454c/mptable.c
index f196c15..d254fb1 100644
--- a/src/mainboard/via/vt8454c/mptable.c
+++ b/src/mainboard/via/vt8454c/mptable.c
@@ -67,6 +67,6 @@ static void *smp_write_config_table(void *v)
 unsigned long write_smp_table(unsigned long addr)
 {
 	void *v;
-	v = smp_write_floating_table(addr);
+	v = smp_write_floating_table(addr, 0);
 	return (unsigned long)smp_write_config_table(v);
 }




More information about the coreboot mailing list