The patch titled revert gregkh-usb-usb-ohci-avoids-root-hub-timer-polling has been removed from the -mm tree. Its filename is revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. ------------------------------------------------------ Subject: revert gregkh-usb-usb-ohci-avoids-root-hub-timer-polling From: Andrew Morton <akpm@xxxxxxxx> It makes Rafael's machine lock up on resume. Cc: "Rafael J. Wysocki" <rjw@xxxxxxx> Cc: David Brownell <david-b@xxxxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/usb/host/ohci-at91.c | 2 - drivers/usb/host/ohci-au1xxx.c | 1 drivers/usb/host/ohci-hcd.c | 23 +++++---------- drivers/usb/host/ohci-hub.c | 45 +++++++++--------------------- drivers/usb/host/ohci-lh7a404.c | 1 drivers/usb/host/ohci-omap.c | 1 drivers/usb/host/ohci-pci.c | 1 drivers/usb/host/ohci-ppc-soc.c | 1 drivers/usb/host/ohci-pxa27x.c | 1 drivers/usb/host/ohci-s3c2410.c | 1 drivers/usb/host/ohci-sa1111.c | 1 drivers/usb/host/ohci.h | 2 - 12 files changed, 24 insertions(+), 56 deletions(-) diff -puN drivers/usb/host/ohci-at91.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-at91.c --- devel/drivers/usb/host/ohci-at91.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-at91.c 2006-06-01 20:47:59.000000000 -0700 @@ -230,7 +230,7 @@ static const struct hc_driver ohci_at91_ */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, + #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci-au1xxx.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-au1xxx.c --- devel/drivers/usb/host/ohci-au1xxx.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-au1xxx.c 2006-06-01 20:47:59.000000000 -0700 @@ -289,7 +289,6 @@ static const struct hc_driver ohci_au1xx */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci.h~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci.h --- devel/drivers/usb/host/ohci.h~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci.h 2006-06-01 20:47:59.000000000 -0700 @@ -385,7 +385,7 @@ struct ohci_hcd { */ int num_ports; int load [NUM_INTS]; - u32 hc_control; /* copy of hc control reg */ + u32 hc_control; /* copy of hc control reg */ unsigned long next_statechange; /* suspend/resume */ u32 fminterval; /* saved register */ diff -puN drivers/usb/host/ohci-hcd.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-hcd.c --- devel/drivers/usb/host/ohci-hcd.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-hcd.c 2006-06-01 20:47:59.000000000 -0700 @@ -102,7 +102,7 @@ #include "../core/hcd.h" -#define DRIVER_VERSION "2006 May 12" +#define DRIVER_VERSION "2005 April 22" #define DRIVER_AUTHOR "Roman Weissgaerber, David Brownell" #define DRIVER_DESC "USB 1.1 'Open' Host Controller (OHCI) Driver" @@ -111,7 +111,7 @@ #undef OHCI_VERBOSE_DEBUG /* not always helpful */ /* For initializing controller (mask in an HCFS mode too) */ -#define OHCI_CONTROL_INIT OHCI_CTRL_CBSR +#define OHCI_CONTROL_INIT OHCI_CTRL_CBSR #define OHCI_INTR_INIT \ (OHCI_INTR_MIE | OHCI_INTR_UE | OHCI_INTR_RD | OHCI_INTR_WDH) @@ -447,7 +447,7 @@ static int ohci_init (struct ohci_hcd *o disable (ohci); ohci->regs = hcd->regs; - ohci->next_statechange = jiffies + msecs_to_jiffies (250); + ohci->next_statechange = jiffies; /* REVISIT this BIOS handshake is now moved into PCI "quirks", and * was never needed for most non-PCI systems ... remove the code? @@ -637,12 +637,11 @@ retry: ohci_readl (ohci, &ohci->regs->periodicstart)); return -EOVERFLOW; } - hcd->uses_new_polling = 1; - /* start controller operations */ + /* start controller operations */ ohci->hc_control &= OHCI_CTRL_RWC; - ohci->hc_control |= OHCI_CONTROL_INIT | OHCI_USB_OPER; - ohci_writel (ohci, ohci->hc_control, &ohci->regs->control); + ohci->hc_control |= OHCI_CONTROL_INIT | OHCI_USB_OPER; + ohci_writel (ohci, ohci->hc_control, &ohci->regs->control); hcd->state = HC_STATE_RUNNING; /* wake on ConnectStatusChange, matching external hubs */ @@ -650,7 +649,7 @@ retry: /* Choose the interrupts we care about now, others later on demand */ mask = OHCI_INTR_INIT; - ohci_writel (ohci, ~0, &ohci->regs->intrstatus); + ohci_writel (ohci, mask, &ohci->regs->intrstatus); ohci_writel (ohci, mask, &ohci->regs->intrenable); /* handle root hub init quirks ... */ @@ -711,13 +710,7 @@ static irqreturn_t ohci_irq (struct usb_ /* interrupt for some other device? */ } else if ((ints &= ohci_readl (ohci, ®s->intrenable)) == 0) { return IRQ_NOTMINE; - } - - if (ints & OHCI_INTR_RHSC) { - ohci_vdbg (ohci, "rhsc\n"); - ohci_writel (ohci, OHCI_INTR_RHSC, ®s->intrstatus); - usb_hcd_poll_rh_status(hcd); - } + } if (ints & OHCI_INTR_UE) { disable (ohci); diff -puN drivers/usb/host/ohci-hub.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-hub.c --- devel/drivers/usb/host/ohci-hub.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-hub.c 2006-06-01 20:47:59.000000000 -0700 @@ -36,14 +36,6 @@ /*-------------------------------------------------------------------------*/ -/* hcd->hub_irq_enable() ? */ -static void ohci_rhsc_enable (struct usb_hcd *hcd) -{ - struct ohci_hcd *ohci = hcd_to_ohci (hcd); - - ohci_writel (ohci, OHCI_INTR_RHSC, &ohci->regs->intrenable); -} - #ifdef CONFIG_PM #define OHCI_SCHED_ENABLES \ @@ -131,9 +123,6 @@ static int ohci_bus_suspend (struct usb_ /* no resumes until devices finish suspending */ ohci->next_statechange = jiffies + msecs_to_jiffies (5); - /* RHSC or RD irq will wakeup; no timer polling */ - hcd->poll_rh = 0; - done: /* external suspend vs self autosuspend ... same effect */ if (status == 0) @@ -360,41 +349,35 @@ ohci_hub_status_data (struct usb_hcd *hc continue; } - - /* can suspend if no ports are enabled; or if all the + /* can suspend if no ports are enabled; or if all all * enabled ports are suspended AND remote wakeup is on. */ if (!(status & RH_PS_CCS)) continue; - if (!(status & RH_PS_PSS)) - can_suspend = 0; + if ((status & RH_PS_PSS) && can_suspend) + continue; + can_suspend = 0; } - done: spin_unlock_irqrestore (&ohci->lock, flags); #ifdef CONFIG_PM - /* save power by suspending idle root hubs and avoiding timer polls; - * INTR_RD or INTR_RHSC wakes us when there's work, and polling is - * used only to defer autosuspend. + /* save power by suspending idle root hubs; + * INTR_RD wakes us when there's work */ if (can_suspend && !changed && !ohci->ed_rm_list && ((OHCI_CTRL_HCFS | OHCI_SCHED_ENABLES) & ohci->hc_control) - == OHCI_USB_OPER) { - /* if we can't yet autosuspend, poll until we can */ - if (time_after (jiffies, ohci->next_statechange) - && usb_trylock_device (hcd->self.root_hub) == 0 - ) { - ohci_vdbg (ohci, "autosuspend\n"); - (void) ohci_bus_suspend (hcd); - usb_unlock_device (hcd->self.root_hub); - } else - hcd->poll_rh = 1; - } else - hcd->poll_rh = 0; + == OHCI_USB_OPER + && time_after (jiffies, ohci->next_statechange) + && usb_trylock_device (hcd->self.root_hub) == 0 + ) { + ohci_vdbg (ohci, "autosuspend\n"); + (void) ohci_bus_suspend (hcd); + usb_unlock_device (hcd->self.root_hub); + } #endif return changed ? length : 0; diff -puN drivers/usb/host/ohci-lh7a404.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-lh7a404.c --- devel/drivers/usb/host/ohci-lh7a404.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-lh7a404.c 2006-06-01 20:47:59.000000000 -0700 @@ -196,7 +196,6 @@ static const struct hc_driver ohci_lh7a4 */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci-omap.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-omap.c --- devel/drivers/usb/host/ohci-omap.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-omap.c 2006-06-01 20:47:59.000000000 -0700 @@ -429,7 +429,6 @@ static const struct hc_driver ohci_omap_ */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci-pci.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-pci.c --- devel/drivers/usb/host/ohci-pci.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-pci.c 2006-06-01 20:47:59.000000000 -0700 @@ -194,7 +194,6 @@ static const struct hc_driver ohci_pci_h */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci-ppc-soc.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-ppc-soc.c --- devel/drivers/usb/host/ohci-ppc-soc.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-ppc-soc.c 2006-06-01 20:47:59.000000000 -0700 @@ -166,7 +166,6 @@ static const struct hc_driver ohci_ppc_s */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci-pxa27x.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-pxa27x.c --- devel/drivers/usb/host/ohci-pxa27x.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-pxa27x.c 2006-06-01 20:47:59.000000000 -0700 @@ -285,7 +285,6 @@ static const struct hc_driver ohci_pxa27 */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci-s3c2410.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-s3c2410.c --- devel/drivers/usb/host/ohci-s3c2410.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-s3c2410.c 2006-06-01 20:47:59.000000000 -0700 @@ -465,7 +465,6 @@ static const struct hc_driver ohci_s3c24 */ .hub_status_data = ohci_s3c2410_hub_status_data, .hub_control = ohci_s3c2410_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, diff -puN drivers/usb/host/ohci-sa1111.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling drivers/usb/host/ohci-sa1111.c --- devel/drivers/usb/host/ohci-sa1111.c~revert-gregkh-usb-usb-ohci-avoids-root-hub-timer-polling 2006-06-01 20:47:59.000000000 -0700 +++ devel-akpm/drivers/usb/host/ohci-sa1111.c 2006-06-01 20:47:59.000000000 -0700 @@ -235,7 +235,6 @@ static const struct hc_driver ohci_sa111 */ .hub_status_data = ohci_hub_status_data, .hub_control = ohci_hub_control, - .hub_irq_enable = ohci_rhsc_enable, #ifdef CONFIG_PM .bus_suspend = ohci_bus_suspend, .bus_resume = ohci_bus_resume, _ Patches currently in -mm which might be from akpm@xxxxxxxx are origin.patch git-acpi.patch acpi-update-asus_acpi-driver-registration-fix.patch catch-notification-of-memory-add-event-of-acpi-via-container-driver-register-start-func-for-memory-device.patch catch-notification-of-memory-add-event-of-acpi-via-container-driveravoid-redundant-call-add_memory.patch acpi-atlas-acpi-driver-fix.patch remove-for_each_cpu.patch sony_apci-resume.patch uninorth-agp-warning-fixes.patch alpha-agp-warning-fix.patch kauditd_thread-warning-fix.patch git-cifs.patch git-cpufreq-fixup.patch powernow-k8-crash-workaround.patch git-dvb.patch git-gfs2.patch git-infiniband.patch git-intelfb.patch git-klibc.patch git-hdrcleanup-fixup.patch git-hdrcleanup-vs-git-klibc-on-ia64.patch git-hdrcleanup-vs-git-klibc-on-ia64-2.patch git-hdrinstall-fixup.patch git-libata-all.patch libata-reduce-timeouts.patch sdhci-truncated-pointer-fix.patch git-mtd.patch git-mtd-fixup.patch git-netdev-all.patch git-netdev-all-fixup.patch smc911x-Kconfig-fix.patch pci-error-recovery-e1000-network-device-driver.patch git-net.patch git-net-git-klibc-fixup.patch git-nfs-fixup.patch git-powerpc.patch powerpc-kbuild-warning-fix.patch git-rbtree.patch git-sas.patch kconfigurable-resources-core-changes-i386-fix.patch kconfigurable-resources-core-changes-fix.patch typesh-sector_t-and-blkcnt_t-arent-for-userspace.patch kconfigurable-resources-mtd-fixes.patch megaraid_sas-add-support-for-zcr-controller-fix.patch areca-raid-linux-scsi-driver.patch git-scsi-target-warning-fix.patch git-scsi-target-fixup.patch git-supertrak-fixup.patch x86_64-mm-moving-phys_proc_id-and-cpu_core_id-to-cpuinfo_x86-warning-fix.patch x86_64-dont-warn-for-overflow-in-nommu-case-when-dma_mask-is-32bit-fix.patch pg_uncached-is-ia64-only.patch fix-update_mmu_cache-in-fremapc-fix.patch page-migration-simplify-migrate_pages-tweaks.patch page-migration-support-moving-of-individual-pages-x86-support-fix.patch acx1xx-wireless-driver.patch tiacx-pci-build-fix.patch x86-kernel-irq-balancer-fix-tidy.patch i386-moving-phys_proc_id-and-cpu_core_id-to-cpuinfo_x86-warning-fix.patch vdso-randomize-the-i386-vdso-by-moving-it-into-a-vma-tidy.patch vdso-randomize-the-i386-vdso-by-moving-it-into-a-vma-arch_vma_name-fix.patch vdso-randomize-the-i386-vdso-by-moving-it-into-a-vma-vs-x86_64-mm-reliable-stack-trace-support-i386.patch vdso-randomize-the-i386-vdso-by-moving-it-into-a-vma-vs-x86_64-mm-reliable-stack-trace-support-i386-2.patch prune_one_dentry-tweaks.patch mmput-might-sleep.patch jbd-avoid-kfree-null.patch ext3_clear_inode-avoid-kfree-null.patch leds-amstrad-delta-led-support-tidy.patch connector-exports.patch config_net=n-build-fix.patch rewritten-backlight-infrastructure-for-portable-apple-computers-fix.patch allow-for-per-cpu-data-being-in-tdata-and-tbss-sections-fix.patch allow-for-per-cpu-data-being-in-tdata-and-tbss-sections-tidy.patch deprecate-smbfs-in-favour-of-cifs.patch msnd-section-fix.patch openpromfs-factorize-out-tidy.patch add-export_unused_symbol-and-export_unused_symbol_gpl-default.patch kernel-sysc-cleanups-fix.patch cpqarray-section-fix.patch pdflush-handle-resume-wakeups.patch schedule_on_each_cpu-reduce-kmalloc-size.patch ax88796-parallel-port-driver-build-fix.patch keys-fix-race-between-two-instantiators-of-a-key-tidy.patch for_each_cpu_mask-warning-fix.patch add-max6902-rtc-support-tidy.patch per-task-delay-accounting-proc-export-of-aggregated-block-i-o-delays-warning-fix.patch add-via-hw-rng-driver-fix.patch hangcheck-remove-monotomic_clock-on-x86.patch swap-prefetch-fix-lru_cache_add_tail-tidy.patch mark-address_space_operations-const-vs-ecryptfs-mmap-operations.patch ecryptfs-alpha-build-fix.patch namespaces-add-nsproxy-dont-include-compileh.patch namespaces-utsname-switch-to-using-uts-namespaces-alpha-fix.patch namespaces-utsname-use-init_utsname-when-appropriate-cifs-update.patch namespaces-utsname-implement-utsname-namespaces-export.patch namespaces-utsname-implement-utsname-namespaces-dont-include-compileh.patch namespaces-utsname-sysctl-hack-cleanup-2-fix.patch readahead-sysctl-parameters-fix.patch make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch reiser4-hardirq-include-fix.patch reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch ide_dma_speed-fixes-warning-fix.patch ide_dma_speed-fixes-tidy.patch hpt3xx-rework-rate-filtering-tidy.patch savagefb-add-state-save-and_restore-hooks-tidy.patch au1100fb-add-power-management-support-tidy.patch lib-add-idr_replace-tidy.patch genirq-rename-desc-handler-to-desc-chip-power-fix.patch genirq-rename-desc-handler-to-desc-chip-ia64-fix.patch genirq-rename-desc-handler-to-desc-chip-ia64-fix-2.patch genirq-convert-the-i386-architecture-to-irq-chips-fix-2.patch lock-validator-beautify-x86_64-stacktraces-fix.patch lock-validator-stacktrace-build-fix.patch lock-validator-stacktrace-warning-fix.patch lock-validator-irqtrace-core-powerpc-fix-1.patch lock-validator-irqtrace-core-non-x86-fix.patch lock-validator-irqtrace-core-non-x86-fix-2.patch lock-validator-irqtrace-core-non-x86-fix-3.patch lock-validator-add-per_cpu_offset-fix.patch lock-validator-core-multichar-fix.patch lock-validator-prove-rwsem-locking-correctness-fix.patch lock-validator-prove-rwsem-locking-correctness-powerpc-fix.patch lock-validator-special-locking-serial-fix.patch lock-validator-special-locking-sb-s_umount-fix.patch lock-validator-enable-lock-validator-in-kconfig-not-yet.patch kgdb-core-lite-add-reboot-command.patch kgdb-8250-fix.patch nr_blockdev_pages-in_interrupt-warning.patch device-suspend-debug.patch revert-tty-buffering-comment-out-debug-code.patch slab-leaks3-default-y.patch x86-kmap_atomic-debugging.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html