rpms/kernel/devel patch-2.6.27-rc7-git2.bz2.sign, NONE, 1.1 .cvsignore, 1.929, 1.930 git-linus.diff, 1.10, 1.11 kernel.spec, 1.975, 1.976 sources, 1.891, 1.892 upstream, 1.803, 1.804 patch-2.6.27-rc7-git1.bz2.sign, 1.1, NONE
Dave Jones
davej at fedoraproject.org
Wed Sep 24 21:18:51 UTC 2008
Author: davej
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv16431
Modified Files:
.cvsignore git-linus.diff kernel.spec sources upstream
Added Files:
patch-2.6.27-rc7-git2.bz2.sign
Removed Files:
patch-2.6.27-rc7-git1.bz2.sign
Log Message:
2.6.27-rc7-git2
--- NEW FILE patch-2.6.27-rc7-git2.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info
iD8DBQBI2btFyGugalF9Dw4RAiAPAJ93s22Uupl3MKvLYdXYwUFtQG21dACff6cX
kdpg3h3mv0kp+21nVqs3cik=
=vKVq
-----END PGP SIGNATURE-----
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/.cvsignore,v
retrieving revision 1.929
retrieving revision 1.930
diff -u -r1.929 -r1.930
--- .cvsignore 23 Sep 2008 00:39:53 -0000 1.929
+++ .cvsignore 24 Sep 2008 21:18:20 -0000 1.930
@@ -5,4 +5,4 @@
kernel-2.6.26
linux-2.6.26.tar.bz2
patch-2.6.27-rc7.bz2
-patch-2.6.27-rc7-git1.bz2
+patch-2.6.27-rc7-git2.bz2
git-linus.diff:
Index: git-linus.diff
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/git-linus.diff,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- git-linus.diff 24 Sep 2008 00:54:42 -0000 1.10
+++ git-linus.diff 24 Sep 2008 21:18:20 -0000 1.11
@@ -1,1757 +0,0 @@
-diff --git a/Documentation/DMA-mapping.txt b/Documentation/DMA-mapping.txt
-index b463ecd..c74fec8 100644
---- a/Documentation/DMA-mapping.txt
-+++ b/Documentation/DMA-mapping.txt
-@@ -740,7 +740,7 @@ failure can be determined by:
- dma_addr_t dma_handle;
-
- dma_handle = pci_map_single(pdev, addr, size, direction);
-- if (pci_dma_mapping_error(dma_handle)) {
-+ if (pci_dma_mapping_error(pdev, dma_handle)) {
- /*
- * reduce current DMA mapping usage,
- * delay and try again later or
-diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
-index 276a7e6..e1ff0d9 100644
---- a/Documentation/sysctl/kernel.txt
-+++ b/Documentation/sysctl/kernel.txt
-@@ -351,9 +351,10 @@ kernel. This value defaults to SHMMAX.
-
- softlockup_thresh:
-
--This value can be used to lower the softlockup tolerance
--threshold. The default threshold is 10s. If a cpu is locked up
--for 10s, the kernel complains. Valid values are 1-60s.
-+This value can be used to lower the softlockup tolerance threshold. The
-+default threshold is 60 seconds. If a cpu is locked up for 60 seconds,
-+the kernel complains. Valid values are 1-60 seconds. Setting this
-+tunable to zero will disable the softlockup detection altogether.
-
- ==============================================================
-
-diff --git a/Documentation/usb/anchors.txt b/Documentation/usb/anchors.txt
-index 7304bcf..5e6b64c 100644
---- a/Documentation/usb/anchors.txt
-+++ b/Documentation/usb/anchors.txt
-@@ -42,9 +42,21 @@ This function kills all URBs associated with an anchor. The URBs
- are called in the reverse temporal order they were submitted.
- This way no data can be reordered.
-
-+usb_unlink_anchored_urbs()
-+--------------------------
-+
-+This function unlinks all URBs associated with an anchor. The URBs
-+are processed in the reverse temporal order they were submitted.
-+This is similar to usb_kill_anchored_urbs(), but it will not sleep.
-+Therefore no guarantee is made that the URBs have been unlinked when
-+the call returns. They may be unlinked later but will be unlinked in
-+finite time.
-+
- usb_wait_anchor_empty_timeout()
- -------------------------------
-
- This function waits for all URBs associated with an anchor to finish
- or a timeout, whichever comes first. Its return value will tell you
- whether the timeout was reached.
-+
-+
-diff --git a/MAINTAINERS b/MAINTAINERS
-index cad81a2..42ebbfd 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -3833,11 +3833,12 @@ S: Maintained
-
- SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT
- P: Liam Girdwood
--M: liam.girdwood at wolfsonmicro.com
-+M: lrg at slimlogic.co.uk
- P: Mark Brown
- M: broonie at opensource.wolfsonmicro.com
- T: git opensource.wolfsonmicro.com/linux-2.6-asoc
- L: alsa-devel at alsa-project.org (subscribers-only)
-+W: http://alsa-project.org/main/index.php/ASoC
- S: Supported
-
- SPI SUBSYSTEM
-diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
-index d45f215..51b75ce 100644
---- a/arch/ia64/kernel/efi.c
-+++ b/arch/ia64/kernel/efi.c
-@@ -1232,9 +1232,10 @@ efi_initialize_iomem_resources(struct resource *code_resource,
- if (md->attribute & EFI_MEMORY_WP) {
- name = "System ROM";
- flags |= IORESOURCE_READONLY;
-- } else {
-+ } else if (md->attribute == EFI_MEMORY_UC)
-+ name = "Uncached RAM";
-+ else
- name = "System RAM";
-- }
- break;
-
- case EFI_ACPI_MEMORY_NVS:
-diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
-index c27d5b2..de636b2 100644
---- a/arch/ia64/kernel/setup.c
-+++ b/arch/ia64/kernel/setup.c
-@@ -616,7 +616,9 @@ setup_arch (char **cmdline_p)
- ia64_mca_init();
-
- platform_setup(cmdline_p);
-+#ifndef CONFIG_IA64_HP_SIM
- check_sal_cache_flush();
-+#endif
- paging_init();
- }
-
-diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c
-index f845f15..100ebd5 100644
---- a/arch/sparc64/kernel/of_device.c
-+++ b/arch/sparc64/kernel/of_device.c
-@@ -169,7 +169,7 @@ static unsigned long of_bus_default_get_flags(const u32 *addr, unsigned long fla
-
- static int of_bus_pci_match(struct device_node *np)
- {
-- if (!strcmp(np->type, "pci") || !strcmp(np->type, "pciex")) {
-+ if (!strcmp(np->name, "pci")) {
- const char *model = of_get_property(np, "model", NULL);
-
- if (model && !strcmp(model, "SUNW,simba"))
-@@ -200,7 +200,7 @@ static int of_bus_simba_match(struct device_node *np)
- /* Treat PCI busses lacking ranges property just like
- * simba.
- */
-- if (!strcmp(np->type, "pci") || !strcmp(np->type, "pciex")) {
-+ if (!strcmp(np->name, "pci")) {
- if (!of_find_property(np, "ranges", NULL))
- return 1;
- }
-@@ -429,7 +429,7 @@ static int __init use_1to1_mapping(struct device_node *pp)
- * it lacks a ranges property, and this will include
- * cases like Simba.
- */
-- if (!strcmp(pp->type, "pci") || !strcmp(pp->type, "pciex"))
-+ if (!strcmp(pp->name, "pci"))
- return 0;
-
- return 1;
-@@ -714,8 +714,7 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
- break;
- }
- } else {
-- if (!strcmp(pp->type, "pci") ||
-- !strcmp(pp->type, "pciex")) {
-+ if (!strcmp(pp->name, "pci")) {
- unsigned int this_orig_irq = irq;
-
- irq = pci_irq_swizzle(dp, pp, irq);
-diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
-index 5509619..80dad76 100644
---- a/arch/sparc64/kernel/pci.c
-+++ b/arch/sparc64/kernel/pci.c
-@@ -425,7 +425,7 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
- dev->current_state = 4; /* unknown power state */
- dev->error_state = pci_channel_io_normal;
-
-- if (!strcmp(type, "pci") || !strcmp(type, "pciex")) {
-+ if (!strcmp(node->name, "pci")) {
- /* a PCI-PCI bridge */
- dev->hdr_type = PCI_HEADER_TYPE_BRIDGE;
- dev->rom_base_reg = PCI_ROM_ADDRESS1;
-diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
-index 69b4d06..042fdc2 100644
---- a/arch/x86/kernel/amd_iommu.c
-+++ b/arch/x86/kernel/amd_iommu.c
-@@ -101,10 +101,10 @@ static int iommu_queue_command(struct amd_iommu *iommu, struct iommu_cmd *cmd)
- */
- static int iommu_completion_wait(struct amd_iommu *iommu)
- {
-- int ret, ready = 0;
-+ int ret = 0, ready = 0;
- unsigned status = 0;
- struct iommu_cmd cmd;
-- unsigned long i = 0;
-+ unsigned long flags, i = 0;
-
- memset(&cmd, 0, sizeof(cmd));
- cmd.data[0] = CMD_COMPL_WAIT_INT_MASK;
-@@ -112,10 +112,12 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
-
- iommu->need_sync = 0;
-
-- ret = iommu_queue_command(iommu, &cmd);
-+ spin_lock_irqsave(&iommu->lock, flags);
-+
-+ ret = __iommu_queue_command(iommu, &cmd);
-
- if (ret)
-- return ret;
-+ goto out;
-
- while (!ready && (i < EXIT_LOOP_COUNT)) {
- ++i;
-@@ -130,6 +132,8 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
-
- if (unlikely((i == EXIT_LOOP_COUNT) && printk_ratelimit()))
- printk(KERN_WARNING "AMD IOMMU: Completion wait loop failed\n");
-+out:
-+ spin_unlock_irqrestore(&iommu->lock, flags);
-
- return 0;
- }
-@@ -140,6 +144,7 @@ static int iommu_completion_wait(struct amd_iommu *iommu)
- static int iommu_queue_inv_dev_entry(struct amd_iommu *iommu, u16 devid)
- {
- struct iommu_cmd cmd;
-+ int ret;
-
- BUG_ON(iommu == NULL);
-
-@@ -147,9 +152,11 @@ static int iommu_queue_inv_dev_entry(struct amd_iommu *iommu, u16 devid)
- CMD_SET_TYPE(&cmd, CMD_INV_DEV_ENTRY);
- cmd.data[0] = devid;
-
-+ ret = iommu_queue_command(iommu, &cmd);
-+
- iommu->need_sync = 1;
-
-- return iommu_queue_command(iommu, &cmd);
-+ return ret;
- }
-
- /*
-@@ -159,6 +166,7 @@ static int iommu_queue_inv_iommu_pages(struct amd_iommu *iommu,
- u64 address, u16 domid, int pde, int s)
- {
- struct iommu_cmd cmd;
-+ int ret;
-
- memset(&cmd, 0, sizeof(cmd));
- address &= PAGE_MASK;
-@@ -171,9 +179,11 @@ static int iommu_queue_inv_iommu_pages(struct amd_iommu *iommu,
- if (pde) /* PDE bit - we wan't flush everything not only the PTEs */
- cmd.data[2] |= CMD_INV_IOMMU_PAGES_PDE_MASK;
-
-+ ret = iommu_queue_command(iommu, &cmd);
-+
- iommu->need_sync = 1;
-
-- return iommu_queue_command(iommu, &cmd);
-+ return ret;
- }
-
- /*
-diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
-index 7fc4d5b..876e918 100644
---- a/arch/x86/kernel/process.c
-+++ b/arch/x86/kernel/process.c
-@@ -246,6 +246,14 @@ static int __cpuinit check_c1e_idle(const struct cpuinfo_x86 *c)
- return 1;
- }
-
-+static cpumask_t c1e_mask = CPU_MASK_NONE;
-+static int c1e_detected;
-+
-+void c1e_remove_cpu(int cpu)
-+{
-+ cpu_clear(cpu, c1e_mask);
-+}
-+
- /*
- * C1E aware idle routine. We check for C1E active in the interrupt
- * pending message MSR. If we detect C1E, then we handle it the same
-@@ -253,9 +261,6 @@ static int __cpuinit check_c1e_idle(const struct cpuinfo_x86 *c)
- */
- static void c1e_idle(void)
- {
-- static cpumask_t c1e_mask = CPU_MASK_NONE;
-- static int c1e_detected;
--
- if (need_resched())
- return;
-
-@@ -265,8 +270,10 @@ static void c1e_idle(void)
- rdmsr(MSR_K8_INT_PENDING_MSG, lo, hi);
- if (lo & K8_INTP_C1E_ACTIVE_MASK) {
- c1e_detected = 1;
-- mark_tsc_unstable("TSC halt in C1E");
-- printk(KERN_INFO "System has C1E enabled\n");
-+ if (!boot_cpu_has(X86_FEATURE_CONSTANT_TSC))
-+ mark_tsc_unstable("TSC halt in AMD C1E");
-+ printk(KERN_INFO "System has AMD C1E enabled\n");
-+ set_cpu_cap(&boot_cpu_data, X86_FEATURE_AMDC1E);
- }
- }
-
-diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
-index 3b7a1dd..4b3cfdf 100644
---- a/arch/x86/kernel/process_32.c
-+++ b/arch/x86/kernel/process_32.c
-@@ -88,6 +88,7 @@ static void cpu_exit_clear(void)
- cpu_clear(cpu, cpu_callin_map);
-
- numa_remove_cpu(cpu);
-+ c1e_remove_cpu(cpu);
- }
-
- /* We don't actually take CPU down, just spin without interrupts. */
-diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index 71553b6..e12e0e4 100644
---- a/arch/x86/kernel/process_64.c
-+++ b/arch/x86/kernel/process_64.c
-@@ -93,6 +93,8 @@ DECLARE_PER_CPU(int, cpu_state);
- static inline void play_dead(void)
- {
- idle_task_exit();
-+ c1e_remove_cpu(raw_smp_processor_id());
-+
- mb();
- /* Ack it */
- __get_cpu_var(cpu_state) = CPU_DEAD;
-diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c
-index 0c029e8..7766d36 100644
---- a/arch/x86/kernel/vsmp_64.c
-+++ b/arch/x86/kernel/vsmp_64.c
-@@ -61,7 +61,7 @@ static void vsmp_irq_enable(void)
- native_restore_fl((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC));
- }
-
--static unsigned __init vsmp_patch(u8 type, u16 clobbers, void *ibuf,
-+static unsigned __init_or_module vsmp_patch(u8 type, u16 clobbers, void *ibuf,
- unsigned long addr, unsigned len)
- {
- switch (type) {
-diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
-index 0227694..8a5f161 100644
---- a/arch/x86/oprofile/nmi_int.c
-+++ b/arch/x86/oprofile/nmi_int.c
-@@ -295,10 +295,12 @@ static void nmi_cpu_shutdown(void *dummy)
-
- static void nmi_shutdown(void)
- {
-- struct op_msrs *msrs = &get_cpu_var(cpu_msrs);
-+ struct op_msrs *msrs;
-+
- nmi_enabled = 0;
- on_each_cpu(nmi_cpu_shutdown, NULL, 1);
- unregister_die_notifier(&profile_exceptions_nb);
-+ msrs = &get_cpu_var(cpu_msrs);
- model->shutdown(msrs);
- free_msrs();
- put_cpu_var(cpu_msrs);
-diff --git a/drivers/net/wireless/ath9k/core.c b/drivers/net/wireless/ath9k/core.c
-index f6c4528..c049593 100644
---- a/drivers/net/wireless/ath9k/core.c
-+++ b/drivers/net/wireless/ath9k/core.c
-@@ -294,8 +294,6 @@ static int ath_stop(struct ath_softc *sc)
- * hardware is gone (invalid).
- */
-
-- if (!sc->sc_invalid)
-- ath9k_hw_set_interrupts(ah, 0);
- ath_draintxq(sc, false);
- if (!sc->sc_invalid) {
- ath_stoprecv(sc);
-@@ -1336,6 +1334,8 @@ void ath_deinit(struct ath_softc *sc)
-
- DPRINTF(sc, ATH_DBG_CONFIG, "%s\n", __func__);
-
-+ tasklet_kill(&sc->intr_tq);
-+ tasklet_kill(&sc->bcon_tasklet);
- ath_stop(sc);
- if (!sc->sc_invalid)
- ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE);
-diff --git a/drivers/net/wireless/ath9k/core.h b/drivers/net/wireless/ath9k/core.h
-index 4ee695b..2f84093 100644
---- a/drivers/net/wireless/ath9k/core.h
-+++ b/drivers/net/wireless/ath9k/core.h
-@@ -974,7 +974,6 @@ struct ath_softc {
- u32 sc_keymax; /* size of key cache */
- DECLARE_BITMAP(sc_keymap, ATH_KEYMAX); /* key use bit map */
- u8 sc_splitmic; /* split TKIP MIC keys */
-- int sc_keytype;
-
- /* RX */
- struct list_head sc_rxbuf;
-diff --git a/drivers/net/wireless/ath9k/main.c b/drivers/net/wireless/ath9k/main.c
-index 99badf1..acebdf1 100644
---- a/drivers/net/wireless/ath9k/main.c
-+++ b/drivers/net/wireless/ath9k/main.c
-@@ -206,8 +206,6 @@ static int ath_key_config(struct ath_softc *sc,
- if (!ret)
- return -EIO;
-
-- if (mac)
-- sc->sc_keytype = hk.kv_type;
- return 0;
- }
-
-@@ -778,7 +776,6 @@ static int ath9k_set_key(struct ieee80211_hw *hw,
- case DISABLE_KEY:
- ath_key_delete(sc, key);
- clear_bit(key->keyidx, sc->sc_keymap);
-- sc->sc_keytype = ATH9K_CIPHER_CLR;
- break;
- default:
- ret = -EINVAL;
-@@ -1414,10 +1411,17 @@ static void ath_pci_remove(struct pci_dev *pdev)
- {
- struct ieee80211_hw *hw = pci_get_drvdata(pdev);
- struct ath_softc *sc = hw->priv;
-+ enum ath9k_int status;
-
-- if (pdev->irq)
-+ if (pdev->irq) {
-+ ath9k_hw_set_interrupts(sc->sc_ah, 0);
-+ /* clear the ISR */
-+ ath9k_hw_getisr(sc->sc_ah, &status);
-+ sc->sc_invalid = 1;
- free_irq(pdev->irq, sc);
-+ }
- ath_detach(sc);
-+
- pci_iounmap(pdev, sc->mem);
- pci_release_region(pdev, 0);
- pci_disable_device(pdev);
-diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c
-index 550129f..8b332e1 100644
---- a/drivers/net/wireless/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath9k/xmit.c
-@@ -315,11 +315,11 @@ static int ath_tx_prepare(struct ath_softc *sc,
- txctl->keyix = tx_info->control.hw_key->hw_key_idx;
- txctl->frmlen += tx_info->control.icv_len;
-
-- if (sc->sc_keytype == ATH9K_CIPHER_WEP)
-+ if (tx_info->control.hw_key->alg == ALG_WEP)
- txctl->keytype = ATH9K_KEY_TYPE_WEP;
-- else if (sc->sc_keytype == ATH9K_CIPHER_TKIP)
-+ else if (tx_info->control.hw_key->alg == ALG_TKIP)
- txctl->keytype = ATH9K_KEY_TYPE_TKIP;
-- else if (sc->sc_keytype == ATH9K_CIPHER_AES_CCM)
-+ else if (tx_info->control.hw_key->alg == ALG_CCMP)
- txctl->keytype = ATH9K_KEY_TYPE_AES;
- }
-
-diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
-index da8b743..a60ae86 100644
---- a/drivers/net/wireless/zd1211rw/zd_usb.c
-+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
-@@ -58,6 +58,7 @@ static struct usb_device_id usb_ids[] = {
- { USB_DEVICE(0x0586, 0x3407), .driver_info = DEVICE_ZD1211 },
- { USB_DEVICE(0x129b, 0x1666), .driver_info = DEVICE_ZD1211 },
- { USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 },
-+ { USB_DEVICE(0x0105, 0x145f), .driver_info = DEVICE_ZD1211 },
- /* ZD1211B */
- { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B },
- { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B },
-diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
-index 9a7c9e1..851f5b8 100644
---- a/drivers/pci/pcie/aspm.c
-+++ b/drivers/pci/pcie/aspm.c
-@@ -527,7 +527,7 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
- */
- pci_read_config_dword(child_dev, child_pos + PCI_EXP_DEVCAP,
- ®32);
-- if (!(reg32 & PCI_EXP_DEVCAP_RBER && !aspm_force)) {
-+ if (!(reg32 & PCI_EXP_DEVCAP_RBER) && !aspm_force) {
- printk("Pre-1.1 PCIe device detected, "
- "disable ASPM for %s. It can be enabled forcedly"
- " with 'pcie_aspm=force'\n", pci_name(pdev));
-diff --git a/drivers/pci/search.c b/drivers/pci/search.c
-index 3b3b5f1..4edfc47 100644
---- a/drivers/pci/search.c
-+++ b/drivers/pci/search.c
-@@ -162,7 +162,7 @@ EXPORT_SYMBOL(pci_find_slot);
- * time.
- */
- struct pci_dev *pci_find_device(unsigned int vendor, unsigned int device,
-- const struct pci_dev *from)
-+ struct pci_dev *from)
- {
- struct pci_dev *pdev;
-
-@@ -263,7 +263,7 @@ static int match_pci_dev_by_id(struct device *dev, void *data)
- * this file.
- */
- static struct pci_dev *pci_get_dev_by_id(const struct pci_device_id *id,
-- const struct pci_dev *from)
-+ struct pci_dev *from)
- {
- struct device *dev;
- struct device *dev_start = NULL;
-@@ -303,7 +303,7 @@ static struct pci_dev *pci_get_dev_by_id(const struct pci_device_id *id,
- */
- struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
- unsigned int ss_vendor, unsigned int ss_device,
-- const struct pci_dev *from)
-+ struct pci_dev *from)
- {
- struct pci_dev *pdev;
- struct pci_device_id *id;
-diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c
-index 3a6da80..61fb8b6 100644
---- a/drivers/serial/atmel_serial.c
-+++ b/drivers/serial/atmel_serial.c
-@@ -131,7 +131,8 @@ struct atmel_uart_char {
- struct atmel_uart_port {
- struct uart_port uart; /* uart */
- struct clk *clk; /* uart clock */
-- unsigned short suspended; /* is port suspended? */
-+ int may_wakeup; /* cached value of device_may_wakeup for times we need to disable it */
-+ u32 backup_imr; /* IMR saved during suspend */
- int break_active; /* break being received */
-
- short use_dma_rx; /* enable PDC receiver */
-@@ -984,8 +985,15 @@ static void atmel_serial_pm(struct uart_port *port, unsigned int state,
- * This is called on uart_open() or a resume event.
- */
- clk_enable(atmel_port->clk);
-+
-+ /* re-enable interrupts if we disabled some on suspend */
-+ UART_PUT_IER(port, atmel_port->backup_imr);
- break;
- case 3:
-+ /* Back up the interrupt mask and disable all interrupts */
-+ atmel_port->backup_imr = UART_GET_IMR(port);
-+ UART_PUT_IDR(port, -1);
-+
- /*
- * Disable the peripheral clock for this serial port.
- * This is called on uart_close() or a suspend event.
-@@ -1475,13 +1483,12 @@ static int atmel_serial_suspend(struct platform_device *pdev,
- cpu_relax();
- }
-
-- if (device_may_wakeup(&pdev->dev)
-- && !atmel_serial_clk_will_stop())
-- enable_irq_wake(port->irq);
-- else {
-- uart_suspend_port(&atmel_uart, port);
-- atmel_port->suspended = 1;
-- }
-+ /* we can not wake up if we're running on slow clock */
-+ atmel_port->may_wakeup = device_may_wakeup(&pdev->dev);
-+ if (atmel_serial_clk_will_stop())
-+ device_set_wakeup_enable(&pdev->dev, 0);
-+
-+ uart_suspend_port(&atmel_uart, port);
-
- return 0;
- }
-@@ -1491,11 +1498,8 @@ static int atmel_serial_resume(struct platform_device *pdev)
- struct uart_port *port = platform_get_drvdata(pdev);
- struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
-
-- if (atmel_port->suspended) {
-- uart_resume_port(&atmel_uart, port);
-- atmel_port->suspended = 0;
-- } else
-- disable_irq_wake(port->irq);
-+ uart_resume_port(&atmel_uart, port);
-+ device_set_wakeup_enable(&pdev->dev, atmel_port->may_wakeup);
-
- return 0;
- }
-@@ -1513,6 +1517,8 @@ static int __devinit atmel_serial_probe(struct platform_device *pdev)
- BUILD_BUG_ON(!is_power_of_2(ATMEL_SERIAL_RINGSIZE));
-
- port = &atmel_ports[pdev->id];
-+ port->backup_imr = 0;
-+
- atmel_init_port(port, pdev);
-
- if (!atmel_use_dma_rx(&port->uart)) {
-diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index 8abd4e5..8ab389d 100644
---- a/drivers/usb/core/hcd.c
-+++ b/drivers/usb/core/hcd.c
-@@ -1876,7 +1876,8 @@ int usb_add_hcd(struct usb_hcd *hcd,
- * with IRQF_SHARED. As usb_hcd_irq() will always disable
- * interrupts we can remove it here.
- */
-- irqflags &= ~IRQF_DISABLED;
-+ if (irqflags & IRQF_SHARED)
-+ irqflags &= ~IRQF_DISABLED;
-
- snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d",
- hcd->driver->description, hcd->self.busnum);
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 6a5cb01..d999638 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -2683,35 +2683,17 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
- USB_PORT_STAT_C_ENABLE);
- #endif
-
-- /* Try to use the debounce delay for protection against
-- * port-enable changes caused, for example, by EMI.
-- */
-- if (portchange & (USB_PORT_STAT_C_CONNECTION |
-- USB_PORT_STAT_C_ENABLE)) {
-- status = hub_port_debounce(hub, port1);
-- if (status < 0) {
-- if (printk_ratelimit())
-- dev_err (hub_dev, "connect-debounce failed, "
-- "port %d disabled\n", port1);
-- portstatus &= ~USB_PORT_STAT_CONNECTION;
-- } else {
-- portstatus = status;
-- }
-- }
--
- /* Try to resuscitate an existing device */
- udev = hdev->children[port1-1];
- if ((portstatus & USB_PORT_STAT_CONNECTION) && udev &&
- udev->state != USB_STATE_NOTATTACHED) {
--
- usb_lock_device(udev);
- if (portstatus & USB_PORT_STAT_ENABLE) {
- status = 0; /* Nothing to do */
-- } else if (!udev->persist_enabled) {
-- status = -ENODEV; /* Mustn't resuscitate */
-
- #ifdef CONFIG_USB_SUSPEND
-- } else if (udev->state == USB_STATE_SUSPENDED) {
-+ } else if (udev->state == USB_STATE_SUSPENDED &&
-+ udev->persist_enabled) {
- /* For a suspended device, treat this as a
- * remote wakeup event.
- */
-@@ -2726,7 +2708,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
- #endif
-
- } else {
-- status = usb_reset_device(udev);
-+ status = -ENODEV; /* Don't resuscitate */
- }
- usb_unlock_device(udev);
-
-@@ -2741,6 +2723,19 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
- usb_disconnect(&hdev->children[port1-1]);
- clear_bit(port1, hub->change_bits);
-
-+ if (portchange & (USB_PORT_STAT_C_CONNECTION |
-+ USB_PORT_STAT_C_ENABLE)) {
-+ status = hub_port_debounce(hub, port1);
-+ if (status < 0) {
-+ if (printk_ratelimit())
-+ dev_err(hub_dev, "connect-debounce failed, "
-+ "port %d disabled\n", port1);
-+ portstatus &= ~USB_PORT_STAT_CONNECTION;
-+ } else {
-+ portstatus = status;
-+ }
-+ }
-+
- /* Return now if debouncing failed or nothing is connected */
- if (!(portstatus & USB_PORT_STAT_CONNECTION)) {
-
-@@ -2748,7 +2743,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
- if ((wHubCharacteristics & HUB_CHAR_LPSM) < 2
- && !(portstatus & (1 << USB_PORT_FEAT_POWER)))
- set_port_feature(hdev, port1, USB_PORT_FEAT_POWER);
--
-+
- if (portstatus & USB_PORT_STAT_ENABLE)
- goto done;
- return;
-diff --git a/drivers/usb/gadget/fsl_usb2_udc.c b/drivers/usb/gadget/fsl_usb2_udc.c
-index 1cfccf1..45ad556 100644
---- a/drivers/usb/gadget/fsl_usb2_udc.c
-+++ b/drivers/usb/gadget/fsl_usb2_udc.c
-@@ -223,7 +223,7 @@ static int dr_controller_setup(struct fsl_udc *udc)
- fsl_writel(tmp, &dr_regs->endpointlistaddr);
-
- VDBG("vir[qh_base] is %p phy[qh_base] is 0x%8x reg is 0x%8x",
-- (int)udc->ep_qh, (int)tmp,
-+ udc->ep_qh, (int)tmp,
- fsl_readl(&dr_regs->endpointlistaddr));
-
- /* Config PHY interface */
-diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
-index 574c538..bb54cca 100644
---- a/drivers/usb/gadget/omap_udc.c
-+++ b/drivers/usb/gadget/omap_udc.c
-@@ -787,7 +787,7 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
- omap_set_dma_dest_params(ep->lch,
- OMAP_DMA_PORT_TIPB,
- OMAP_DMA_AMODE_CONSTANT,
-- (unsigned long) io_v2p(UDC_DATA_DMA),
-+ UDC_DATA_DMA,
- 0, 0);
- }
- } else {
-@@ -804,7 +804,7 @@ static void dma_channel_claim(struct omap_ep *ep, unsigned channel)
- omap_set_dma_src_params(ep->lch,
- OMAP_DMA_PORT_TIPB,
- OMAP_DMA_AMODE_CONSTANT,
-- (unsigned long) io_v2p(UDC_DATA_DMA),
-+ UDC_DATA_DMA,
- 0, 0);
- /* EMIFF or SDRC */
- omap_set_dma_dest_burst_mode(ep->lch,
-diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
-index d9d53f2..8409e07 100644
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -145,16 +145,6 @@ static int handshake (struct ehci_hcd *ehci, void __iomem *ptr,
- return -ETIMEDOUT;
- }
-
--static int handshake_on_error_set_halt(struct ehci_hcd *ehci, void __iomem *ptr,
-- u32 mask, u32 done, int usec)
--{
-- int error = handshake(ehci, ptr, mask, done, usec);
-- if (error)
-- ehci_to_hcd(ehci)->state = HC_STATE_HALT;
--
-- return error;
--}
--
- /* force HC to halt state from unknown (EHCI spec section 2.3) */
- static int ehci_halt (struct ehci_hcd *ehci)
- {
-@@ -173,6 +163,22 @@ static int ehci_halt (struct ehci_hcd *ehci)
- STS_HALT, STS_HALT, 16 * 125);
- }
-
-+static int handshake_on_error_set_halt(struct ehci_hcd *ehci, void __iomem *ptr,
-+ u32 mask, u32 done, int usec)
-+{
-+ int error;
-+
-+ error = handshake(ehci, ptr, mask, done, usec);
-+ if (error) {
-+ ehci_halt(ehci);
-+ ehci_to_hcd(ehci)->state = HC_STATE_HALT;
-+ ehci_err(ehci, "force halt; handhake %p %08x %08x -> %d\n",
-+ ptr, mask, done, error);
-+ }
-+
-+ return error;
-+}
-+
- /* put TDI/ARC silicon into EHCI mode */
- static void tdi_reset (struct ehci_hcd *ehci)
- {
-diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
-index b7853c8..4a0c5a7 100644
---- a/drivers/usb/host/ehci-sched.c
-+++ b/drivers/usb/host/ehci-sched.c
-@@ -437,6 +437,9 @@ static int enable_periodic (struct ehci_hcd *ehci)
- u32 cmd;
- int status;
-
-+ if (ehci->periodic_sched++)
-+ return 0;
-+
- /* did clearing PSE did take effect yet?
- * takes effect only at frame boundaries...
- */
-@@ -461,6 +464,9 @@ static int disable_periodic (struct ehci_hcd *ehci)
- u32 cmd;
- int status;
-
-+ if (--ehci->periodic_sched)
-+ return 0;
-+
- /* did setting PSE not take effect yet?
- * takes effect only at frame boundaries...
- */
-@@ -544,13 +550,10 @@ static int qh_link_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
- : (qh->usecs * 8);
-
- /* maybe enable periodic schedule processing */
-- if (!ehci->periodic_sched++)
-- return enable_periodic (ehci);
--
-- return 0;
-+ return enable_periodic(ehci);
- }
-
--static void qh_unlink_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
-+static int qh_unlink_periodic(struct ehci_hcd *ehci, struct ehci_qh *qh)
- {
- unsigned i;
- unsigned period;
-@@ -586,9 +589,7 @@ static void qh_unlink_periodic (struct ehci_hcd *ehci, struct ehci_qh *qh)
- qh_put (qh);
-
- /* maybe turn off periodic schedule */
-- ehci->periodic_sched--;
-- if (!ehci->periodic_sched)
-- (void) disable_periodic (ehci);
-+ return disable_periodic(ehci);
- }
-
- static void intr_deschedule (struct ehci_hcd *ehci, struct ehci_qh *qh)
-@@ -1562,9 +1563,7 @@ itd_link_urb (
- urb->hcpriv = NULL;
-
- timer_action (ehci, TIMER_IO_WATCHDOG);
-- if (unlikely (!ehci->periodic_sched++))
-- return enable_periodic (ehci);
-- return 0;
-+ return enable_periodic(ehci);
- }
-
- #define ISO_ERRS (EHCI_ISOC_BUF_ERR | EHCI_ISOC_BABBLE | EHCI_ISOC_XACTERR)
-@@ -1642,7 +1641,7 @@ itd_complete (
- ehci_urb_done(ehci, urb, 0);
- retval = true;
- urb = NULL;
-- ehci->periodic_sched--;
-+ (void) disable_periodic(ehci);
- ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
-
- if (unlikely (list_empty (&stream->td_list))) {
-@@ -1951,9 +1950,7 @@ sitd_link_urb (
- urb->hcpriv = NULL;
-
- timer_action (ehci, TIMER_IO_WATCHDOG);
-- if (!ehci->periodic_sched++)
-- return enable_periodic (ehci);
-- return 0;
-+ return enable_periodic(ehci);
- }
-
- /*-------------------------------------------------------------------------*/
-@@ -2019,7 +2016,7 @@ sitd_complete (
- ehci_urb_done(ehci, urb, 0);
- retval = true;
- urb = NULL;
-- ehci->periodic_sched--;
-+ (void) disable_periodic(ehci);
- ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
-
- if (list_empty (&stream->td_list)) {
-@@ -2243,8 +2240,7 @@ restart:
- if (unlikely (modified)) {
- if (likely(ehci->periodic_sched > 0))
- goto restart;
-- /* maybe we can short-circuit this scan! */
-- disable_periodic(ehci);
-+ /* short-circuit this scan */
- now_uframe = clock;
- break;
- }
-diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
-index a001748..58b2b8f 100644
---- a/drivers/usb/musb/Kconfig
-+++ b/drivers/usb/musb/Kconfig
-@@ -9,6 +9,7 @@ comment "Enable Host or Gadget support to see Inventra options"
- # (M)HDRC = (Multipoint) Highspeed Dual-Role Controller
- config USB_MUSB_HDRC
- depends on (USB || USB_GADGET) && HAVE_CLK
-+ depends on !SUPERH
- select TWL4030_USB if MACH_OMAP_3430SDP
- tristate 'Inventra Highspeed Dual Role Controller (TI, ...)'
- help
-diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
-index c5b8f02..128e949 100644
---- a/drivers/usb/musb/musb_core.c
-+++ b/drivers/usb/musb/musb_core.c
-@@ -100,8 +100,8 @@
- #include <linux/io.h>
-
- #ifdef CONFIG_ARM
--#include <asm/arch/hardware.h>
--#include <asm/arch/memory.h>
-+#include <mach/hardware.h>
-+#include <mach/memory.h>
- #include <asm/mach-types.h>
- #endif
-
-diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
-index 298b22e..9d2dcb1 100644
---- a/drivers/usb/musb/omap2430.c
-+++ b/drivers/usb/musb/omap2430.c
-@@ -35,8 +35,8 @@
- #include <linux/io.h>
-
- #include <asm/mach-types.h>
--#include <asm/arch/hardware.h>
--#include <asm/arch/mux.h>
-+#include <mach/hardware.h>
-+#include <mach/mux.h>
-
- #include "musb_core.h"
- #include "omap2430.h"
-diff --git a/drivers/usb/musb/omap2430.h b/drivers/usb/musb/omap2430.h
-index 786a620..dc76707 100644
---- a/drivers/usb/musb/omap2430.h
-+++ b/drivers/usb/musb/omap2430.h
-@@ -11,8 +11,8 @@
- #define __MUSB_OMAP243X_H__
-
- #if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
--#include <asm/arch/hardware.h>
--#include <asm/arch/usb.h>
-+#include <mach/hardware.h>
-+#include <mach/usb.h>
-
- /*
- * OMAP2430-specific definitions
-diff --git a/drivers/usb/serial/cp2101.c b/drivers/usb/serial/cp2101.c
-index 442cba6..1279553 100644
---- a/drivers/usb/serial/cp2101.c
-+++ b/drivers/usb/serial/cp2101.c
-@@ -72,6 +72,7 @@ static struct usb_device_id id_table [] = {
- { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */
- { USB_DEVICE(0x10C4, 0x80DD) }, /* Tracient RFID */
- { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */
-+ { USB_DEVICE(0x10C4, 0x8115) }, /* Arygon NFC/Mifare Reader */
- { USB_DEVICE(0x10C4, 0x813D) }, /* Burnside Telecom Deskmobile */
- { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
- { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
-@@ -83,6 +84,7 @@ static struct usb_device_id id_table [] = {
- { USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */
- { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */
- { USB_DEVICE(0x10c4, 0x8293) }, /* Telegesys ETRX2USB */
-+ { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */
- { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
- { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
- { USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */
-@@ -93,6 +95,7 @@ static struct usb_device_id id_table [] = {
- { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */
- { USB_DEVICE(0x166A, 0x0303) }, /* Clipsal 5500PCU C-Bus USB interface */
- { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
-+ { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
- { } /* Terminating Entry */
- };
-
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 984f6ef..3dc93b5 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -654,6 +654,9 @@ static struct usb_device_id id_table_combined [] = {
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
- { USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
-+ { USB_DEVICE(PAPOUCH_VID, PAPOUCH_QUIDO4x4_PID) },
-+ { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DGQG_PID) },
-+ { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
- { }, /* Optional parameter entry */
- { } /* Terminating entry */
- };
-diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
-index 382265b..8a5b6df 100644
---- a/drivers/usb/serial/ftdi_sio.h
-+++ b/drivers/usb/serial/ftdi_sio.h
-@@ -750,6 +750,7 @@
-
- #define PAPOUCH_VID 0x5050 /* Vendor ID */
- #define PAPOUCH_TMU_PID 0x0400 /* TMU USB Thermometer */
-+#define PAPOUCH_QUIDO4x4_PID 0x0900 /* Quido 4/4 Module */
-
- /*
- * ACG Identification Technologies GmbH products (http://www.acg.de/).
-@@ -838,6 +839,10 @@
- /* Rig Expert Ukraine devices */
- #define FTDI_REU_TINY_PID 0xED22 /* RigExpert Tiny */
-
-+/* Domintell products http://www.domintell.com */
-+#define FTDI_DOMINTELL_DGQG_PID 0xEF50 /* Master */
-+#define FTDI_DOMINTELL_DUSB_PID 0xEF51 /* DUSB01 module */
-+
- /* Commands */
- #define FTDI_SIO_RESET 0 /* Reset the port */
- #define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 9f9cd36..73f8277 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -218,6 +218,7 @@ static int option_send_setup(struct tty_struct *tty, struct usb_serial_port *po
- /* ZTE PRODUCTS */
- #define ZTE_VENDOR_ID 0x19d2
- #define ZTE_PRODUCT_MF628 0x0015
-+#define ZTE_PRODUCT_CDMA_TECH 0xfffe
-
- static struct usb_device_id option_ids[] = {
- { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
-@@ -347,6 +348,7 @@ static struct usb_device_id option_ids[] = {
- { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
- { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
- { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
-+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE(usb, option_ids);
-diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
-index 7060337..ea1a103 100644
---- a/drivers/usb/serial/sierra.c
-+++ b/drivers/usb/serial/sierra.c
-@@ -14,7 +14,7 @@
- Whom based his on the Keyspan driver by Hugh Blemings <hugh at blemings.org>
- */
-
--#define DRIVER_VERSION "v.1.2.13a"
-+#define DRIVER_VERSION "v.1.3.2"
- #define DRIVER_AUTHOR "Kevin Lloyd <klloyd at sierrawireless.com>"
- #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems"
-
-@@ -30,9 +30,6 @@
-
- #define SWIMS_USB_REQUEST_SetPower 0x00
- #define SWIMS_USB_REQUEST_SetNmea 0x07
--#define SWIMS_USB_REQUEST_SetMode 0x0B
--#define SWIMS_USB_REQUEST_GetSwocInfo 0x0A
--#define SWIMS_SET_MODE_Modem 0x0001
-
- /* per port private data */
- #define N_IN_URB 4
-@@ -163,7 +160,7 @@ static struct usb_device_id id_table [] = {
- { USB_DEVICE(0x1199, 0x0017) }, /* Sierra Wireless EM5625 */
- { USB_DEVICE(0x1199, 0x0018) }, /* Sierra Wireless MC5720 */
- { USB_DEVICE(0x1199, 0x0218) }, /* Sierra Wireless MC5720 */
-- { USB_DEVICE(0x0f30, 0x1b1d) }, /* Sierra Wireless MC5720 */
-+ { USB_DEVICE(0x03f0, 0x1b1d) }, /* HP ev2200 a.k.a MC5720 */
- { USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */
- { USB_DEVICE(0x1199, 0x0024) }, /* Sierra Wireless MC5727 */
- { USB_DEVICE(0x1199, 0x0220) }, /* Sierra Wireless MC5725 */
-@@ -175,6 +172,8 @@ static struct usb_device_id id_table [] = {
- /* Sierra Wireless Device */
- { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x0025, 0xFF, 0xFF, 0xFF) },
- { USB_DEVICE(0x1199, 0x0026) }, /* Sierra Wireless Device */
-+ { USB_DEVICE(0x1199, 0x0027) }, /* Sierra Wireless Device */
-+ { USB_DEVICE(0x1199, 0x0028) }, /* Sierra Wireless Device */
-
- { USB_DEVICE(0x1199, 0x6802) }, /* Sierra Wireless MC8755 */
- { USB_DEVICE(0x1199, 0x6804) }, /* Sierra Wireless MC8755 */
-@@ -187,6 +186,7 @@ static struct usb_device_id id_table [] = {
- { USB_DEVICE(0x1199, 0x6821) }, /* Sierra Wireless AirCard 875U */
- { USB_DEVICE(0x1199, 0x6832) }, /* Sierra Wireless MC8780 */
- { USB_DEVICE(0x1199, 0x6833) }, /* Sierra Wireless MC8781 */
-+ { USB_DEVICE(0x1199, 0x683A) }, /* Sierra Wireless MC8785 */
- { USB_DEVICE(0x1199, 0x683B) }, /* Sierra Wireless MC8785 Composite */
- { USB_DEVICE(0x1199, 0x683C) }, /* Sierra Wireless MC8790 */
- { USB_DEVICE(0x1199, 0x683D) }, /* Sierra Wireless MC8790 */
-@@ -204,6 +204,8 @@ static struct usb_device_id id_table [] = {
- /* Sierra Wireless Device */
- { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6890, 0xFF, 0xFF, 0xFF)},
- /* Sierra Wireless Device */
-+ { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6891, 0xFF, 0xFF, 0xFF)},
-+ /* Sierra Wireless Device */
- { USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x6892, 0xFF, 0xFF, 0xFF)},
-
- { USB_DEVICE(0x1199, 0x0112) }, /* Sierra Wireless AirCard 580 */
-diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
-index e39c779..9a3e495 100644
---- a/drivers/usb/serial/ti_usb_3410_5052.c
-+++ b/drivers/usb/serial/ti_usb_3410_5052.c
-@@ -1744,7 +1744,7 @@ static int ti_download_firmware(struct ti_device *tdev, int type)
- if (buffer) {
- memcpy(buffer, fw_p->data, fw_p->size);
- memset(buffer + fw_p->size, 0xff, buffer_size - fw_p->size);
-- ti_do_download(dev, pipe, buffer, fw_p->size);
-+ status = ti_do_download(dev, pipe, buffer, fw_p->size);
- kfree(buffer);
- }
- release_firmware(fw_p);
-diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
-index b157c48..4f7f9e3 100644
---- a/drivers/usb/serial/usb-serial.c
-+++ b/drivers/usb/serial/usb-serial.c
-@@ -733,7 +733,9 @@ int usb_serial_probe(struct usb_interface *interface,
- ((le16_to_cpu(dev->descriptor.idVendor) == ATEN_VENDOR_ID) &&
- (le16_to_cpu(dev->descriptor.idProduct) == ATEN_PRODUCT_ID)) ||
- ((le16_to_cpu(dev->descriptor.idVendor) == ALCOR_VENDOR_ID) &&
-- (le16_to_cpu(dev->descriptor.idProduct) == ALCOR_PRODUCT_ID))) {
-+ (le16_to_cpu(dev->descriptor.idProduct) == ALCOR_PRODUCT_ID)) ||
-+ ((le16_to_cpu(dev->descriptor.idVendor) == SIEMENS_VENDOR_ID) &&
-+ (le16_to_cpu(dev->descriptor.idProduct) == SIEMENS_PRODUCT_ID_EF81))) {
- if (interface != dev->actconfig->interface[0]) {
- /* check out the endpoints of the other interface*/
- iface_desc = dev->actconfig->interface[0]->cur_altsetting;
-diff --git a/drivers/usb/storage/Kconfig b/drivers/usb/storage/Kconfig
-index c760346..3d92496 100644
---- a/drivers/usb/storage/Kconfig
-+++ b/drivers/usb/storage/Kconfig
-@@ -146,18 +146,6 @@ config USB_STORAGE_KARMA
- on the resulting scsi device node returns the Karma to normal
- operation.
-
--config USB_STORAGE_SIERRA
-- bool "Sierra Wireless TRU-Install Feature Support"
-- depends on USB_STORAGE
-- help
-- Say Y here to include additional code to support Sierra Wireless
-- products with the TRU-Install feature (e.g., AC597E, AC881U).
--
-- This code switches the Sierra Wireless device from being in
-- Mass Storage mode to Modem mode. It also has the ability to
-- support host software upgrades should full Linux support be added
-- to TRU-Install.
--
- config USB_STORAGE_CYPRESS_ATACB
- bool "SAT emulation on Cypress USB/ATA Bridge with ATACB"
- depends on USB_STORAGE
-diff --git a/drivers/usb/storage/Makefile b/drivers/usb/storage/Makefile
-index bc3415b..7f8beb5 100644
---- a/drivers/usb/storage/Makefile
-+++ b/drivers/usb/storage/Makefile
-@@ -21,11 +21,10 @@ usb-storage-obj-$(CONFIG_USB_STORAGE_JUMPSHOT) += jumpshot.o
- usb-storage-obj-$(CONFIG_USB_STORAGE_ALAUDA) += alauda.o
- usb-storage-obj-$(CONFIG_USB_STORAGE_ONETOUCH) += onetouch.o
- usb-storage-obj-$(CONFIG_USB_STORAGE_KARMA) += karma.o
--usb-storage-obj-$(CONFIG_USB_STORAGE_SIERRA) += sierra_ms.o
- usb-storage-obj-$(CONFIG_USB_STORAGE_CYPRESS_ATACB) += cypress_atacb.o
-
- usb-storage-objs := scsiglue.o protocol.o transport.o usb.o \
-- initializers.o $(usb-storage-obj-y)
-+ initializers.o sierra_ms.o $(usb-storage-obj-y)
-
- ifneq ($(CONFIG_USB_LIBUSUAL),)
- obj-$(CONFIG_USB) += libusual.o
-diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
-index ba412e6..cd15547 100644
---- a/drivers/usb/storage/unusual_devs.h
-+++ b/drivers/usb/storage/unusual_devs.h
-@@ -160,6 +160,13 @@ UNUSUAL_DEV( 0x0421, 0x0019, 0x0592, 0x0592,
- US_SC_DEVICE, US_PR_DEVICE, NULL,
- US_FL_MAX_SECTORS_64 ),
-
-+/* Reported by Filip Joelsson <filip at blueturtle.nu> */
-+UNUSUAL_DEV( 0x0421, 0x005d, 0x0001, 0x0600,
-+ "Nokia",
-+ "Nokia 3110c",
-+ US_SC_DEVICE, US_PR_DEVICE, NULL,
-+ US_FL_FIX_CAPACITY ),
-+
- /* Reported by Mario Rettig <mariorettig at web.de> */
- UNUSUAL_DEV( 0x0421, 0x042e, 0x0100, 0x0100,
- "Nokia",
-@@ -232,6 +239,20 @@ UNUSUAL_DEV( 0x0421, 0x04b9, 0x0551, 0x0551,
- US_SC_DEVICE, US_PR_DEVICE, NULL,
- US_FL_FIX_CAPACITY ),
-
-+/* Reported by Richard Nauber <RichardNauber at web.de> */
-+UNUSUAL_DEV( 0x0421, 0x04fa, 0x0601, 0x0601,
-+ "Nokia",
-+ "6300",
-+ US_SC_DEVICE, US_PR_DEVICE, NULL,
-+ US_FL_FIX_CAPACITY ),
-+
-+/* Patch for Nokia 5310 capacity */
-+UNUSUAL_DEV( 0x0421, 0x006a, 0x0000, 0x0591,
-+ "Nokia",
-+ "5310",
-+ US_SC_DEVICE, US_PR_DEVICE, NULL,
-+ US_FL_FIX_CAPACITY ),
-+
- /* Reported by Olaf Hering <olh at suse.de> from novell bug #105878 */
- UNUSUAL_DEV( 0x0424, 0x0fdc, 0x0210, 0x0210,
- "SMSC",
-@@ -987,6 +1008,13 @@ UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001,
- US_SC_DEVICE, US_PR_DEVICE, NULL,
- US_FL_FIX_CAPACITY ),
-
-+/* Reported by Adrian Pilchowiec <adi1981 at epf.pl> */
-+UNUSUAL_DEV( 0x071b, 0x3203, 0x0000, 0x0000,
-+ "RockChip",
-+ "MP3",
-+ US_SC_DEVICE, US_PR_DEVICE, NULL,
-+ US_FL_NO_WP_DETECT | US_FL_MAX_SECTORS_64),
-+
- /* Reported by Massimiliano Ghilardi <massimiliano.ghilardi at gmail.com>
- * This USB MP3/AVI player device fails and disconnects if more than 128
- * sectors (64kB) are read/written in a single command, and may be present
-@@ -1576,7 +1604,6 @@ UNUSUAL_DEV( 0x10d6, 0x2200, 0x0100, 0x0100,
- US_SC_DEVICE, US_PR_DEVICE, NULL,
- 0),
-
--#ifdef CONFIG_USB_STORAGE_SIERRA
- /* Reported by Kevin Lloyd <linux at sierrawireless.com>
- * Entry is needed for the initializer function override,
- * which instructs the device to load as a modem
-@@ -1587,7 +1614,6 @@ UNUSUAL_DEV( 0x1199, 0x0fff, 0x0000, 0x9999,
- "USB MMC Storage",
- US_SC_DEVICE, US_PR_DEVICE, sierra_ms_init,
- 0),
--#endif
-
- /* Reported by Jaco Kroon <jaco at kroon.co.za>
- * The usb-storage module found on the Digitech GNX4 (and supposedly other
-diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
-index 73679aa..27016fd 100644
---- a/drivers/usb/storage/usb.c
-+++ b/drivers/usb/storage/usb.c
-@@ -102,9 +102,7 @@
- #ifdef CONFIG_USB_STORAGE_CYPRESS_ATACB
- #include "cypress_atacb.h"
- #endif
--#ifdef CONFIG_USB_STORAGE_SIERRA
- #include "sierra_ms.h"
--#endif
-
- /* Some informational data */
- MODULE_AUTHOR("Matthew Dharm <mdharm-usb at one-eyed-alien.net>");
-diff --git a/drivers/watchdog/geodewdt.c b/drivers/watchdog/geodewdt.c
-index 614a5c7..6799a6d 100644
---- a/drivers/watchdog/geodewdt.c
-+++ b/drivers/watchdog/geodewdt.c
-@@ -130,8 +130,8 @@ static ssize_t geodewdt_write(struct file *file, const char __user *data,
- return len;
- }
-
--static int geodewdt_ioctl(struct inode *inode, struct file *file,
-- unsigned int cmd, unsigned long arg)
-+static long geodewdt_ioctl(struct file *file, unsigned int cmd,
-+ unsigned long arg)
- {
- void __user *argp = (void __user *)arg;
- int __user *p = argp;
-@@ -198,7 +198,7 @@ static const struct file_operations geodewdt_fops = {
- .owner = THIS_MODULE,
- .llseek = no_llseek,
- .write = geodewdt_write,
-- .ioctl = geodewdt_ioctl,
-+ .unlocked_ioctl = geodewdt_ioctl,
- .open = geodewdt_open,
- .release = geodewdt_release,
- };
-diff --git a/drivers/watchdog/ibmasr.c b/drivers/watchdog/ibmasr.c
-index b82405c..89fcefc 100644
---- a/drivers/watchdog/ibmasr.c
-+++ b/drivers/watchdog/ibmasr.c
-@@ -85,7 +85,6 @@ static void __asr_toggle(void)
-
- outb(reg & ~asr_toggle_mask, asr_write_addr);
- reg = inb(asr_read_addr);
-- spin_unlock(&asr_lock);
- }
-
- static void asr_toggle(void)
-diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
-index 0ed8416..6d9f3d4 100644
---- a/drivers/watchdog/pnx4008_wdt.c
-+++ b/drivers/watchdog/pnx4008_wdt.c
-@@ -173,8 +173,8 @@ static const struct watchdog_info ident = {
- .identity = "PNX4008 Watchdog",
- };
-
--static long pnx4008_wdt_ioctl(struct inode *inode, struct file *file,
-- unsigned int cmd, unsigned long arg)
-+static long pnx4008_wdt_ioctl(struct file *file, unsigned int cmd,
-+ unsigned long arg)
- {
- int ret = -ENOTTY;
- int time;
-diff --git a/drivers/watchdog/rc32434_wdt.c b/drivers/watchdog/rc32434_wdt.c
-index 6756bcb..c9c73b6 100644
---- a/drivers/watchdog/rc32434_wdt.c
-+++ b/drivers/watchdog/rc32434_wdt.c
-@@ -182,8 +182,8 @@ static ssize_t rc32434_wdt_write(struct file *file, const char *data,
- return 0;
- }
-
--static int rc32434_wdt_ioctl(struct inode *inode, struct file *file,
-- unsigned int cmd, unsigned long arg)
-+static long rc32434_wdt_ioctl(struct file *file, unsigned int cmd,
-+ unsigned long arg)
- {
- void __user *argp = (void __user *)arg;
- int new_timeout;
-@@ -242,7 +242,7 @@ static struct file_operations rc32434_wdt_fops = {
- .owner = THIS_MODULE,
- .llseek = no_llseek,
- .write = rc32434_wdt_write,
-- .ioctl = rc32434_wdt_ioctl,
-+ .unlocked_ioctl = rc32434_wdt_ioctl,
- .open = rc32434_wdt_open,
- .release = rc32434_wdt_release,
- };
-diff --git a/drivers/watchdog/rdc321x_wdt.c b/drivers/watchdog/rdc321x_wdt.c
-index 9108efa..bf92802 100644
---- a/drivers/watchdog/rdc321x_wdt.c
-+++ b/drivers/watchdog/rdc321x_wdt.c
-@@ -144,8 +144,8 @@ static int rdc321x_wdt_release(struct inode *inode, struct file *file)
- return 0;
- }
-
--static int rdc321x_wdt_ioctl(struct inode *inode, struct file *file,
-- unsigned int cmd, unsigned long arg)
-+static long rdc321x_wdt_ioctl(struct file *file, unsigned int cmd,
-+ unsigned long arg)
- {
- void __user *argp = (void __user *)arg;
- unsigned int value;
-@@ -204,7 +204,7 @@ static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf,
- static const struct file_operations rdc321x_wdt_fops = {
- .owner = THIS_MODULE,
- .llseek = no_llseek,
-- .ioctl = rdc321x_wdt_ioctl,
-+ .unlocked_ioctl = rdc321x_wdt_ioctl,
- .open = rdc321x_wdt_open,
- .write = rdc321x_wdt_write,
- .release = rdc321x_wdt_release,
-diff --git a/drivers/watchdog/wdt285.c b/drivers/watchdog/wdt285.c
-index db362c3..191ea63 100644
---- a/drivers/watchdog/wdt285.c
-+++ b/drivers/watchdog/wdt285.c
-@@ -115,8 +115,8 @@ static int watchdog_release(struct inode *inode, struct file *file)
- return 0;
- }
-
--static ssize_t watchdog_write(struct file *file, const char *data,
-- size_t len, loff_t *ppos)
-+static ssize_t watchdog_write(struct file *file, const char __user *data,
-+ size_t len, loff_t *ppos)
- {
- /*
- * Refresh the timer.
-@@ -133,21 +133,22 @@ static const struct watchdog_info ident = {
- };
-
- static long watchdog_ioctl(struct file *file, unsigned int cmd,
-- unsigned long arg)
-+ unsigned long arg)
- {
- unsigned int new_margin;
-+ int __user *int_arg = (int __user *)arg;
- int ret = -ENOTTY;
-
- switch (cmd) {
- case WDIOC_GETSUPPORT:
- ret = 0;
-- if (copy_to_user((void *)arg, &ident, sizeof(ident)))
-+ if (copy_to_user((void __user *)arg, &ident, sizeof(ident)))
- ret = -EFAULT;
- break;
-
- case WDIOC_GETSTATUS:
- case WDIOC_GETBOOTSTATUS:
-- ret = put_user(0, (int *)arg);
-+ ret = put_user(0, int_arg);
- break;
-
- case WDIOC_KEEPALIVE:
-@@ -156,7 +157,7 @@ static long watchdog_ioctl(struct file *file, unsigned int cmd,
- break;
-
- case WDIOC_SETTIMEOUT:
-- ret = get_user(new_margin, (int *)arg);
-+ ret = get_user(new_margin, int_arg);
- if (ret)
- break;
-
-@@ -171,7 +172,7 @@ static long watchdog_ioctl(struct file *file, unsigned int cmd,
- watchdog_ping();
- /* Fall */
- case WDIOC_GETTIMEOUT:
-- ret = put_user(soft_margin, (int *)arg);
-+ ret = put_user(soft_margin, int_arg);
- break;
- }
- return ret;
-diff --git a/include/asm-x86/acpi.h b/include/asm-x86/acpi.h
-index 635d764..35d1743 100644
---- a/include/asm-x86/acpi.h
-+++ b/include/asm-x86/acpi.h
-@@ -140,6 +140,8 @@ static inline unsigned int acpi_processor_cstate_check(unsigned int max_cstate)
- boot_cpu_data.x86_model <= 0x05 &&
- boot_cpu_data.x86_mask < 0x0A)
- return 1;
-+ else if (boot_cpu_has(X86_FEATURE_AMDC1E))
-+ return 1;
- else
- return max_cstate;
- }
-diff --git a/include/asm-x86/cpufeature.h b/include/asm-x86/cpufeature.h
-index 9489283..cfcfb0a 100644
---- a/include/asm-x86/cpufeature.h
-+++ b/include/asm-x86/cpufeature.h
-@@ -81,6 +81,7 @@
- #define X86_FEATURE_LFENCE_RDTSC (3*32+18) /* Lfence synchronizes RDTSC */
- #define X86_FEATURE_11AP (3*32+19) /* Bad local APIC aka 11AP */
- #define X86_FEATURE_NOPL (3*32+20) /* The NOPL (0F 1F) instructions */
-+#define X86_FEATURE_AMDC1E (3*32+21) /* AMD C1E detected */
-
- /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
- #define X86_FEATURE_XMM3 (4*32+ 0) /* Streaming SIMD Extensions-3 */
-diff --git a/include/asm-x86/idle.h b/include/asm-x86/idle.h
-index d240e5b..cbb6491 100644
---- a/include/asm-x86/idle.h
-+++ b/include/asm-x86/idle.h
-@@ -10,4 +10,6 @@ void idle_notifier_register(struct notifier_block *n);
- void enter_idle(void);
- void exit_idle(void);
-
-+void c1e_remove_cpu(int cpu);
-+
- #endif
-diff --git a/include/linux/pci.h b/include/linux/pci.h
-index c0e1400..98dc624 100644
---- a/include/linux/pci.h
-+++ b/include/linux/pci.h
-@@ -534,7 +534,7 @@ extern void pci_sort_breadthfirst(void);
- #ifdef CONFIG_PCI_LEGACY
- struct pci_dev __deprecated *pci_find_device(unsigned int vendor,
- unsigned int device,
-- const struct pci_dev *from);
-+ struct pci_dev *from);
- struct pci_dev __deprecated *pci_find_slot(unsigned int bus,
- unsigned int devfn);
- #endif /* CONFIG_PCI_LEGACY */
-@@ -550,7 +550,7 @@ struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device,
- struct pci_dev *from);
- struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
- unsigned int ss_vendor, unsigned int ss_device,
-- const struct pci_dev *from);
-+ struct pci_dev *from);
- struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);
- struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn);
- struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from);
-@@ -816,7 +816,7 @@ _PCI_NOP_ALL(write,)
-
- static inline struct pci_dev *pci_find_device(unsigned int vendor,
- unsigned int device,
-- const struct pci_dev *from)
-+ struct pci_dev *from)
- {
- return NULL;
- }
-@@ -838,7 +838,7 @@ static inline struct pci_dev *pci_get_subsys(unsigned int vendor,
- unsigned int device,
- unsigned int ss_vendor,
- unsigned int ss_device,
-- const struct pci_dev *from)
-+ struct pci_dev *from)
- {
- return NULL;
- }
-diff --git a/include/linux/smb.h b/include/linux/smb.h
-index caa43b2..82fefdd 100644
---- a/include/linux/smb.h
-+++ b/include/linux/smb.h
-@@ -11,7 +11,9 @@
-
- #include <linux/types.h>
- #include <linux/magic.h>
-+#ifdef __KERNEL__
- #include <linux/time.h>
-+#endif
-
- enum smb_protocol {
- SMB_PROTOCOL_NONE,
-diff --git a/kernel/kexec.c b/kernel/kexec.c
-index 59f3f0d..aef2653 100644
---- a/kernel/kexec.c
-+++ b/kernel/kexec.c
-@@ -753,8 +753,14 @@ static struct page *kimage_alloc_page(struct kimage *image,
- *old = addr | (*old & ~PAGE_MASK);
-
- /* The old page I have found cannot be a
-- * destination page, so return it.
-+ * destination page, so return it if it's
-+ * gfp_flags honor the ones passed in.
- */
-+ if (!(gfp_mask & __GFP_HIGHMEM) &&
-+ PageHighMem(old_page)) {
-+ kimage_free_pages(old_page);
-+ continue;
-+ }
- addr = old_addr;
- page = old_page;
- break;
-diff --git a/kernel/sched.c b/kernel/sched.c
-index 9889080..13dd2db 100644
---- a/kernel/sched.c
-+++ b/kernel/sched.c
-@@ -1087,7 +1087,7 @@ hotplug_hrtick(struct notifier_block *nfb, unsigned long action, void *hcpu)
- return NOTIFY_DONE;
- }
-
--static void init_hrtick(void)
-+static __init void init_hrtick(void)
- {
- hotcpu_notifier(hotplug_hrtick, 0);
- }
-diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
-index f1f3eee..bd70345 100644
---- a/kernel/time/tick-broadcast.c
-+++ b/kernel/time/tick-broadcast.c
-@@ -235,7 +235,7 @@ static void tick_do_broadcast_on_off(void *why)
- case CLOCK_EVT_NOTIFY_BROADCAST_FORCE:
- if (!cpu_isset(cpu, tick_broadcast_mask)) {
- cpu_set(cpu, tick_broadcast_mask);
-- if (td->mode == TICKDEV_MODE_PERIODIC)
-+ if (bc->mode == TICKDEV_MODE_PERIODIC)
- clockevents_shutdown(dev);
- }
- if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE)
-@@ -245,7 +245,7 @@ static void tick_do_broadcast_on_off(void *why)
- if (!tick_broadcast_force &&
- cpu_isset(cpu, tick_broadcast_mask)) {
- cpu_clear(cpu, tick_broadcast_mask);
-- if (td->mode == TICKDEV_MODE_PERIODIC)
-+ if (bc->mode == TICKDEV_MODE_PERIODIC)
- tick_setup_periodic(dev, 0);
- }
- break;
-@@ -575,4 +575,12 @@ void tick_shutdown_broadcast_oneshot(unsigned int *cpup)
- spin_unlock_irqrestore(&tick_broadcast_lock, flags);
- }
-
-+/*
-+ * Check, whether the broadcast device is in one shot mode
-+ */
-+int tick_broadcast_oneshot_active(void)
-+{
-+ return tick_broadcast_device.mode == TICKDEV_MODE_ONESHOT;
-+}
-+
- #endif
-diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
-index 019315e..df12434 100644
---- a/kernel/time/tick-common.c
-+++ b/kernel/time/tick-common.c
-@@ -33,7 +33,7 @@ DEFINE_PER_CPU(struct tick_device, tick_cpu_device);
- */
- ktime_t tick_next_period;
- ktime_t tick_period;
--int tick_do_timer_cpu __read_mostly = -1;
-+int tick_do_timer_cpu __read_mostly = TICK_DO_TIMER_BOOT;
- DEFINE_SPINLOCK(tick_device_lock);
-
- /*
-@@ -109,7 +109,8 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast)
- if (!tick_device_is_functional(dev))
- return;
-
-- if (dev->features & CLOCK_EVT_FEAT_PERIODIC) {
-+ if ((dev->features & CLOCK_EVT_FEAT_PERIODIC) &&
-+ !tick_broadcast_oneshot_active()) {
- clockevents_set_mode(dev, CLOCK_EVT_MODE_PERIODIC);
- } else {
- unsigned long seq;
-@@ -148,7 +149,7 @@ static void tick_setup_device(struct tick_device *td,
- * If no cpu took the do_timer update, assign it to
- * this cpu:
- */
-- if (tick_do_timer_cpu == -1) {
-+ if (tick_do_timer_cpu == TICK_DO_TIMER_BOOT) {
- tick_do_timer_cpu = cpu;
- tick_next_period = ktime_get();
- tick_period = ktime_set(0, NSEC_PER_SEC / HZ);
-@@ -300,7 +301,8 @@ static void tick_shutdown(unsigned int *cpup)
- if (*cpup == tick_do_timer_cpu) {
- int cpu = first_cpu(cpu_online_map);
-
-- tick_do_timer_cpu = (cpu != NR_CPUS) ? cpu : -1;
-+ tick_do_timer_cpu = (cpu != NR_CPUS) ? cpu :
-+ TICK_DO_TIMER_NONE;
- }
- spin_unlock_irqrestore(&tick_device_lock, flags);
- }
-diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
-index 6e9db97..4692487 100644
---- a/kernel/time/tick-internal.h
-+++ b/kernel/time/tick-internal.h
-@@ -1,6 +1,10 @@
- /*
- * tick internal variable and functions used by low/high res code
- */
-+
-+#define TICK_DO_TIMER_NONE -1
-+#define TICK_DO_TIMER_BOOT -2
-+
- DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
- extern spinlock_t tick_device_lock;
- extern ktime_t tick_next_period;
-@@ -31,6 +35,7 @@ extern void tick_broadcast_oneshot_control(unsigned long reason);
- extern void tick_broadcast_switch_to_oneshot(void);
- extern void tick_shutdown_broadcast_oneshot(unsigned int *cpup);
- extern int tick_resume_broadcast_oneshot(struct clock_event_device *bc);
-+extern int tick_broadcast_oneshot_active(void);
- # else /* BROADCAST */
- static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
- {
-@@ -39,6 +44,7 @@ static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
- static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
- static inline void tick_broadcast_switch_to_oneshot(void) { }
- static inline void tick_shutdown_broadcast_oneshot(unsigned int *cpup) { }
-+static inline int tick_broadcast_oneshot_active(void) { return 0; }
- # endif /* !BROADCAST */
-
- #else /* !ONESHOT */
-@@ -68,6 +74,7 @@ static inline int tick_resume_broadcast_oneshot(struct clock_event_device *bc)
- {
- return 0;
- }
-+static inline int tick_broadcast_oneshot_active(void) { return 0; }
- #endif /* !TICK_ONESHOT */
-
- /*
-diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
-index a87b046..39019b3 100644
---- a/kernel/time/tick-sched.c
-+++ b/kernel/time/tick-sched.c
-@@ -75,6 +75,9 @@ static void tick_do_update_jiffies64(ktime_t now)
- incr * ticks);
- }
- do_timer(++ticks);
-+
-+ /* Keep the tick_next_period variable up to date */
-+ tick_next_period = ktime_add(last_jiffies_update, tick_period);
- }
- write_sequnlock(&xtime_lock);
- }
-@@ -221,7 +224,7 @@ void tick_nohz_stop_sched_tick(int inidle)
- */
- if (unlikely(!cpu_online(cpu))) {
- if (cpu == tick_do_timer_cpu)
-- tick_do_timer_cpu = -1;
-+ tick_do_timer_cpu = TICK_DO_TIMER_NONE;
- }
-
- if (unlikely(ts->nohz_mode == NOHZ_MODE_INACTIVE))
-@@ -303,7 +306,7 @@ void tick_nohz_stop_sched_tick(int inidle)
- * invoked.
- */
- if (cpu == tick_do_timer_cpu)
-- tick_do_timer_cpu = -1;
-+ tick_do_timer_cpu = TICK_DO_TIMER_NONE;
-
- ts->idle_sleeps++;
-
-@@ -468,7 +471,7 @@ static void tick_nohz_handler(struct clock_event_device *dev)
- * this duty, then the jiffies update is still serialized by
- * xtime_lock.
- */
-- if (unlikely(tick_do_timer_cpu == -1))
-+ if (unlikely(tick_do_timer_cpu == TICK_DO_TIMER_NONE))
- tick_do_timer_cpu = cpu;
-
- /* Check, if the jiffies need an update */
-@@ -570,7 +573,7 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer)
- * this duty, then the jiffies update is still serialized by
- * xtime_lock.
- */
-- if (unlikely(tick_do_timer_cpu == -1))
-+ if (unlikely(tick_do_timer_cpu == TICK_DO_TIMER_NONE))
- tick_do_timer_cpu = cpu;
- #endif
-
-diff --git a/mm/memcontrol.c b/mm/memcontrol.c
-index 0f1f7a7..c0500e4 100644
---- a/mm/memcontrol.c
-+++ b/mm/memcontrol.c
-@@ -806,6 +806,7 @@ int mem_cgroup_shrink_usage(struct mm_struct *mm, gfp_t gfp_mask)
-
- do {
- progress = try_to_free_mem_cgroup_pages(mem, gfp_mask);
-+ progress += res_counter_check_under_limit(&mem->res);
- } while (!progress && --retry);
-
- css_put(&mem->css);
-diff --git a/mm/tiny-shmem.c b/mm/tiny-shmem.c
-index ae532f5..d17cb6f 100644
---- a/mm/tiny-shmem.c
-+++ b/mm/tiny-shmem.c
-@@ -65,31 +65,25 @@ struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags)
- if (!dentry)
- goto put_memory;
-
-- error = -ENOSPC;
-- inode = ramfs_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0);
-- if (!inode)
-- goto put_dentry;
--
-- d_instantiate(dentry, inode);
- error = -ENFILE;
-- file = alloc_file(shm_mnt, dentry, FMODE_WRITE | FMODE_READ,
-- &ramfs_file_operations);
-+ file = get_empty_filp();
- if (!file)
- goto put_dentry;
-
-- inode->i_nlink = 0; /* It is unlinked */
--
-- /* notify everyone as to the change of file size */
-- error = do_truncate(dentry, size, 0, file);
-- if (error < 0)
-+ error = -ENOSPC;
-+ inode = ramfs_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0);
-+ if (!inode)
- goto close_file;
-
-+ d_instantiate(dentry, inode);
-+ inode->i_size = size;
-+ inode->i_nlink = 0; /* It is unlinked */
-+ init_file(file, shm_mnt, dentry, FMODE_WRITE | FMODE_READ,
-+ &ramfs_file_operations);
- return file;
-
- close_file:
- put_filp(file);
-- return ERR_PTR(error);
--
- put_dentry:
- dput(dentry);
- put_memory:
-diff --git a/net/socket.c b/net/socket.c
-index 8ef8ba8..3e8d4e3 100644
---- a/net/socket.c
-+++ b/net/socket.c
-@@ -1511,6 +1511,7 @@ out_fd:
- goto out_put;
- }
-
-+#if 0
- #ifdef HAVE_SET_RESTORE_SIGMASK
- asmlinkage long sys_paccept(int fd, struct sockaddr __user *upeer_sockaddr,
- int __user *upeer_addrlen,
-@@ -1564,6 +1565,7 @@ asmlinkage long sys_paccept(int fd, struct sockaddr __user *upeer_sockaddr,
- return do_accept(fd, upeer_sockaddr, upeer_addrlen, flags);
- }
- #endif
-+#endif
-
- asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr,
- int __user *upeer_addrlen)
-diff --git a/scripts/kernel-doc b/scripts/kernel-doc
-index ff787e6..44ee94d 100755
---- a/scripts/kernel-doc
-+++ b/scripts/kernel-doc
-@@ -781,6 +781,7 @@ sub output_struct_xml(%) {
- print " <refsect1>\n";
- print " <title>Members</title>\n";
-
-+ if ($#{$args{'parameterlist'}} >= 0) {
- print " <variablelist>\n";
- foreach $parameter (@{$args{'parameterlist'}}) {
- ($parameter =~ /^#/) && next;
-@@ -798,6 +799,9 @@ sub output_struct_xml(%) {
- print " </varlistentry>\n";
- }
- print " </variablelist>\n";
-+ } else {
-+ print " <para>\n None\n </para>\n";
-+ }
- print " </refsect1>\n";
-
- output_section_xml(@_);
-diff --git a/sound/soc/at32/at32-pcm.c b/sound/soc/at32/at32-pcm.c
-index 435f1da..c83584f 100644
---- a/sound/soc/at32/at32-pcm.c
-+++ b/sound/soc/at32/at32-pcm.c
-@@ -434,7 +434,8 @@ static int at32_pcm_suspend(struct platform_device *pdev,
- params = prtd->params;
-
- /* Disable the PDC and save the PDC registers */
-- ssc_writex(params->ssc->regs, PDC_PTCR, params->mask->pdc_disable);
-+ ssc_writex(params->ssc->regs, ATMEL_PDC_PTCR,
-+ params->mask->pdc_disable);
-
- prtd->pdc_xpr_save = ssc_readx(params->ssc->regs, params->pdc->xpr);
- prtd->pdc_xcr_save = ssc_readx(params->ssc->regs, params->pdc->xcr);
-@@ -464,7 +465,7 @@ static int at32_pcm_resume(struct platform_device *pdev,
- ssc_writex(params->ssc->regs, params->pdc->xnpr, prtd->pdc_xnpr_save);
- ssc_writex(params->ssc->regs, params->pdc->xncr, prtd->pdc_xncr_save);
-
-- ssc_writex(params->ssc->regs, PDC_PTCR, params->mask->pdc_enable);
-+ ssc_writex(params->ssc->regs, ATMEL_PDC_PTCR, params->mask->pdc_enable);
- return 0;
- }
- #else /* CONFIG_PM */
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.975
retrieving revision 1.976
diff -u -r1.975 -r1.976
--- kernel.spec 24 Sep 2008 01:04:57 -0000 1.975
+++ kernel.spec 24 Sep 2008 21:18:20 -0000 1.976
@@ -45,7 +45,7 @@
# The rc snapshot level
%define rcrev 7
# The git snapshot level
-%define gitrev 1
+%define gitrev 2
# Set rpm version accordingly
%define rpmversion 2.6.%{upstream_sublevel}
%endif
@@ -978,7 +978,7 @@
done
%endif
-ApplyPatch git-linus.diff
+#ApplyPatch git-linus.diff
# This patch adds a "make nonint_oldconfig" which is non-interactive and
# also gives a list of missing options at the end. Useful for automated
@@ -1755,6 +1755,9 @@
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
+* Wed Sep 24 2008 Dave Jones <davej at redhat.com>
+- 2.6.27-rc7-git2
+
* Tue Sep 23 2008 Dave Jones <davej at redhat.com>
- x86 compile fix.
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/sources,v
retrieving revision 1.891
retrieving revision 1.892
diff -u -r1.891 -r1.892
--- sources 23 Sep 2008 00:39:53 -0000 1.891
+++ sources 24 Sep 2008 21:18:20 -0000 1.892
@@ -1,3 +1,3 @@
5169d01c405bc3f866c59338e217968c linux-2.6.26.tar.bz2
711e4624185c1e229e9aa4c736b57e05 patch-2.6.27-rc7.bz2
-76c36e968f058a91bd8401c1a8b731fc patch-2.6.27-rc7-git1.bz2
+5e7b3785de718236827ec2f3a51346e8 patch-2.6.27-rc7-git2.bz2
Index: upstream
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/upstream,v
retrieving revision 1.803
retrieving revision 1.804
diff -u -r1.803 -r1.804
--- upstream 23 Sep 2008 00:39:53 -0000 1.803
+++ upstream 24 Sep 2008 21:18:20 -0000 1.804
@@ -1,3 +1,3 @@
linux-2.6.26.tar.bz2
patch-2.6.27-rc7.bz2
-patch-2.6.27-rc7-git1.bz2
+patch-2.6.27-rc7-git2.bz2
--- patch-2.6.27-rc7-git1.bz2.sign DELETED ---
More information about the fedora-extras-commits
mailing list