diff --git a/board/Seagate/goflexhome/goflexhome.c b/board/Seagate/goflexhome/goflexhome.c
index ad8245aaaa55e6b4183dc512c0deeb0cb1588842..1f4fb924942a4c65a9833fd660eb6847853b90a7 100644
--- a/board/Seagate/goflexhome/goflexhome.c
+++ b/board/Seagate/goflexhome/goflexhome.c
@@ -92,6 +92,11 @@ int board_early_init_f(void)
 
 int board_init(void)
 {
+	/*
+	 * arch number of board
+	 */
+	gd->bd->bi_arch_number = MACH_TYPE_GOFLEXHOME;
+
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
 
diff --git a/board/atmark-techno/armadillo-800eva/armadillo-800eva.c b/board/atmark-techno/armadillo-800eva/armadillo-800eva.c
index 0227d703e3addf05b4049b4a604435a0b3461f68..abe69abcc8db6aca5eb303eca6b68184f51afcb4 100644
--- a/board/atmark-techno/armadillo-800eva/armadillo-800eva.c
+++ b/board/atmark-techno/armadillo-800eva/armadillo-800eva.c
@@ -271,6 +271,8 @@ int board_early_init_f(void)
 DECLARE_GLOBAL_DATA_PTR;
 int board_init(void)
 {
+	/* board id for linux */
+	gd->bd->bi_arch_number = MACH_TYPE_ARMADILLO800EVA;
 	/* adress of boot parameters */
 	gd->bd->bi_boot_params = ARMADILLO_800EVA_SDRAM_BASE + 0x100;
 
diff --git a/board/atmel/at91sam9x5ek/at91sam9x5ek.c b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
index 649312228016ad66d14015c7e16a7a38396ae7cb..b0d440d728a6a9c7e7da9b0cad9235bba8c98d2c 100644
--- a/board/atmel/at91sam9x5ek/at91sam9x5ek.c
+++ b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
@@ -256,6 +256,9 @@ int board_early_init_f(void)
 
 int board_init(void)
 {
+	/* arch number of AT91SAM9X5EK-Board */
+	gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9X5EK;
+
 	/* adress of boot parameters */
 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
diff --git a/board/davinci/da8xxevm/omapl138_lcdk.c b/board/davinci/da8xxevm/omapl138_lcdk.c
index 4a34c1a60cf8422cdf4d722380e9fcb7a843c48b..3ce1992c1dc2afb22a88498020d024fc20f4b4f0 100644
--- a/board/davinci/da8xxevm/omapl138_lcdk.c
+++ b/board/davinci/da8xxevm/omapl138_lcdk.c
@@ -175,6 +175,9 @@ int board_init(void)
 	irq_init();
 #endif
 
+	/* arch number of the board */
+	gd->bd->bi_arch_number = MACH_TYPE_OMAPL138_LCDK;
+
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
 
diff --git a/board/davinci/ea20/ea20.c b/board/davinci/ea20/ea20.c
index 30e4c7d4de45870ed781d814a22b79f557ca449e..66804d75bd045d9a01a01f400cabbdc9abc7be5a 100644
--- a/board/davinci/ea20/ea20.c
+++ b/board/davinci/ea20/ea20.c
@@ -277,6 +277,9 @@ int overwrite_console(void)
 
 int board_init(void)
 {
+	/* arch number of the board */
+	gd->bd->bi_arch_number = MACH_TYPE_EA20;
+
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
 
diff --git a/board/mini-box/picosam9g45/picosam9g45.c b/board/mini-box/picosam9g45/picosam9g45.c
index 8a4a39275386fa37741434a1ae65c65a3c0a2083..32ba9c622590b959b8721e2ef2988d680268d7d1 100644
--- a/board/mini-box/picosam9g45/picosam9g45.c
+++ b/board/mini-box/picosam9g45/picosam9g45.c
@@ -252,6 +252,8 @@ int board_early_init_f(void)
 
 int board_init(void)
 {
+	gd->bd->bi_arch_number = MACH_TYPE_PICOSAM9G45;
+
 	/* adress of boot parameters */
 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
diff --git a/board/ti/omap5_uevm/evm.c b/board/ti/omap5_uevm/evm.c
index d84ec5747bed54ec58d9b5e6514b835409b275b8..b5d5ba9bdf9b6aabedada02236a710fd70fa5dc5 100644
--- a/board/ti/omap5_uevm/evm.c
+++ b/board/ti/omap5_uevm/evm.c
@@ -138,6 +138,7 @@ int usb_gadget_handle_interrupts(int index)
 int board_init(void)
 {
 	gpmc_init();
+	gd->bd->bi_arch_number = MACH_TYPE_OMAP5_SEVM;
 	gd->bd->bi_boot_params = (0x80000000 + 0x100); /* boot param addr */
 
 	tca642x_set_inital_state(CONFIG_SYS_I2C_TCA642X_ADDR, tca642x_init);
diff --git a/include/configs/cardhu.h b/include/configs/cardhu.h
index 96d3a0d5cce9eb8842f6ec9b00fbf12cf88e85ce..7e3966f47803e0fbdb57b29ee128c1393ac5802c 100644
--- a/include/configs/cardhu.h
+++ b/include/configs/cardhu.h
@@ -25,6 +25,8 @@
 #define CONFIG_TEGRA_ENABLE_UARTA
 #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE
 
+#define CONFIG_MACH_TYPE		MACH_TYPE_CARDHU
+
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 
diff --git a/include/configs/colibri_t20.h b/include/configs/colibri_t20.h
index 791a29b4d28f09f6fcc2ce14bd069fb1993e0c70..05202837d7323ea99132fd18dba05eb14dbde5c0 100644
--- a/include/configs/colibri_t20.h
+++ b/include/configs/colibri_t20.h
@@ -19,6 +19,8 @@
 #define CONFIG_TEGRA_UARTA_SDIO1
 #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE
 
+#define CONFIG_MACH_TYPE		MACH_TYPE_COLIBRI_TEGRA2
+
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 
diff --git a/include/configs/iconnect.h b/include/configs/iconnect.h
index 0ea6fcb82c094d38854ab8849aab5510eaa143ad..633941b7dd5655bf1f9334d6d0d7c7b11968aa0b 100644
--- a/include/configs/iconnect.h
+++ b/include/configs/iconnect.h
@@ -16,6 +16,11 @@
 #define CONFIG_KW88F6281		/* SOC Name */
 #define CONFIG_SKIP_LOWLEVEL_INIT	/* disable board lowlevel_init */
 
+/*
+ * Machine type
+ */
+#define CONFIG_MACH_TYPE	MACH_TYPE_ICONNECT
+
 /*
  * Compression configuration
  */
diff --git a/include/configs/rpi.h b/include/configs/rpi.h
index c460207e64fcbb6d6a049fc3c00b5b3a30d6882f..4ba04e31798c7bd0650434732e903148afb94123 100644
--- a/include/configs/rpi.h
+++ b/include/configs/rpi.h
@@ -24,6 +24,21 @@
 	(&((struct bcm2835_timer_regs *)BCM2835_TIMER_PHYSADDR)->clo)
 #endif
 
+/*
+ * 2835 is a SKU in a series for which the 2708 is the first or primary SoC,
+ * so 2708 has historically been used rather than a dedicated 2835 ID.
+ *
+ * We don't define a machine type for bcm2709/bcm2836 since the RPi Foundation
+ * chose to use someone else's previously registered machine ID (3139, MX51_GGC)
+ * rather than obtaining a valid ID:-/
+ *
+ * For the bcm2837, hopefully a machine type is not needed, since everything
+ * is DT.
+ */
+#ifdef CONFIG_BCM2835
+#define CONFIG_MACH_TYPE		MACH_TYPE_BCM2708
+#endif
+
 /* Memory layout */
 #define CONFIG_NR_DRAM_BANKS		1
 #define CONFIG_SYS_SDRAM_BASE		0x00000000
diff --git a/include/configs/smartweb.h b/include/configs/smartweb.h
index 5ecc693fc84a497e1d6dd7d44aba2ae316d3f758..748865d9bf09a5953cbb8fef23883803089ccb26 100644
--- a/include/configs/smartweb.h
+++ b/include/configs/smartweb.h
@@ -51,6 +51,7 @@
 #define CONFIG_SYS_MAXARGS    32
 
 /* setting board specific options */
+#define CONFIG_MACH_TYPE		MACH_TYPE_SMARTWEB
 #define CONFIG_AUTO_COMPLETE
 #define CONFIG_ENV_OVERWRITE    1 /* Overwrite ethaddr / serial# */
 #define CONFIG_AUTO_COMPLETE
diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h
index 6f46675a1839bc2c561bcf2f4ea8b1fcd65aff41..fba27796ca29c8c51a62bb268e7f228f0e0cc872 100644
--- a/include/configs/tricorder.h
+++ b/include/configs/tricorder.h
@@ -24,6 +24,7 @@
 #define CONFIG_ARM_ERRATA_430973
 #define CONFIG_ARM_ERRATA_621766
 
+#define CONFIG_MACH_TYPE		MACH_TYPE_TRICORDER
 /*
  * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM
  * 64 bytes before this address should be set aside for u-boot.img's
diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
index 6c3607456904cb20b9f9de0677c97d2c6ccbf324..dcb3a2ea6f257e43da0bd26d26e578add92ab80a 100644
--- a/include/configs/ts4800.h
+++ b/include/configs/ts4800.h
@@ -21,6 +21,8 @@
 
 #define CONFIG_HW_WATCHDOG
 
+#define CONFIG_MACH_TYPE	MACH_TYPE_TS48XX
+
 /* text base address used when linking */
 #define CONFIG_SYS_TEXT_BASE	0x90008000
 
diff --git a/include/configs/ventana.h b/include/configs/ventana.h
index 615acfe7e3840e4ef37d10dc150f2cf0b5c5d7f8..1150adfe7d94b7ec0a0c77687797142ffa56212f 100644
--- a/include/configs/ventana.h
+++ b/include/configs/ventana.h
@@ -18,6 +18,8 @@
 #define CONFIG_TEGRA_ENABLE_UARTD
 #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE
 
+#define CONFIG_MACH_TYPE		MACH_TYPE_VENTANA
+
 /* SD/MMC */
 #define CONFIG_GENERIC_MMC
 
diff --git a/include/configs/whistler.h b/include/configs/whistler.h
index 30a48e83ca422b0d6322418dfcbc1a6d097d2738..19b57fd2235a05bfebcf8725d7c1eb9c0c3bbff0 100644
--- a/include/configs/whistler.h
+++ b/include/configs/whistler.h
@@ -19,6 +19,8 @@
 #define CONFIG_TEGRA_UARTA_UAA_UAB
 #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE
 
+#define CONFIG_MACH_TYPE		MACH_TYPE_WHISTLER
+
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 
diff --git a/include/configs/zmx25.h b/include/configs/zmx25.h
index 5b940349babf474b704cd40857220a7089eeb1a6..f669590fb70bdcf8700306da0400937a0fbd2393 100644
--- a/include/configs/zmx25.h
+++ b/include/configs/zmx25.h
@@ -19,6 +19,7 @@
 #define CONFIG_SYS_TIMER_COUNTER	\
 	(&((struct gpt_regs *)IMX_GPT1_BASE)->counter)
 
+#define CONFIG_MACH_TYPE	MACH_TYPE_ZMX25
 /*
  * Environment settings
  */