diff -urN oldtree/Documentation/kernel-parameters.txt newtree/Documentation/kernel-parameters.txt
--- oldtree/Documentation/kernel-parameters.txt	2006-09-17 05:38:20.000000000 -0400
+++ newtree/Documentation/kernel-parameters.txt	2006-09-17 05:43:49.000000000 -0400
@@ -1176,11 +1176,7 @@
 		nomsi		[MSI] If the PCI_MSI kernel config parameter is
 				enabled, this kernel boot option can be used to
 				disable the use of MSI interrupts system-wide.
-		nosort		Don't sort PCI devices into breadth-first order.
-				This sorting is done to get a device
-				order compatible with older (<= 2.4) kernels.
-				and
-				[IA-32] Don't sort PCI devices according to
+		nosort		[IA-32] Don't sort PCI devices according to
 				order given by the PCI BIOS. This sorting is
 				done to get a device order compatible with
 				older kernels.
diff -urN oldtree/arch/i386/pci/common.c newtree/arch/i386/pci/common.c
--- oldtree/arch/i386/pci/common.c	2006-09-17 05:38:20.000000000 -0400
+++ newtree/arch/i386/pci/common.c	2006-09-17 05:46:21.000000000 -0400
@@ -189,8 +189,6 @@
 
 	pcibios_resource_survey();
 
-	if (!(pci_probe & PCI_NO_SORT))
-		pci_sort_breadthfirst();
 #ifdef CONFIG_PCI_BIOS
 	if ((pci_probe & PCI_BIOS_SORT) && !(pci_probe & PCI_NO_SORT))
 		pcibios_sort();
@@ -205,9 +203,6 @@
 	if (!strcmp(str, "off")) {
 		pci_probe = 0;
 		return NULL;
-	} else if (!strcmp(str, "nosort")) {
-		pci_probe |= PCI_NO_SORT;
-		return NULL;
 	}
 #ifdef CONFIG_PCI_BIOS
 	else if (!strcmp(str, "bios")) {
@@ -216,6 +211,9 @@
 	} else if (!strcmp(str, "nobios")) {
 		pci_probe &= ~PCI_PROBE_BIOS;
 		return NULL;
+	} else if (!strcmp(str, "nosort")) {
+		pci_probe |= PCI_NO_SORT;
+		return NULL;
 	} else if (!strcmp(str, "biosirq")) {
 		pci_probe |= PCI_BIOS_IRQ_SCAN;
 		return NULL;
diff -urN oldtree/arch/ppc/mm/init.c newtree/arch/ppc/mm/init.c
--- oldtree/arch/ppc/mm/init.c	2006-09-17 05:38:20.000000000 -0400
+++ newtree/arch/ppc/mm/init.c	2006-09-17 05:55:59.000000000 -0400
@@ -359,7 +359,7 @@
 void __init paging_init(void)
 {
 	unsigned long start_pfn, end_pfn;
-	unsigned long max_zone_pfns;
+	unsigned long max_zone_pfns[MAX_NR_ZONES];
 #ifdef CONFIG_HIGHMEM
 	map_page(PKMAP_BASE, 0, 0);	/* XXX gross */
 	pkmap_page_table = pte_offset_kernel(pmd_offset(pgd_offset_k
diff -urN oldtree/drivers/pci/probe.c newtree/drivers/pci/probe.c
--- oldtree/drivers/pci/probe.c	2006-09-17 05:38:20.000000000 -0400
+++ newtree/drivers/pci/probe.c	2006-09-17 05:50:10.000000000 -0400
@@ -1068,92 +1068,3 @@
 EXPORT_SYMBOL_GPL(pci_scan_child_bus);
 #endif
 
-static int __init pci_sort_bf_cmp(const struct pci_dev *a, const struct pci_dev *b)
-{
-	if      (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
-	else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return  1;
-
-	if      (a->bus->number < b->bus->number) return -1;
-	else if (a->bus->number > b->bus->number) return  1;
-
-	if      (a->devfn < b->devfn) return -1;
-	else if (a->devfn > b->devfn) return  1;
-
-	return 0;
-}
-
-/*
- * Yes, this forcably breaks the klist abstraction temporarily.  It
- * just wants to sort the klist, not change reference counts and
- * take/drop locks rapidly in the process.  It does all this while
- * holding the lock for the list, so objects can't otherwise be
- * added/removed while we're swizzling.
- */
-
-static void __init pci_insertion_sort_klist(struct pci_dev *a, struct list_head *list)
-{
-	struct list_head *pos;
-	struct klist_node *n;
-	struct device *dev;
-	struct pci_dev *b;
-	list_for_each(pos, list) {
-		n = container_of(pos, struct klist_node, n_node);
-		dev = container_of(n, struct device, knode_bus);
-		b = to_pci_dev(dev);
-		if (pci_sort_bf_cmp(a, b) <= 0) {
-			list_move_tail(&a->dev.knode_bus.n_node, &b->dev.knode_bus.n_node);
-			return;
-		}
-	}
-	list_move_tail(&a->dev.knode_bus.n_node, list);
-}
-
-static void __init pci_sort_breadthfirst_klist(void)
-{
-	LIST_HEAD(sorted_devices);
-	struct list_head *pos, *tmp;
-	struct klist_node *n;
-	struct device *dev;
-	struct pci_dev *pdev;
-	spin_lock(&pci_bus_type.klist_devices.k_lock);
-	list_for_each_safe(pos, tmp, &pci_bus_type.klist_devices.k_list) {
-		n = container_of(pos, struct klist_node, n_node);
-		dev = container_of(n, struct device, knode_bus);
-		pdev = to_pci_dev(dev);
-		pci_insertion_sort_klist(pdev, &sorted_devices);
-	}
-	list_splice(&sorted_devices, &pci_bus_type.klist_devices.k_list);
-	spin_unlock(&pci_bus_type.klist_devices.k_lock);
-}
-
-static void __init pci_insertion_sort_devices(struct pci_dev *a, struct list_head *list)
-{
-	struct pci_dev *b;
-	list_for_each_entry(b, list, global_list) {
-		if (pci_sort_bf_cmp(a, b) <= 0) {
-			list_move_tail(&a->global_list, &b->global_list);
-			return;
-		}
-	}
-	list_move_tail(&a->global_list, list);
-}
-
-static void __init pci_sort_breadthfirst_devices(void)
-{
-	LIST_HEAD(sorted_devices);
-	struct pci_dev *dev, *tmp;
-
-	down_write(&pci_bus_sem);
-	list_for_each_entry_safe(dev, tmp, &pci_devices, global_list) {
-		pci_insertion_sort_devices(dev, &sorted_devices);
-	}
-	list_splice(&sorted_devices, &pci_devices);
-	up_write(&pci_bus_sem);
-}
-
-void __init pci_sort_breadthfirst(void)
-{
-	pci_sort_breadthfirst_devices();
-	pci_sort_breadthfirst_klist();
-}
-
diff -urN oldtree/drivers/serial/8250.c newtree/drivers/serial/8250.c
--- oldtree/drivers/serial/8250.c	2006-09-17 05:38:20.000000000 -0400
+++ newtree/drivers/serial/8250.c	2006-09-17 06:03:18.000000000 -0400
@@ -2263,8 +2263,6 @@
 	unsigned int ier;
 	int locked = 1;
 
-	touch_nmi_watchdog();
-
 	local_irq_save(flags);
 	if (up->port.sysrq) {
 		/* serial8250_handle_port() already took the lock */
diff -urN oldtree/drivers/usb/host/ohci-hcd.c newtree/drivers/usb/host/ohci-hcd.c
--- oldtree/drivers/usb/host/ohci-hcd.c	2006-09-17 05:38:20.000000000 -0400
+++ newtree/drivers/usb/host/ohci-hcd.c	2006-09-17 05:42:01.000000000 -0400
@@ -795,7 +795,10 @@
 
 	ohci_usb_reset (ohci);
 	ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
-	
+
+	free_irq(hcd->irq,hcd);
+	hcd->irq = -1;	
+
 	remove_debug_files (ohci);
 	ohci_mem_cleanup (ohci);
 	if (ohci->hcca) {
diff -urN oldtree/include/linux/pci.h newtree/include/linux/pci.h
--- oldtree/include/linux/pci.h	2006-09-17 05:38:20.000000000 -0400
+++ newtree/include/linux/pci.h	2006-09-17 05:50:21.000000000 -0400
@@ -436,7 +436,6 @@
 extern void pci_remove_bus(struct pci_bus *b);
 extern void pci_remove_bus_device(struct pci_dev *dev);
 void pci_setup_cardbus(struct pci_bus *bus);
-extern void pci_sort_breadthfirst(void);
 
 /* Generic PCI functions exported to card drivers */
 
diff -urN oldtree/net/sunrpc/svcsock.c newtree/net/sunrpc/svcsock.c
--- oldtree/net/sunrpc/svcsock.c	2006-09-17 05:38:20.000000000 -0400
+++ newtree/net/sunrpc/svcsock.c	2006-09-17 06:06:45.000000000 -0400
@@ -1709,6 +1709,7 @@
 	rqstp->rq_prot        = dr->prot;
 	rqstp->rq_addr        = dr->addr;
 	rqstp->rq_daddr       = dr->daddr;
+	rqstp->rq_respages    = rqstp->rq_pages;
 	return dr->argslen<<2;
 }
 
