commit 49f19ce401edfff937c448dd74c22497da361889 tree 3c657340fd3a34fcff516bbf09c4d72f5e141c7b parent 44aefd2706bb6f5b65ba2c38cd89e7609e2b43d3 author Olof Johansson Thu, 05 Oct 2006 20:31:10 -0500 committer Linus Torvalds Thu, 05 Oct 2006 18:39:04 -0700 [PATCH] powerpc: irq change build breaks Fix up some of the buildbreaks from the irq handler changes. Signed-off-by: Olof Johansson Signed-off-by: Linus Torvalds commit 44aefd2706bb6f5b65ba2c38cd89e7609e2b43d3 tree 93824f573767da634fbc82c388b6d33cc454212b parent c1a26e7d40fb814716950122353a1a556844286b parent 7d12e780e003f93433d49ce78cfedf4b4c52adc5 author Linus Torvalds Thu, 05 Oct 2006 16:32:01 -0700 committer Linus Torvalds Thu, 05 Oct 2006 16:32:01 -0700 Merge git://git.infradead.org/~dhowells/irq-2.6 * git://git.infradead.org/~dhowells/irq-2.6: IRQ: Maintain regs pointer globally rather than passing to IRQ handlers IRQ: Typedef the IRQ handler function type IRQ: Typedef the IRQ flow handler function type commit c1a26e7d40fb814716950122353a1a556844286b tree 51d317e7575ddd319560abb4c29d6ef91520864f parent 4b0ff1a94cba36a35734c84f377e49cacc77f293 author Peter Osterlund Thu, 05 Oct 2006 21:17:50 +0200 committer Linus Torvalds Thu, 05 Oct 2006 16:18:55 -0700 [PATCH] UDF: Fix mounting read-write The UDF filesystem can't be mounted in read-write mode any more, because of forgotten braces. Signed-off-by: Peter Osterlund [ Duh! ] Signed-off-by: Linus Torvalds commit 4b0ff1a94cba36a35734c84f377e49cacc77f293 tree 2a6e34c531948d1bc9749a31fb6a88e284ecdb1f parent e03508b43fd93410c1abda2eeabe021de8461f95 author Randy Dunlap Thu, 05 Oct 2006 19:07:26 +0200 committer Linus Torvalds Thu, 05 Oct 2006 15:55:15 -0700 [PATCH] x86-64: Fix compilation without CONFIG_KALLSYMS Include linux/kallsyms.h unconditionally for print_symbol(). Signed-off-by: Randy Dunlap Signed-off-by: Andi Kleen Signed-off-by: Linus Torvalds commit e03508b43fd93410c1abda2eeabe021de8461f95 tree 4e06ae2ce0e6a0c5c93a8ad79322ff53a11fc874 parent d7a297baa6edea94167163bed808c6a8933bd5aa parent 88271e9e43e65537c6390af3718a60c45c787e8f author Linus Torvalds Thu, 05 Oct 2006 15:51:43 -0700 committer Linus Torvalds Thu, 05 Oct 2006 15:54:07 -0700 Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 * 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: [PATCH] i386: fix rwsem build bug on CONFIG_M386=y [PATCH] x86-64: Annotate interrupt frame backlink in interrupt handlers [PATCH] x86-64: Fix FPU corruption [PATCH] x86: Terminate the kernel stacks for the unwinder [PATCH] i386: Fix PCI BIOS config space access [PATCH] x86-64: Calgary IOMMU: print PCI bus numbers in hex [PATCH] x86-64: Calgary IOMMU: Update Jon's contact info [PATCH] x86-64: Calgary IOMMU: Fix off by one when calculating register space location [PATCH] x86-64: Calgary IOMMU: deobfuscate calgary_init [PATCH] i386: Update defconfig [PATCH] x86-64: Update defconfig [ Manually skipped commits that incorrectly ignored AC in kernel space. The alignment fault is defined to only happen for CPL3 anyway - Linus ] commit d7a297baa6edea94167163bed808c6a8933bd5aa tree b703dc50266304765eaa14753a5ba4616d340199 parent d223a60106891bfe46febfacf46b20cd8509aaad author Frederik Deweerdt Thu, 05 Oct 2006 20:49:18 +0000 committer Linus Torvalds Thu, 05 Oct 2006 15:49:02 -0700 [PATCH] fix qla{2,4} build error commit 0181944fe647cae18d545ac1167df3d15d393701 adds a 'extended_error_logging' global variable to qla2xxx which is defined by qla4xxx too. Trying to build both drivers results in the following error: LD drivers/scsi/built-in.o drivers/scsi/qla4xxx/built-in.o: In function `qla4xxx_slave_configure': drivers/scsi/qla4xxx/ql4_os.c:1433: multiple definition of `extended_error_logging' drivers/scsi/qla2xxx/built-in.o:drivers/scsi/qla2xxx/qla_os.c:2166: first defined here make[2]: *** [drivers/scsi/built-in.o] Error 1 make[1]: *** [drivers/scsi] Error 2 make: *** [drivers] Error 2 The following patch simply adds a qla2_ (qla4_ respectively) prefix to the variable name. Signed-off-by: Frederik Deweerdt Signed-off-by: Linus Torvalds commit 88271e9e43e65537c6390af3718a60c45c787e8f tree b5c84887d1de93bb9366181f07033e74bda10319 parent 7d0b0e8ddbdda58a852ccff010c0339a38552cc7 author Ingo Molnar Thu, 05 Oct 2006 18:47:22 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 [PATCH] i386: fix rwsem build bug on CONFIG_M386=y CONFIG_M386 turns on spinlock-based generic rwsems - which surprises the semaphore.S rwsem stubs. Tested both with and without CONFIG_M386. Reported-by: Klaus Knopper Triaged-by: Adrian Bunk Signed-off-by: Ingo Molnar Signed-off-by: Andi Kleen commit 7d0b0e8ddbdda58a852ccff010c0339a38552cc7 tree b3bbe80bbcc38f5ee07b6b235f4bf1fd210e5efe parent 0a5ace2ab08d45cd78d7ef0067cdcd5c812ac54f author Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 [PATCH] x86-64: Annotate interrupt frame backlink in interrupt handlers Add correct CFI annotation to the backlink on top of the interrupt stack. Signed-off-by: Andi Kleen commit 0a5ace2ab08d45cd78d7ef0067cdcd5c812ac54f tree a4da5e79010de2391ee92d6a71b2a7217ed68d61 parent 51ec28e1b2cb267a09a0b8eac1ccf8d61b7268bf author Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 [PATCH] x86-64: Fix FPU corruption This reverts an earlier patch that was found to cause FPU state corruption. I think the corruption happens because unlazy_fpu() can cause FPU exceptions and when it happens after the current switch some processing would affect the state in the wrong process. Thanks to Douglas Crosher and Tom Hughes for testing. Cc: jbeulich@novell.com Signed-off-by: Andi Kleen commit 51ec28e1b2cb267a09a0b8eac1ccf8d61b7268bf tree 4686d439a49b98b98fc5048641ddfb50db3fbcd6 parent f015c6c4d733f68cbc1c5d231bb158abaa5c9606 author Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 [PATCH] x86: Terminate the kernel stacks for the unwinder Always make sure RIP/EIP is 0 in the registers stored on the top of the stack of a kernel thread. This makes sure the unwinder code won't try a fallback but knows the stack has ended. AK: this patch is a bit mysterious. in theory they should be terminated anyways, but it seems to fix at least one crash. Anyways double termination probably doesn't hurt. Signed-off-by: Andi Kleen commit f015c6c4d733f68cbc1c5d231bb158abaa5c9606 tree 9ffa7a284f8265723bf46cb19557443bf1e68ea2 parent 70d666d6ae9724c0a08434c20f8830c90a635bd3 author Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:22 +0200 [PATCH] i386: Fix PCI BIOS config space access Got broken by a earlier change. Also add a printk when no pci config method could be found. Cc: gregkh@suse.de Signed-off-by: Andi Kleen commit 70d666d6ae9724c0a08434c20f8830c90a635bd3 tree 0bea7aa1faf6b7392979e4980f3628653c44bbd6 parent d8d2bedf6002bf40b07fc5989dd9dbe56609fe3e author Jon Mason Thu, 05 Oct 2006 18:47:21 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 [PATCH] x86-64: Calgary IOMMU: print PCI bus numbers in hex Make the references to the bus number in hex instead of decimal, as that is the way that lspci prints out the bus numbers. Signed-off-by: Jon Mason Signed-off-by: Muli Ben-Yehuda Signed-off-by: Andi Kleen commit d8d2bedf6002bf40b07fc5989dd9dbe56609fe3e tree 1f7894af36db0508df4998f74d06577ed6545537 parent 76fd231717453e06347ad17b3fc1707c6918d172 author Jon Mason Thu, 05 Oct 2006 18:47:21 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 [PATCH] x86-64: Calgary IOMMU: Update Jon's contact info Also add copyright for work done after leaving IBM. Signed-off-by: Jon Mason Signed-off-by: Muli Ben-Yehuda Signed-off-by: Andi Kleen commit 76fd231717453e06347ad17b3fc1707c6918d172 tree eb6178d9604a352a6603294478d740cb64986936 parent dedc9937e876cb5430bca6a1dccfcc2ff22f8b7c author Jon Mason Thu, 05 Oct 2006 18:47:21 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 [PATCH] x86-64: Calgary IOMMU: Fix off by one when calculating register space location The purpose of the code being modified is to determine the location of the calgary chip address space. This is done by a magical formula of FE0MB-8MB*OneBasedChassisNumber+1MB*(RioNodeId-ChassisBase) to find the offset where BIOS puts it. In this formula, OneBasedChassisNumber corresponds to the NUMA node, and rionodeid is always 2 or 3 depending on which chip in the system it is. The problem was that we had an off by one error that caused us to account some busses to the wrong chip and thus give them the wrong address space. Fixes RH bugzilla #203971. Signed-off-by: Jon Mason Signed-off-bu: Muli Ben-Yehuda Signed-off-by: Andi Kleen commit dedc9937e876cb5430bca6a1dccfcc2ff22f8b7c tree befdff79af02b30ba42cfdb983343ea7ec7b363f parent 814eadcefe79a2977a11ba135c4763a402112746 author Jon Mason Thu, 05 Oct 2006 18:47:21 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 [PATCH] x86-64: Calgary IOMMU: deobfuscate calgary_init calgary_init's for loop does not correspond to the actual device being checked, which makes its upperbound check for array overflow useless. Changing this to a do-while loop is the correct way of doing this. There should be no possibility of spinning forever in this loop, as pci_get_device states that it will go through all iterations, then return NULL (thus breaking the loop). Signed-off-by: Jon Mason Signed-off-by: Muli Ben-Yehuda Signed-off-by: Andi Kleen commit 814eadcefe79a2977a11ba135c4763a402112746 tree 133a1f41a82ae07312da95c2f70e98b91c49ae09 parent a7441a39a3c62addd6ce10497c101057f4d69184 author Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 [PATCH] i386: Update defconfig Signed-off-by: Andi Kleen commit a7441a39a3c62addd6ce10497c101057f4d69184 tree 734fe76efc1b9d27a7a635bd7160522193dc16a1 parent d223a60106891bfe46febfacf46b20cd8509aaad author Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 committer Andi Kleen Thu, 05 Oct 2006 18:47:21 +0200 [PATCH] x86-64: Update defconfig Signed-off-by: Andi Kleen commit 7d12e780e003f93433d49ce78cfedf4b4c52adc5 tree 6748550400445c11a306b132009f3001e3525df8 parent da482792a6d1a3fbaaa25fae867b343fb4db3246 author David Howells Thu, 05 Oct 2006 14:55:46 +0100 committer David Howells Thu, 05 Oct 2006 15:10:12 +0100 IRQ: Maintain regs pointer globally rather than passing to IRQ handlers Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit) commit da482792a6d1a3fbaaa25fae867b343fb4db3246 tree 138c187e669bbaf997780a999299fbc977568e1c parent 57a58a9435aef3e0342ba4b2c97e0ddfea6f2c7f author David Howells Thu, 05 Oct 2006 13:06:34 +0100 committer David Howells Thu, 05 Oct 2006 13:28:27 +0100 IRQ: Typedef the IRQ handler function type Typedef the IRQ handler function type. Signed-Off-By: David Howells (cherry picked from 1356d1e5fd256997e3d3dce0777ab787d0515c7a commit) commit 57a58a9435aef3e0342ba4b2c97e0ddfea6f2c7f tree 35603f6385edf3dcd20e80a2fcf4c66c7cdc34a7 parent d223a60106891bfe46febfacf46b20cd8509aaad author David Howells Thu, 05 Oct 2006 13:06:34 +0100 committer David Howells Thu, 05 Oct 2006 13:28:06 +0100 IRQ: Typedef the IRQ flow handler function type Typedef the IRQ flow handler function type. Signed-Off-By: David Howells (cherry picked from 8e973fbdf5716b93a0a8c0365be33a31ca0fa351 commit)