⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 v2.6.20-rc1-gitcurrent.patch

📁 ARM S3C2410 USB SLAVE LINUX驱动
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
 sparc64_boot:-1:	rd	%pc, %g7-	set	1b, %g1-	cmp	%g1, %g7-	be,pn	%xcc, sparc64_boot_after_remap-	 mov	%o4, %l7+	mov	%o4, %l7  	/* We need to remap the kernel.  Use position independant 	 * code to remap us to KERNBASE.@@ -295,7 +291,6 @@ is_sun4v:  	add	%sp, (192 + 128), %sp -sparc64_boot_after_remap: 	sethi	%hi(prom_root_compatible), %g1 	or	%g1, %lo(prom_root_compatible), %g1 	sethi	%hi(prom_sun4v_name), %g7diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.cindex d64b1ea..c3d068c 100644--- a/arch/sparc64/kernel/irq.c+++ b/arch/sparc64/kernel/irq.c@@ -372,14 +372,14 @@ static void run_pre_handler(unsigned int 	} } -static struct hw_interrupt_type sun4u_irq = {+static struct irq_chip sun4u_irq = { 	.typename	= "sun4u", 	.enable		= sun4u_irq_enable, 	.disable	= sun4u_irq_disable, 	.end		= sun4u_irq_end, }; -static struct hw_interrupt_type sun4u_irq_ack = {+static struct irq_chip sun4u_irq_ack = { 	.typename	= "sun4u+ack", 	.enable		= sun4u_irq_enable, 	.disable	= sun4u_irq_disable,@@ -387,14 +387,14 @@ static struct hw_interrupt_type sun4u_ir 	.end		= sun4u_irq_end, }; -static struct hw_interrupt_type sun4v_irq = {+static struct irq_chip sun4v_irq = { 	.typename	= "sun4v", 	.enable		= sun4v_irq_enable, 	.disable	= sun4v_irq_disable, 	.end		= sun4v_irq_end, }; -static struct hw_interrupt_type sun4v_irq_ack = {+static struct irq_chip sun4v_irq_ack = { 	.typename	= "sun4v+ack", 	.enable		= sun4v_irq_enable, 	.disable	= sun4v_irq_disable,@@ -493,22 +493,6 @@ out: 	return bucket->virt_irq; } -void hw_resend_irq(struct hw_interrupt_type *handler, unsigned int virt_irq)-{-	struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq);-	unsigned long pstate;-	unsigned int *ent;--	__asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate));-	__asm__ __volatile__("wrpr %0, %1, %%pstate"-			     : : "r" (pstate), "i" (PSTATE_IE));-	ent = irq_work(smp_processor_id());-	bucket->irq_chain = *ent;-	*ent = __irq(bucket);-	set_softint(1 << PIL_DEVICE_IRQ);-	__asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate));-}- void ack_bad_irq(unsigned int virt_irq) { 	struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq);diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.cindex cc09d82..0a49585 100644--- a/arch/sparc64/kernel/smp.c+++ b/arch/sparc64/kernel/smp.c@@ -1447,11 +1447,8 @@ void __init setup_per_cpu_areas(void) 	char *ptr;  	/* Copy section for each CPU (we discard the original) */-	goal = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES);-#ifdef CONFIG_MODULES-	if (goal < PERCPU_ENOUGH_ROOM)-		goal = PERCPU_ENOUGH_ROOM;-#endif+	goal = PERCPU_ENOUGH_ROOM;+ 	__per_cpu_shift = 0; 	for (size = 1UL; size < goal; size <<= 1UL) 		__per_cpu_shift++;diff --git a/arch/x86_64/Makefile b/arch/x86_64/Makefileindex b471b85..2941a91 100644--- a/arch/x86_64/Makefile+++ b/arch/x86_64/Makefile@@ -45,9 +45,7 @@ # this makes reading assembly source eas # actually it makes the kernel smaller too. cflags-y += -fno-reorder-blocks cflags-y += -Wno-sign-compare-ifneq ($(CONFIG_UNWIND_INFO),y) cflags-y += -fno-asynchronous-unwind-tables-endif ifneq ($(CONFIG_DEBUG_INFO),y) # -fweb shrinks the kernel a bit, but the difference is very small # it also messes up debugging, so don't use it for now.diff --git a/arch/x86_64/defconfig b/arch/x86_64/defconfigindex 1a1c6a1..ac80b12 100644--- a/arch/x86_64/defconfig+++ b/arch/x86_64/defconfig@@ -1523,8 +1523,6 @@ CONFIG_DEBUG_FS=y # CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_LIST is not set # CONFIG_FRAME_POINTER is not set-CONFIG_UNWIND_INFO=y-CONFIG_STACK_UNWIND=y # CONFIG_FORCED_INLINING is not set # CONFIG_HEADERS_CHECK is not set # CONFIG_RCU_TORTURE_TEST is not setdiff --git a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.Sindex 601d332..9f5dac6 100644--- a/arch/x86_64/kernel/entry.S+++ b/arch/x86_64/kernel/entry.S@@ -1155,36 +1155,3 @@ ENTRY(call_softirq) 	ret 	CFI_ENDPROC ENDPROC(call_softirq)--#ifdef CONFIG_STACK_UNWIND-ENTRY(arch_unwind_init_running)-	CFI_STARTPROC-	movq	%r15, R15(%rdi)-	movq	%r14, R14(%rdi)-	xchgq	%rsi, %rdx-	movq	%r13, R13(%rdi)-	movq	%r12, R12(%rdi)-	xorl	%eax, %eax-	movq	%rbp, RBP(%rdi)-	movq	%rbx, RBX(%rdi)-	movq	(%rsp), %rcx-	movq	%rax, R11(%rdi)-	movq	%rax, R10(%rdi)-	movq	%rax, R9(%rdi)-	movq	%rax, R8(%rdi)-	movq	%rax, RAX(%rdi)-	movq	%rax, RCX(%rdi)-	movq	%rax, RDX(%rdi)-	movq	%rax, RSI(%rdi)-	movq	%rax, RDI(%rdi)-	movq	%rax, ORIG_RAX(%rdi)-	movq	%rcx, RIP(%rdi)-	leaq	8(%rsp), %rcx-	movq	$__KERNEL_CS, CS(%rdi)-	movq	%rax, EFLAGS(%rdi)-	movq	%rcx, RSP(%rdi)-	movq	$__KERNEL_DS, SS(%rdi)-	jmpq	*%rdx-	CFI_ENDPROC-ENDPROC(arch_unwind_init_running)-#endifdiff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.cindex b54ccc0..1d9eb6d 100644--- a/arch/x86_64/kernel/traps.c+++ b/arch/x86_64/kernel/traps.c@@ -110,11 +110,6 @@ static inline void preempt_conditional_c }  int kstack_depth_to_print = 12;-#ifdef CONFIG_STACK_UNWIND-static int call_trace = 1;-#else-#define call_trace (-1)-#endif  #ifdef CONFIG_KALLSYMS void printk_address(unsigned long address)@@ -217,32 +212,6 @@ #endif 	return NULL; } -struct ops_and_data {-	struct stacktrace_ops *ops;-	void *data;-};--static int dump_trace_unwind(struct unwind_frame_info *info, void *context)-{-	struct ops_and_data *oad = (struct ops_and_data *)context;-	int n = 0;-	unsigned long sp = UNW_SP(info);--	if (arch_unw_user_mode(info))-		return -1;-	while (unwind(info) == 0 && UNW_PC(info)) {-		n++;-		oad->ops->address(oad->data, UNW_PC(info));-		if (arch_unw_user_mode(info))-			break;-		if ((sp & ~(PAGE_SIZE - 1)) == (UNW_SP(info) & ~(PAGE_SIZE - 1))-		    && sp > UNW_SP(info))-			break;-		sp = UNW_SP(info);-	}-	return n;-}- #define MSG(txt) ops->warning(data, txt)  /*@@ -270,40 +239,6 @@ void dump_trace(struct task_struct *tsk, 	if (!tsk) 		tsk = current; -	if (call_trace >= 0) {-		int unw_ret = 0;-		struct unwind_frame_info info;-		struct ops_and_data oad = { .ops = ops, .data = data };--		if (regs) {-			if (unwind_init_frame_info(&info, tsk, regs) == 0)-				unw_ret = dump_trace_unwind(&info, &oad);-		} else if (tsk == current)-			unw_ret = unwind_init_running(&info, dump_trace_unwind,-						      &oad);-		else {-			if (unwind_init_blocked(&info, tsk) == 0)-				unw_ret = dump_trace_unwind(&info, &oad);-		}-		if (unw_ret > 0) {-			if (call_trace == 1 && !arch_unw_user_mode(&info)) {-				ops->warning_symbol(data,-					     "DWARF2 unwinder stuck at %s",-					     UNW_PC(&info));-				if ((long)UNW_SP(&info) < 0) {-					MSG("Leftover inexact backtrace:");-					stack = (unsigned long *)UNW_SP(&info);-					if (!stack)-						goto out;-				} else-					MSG("Full inexact backtrace again:");-			} else if (call_trace >= 1)-				goto out;-			else-				MSG("Full inexact backtrace again:");-		} else-			MSG("Inexact backtrace:");-	} 	if (!stack) { 		unsigned long dummy; 		stack = &dummy;@@ -387,7 +322,6 @@ #define HANDLE_STACK(cond) \ 	tinfo = current_thread_info(); 	HANDLE_STACK (valid_stack_ptr(tinfo, stack)); #undef HANDLE_STACK-out: 	put_cpu(); } EXPORT_SYMBOL(dump_trace);@@ -1188,21 +1122,3 @@ static int __init kstack_setup(char *s) 	return 0; } early_param("kstack", kstack_setup);--#ifdef CONFIG_STACK_UNWIND-static int __init call_trace_setup(char *s)-{-	if (!s)-		return -EINVAL;-	if (strcmp(s, "old") == 0)-		call_trace = -1;-	else if (strcmp(s, "both") == 0)-		call_trace = 0;-	else if (strcmp(s, "newfallback") == 0)-		call_trace = 1;-	else if (strcmp(s, "new") == 0)-		call_trace = 2;-	return 0;-}-early_param("call_trace", call_trace_setup);-#endifdiff --git a/arch/x86_64/kernel/vmlinux.lds.S b/arch/x86_64/kernel/vmlinux.lds.Sindex 514be5d..1e54ddf 100644--- a/arch/x86_64/kernel/vmlinux.lds.S+++ b/arch/x86_64/kernel/vmlinux.lds.S@@ -221,9 +221,7 @@ #undef VVIRT   /* Sections to be discarded */   /DISCARD/ : { 	*(.exitcall.exit)-#ifndef CONFIG_UNWIND_INFO 	*(.eh_frame)-#endif 	}    STABS_DEBUGdiff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfigindex 984ab28..b34e0a9 100644--- a/drivers/ata/Kconfig+++ b/drivers/ata/Kconfig@@ -40,9 +40,9 @@ config ATA_PIIX 	tristate "Intel PIIX/ICH SATA support" 	depends on PCI 	help-	  This option enables support for ICH5/6/7/8 Serial ATA.-	  If PATA support was enabled previously, this enables-	  support for select Intel PIIX/ICH PATA host controllers.+	  This option enables support for ICH5/6/7/8 Serial ATA+	  and support for PATA on the Intel PIIX3/PIIX4/ICH series+	  PATA host controllers.  	  If unsure, say N. diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.cindex f36da48..dbae6d9 100644--- a/drivers/ata/ahci.c+++ b/drivers/ata/ahci.c@@ -645,8 +645,6 @@ static int ahci_reset_controller(void __ 	u32 cap_save, impl_save, tmp;  	cap_save = readl(mmio + HOST_CAP);-	cap_save &= ( (1<<28) | (1<<17) );-	cap_save |= (1 << 27); 	impl_save = readl(mmio + HOST_PORTS_IMPL);  	/* global controller reset */diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.cindex c7de0bb..47701b2 100644--- a/drivers/ata/ata_piix.c+++ b/drivers/ata/ata_piix.c@@ -226,14 +226,26 @@ #endif 	{ 0x8086, 0x27c0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci }, 	/* 2801GBM/GHM (ICH7M, identical to ICH6M) */ 	{ 0x8086, 0x27c4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6m_sata_ahci },-	/* Enterprise Southbridge 2 (where's the datasheet?) */+	/* Enterprise Southbridge 2 (631xESB/632xESB) */ 	{ 0x8086, 0x2680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_sata_ahci },-	/* SATA Controller 1 IDE (ICH8, no datasheet yet) */+	/* SATA Controller 1 IDE (ICH8) */ 	{ 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },-	/* SATA Controller 2 IDE (ICH8, ditto) */+	/* SATA Controller 2 IDE (ICH8) */ 	{ 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },-	/* Mobile SATA Controller IDE (ICH8M, ditto) */+	/* Mobile SATA Controller IDE (ICH8M) */ 	{ 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },+	/* SATA Controller IDE (ICH9) */+	{ 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },+	/* SATA Controller IDE (ICH9) */+	{ 0x8086, 0x2921, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },+	/* SATA Controller IDE (ICH9) */+	{ 0x8086, 0x2926, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },+	/* SATA Controller IDE (ICH9M) */+	{ 0x8086, 0x2928, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },+	/* SATA Controller IDE (ICH9M) */+	{ 0x8086, 0x292d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },+	/* SATA Controller IDE (ICH9M) */+	{ 0x8086, 0x292e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci },  	{ }	/* terminate list */ };@@ -330,7 +342,7 @@ static const struct ata_port_operations   	.port_start		= ata_port_start, 	.port_stop		= ata_port_stop,-	.host_stop		= ata_host_stop,+	.host_stop		= piix_host_stop, };  static const struct ata_port_operations piix_sata_ops = {diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.cindex 011c0a8..0d51d13 100644--- a/drivers/ata/libata-core.c+++ b/drivers/ata/libata-core.c@@ -1332,7 +1332,7 @@ unsigned ata_exec_internal_sg(struct ata }  /**- *	ata_exec_internal_sg - execute libata internal command+ *	ata_exec_internal - execute libata internal command  *	@dev: Device to which the command is sent  *	@tf: Taskfile registers for the command and the result  *	@cdb: CDB for packet command@@ -1353,11 +1353,17 @@ unsigned ata_exec_internal(struct ata_de 			   struct ata_taskfile *tf, const u8 *cdb, 			   int dma_dir, void *buf, unsigned int buflen) {-	struct scatterlist sg;+	struct scatterlist *psg = NULL, sg;+	unsigned int n_elem = 0; -	sg_init_one(&sg, buf, buflen);+	if (dma_dir != DMA_NONE) {+		WARN_ON(!buf);+		sg_init_one(&sg, buf, buflen);+		psg = &sg;+		n_elem++;+	} -	return ata_exec_internal_sg(dev, tf, cdb, dma_dir, &sg, 1);+	return ata_exec_internal_sg(dev, tf, cdb, dma_dir, psg, n_elem); }  /**diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.cindex 664e137..a4790be 100644--- a/drivers/ata/libata-scsi.c+++ b/drivers/ata/libata-scsi.c@@ -1539,7 +1539,7 @@ static unsigned int ata_scsi_rbuf_get(st 		struct scatterlist *sg;  		sg = (struct scatterlist *) cmd->request_buffer;-		buf = kmap_atomic(sg->page, KM_USER0) + sg->offset;+		buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset; 		buflen = sg->length; 	} else { 		buf = cmd->request_buffer;@@ -1567,7 +1567,7 @@ static inline void ata_scsi_rbuf_put(str 		struct scatterlist *sg;  		sg = (struct scatterlist *) cmd->request_buffer;-		kunmap_atomic(buf - sg->offset, KM_USER0);+		kunmap_atomic(buf - sg->offset, KM_IRQ0); 	} } diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.cindex c7d1738..e7bf9d8 100644--- a/drivers/ata/pata_legacy.c+++ b/drivers/ata/pata_legacy.c@@ -698,8 +698,10 @@ static __init int legacy_init_one(int po 		goto fail_io;  	pdev = platform_device_register_simple(DRV_NAME, nr_legacy_host, NULL, 0);-	if (pdev == NULL)+	if (IS_ERR(pdev)) {+		ret = PTR_ERR(pdev); 		goto fail_dev;+	}  	if (ht6560a & mask) { 		ops = &ht6560a_port_ops;diff --git a/drivers/ata/pata_qdi.c b/drivers/ata/pata_qdi.cindex 36f621a..afc0d99 100644--- a/drivers/ata/pata_qdi.c+++ b/drivers/ata/pata_qdi.c@@ -247,8 +247,8 @@ static __init int qdi_init_one(unsigned  	 */  	pdev = platform_device_register_simple(DRV_NAME, nr_qdi_host, NULL, 0);-	if (pdev == NULL)-		return -ENOMEM;+	if (IS_ERR(pdev))+		return PTR_ERR(pdev);  	memset(&ae, 0, sizeof(struct ata_probe_ent)); 	INIT_LIST_HEAD(&ae.node);diff --git a/drivers/ata/pata_rz1000.c b/drivers/ata/pata_rz1000.cindex 3677c64..adf4cc1 100644--- a/drivers/ata/pata_rz1000.c+++ b/drivers/ata/pata_rz1000.c@@ -105,8 +105,6 @@ static struct ata_port_operations rz1000 	.exec_command	= ata_exec_command, 	.dev_select 	= ata_std_dev_select, -	.error_handler	= rz1000_error_handler,- 	.bmdma_setup 	= ata_bmdma_setup, 	.bmdma_start 	= ata_bmdma_start, 	.bmdma_stop	= ata_bmdma_stop,diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.cindex cc09d47..ff93e8f 100644--- a/drivers/ata/pata_via.c+++ b/drivers/ata/pata_via.c@@ -161,10 +161,15 @@ static int via_pre_reset(struct ata_port 			return -ENOENT; 	} -	if ((config->flags & VIA_UDMA) >= VIA_UDMA_66)+	if ((config->flags & VIA_UDMA) >= VIA_UDMA_100) 		ap->cbl = via_cable_detect(ap);-	else+	/* The UDMA66 series has no cable detect so do drive side detect */+	else if ((config->flags & VIA_UDMA) < VIA_UDMA_66) 		ap->cbl = ATA_CBL_PATA40;+	else+		ap->cbl = ATA_CBL_PATA_UNK;+		+ 	return ata_std_prereset(ap); } diff --git a/drivers/ata/pata_winbond.c b/drivers/ata/pata_winbond.cindex 3ea345c..5d1f518 100644--- a/drivers/ata/pata_winbond.c+++ b/drivers/ata/pata_winbond.c@@ -206,8 +206,8 @@ static __init int winbond_init_one(unsig 			 */  			pdev = platform_device_register_simple(DRV_NAME, nr_winbond_host, NULL, 0);-			if (pdev == NULL)-				return -ENOMEM;+			if (IS_ERR(pdev))+				return PTR_ERR(pdev);  			memset(&ae, 0, sizeof(struct ata_probe_ent)); 			INIT_LIST_HEAD(&ae.node);diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -