From: Greg Kroah-Hartman Date: Wed, 27 Apr 2011 23:42:13 +0000 (-0700) Subject: .38 patches X-Git-Tag: v2.6.38.5~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=60f51e79c408f823c1f1a3caf2e8fa6785819b47;p=thirdparty%2Fkernel%2Fstable-queue.git .38 patches --- diff --git a/queue-2.6.38/acpi-pm-avoid-infinite-recurrence-while-registering-power-resources.patch b/queue-2.6.38/acpi-pm-avoid-infinite-recurrence-while-registering-power-resources.patch new file mode 100644 index 00000000000..301a02c8336 --- /dev/null +++ b/queue-2.6.38/acpi-pm-avoid-infinite-recurrence-while-registering-power-resources.patch @@ -0,0 +1,45 @@ +From 7bed50c5edf5cba8dd515a31191cbfb6065ddc85 Mon Sep 17 00:00:00 2001 +From: Rafael J. Wysocki +Date: Tue, 26 Apr 2011 11:33:18 +0200 +Subject: ACPI / PM: Avoid infinite recurrence while registering power resources + +From: Rafael J. Wysocki + +commit 7bed50c5edf5cba8dd515a31191cbfb6065ddc85 upstream. + +There is at least one BIOS with a DSDT containing a power resource +object with a _PR0 entry pointing back to that power resource. In +consequence, while registering that power resource +acpi_bus_get_power_flags() sees that it depends on itself and tries +to register it again, which leads to an infinitely deep recurrence. +This problem was introduced by commit bf325f9538d8c89312be305b9779e +(ACPI / PM: Register power resource devices as soon as they are +needed). + +To fix this problem use the observation that power resources cannot +be power manageable and prevent acpi_bus_get_power_flags() from +being called for power resource objects. + +References: https://bugzilla.kernel.org/show_bug.cgi?id=31872 +Reported-and-tested-by: Pascal Dormeau +Signed-off-by: Rafael J. Wysocki +Acked-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/scan.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/acpi/scan.c ++++ b/drivers/acpi/scan.c +@@ -944,6 +944,10 @@ static int acpi_bus_get_flags(struct acp + if (ACPI_SUCCESS(status)) + device->flags.lockable = 1; + ++ /* Power resources cannot be power manageable. */ ++ if (device->device_type == ACPI_BUS_TYPE_POWER) ++ return 0; ++ + /* Presence of _PS0|_PR0 indicates 'power manageable' */ + status = acpi_get_handle(device->handle, "_PS0", &temp); + if (ACPI_FAILURE(status)) diff --git a/queue-2.6.38/flexcop-pci-fix-__xlate_proc_name-warning-for-flexcop-pci.patch b/queue-2.6.38/flexcop-pci-fix-__xlate_proc_name-warning-for-flexcop-pci.patch new file mode 100644 index 00000000000..ff959bd921f --- /dev/null +++ b/queue-2.6.38/flexcop-pci-fix-__xlate_proc_name-warning-for-flexcop-pci.patch @@ -0,0 +1,33 @@ +From b934c20de1398d4a82d2ecfeb588a214a910f13f Mon Sep 17 00:00:00 2001 +From: Patrick Boettcher +Date: Sun, 3 Apr 2011 12:40:24 -0300 +Subject: [media] FLEXCOP-PCI: fix __xlate_proc_name-warning for flexcop-pci + +From: Patrick Boettcher + +commit b934c20de1398d4a82d2ecfeb588a214a910f13f upstream. + +This patch fixes the warning about bad names for sys-fs and other kernel-things. The flexcop-pci driver was using '/'-characters in it, which is not good. +This has been fixed in several attempts by several people, but obviously never made it into the kernel. + +Signed-off-by: Patrick Boettcher +Cc: Steffen Barszus +Cc: Boris Cuber +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/dvb/b2c2/flexcop-pci.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/media/dvb/b2c2/flexcop-pci.c ++++ b/drivers/media/dvb/b2c2/flexcop-pci.c +@@ -38,7 +38,7 @@ MODULE_PARM_DESC(debug, + DEBSTATUS); + + #define DRIVER_VERSION "0.1" +-#define DRIVER_NAME "Technisat/B2C2 FlexCop II/IIb/III Digital TV PCI Driver" ++#define DRIVER_NAME "flexcop-pci" + #define DRIVER_AUTHOR "Patrick Boettcher " + + struct flexcop_pci { diff --git a/queue-2.6.38/kvm-390-let-kernel-exit-sie-instruction-on-work.patch b/queue-2.6.38/kvm-390-let-kernel-exit-sie-instruction-on-work.patch new file mode 100644 index 00000000000..3fa1f2635e6 --- /dev/null +++ b/queue-2.6.38/kvm-390-let-kernel-exit-sie-instruction-on-work.patch @@ -0,0 +1,42 @@ +From 9ff4cfb3fcfd48b49fdd9be7381b3be340853aa4 Mon Sep 17 00:00:00 2001 +From: Carsten Otte +Date: Wed, 20 Apr 2011 10:15:36 +0200 +Subject: [S390] kvm-390: Let kernel exit SIE instruction on work + +From: Carsten Otte + +commit 9ff4cfb3fcfd48b49fdd9be7381b3be340853aa4 upstream. + +From: Christian Borntraeger + +This patch fixes the sie exit on interrupts. The low level +interrupt handler returns to the PSW address in pt_regs and not +to the PSW address in the lowcore. +Without this fix a cpu bound guest might never leave guest state +since the host interrupt handler would blindly return to the +SIE instruction, even on need_resched and friends. + +Signed-off-by: Carsten Otte +Signed-off-by: Christian Borntraeger +Signed-off-by: Martin Schwidefsky +Signed-off-by: Greg Kroah-Hartman + +--- + arch/s390/kvm/sie64a.S | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/s390/kvm/sie64a.S ++++ b/arch/s390/kvm/sie64a.S +@@ -48,10 +48,10 @@ sie_irq_handler: + tm __TI_flags+7(%r2),_TIF_EXIT_SIE + jz 0f + larl %r2,sie_exit # work pending, leave sie +- stg %r2,__LC_RETURN_PSW+8 ++ stg %r2,SPI_PSW+8(0,%r15) + br %r14 + 0: larl %r2,sie_reenter # re-enter with guest id +- stg %r2,__LC_RETURN_PSW+8 ++ stg %r2,SPI_PSW+8(0,%r15) + 1: br %r14 + + /* diff --git a/queue-2.6.38/pfault-fix-token-handling.patch b/queue-2.6.38/pfault-fix-token-handling.patch new file mode 100644 index 00000000000..7d40f4bd502 --- /dev/null +++ b/queue-2.6.38/pfault-fix-token-handling.patch @@ -0,0 +1,77 @@ +From e35c76cd47c244eaa7a74adaabde4d0a1cadb907 Mon Sep 17 00:00:00 2001 +From: Heiko Carstens +Date: Wed, 20 Apr 2011 10:15:34 +0200 +Subject: [S390] pfault: fix token handling + +From: Heiko Carstens + +commit e35c76cd47c244eaa7a74adaabde4d0a1cadb907 upstream. + +f6649a7e "[S390] cleanup lowcore access from external interrupts" changed +handling of external interrupts. Instead of letting the external interrupt +handlers accessing the per cpu lowcore the entry code of the kernel reads +already all fields that are necessary and passes them to the handlers. +The pfault interrupt handler was incorrectly converted. It tries to +dereference a value which used to be a pointer to a lowcore field. After +the conversion however it is not anymore the pointer to the field but its +content. So instead of a dereference only a cast is needed to get the +task pointer that caused the pfault. + +Fixes a NULL pointer dereference and a subsequent kernel crash: + +Unable to handle kernel pointer dereference at virtual kernel address (null) +Oops: 0004 [#1] SMP +Modules linked in: nfsd exportfs nfs lockd fscache nfs_acl auth_rpcgss sunrpc + loop qeth_l3 qeth vmur ccwgroup ext3 jbd mbcache dm_mod + dasd_eckd_mod dasd_diag_mod dasd_mod +CPU: 0 Not tainted 2.6.38-2-s390x #1 +Process cron (pid: 1106, task: 000000001f962f78, ksp: 000000001fa0f9d0) +Krnl PSW : 0404200180000000 000000000002c03e (pfault_interrupt+0xa2/0x138) + R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:0 CC:2 PM:0 EA:3 +Krnl GPRS: 0000000000000000 0000000000000001 0000000000000000 0000000000000001 + 000000001f962f78 0000000000518968 0000000090000002 000000001ff03280 + 0000000000000000 000000000064f000 000000001f962f78 0000000000002603 + 0000000006002603 0000000000000000 000000001ff7fe68 000000001ff7fe48 +Krnl Code: 000000000002c036: 5820d010 l %r2,16(%r13) + 000000000002c03a: 1832 lr %r3,%r2 + 000000000002c03c: 1a31 ar %r3,%r1 + >000000000002c03e: ba23d010 cs %r2,%r3,16(%r13) + 000000000002c042: a744fffc brc 4,2c03a + 000000000002c046: a7290002 lghi %r2,2 + 000000000002c04a: e320d0000024 stg %r2,0(%r13) + 000000000002c050: 07f0 bcr 15,%r0 +Call Trace: + ([<000000001f962f78>] 0x1f962f78) + [<000000000001acda>] do_extint+0xf6/0x138 + [<000000000039b6ca>] ext_no_vtime+0x30/0x34 + [<000000007d706e04>] 0x7d706e04 +Last Breaking-Event-Address: + [<0000000000000000>] 0x0 + +For stable maintainers: +the first kernel which contains this bug is 2.6.37. + +Reported-by: Stephen Powell +Cc: Jonathan Nieder +Signed-off-by: Heiko Carstens +Signed-off-by: Martin Schwidefsky +Signed-off-by: Greg Kroah-Hartman + +--- + arch/s390/mm/fault.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/s390/mm/fault.c ++++ b/arch/s390/mm/fault.c +@@ -558,9 +558,9 @@ static void pfault_interrupt(unsigned in + * Get the token (= address of the task structure of the affected task). + */ + #ifdef CONFIG_64BIT +- tsk = *(struct task_struct **) param64; ++ tsk = (struct task_struct *) param64; + #else +- tsk = *(struct task_struct **) param32; ++ tsk = (struct task_struct *) param32; + #endif + + if (subcode & 0x0080) { diff --git a/queue-2.6.38/series b/queue-2.6.38/series index f92e50ed424..df5dc809844 100644 --- a/queue-2.6.38/series +++ b/queue-2.6.38/series @@ -30,3 +30,9 @@ ideapad-read-brightness-setting-on-brightness-key-notify.patch acpi-battery-fribble-sysfs-files-from-a-resume-notifier.patch ath9k_hw-partially-revert-fix-dma-descriptor-rx-error-bit-parsing.patch ubifs-fix-false-space-checking-failure.patch +kvm-390-let-kernel-exit-sie-instruction-on-work.patch +pfault-fix-token-handling.patch +acpi-pm-avoid-infinite-recurrence-while-registering-power-resources.patch +slub-fix-panic-with-discontigmem.patch +set-memory-ranges-in-n_normal_memory-when-onlined.patch +flexcop-pci-fix-__xlate_proc_name-warning-for-flexcop-pci.patch diff --git a/queue-2.6.38/set-memory-ranges-in-n_normal_memory-when-onlined.patch b/queue-2.6.38/set-memory-ranges-in-n_normal_memory-when-onlined.patch new file mode 100644 index 00000000000..87bb1d66b36 --- /dev/null +++ b/queue-2.6.38/set-memory-ranges-in-n_normal_memory-when-onlined.patch @@ -0,0 +1,60 @@ +From d9b41e0b54fd7e164daf1e9c539c1070398aa02e Mon Sep 17 00:00:00 2001 +From: David Rientjes +Date: Wed, 20 Apr 2011 19:27:13 -0700 +Subject: [PARISC] set memory ranges in N_NORMAL_MEMORY when onlined + +From: David Rientjes + +commit d9b41e0b54fd7e164daf1e9c539c1070398aa02e upstream. + +When a DISCONTIGMEM memory range is brought online as a NUMA node, it +also needs to have its bet set in N_NORMAL_MEMORY. This is necessary for +generic kernel code that utilizes N_NORMAL_MEMORY as a subset of N_ONLINE +for memory savings. + +These types of hacks can hopefully be removed once DISCONTIGMEM is either +removed or abstracted away from CONFIG_NUMA. + +Fixes a panic in the slub code which only initializes structures for +N_NORMAL_MEMORY to save memory: + + Backtrace: + [<000000004021c938>] add_partial+0x28/0x98 + [<000000004021faa0>] __slab_free+0x1d0/0x1d8 + [<000000004021fd04>] kmem_cache_free+0xc4/0x128 + [<000000004033bf9c>] ida_get_new_above+0x21c/0x2c0 + [<00000000402a8980>] sysfs_new_dirent+0xd0/0x238 + [<00000000402a974c>] create_dir+0x5c/0x168 + [<00000000402a9ab0>] sysfs_create_dir+0x98/0x128 + [<000000004033d6c4>] kobject_add_internal+0x114/0x258 + [<000000004033d9ac>] kobject_add_varg+0x7c/0xa0 + [<000000004033df20>] kobject_add+0x50/0x90 + [<000000004033dfb4>] kobject_create_and_add+0x54/0xc8 + [<00000000407862a0>] cgroup_init+0x138/0x1f0 + [<000000004077ce50>] start_kernel+0x5a0/0x840 + [<000000004011fa3c>] start_parisc+0xa4/0xb8 + [<00000000404bb034>] packet_ioctl+0x16c/0x208 + [<000000004049ac30>] ip_mroute_setsockopt+0x260/0xf20 + +Signed-off-by: David Rientjes +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + arch/parisc/mm/init.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/arch/parisc/mm/init.c ++++ b/arch/parisc/mm/init.c +@@ -266,8 +266,10 @@ static void __init setup_bootmem(void) + } + memset(pfnnid_map, 0xff, sizeof(pfnnid_map)); + +- for (i = 0; i < npmem_ranges; i++) ++ for (i = 0; i < npmem_ranges; i++) { ++ node_set_state(i, N_NORMAL_MEMORY); + node_set_online(i); ++ } + #endif + + /* diff --git a/queue-2.6.38/slub-fix-panic-with-discontigmem.patch b/queue-2.6.38/slub-fix-panic-with-discontigmem.patch new file mode 100644 index 00000000000..217570879dc --- /dev/null +++ b/queue-2.6.38/slub-fix-panic-with-discontigmem.patch @@ -0,0 +1,38 @@ +From 4a5fa3590f09999f6db41bc386bce40848fa9f63 Mon Sep 17 00:00:00 2001 +From: James Bottomley +Date: Tue, 19 Apr 2011 16:29:36 -0500 +Subject: [PARISC] slub: fix panic with DISCONTIGMEM + +From: James Bottomley + +commit 4a5fa3590f09999f6db41bc386bce40848fa9f63 upstream. + +Slub makes assumptions about page_to_nid() which are violated by +DISCONTIGMEM and !NUMA. This violation results in a panic because +page_to_nid() can be non-zero for pages in the discontiguous ranges and +this leads to a null return by get_node(). The assertion by the +maintainer is that DISCONTIGMEM should only be allowed when NUMA is also +defined. However, at least six architectures: alpha, ia64, m32r, m68k, +mips, parisc violate this. The panic is a regression against slab, so +just mark slub broken in the problem configuration to prevent users +reporting these panics. + +Acked-by: David Rientjes +Acked-by: Pekka Enberg +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + init/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1209,6 +1209,7 @@ config SLAB + per cpu and per node queues. + + config SLUB ++ depends on BROKEN || NUMA || !DISCONTIGMEM + bool "SLUB (Unqueued Allocator)" + help + SLUB is a slab allocator that minimizes cache line usage