Merge git://git.denx.de/u-boot-x86
diff --git a/arch/x86/cpu/quark/smc.c b/arch/x86/cpu/quark/smc.c
index 3ffe92b..0195b56 100644
--- a/arch/x86/cpu/quark/smc.c
+++ b/arch/x86/cpu/quark/smc.c
@@ -17,15 +17,6 @@
 #include "hte.h"
 #include "smc.h"
 
-/* t_rfc values (in picoseconds) per density */
-static const uint32_t t_rfc[5] = {
-	90000,	/* 512Mb */
-	110000,	/* 1Gb */
-	160000,	/* 2Gb */
-	300000,	/* 4Gb */
-	350000,	/* 8Gb */
-};
-
 /* t_ck clock period in picoseconds per speed index 800, 1066, 1333 */
 static const uint32_t t_ck[3] = {
 	2500,
@@ -35,8 +26,12 @@
 
 /* Global variables */
 static const uint16_t ddr_wclk[] = {193, 158};
+#ifdef BACKUP_WCTL
 static const uint16_t ddr_wctl[] = {1, 217};
+#endif
+#ifdef BACKUP_WCMD
 static const uint16_t ddr_wcmd[] = {1, 220};
+#endif
 
 #ifdef BACKUP_RCVN
 static const uint16_t ddr_rcvn[] = {129, 498};
diff --git a/arch/x86/include/asm/acpi_table.h b/arch/x86/include/asm/acpi_table.h
index 8003850..d5d77cc 100644
--- a/arch/x86/include/asm/acpi_table.h
+++ b/arch/x86/include/asm/acpi_table.h
@@ -330,6 +330,15 @@
 ulong write_acpi_tables(ulong start);
 
 /**
+ * acpi_get_rsdp_addr() - get ACPI RSDP table address
+ *
+ * This routine returns the ACPI RSDP table address in the system memory.
+ *
+ * @return:	ACPI RSDP table address
+ */
+ulong acpi_get_rsdp_addr(void);
+
+/**
  * acpi_find_fadt() - find ACPI FADT table in the sytem memory
  *
  * This routine parses the ACPI table to locate the ACPI FADT table.
diff --git a/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl b/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl
index 2b3b897..5289b14 100644
--- a/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl
+++ b/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl
@@ -284,7 +284,7 @@
                 Return (STA_VISIBLE)
             }
 
-            Method (_CRS, 0, NotSerialized)
+            Method (_CRS, 0, Serialized)
             {
                 Name (RBUF, ResourceTemplate ()
                 {
diff --git a/arch/x86/include/asm/bootparam.h b/arch/x86/include/asm/bootparam.h
index 48b138c..90768a9 100644
--- a/arch/x86/include/asm/bootparam.h
+++ b/arch/x86/include/asm/bootparam.h
@@ -66,6 +66,7 @@
 	__u64	pref_address;
 	__u32	init_size;
 	__u32	handover_offset;
+	__u64   acpi_rsdp_addr;
 } __attribute__((packed));
 
 struct sys_desc_table {
diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
index 3eb1011..0d448cf 100644
--- a/arch/x86/lib/acpi_table.c
+++ b/arch/x86/lib/acpi_table.c
@@ -27,6 +27,9 @@
  */
 extern const unsigned char AmlCode[];
 
+/* ACPI RSDP address to be used in boot parameters */
+static ulong acpi_rsdp_addr;
+
 static void acpi_write_rsdp(struct acpi_rsdp *rsdp, struct acpi_rsdt *rsdt,
 			    struct acpi_xsdt *xsdt)
 {
@@ -357,8 +360,7 @@
 }
 
 /*
- * QEMU's version of write_acpi_tables is defined in
- * arch/x86/cpu/qemu/acpi_table.c
+ * QEMU's version of write_acpi_tables is defined in drivers/misc/qfw.c
  */
 ulong write_acpi_tables(ulong start)
 {
@@ -461,6 +463,7 @@
 
 	debug("current = %x\n", current);
 
+	acpi_rsdp_addr = (unsigned long)rsdp;
 	debug("ACPI: done\n");
 
 	/* Don't touch ACPI hardware on HW reduced platforms */
@@ -476,6 +479,11 @@
 	return current;
 }
 
+ulong acpi_get_rsdp_addr(void)
+{
+	return acpi_rsdp_addr;
+}
+
 static struct acpi_rsdp *acpi_valid_rsdp(struct acpi_rsdp *rsdp)
 {
 	if (strncmp((char *)rsdp, RSDP_SIG, sizeof(RSDP_SIG) - 1) != 0)
diff --git a/arch/x86/lib/zimage.c b/arch/x86/lib/zimage.c
index 00172dc..2a82bc8 100644
--- a/arch/x86/lib/zimage.c
+++ b/arch/x86/lib/zimage.c
@@ -14,6 +14,7 @@
  */
 
 #include <common.h>
+#include <asm/acpi_table.h>
 #include <asm/io.h>
 #include <asm/ptrace.h>
 #include <asm/zimage.h>
@@ -246,14 +247,20 @@
 			hdr->setup_move_size = 0x9100;
 		}
 
-#if defined(CONFIG_INTEL_MID)
-		hdr->hardware_subarch = X86_SUBARCH_INTEL_MID;
-#endif
-
 		/* build command line at COMMAND_LINE_OFFSET */
 		build_command_line(cmd_line, auto_boot);
 	}
 
+#ifdef CONFIG_INTEL_MID
+	if (bootproto >= 0x0207)
+		hdr->hardware_subarch = X86_SUBARCH_INTEL_MID;
+#endif
+
+#ifdef CONFIG_GENERATE_ACPI_TABLE
+	if (bootproto >= 0x020e)
+		hdr->acpi_rsdp_addr = acpi_get_rsdp_addr();
+#endif
+
 	setup_video(&setup_base->screen_info);
 
 	return 0;
diff --git a/board/google/Kconfig b/board/google/Kconfig
index e56c026..766db1b 100644
--- a/board/google/Kconfig
+++ b/board/google/Kconfig
@@ -31,7 +31,6 @@
 
 config TARGET_CHROMEBOX_PANTHER
 	bool "Chromebox panther (not available)"
-	select n
 	help
 	  Note: At present this must be used with coreboot. See README.x86
 	  for instructions.
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index c7ebad1..de6fc48 100644
--- a/cmd/bdinfo.c
+++ b/cmd/bdinfo.c
@@ -377,6 +377,8 @@
 
 	print_bi_dram(bd);
 
+	print_num("relocaddr", gd->relocaddr);
+	print_num("reloc off", gd->reloc_off);
 #if defined(CONFIG_CMD_NET)
 	print_eth_ip_addr();
 	print_mhz("ethspeed",	    bd->bi_ethspeed);
diff --git a/drivers/misc/qfw.c b/drivers/misc/qfw.c
index a8af9e0..9a54803 100644
--- a/drivers/misc/qfw.c
+++ b/drivers/misc/qfw.c
@@ -222,6 +222,14 @@
 	free(table_loader);
 	return addr;
 }
+
+ulong acpi_get_rsdp_addr(void)
+{
+	struct fw_file *file;
+
+	file = qemu_fwcfg_find_file("etc/acpi/rsdp");
+	return file->addr;
+}
 #endif
 
 /* Read configuration item using fw_cfg PIO interface */
diff --git a/include/configs/x86-common.h b/include/configs/x86-common.h
index 994214e..e8f680f 100644
--- a/include/configs/x86-common.h
+++ b/include/configs/x86-common.h
@@ -62,8 +62,10 @@
  * Command line configuration.
  */
 
+#ifndef CONFIG_BOOTCOMMAND
 #define CONFIG_BOOTCOMMAND	\
 	"ext2load scsi 0:3 01000000 /boot/vmlinuz; zboot 01000000"
+#endif
 
 #if defined(CONFIG_CMD_KGDB)
 #define CONFIG_KGDB_BAUDRATE			115200