diff -Nur linux-2.6.34.orig/arch/mips/ar7/prom.c linux-2.6.34/arch/mips/ar7/prom.c
--- linux-2.6.34.orig/arch/mips/ar7/prom.c	2010-05-16 23:17:36.000000000 +0200
+++ linux-2.6.34/arch/mips/ar7/prom.c	2010-05-28 15:52:26.960965976 +0200
@@ -206,6 +206,14 @@
 	if (strstr(arcs_cmdline, "console="))
 		return;
 
+#ifdef CONFIG_KGDB
+	if (!strstr(prom_getcmdline(), "nokgdb")) {
+		strcat(prom_getcmdline(), " console=kgdb");
+		kgdb_enabled = 1;
+		return;
+	}
+#endif
+
 	s = prom_getenv("modetty0");
 	if (s) {
 		baud = simple_strtoul(s, &p, 10);
diff -Nur linux-2.6.34.orig/arch/mips/Kconfig linux-2.6.34/arch/mips/Kconfig
--- linux-2.6.34.orig/arch/mips/Kconfig	2010-05-16 23:17:36.000000000 +0200
+++ linux-2.6.34/arch/mips/Kconfig	2010-05-28 15:52:27.142223192 +0200
@@ -34,7 +34,6 @@
 	select CEVT_R4K
 	select CSRC_R4K
 	select IRQ_CPU
-	select NO_EXCEPT_FILL
 	select SWAP_IO_SPACE
 	select SYS_HAS_CPU_MIPS32_R1
 	select SYS_HAS_EARLY_PRINTK
diff -Nur linux-2.6.34.orig/drivers/mtd/ar7part.c linux-2.6.34/drivers/mtd/ar7part.c
--- linux-2.6.34.orig/drivers/mtd/ar7part.c	2010-05-16 23:17:36.000000000 +0200
+++ linux-2.6.34/drivers/mtd/ar7part.c	2010-05-28 15:52:27.232223555 +0200
@@ -28,7 +28,7 @@
 #include <linux/bootmem.h>
 #include <linux/magic.h>
 
-#define AR7_PARTS	4
+#define AR7_PARTS	5
 #define ROOT_OFFSET	0xe0000
 
 #define LOADER_MAGIC1	le32_to_cpu(0xfeedfa42)
@@ -122,14 +122,19 @@
 
 	ar7_parts[2].name = "linux";
 	ar7_parts[2].offset = pre_size;
-	ar7_parts[2].size = master->size - pre_size - post_size;
+	ar7_parts[2].size = master->size - pre_size - post_size - 2*master->erasesize;
 	ar7_parts[2].mask_flags = 0;
 
 	ar7_parts[3].name = "rootfs";
 	ar7_parts[3].offset = root_offset;
-	ar7_parts[3].size = master->size - root_offset - post_size;
+	ar7_parts[3].size = master->size - root_offset - post_size - 2*master->erasesize;
 	ar7_parts[3].mask_flags = 0;
 
+	ar7_parts[4].name = "cfgfs";
+	ar7_parts[4].offset = master->size - 2*master->erasesize;
+	ar7_parts[4].size = 2*master->erasesize;
+	ar7_parts[4].mask_flags = 0;
+
 	*pparts = ar7_parts;
 	return AR7_PARTS;
 }
diff -Nur linux-2.6.34.orig/drivers/mtd/maps/physmap.c linux-2.6.34/drivers/mtd/maps/physmap.c
--- linux-2.6.34.orig/drivers/mtd/maps/physmap.c	2010-05-16 23:17:36.000000000 +0200
+++ linux-2.6.34/drivers/mtd/maps/physmap.c	2010-05-28 15:52:27.281073432 +0200
@@ -79,7 +79,7 @@
 					"map_rom",
 					NULL };
 #ifdef CONFIG_MTD_PARTITIONS
-static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", NULL };
+static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", "ar7part", NULL };
 #endif
 
 static int physmap_flash_probe(struct platform_device *dev)
diff -Nur linux-2.6.34.orig/drivers/serial/8250.c linux-2.6.34/drivers/serial/8250.c
--- linux-2.6.34.orig/drivers/serial/8250.c	2010-05-16 23:17:36.000000000 +0200
+++ linux-2.6.34/drivers/serial/8250.c	2010-05-28 15:52:27.330968429 +0200
@@ -2746,7 +2746,11 @@
 {
 	struct uart_8250_port *up = (struct uart_8250_port *)port;
 
+#ifdef CONFIG_AR7
+	wait_for_xmitr(up, BOTH_EMPTY);
+#else
 	wait_for_xmitr(up, UART_LSR_THRE);
+#endif
 	serial_out(up, UART_TX, ch);
 }