diff --git a/include/configs/km/keymile-common.h b/include/configs/km/keymile-common.h
index 70c9dad3d153180f3e79e417abfd1313623f82cf..8839ccb920b31eede4b3e4b3bca3bf80e54a6ead 100644
--- a/include/configs/km/keymile-common.h
+++ b/include/configs/km/keymile-common.h
@@ -131,8 +131,7 @@
 /* common powerpc specific env settings */
 #ifndef CONFIG_KM_DEF_ENV_BOOTPARAMS
 #define CONFIG_KM_DEF_ENV_BOOTPARAMS \
-	"bootparams=empty\0"	\
-	"initial_boot_bank=0\0"
+	"actual_bank=0\0"
 #endif
 
 #ifndef CONFIG_KM_DEF_NETDEV
@@ -150,58 +149,16 @@
 #define xstr(s)	str(s)
 #define str(s)	#s
 
-/*
- * bootrunner
- * - run all commands in 'subbootcmds'
- * - on error, stop running the remaing commands
- */
-#define CONFIG_KM_DEF_ENV_BOOTRUNNER					\
-	"bootrunner="							\
-		"break=0; "						\
-		"for subbootcmd in ${subbootcmds}; do "			\
-		"if test ${break} -eq 0; then; "			\
-		"print ${subbootcmd}; "					\
-		"run ${subbootcmd} || break=1; "			\
-		"fi; "							\
-		"done\0"						\
-	""
-
 /*
  * boottargets
- * - set 'subbootcmds' for the bootrunner
+ * - set 'subbootcmds'
  * - set 'bootcmd' and 'altbootcmd'
  * available targets:
  * - 'release': for a standalone system		kernel/rootfs from flash
- *
- * - 'commonargs': bootargs common to all targets
  */
 #define CONFIG_KM_DEF_ENV_BOOTTARGETS					\
-	"commonargs="							\
-		"addip "						\
-		"addtty "						\
-		"addmem "						\
-		"addinit "						\
-		"addvar "						\
-		"addmtdparts "						\
-		"addbootcount "						\
-		"\0"							\
-	"release="							\
-		"setenv actual_bank ${initial_boot_bank} && "		\
-		"setenv subbootcmds \""					\
-		"checkboardid "						\
-		"ubiattach ubicopy "					\
-		"cramfsloadfdt cramfsloadkernel "			\
-		"flashargs ${commonargs} "				\
-		"addpanic boot "					\
-		"\" && "						\
-		"setenv bootcmd \'"					\
-		"run actual bootrunner; reset"				\
-		"\' && "						\
-		"setenv altbootcmd \'"					\
-		"run backup bootrunner; reset"				\
-		"\' && "						\
-		"saveenv && saveenv && "				\
-		"reset\0"						\
+	"subbootcmds=ubiattach ubicopy cramfsloadfdt cramfsloadkernel "	\
+		"flashargs add_default addpanic boot\0"			\
 	"debug_env="							\
 		"tftp 200000 " CONFIG_KM_ARCH_DBG_FILE " && "		\
 		"env import -t 200000 ${filesize} && "			\
@@ -212,37 +169,26 @@
  * bootargs
  * - modify 'bootargs'
  *
- * - 'addip': add ip configuration
- * - 'addmem': limit kernel memory mem=
+ * - 'add_default': default bootargs common for all arm/ppc boards
  * - 'addpanic': add kernel panic options
- * - 'addtty': add console=...
- * - 'addvar': add phram device for /var
  * - 'flashargs': defaults arguments for flash base boot
  *
- * processor specific settings
- * - 'addbootcount': add boot counter
- * - 'addmtdparts': add mtd partition information
  */
 #define CONFIG_KM_DEF_ENV_BOOTARGS					\
-	"addinit="							\
-		"setenv bootargs ${bootargs} init=${init}\0"		\
-	"addip="							\
+	"add_default="							\
 		"setenv bootargs ${bootargs} "				\
 		"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"	\
-		":${hostname}:${netdev}:off\0"				\
-	"addmem="							\
-		"setenv bootargs ${bootargs} mem=${pnvramaddr}\0"	\
+		":${hostname}:${netdev}:off3"				\
+		" console=" CONFIG_KM_CONSOLE_TTY ",${baudrate}"	\
+		" mem=${pnvramaddr} init=${init}"			\
+		" phram.phram=phvar,${varaddr}," xstr(CONFIG_KM_PHRAM)	\
+		" ubi.mtd=" CONFIG_KM_UBI_LINUX_MTD_NAME " "		\
+		CONFIG_KM_DEF_BOOT_ARGS_CPU				\
+		"\0"							\
 	"addpanic="							\
 		"setenv bootargs ${bootargs} panic=1 panic_on_oops=1\0"	\
-	"addtty="							\
-		"setenv bootargs ${bootargs}"				\
-		" console=" CONFIG_KM_CONSOLE_TTY ",${baudrate}\0"	\
-	"addvar="							\
-		"setenv bootargs ${bootargs} phram.phram=phvar,"	\
-		"${varaddr}," xstr(CONFIG_KM_PHRAM) "\0"		\
 	"flashargs="							\
 		"setenv bootargs "					\
-		"ubi.mtd=" CONFIG_KM_UBI_LINUX_MTD_NAME " "		\
 		"root=mtdblock:rootfs${boot_bank} "			\
 		"rootfstype=squashfs ro\0"				\
 	""
@@ -261,9 +207,7 @@
  */
 #define CONFIG_KM_DEF_ENV_FLASH_BOOT					\
 	"cramfsaddr=" xstr(CONFIG_KM_CRAMFS_ADDR) "\0"			\
-	"cramfsloadkernel="						\
-		"cramfsload ${kernel_addr_r} uImage && "		\
-		"setenv actual_kernel_addr ${kernel_addr_r}\0"		\
+	"cramfsloadkernel=cramfsload ${load_addr_r} uImage\0"		\
 	"ubiattach=ubi part " CONFIG_KM_UBI_PARTITION_NAME "\0"		\
 	"ubicopy=ubi read "xstr(CONFIG_KM_CRAMFS_ADDR)			\
 			" bootfs${boot_bank}\0"				\
@@ -276,14 +220,8 @@
  * - 'default': setup default environment
  */
 #define CONFIG_KM_DEF_ENV_CONSTANTS					\
-	"actual=setenv boot_bank ${actual_bank}\0"			\
-	"backup=setenv boot_bank ${backup_bank}\0"			\
-	"actual_bank=${initial_boot_bank}\0"				\
 	"backup_bank=0\0"						\
-	"default="							\
-		"setenv default 'run newenv; reset' &&  "		\
-		"run release && saveenv; reset\0"			\
-	"checkboardid=km_checkbidhwk\0"					\
+	"release=run newenv; reset\0"					\
 	"pnvramsize=" xstr(CONFIG_KM_PNVRAM) "\0"			\
 	""
 
@@ -292,24 +230,27 @@
 	CONFIG_KM_DEF_ENV_BOOTPARAMS					\
 	CONFIG_KM_DEF_NETDEV						\
 	CONFIG_KM_DEF_ENV_CPU						\
-	CONFIG_KM_DEF_ENV_BOOTRUNNER					\
 	CONFIG_KM_DEF_ENV_BOOTTARGETS					\
 	CONFIG_KM_DEF_ENV_BOOTARGS					\
 	CONFIG_KM_DEF_ENV_FLASH_BOOT					\
 	CONFIG_KM_DEF_ENV_CONSTANTS					\
 	"altbootcmd=run bootcmd\0"					\
-	"bootcmd=run default\0"						\
+	"bootcmd=km_checkbidhwk &&  "					\
+	"	setenv bootcmd \'setenv boot_bank ${actual_bank}; "	\
+			"run ${subbootcmds}; reset\' && "		\
+		"setenv altbootcmd \'setenv boot_bank ${backup_bank}; "	\
+			"run ${subbootcmds}; reset\' && "		\
+		"saveenv && saveenv && boot\0"				\
 	"bootlimit=2\0"							\
 	"init=/sbin/init-overlay.sh\0"					\
-	"kernel_addr_r="xstr(CONFIG_KM_KERNEL_ADDR) "\0"		\
-	"load=tftpboot ${u-boot_addr_r} ${u-boot}\0"			\
+	"load_addr_r="xstr(CONFIG_KM_KERNEL_ADDR) "\0"			\
+	"load=tftpboot ${load_addr_r} ${u-boot}\0"			\
 	"mtdids=" MTDIDS_DEFAULT "\0"					\
 	"mtdparts=" MTDPARTS_DEFAULT "\0"				\
 	"stderr=serial\0"						\
 	"stdin=serial\0"						\
 	"stdout=serial\0"						\
 	"u-boot="xstr(CONFIG_HOSTNAME) "/u-boot.bin\0"			\
-	"u-boot_addr_r="xstr(CONFIG_KM_KERNEL_ADDR) "\0"		\
 	""
 #endif /* CONFIG_KM_DEF_ENV */
 
diff --git a/include/configs/km/km-powerpc.h b/include/configs/km/km-powerpc.h
index d6db8d79f1a51e6c3b79630d1a3f0b2571cabf8a..7aaa8d21e85c23e1259d488061e0b1c91151cadc 100644
--- a/include/configs/km/km-powerpc.h
+++ b/include/configs/km/km-powerpc.h
@@ -66,19 +66,19 @@
 #define CONFIG_KM_KERNEL_ADDR	0x400000	/* 3968Kbytes */
 #define CONFIG_KM_FDT_ADDR	0x7E0000	/* 128Kbytes */
 
+/* architecture specific default bootargs */
+#define CONFIG_KM_DEF_BOOT_ARGS_CPU		""
+
 #define CONFIG_KM_DEF_ENV_CPU						\
-	"addbootcount=true\0"						\
-	"addmtdparts=true\0"						\
-	"boot=bootm ${actual_kernel_addr} - ${actual_fdt_addr}\0"	\
+	"boot=bootm ${load_addr_r} - ${fdt_addr_r}\0"			\
 	"cramfsloadfdt="						\
 		"cramfsload ${fdt_addr_r} "				\
-		"fdt_0x${IVM_BoardId}_0x${IVM_HWKey}.dtb && "		\
-		"setenv actual_fdt_addr ${fdt_addr_r}\0"		\
+		"fdt_0x${IVM_BoardId}_0x${IVM_HWKey}.dtb\0"		\
 	"fdt_addr_r=" xstr(CONFIG_KM_FDT_ADDR) "\0"			\
 	"update="							\
 		"protect off " xstr(BOOTFLASH_START) " +${filesize} && "\
 		"erase " xstr(BOOTFLASH_START) "  +${filesize} && "	\
-		"cp.b ${u-boot_addr_r} " xstr(BOOTFLASH_START)		\
+		"cp.b ${load_addr_r} " xstr(BOOTFLASH_START)		\
 		"  ${filesize} && "					\
 		"protect on " xstr(BOOTFLASH_START) "  +${filesize}\0"  \
 	""
diff --git a/include/configs/km/km_arm.h b/include/configs/km/km_arm.h
index f1eea2632007c5fb964cd63ea77201b2a1b3cd90..7eb5cd49f6baa9b2e08ceb60b978f732369e3ad0 100644
--- a/include/configs/km/km_arm.h
+++ b/include/configs/km/km_arm.h
@@ -67,12 +67,12 @@
 #define CONFIG_KM_CRAMFS_ADDR	0x2400000
 #define CONFIG_KM_KERNEL_ADDR	0x2000000	/* 4096KBytes */
 
+/* architecture specific default bootargs */
+#define CONFIG_KM_DEF_BOOT_ARGS_CPU					\
+		"bootcountaddr=${bootcountaddr} ${mtdparts}"
+
 #define CONFIG_KM_DEF_ENV_CPU						\
-	"addbootcount="							\
-		"setenv bootargs ${bootargs} "				\
-		"bootcountaddr=${bootcountaddr}\0"			\
-	"addmtdparts=setenv bootargs ${bootargs} ${mtdparts}\0"		\
-	"boot=bootm ${actual_kernel_addr} - -\0"			\
+	"boot=bootm ${load_addr_r} - -\0"				\
 	"cramfsloadfdt=true\0"						\
 	CONFIG_KM_DEF_ENV_UPDATE					\
 	""
@@ -229,7 +229,7 @@ int get_scl(void);
 #define	CONFIG_KM_DEF_ENV_UPDATE					\
 	"update="							\
 		"spi on;sf probe 0;sf erase 0 50000;"			\
-		"sf write ${u-boot_addr_r} 0 ${filesize};"		\
+		"sf write ${load_addr_r} 0 ${filesize};"		\
 		"spi off\0"
 
 /*