diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 378d100a6acec91f990b41e17e12aaa709ffbba5..7a4fa0710c56e3e246f7fc28ec8b8926e16310f3 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -41,8 +41,8 @@ endif
 ifeq ($(LINUX_VERSION),3.3.8)
   LINUX_KERNEL_MD5SUM:=21068f0fd262b9b3670947f7892e1d6b
 endif
-ifeq ($(LINUX_VERSION),3.6.4)
-  LINUX_KERNEL_MD5SUM:=a9ef3e479b47ef31d5a6c71a49aacf52
+ifeq ($(LINUX_VERSION),3.6.5)
+  LINUX_KERNEL_MD5SUM:=2fd130accbae2812ca444cd492fc114c
 endif
 
 # disable the md5sum check for unknown kernel versions
diff --git a/target/linux/generic/patches-3.6/025-bcma_backport.patch b/target/linux/generic/patches-3.6/025-bcma_backport.patch
index d791f16a0fc02fb75b8dda80412ceb67607fda8d..15f54a3ba792981f5d2bd635c9b882d466ecc0df 100644
--- a/target/linux/generic/patches-3.6/025-bcma_backport.patch
+++ b/target/linux/generic/patches-3.6/025-bcma_backport.patch
@@ -626,7 +626,7 @@
  static void bcma_release_core_dev(struct device *dev)
  {
  	struct bcma_device *core = container_of(dev, struct bcma_device, dev);
-@@ -136,14 +149,31 @@ static int bcma_register_cores(struct bc
+@@ -136,6 +149,22 @@ static int bcma_register_cores(struct bc
  		dev_id++;
  	}
  
@@ -649,18 +649,7 @@
  	return 0;
  }
  
- static void bcma_unregister_cores(struct bcma_bus *bus)
- {
--	struct bcma_device *core;
-+	struct bcma_device *core, *tmp;
- 
--	list_for_each_entry(core, &bus->cores, list) {
-+	list_for_each_entry_safe(core, tmp, &bus->cores, list) {
-+		list_del(&core->list);
- 		if (core->dev_registered)
- 			device_unregister(&core->dev);
- 	}
-@@ -165,6 +195,20 @@ int __devinit bcma_bus_register(struct b
+@@ -166,6 +195,20 @@ int __devinit bcma_bus_register(struct b
  		return -1;
  	}
  
@@ -681,28 +670,28 @@
  	/* Init CC core */
  	core = bcma_find_core(bus, bcma_cc_core_id(bus));
  	if (core) {
-@@ -180,10 +224,17 @@ int __devinit bcma_bus_register(struct b
+@@ -181,10 +224,17 @@ int __devinit bcma_bus_register(struct b
  	}
  
  	/* Init PCIE core */
 -	core = bcma_find_core(bus, BCMA_CORE_PCIE);
 +	core = bcma_find_core_unit(bus, BCMA_CORE_PCIE, 0);
- 	if (core) {
--		bus->drv_pci.core = core;
--		bcma_core_pci_init(&bus->drv_pci);
++	if (core) {
 +		bus->drv_pci[0].core = core;
 +		bcma_core_pci_init(&bus->drv_pci[0]);
 +	}
 +
 +	/* Init PCIE core */
 +	core = bcma_find_core_unit(bus, BCMA_CORE_PCIE, 1);
-+	if (core) {
+ 	if (core) {
+-		bus->drv_pci.core = core;
+-		bcma_core_pci_init(&bus->drv_pci);
 +		bus->drv_pci[1].core = core;
 +		bcma_core_pci_init(&bus->drv_pci[1]);
  	}
  
  	/* Init GBIT MAC COMMON core */
-@@ -193,13 +244,6 @@ int __devinit bcma_bus_register(struct b
+@@ -194,13 +244,6 @@ int __devinit bcma_bus_register(struct b
  		bcma_core_gmac_cmn_init(&bus->drv_gmac_cmn);
  	}
  
@@ -716,7 +705,7 @@
  	/* Register found cores */
  	bcma_register_cores(bus);
  
-@@ -210,7 +254,17 @@ int __devinit bcma_bus_register(struct b
+@@ -211,7 +254,17 @@ int __devinit bcma_bus_register(struct b
  
  void bcma_bus_unregister(struct bcma_bus *bus)
  {
@@ -734,7 +723,7 @@
  }
  
  int __init bcma_bus_early_register(struct bcma_bus *bus,
-@@ -247,18 +301,18 @@ int __init bcma_bus_early_register(struc
+@@ -248,18 +301,18 @@ int __init bcma_bus_early_register(struc
  		return -1;
  	}
  
diff --git a/target/linux/generic/patches-3.6/060-hso_devices.patch b/target/linux/generic/patches-3.6/060-hso_devices.patch
index 14c5b92082f3b4387b534294b4d47a1ab31b425f..0080bd58b7b3c590098164f9a274f526013c213a 100644
--- a/target/linux/generic/patches-3.6/060-hso_devices.patch
+++ b/target/linux/generic/patches-3.6/060-hso_devices.patch
@@ -15,7 +15,7 @@
  	{USB_DEVICE(0x0af0, 0xd155)},
 --- a/drivers/usb/storage/unusual_devs.h
 +++ b/drivers/usb/storage/unusual_devs.h
-@@ -1231,6 +1231,18 @@ UNUSUAL_DEV( 0x0af0, 0x8304, 0x0000, 0x0
+@@ -1237,6 +1237,18 @@ UNUSUAL_DEV( 0x0af0, 0x8304, 0x0000, 0x0
  		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
  		0 ),
  
diff --git a/target/linux/generic/patches-3.6/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/patches-3.6/811-pci_disable_usb_common_quirks.patch
index 6debec9c8cc50a5832f8dc09e7c22ff8abad5ac1..abe0230fd3377c4c695891d5ceb008f870fc0e5b 100644
--- a/target/linux/generic/patches-3.6/811-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/patches-3.6/811-pci_disable_usb_common_quirks.patch
@@ -10,7 +10,7 @@
  static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
  {
  	u16 cmd;
-@@ -964,3 +966,4 @@ static void __devinit quirk_usb_early_ha
+@@ -971,3 +973,4 @@ static void __devinit quirk_usb_early_ha
  }
  DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
  			PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
diff --git a/target/linux/generic/patches-3.6/920-unable_to_open_console.patch b/target/linux/generic/patches-3.6/920-unable_to_open_console.patch
index f9bcf1673cb4ee6f92b2169e379edb46fe4d478c..e141e7057c1575aa706f1859099165219a7bd2ce 100644
--- a/target/linux/generic/patches-3.6/920-unable_to_open_console.patch
+++ b/target/linux/generic/patches-3.6/920-unable_to_open_console.patch
@@ -1,6 +1,6 @@
 --- a/init/main.c
 +++ b/init/main.c
-@@ -868,7 +868,7 @@ static int __init kernel_init(void * unu
+@@ -871,7 +871,7 @@ static int __init kernel_init(void * unu
  
  	/* Open the /dev/console on the rootfs, this should never fail */
  	if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
diff --git a/target/linux/generic/patches-3.6/921-use_preinit_as_init.patch b/target/linux/generic/patches-3.6/921-use_preinit_as_init.patch
index abd00c65f8f3cf85e9209f6b2271968d8befafe3..31e77b30bc4a3c133292200f6ccd865a8a0e6df7 100644
--- a/target/linux/generic/patches-3.6/921-use_preinit_as_init.patch
+++ b/target/linux/generic/patches-3.6/921-use_preinit_as_init.patch
@@ -1,6 +1,6 @@
 --- a/init/main.c
 +++ b/init/main.c
-@@ -826,10 +826,7 @@ static noinline int init_post(void)
+@@ -829,10 +829,7 @@ static noinline int init_post(void)
  		printk(KERN_WARNING "Failed to execute %s.  Attempting "
  					"defaults...\n", execute_command);
  	}