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,
- 			&reg32);
--		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