Merge changes from sid up to 3.2.18-1

svn path=/dists/trunk/linux-2.6/; revision=19029
This commit is contained in:
Ben Hutchings 2012-05-22 02:59:56 +00:00
commit 8e79053920
316 changed files with 8792 additions and 4699 deletions

View File

@ -23,7 +23,7 @@ eval "set -- $(getopt -n "$0" -- "f:j:s:" "$@")"
while true; do
case "$1" in
-f) flavour="$2"; shift 2 ;;
-j) export DEBIAN_KERNEL_JOBS="$2"; shift 2 ;;
-j) export MAKEFLAGS="$MAKEFLAGS -j$2"; shift 2 ;;
-s) featureset="$2"; shift 2 ;;
--) shift 1; break ;;
esac

86
debian/changelog vendored
View File

@ -80,6 +80,92 @@ linux-2.6 (3.3~rc6-1~experimental.1) experimental; urgency=low
-- Ben Hutchings <ben@decadent.org.uk> Sun, 04 Mar 2012 20:27:42 +0000
linux-2.6 (3.2.18-1) unstable; urgency=low
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.18
- hugetlb: prevent BUG_ON in hugetlb_fault() -> hugetlb_cow()
- net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg
- [sparc] sparc64: Do not clobber %g2 in xcall_fetch_glob_regs().
- ext4: avoid deadlock on sync-mounted FS w/o journal
- brcm80211: smac: fix endless retry of A-MPDU transmissions
(Closes: #672891)
- target: Fix SPC-2 RELEASE bug for multi-session iSCSI client setups
- ALSA: hda/idt - Fix power-map for speaker-pins with some HP laptops
(Closes: #672582)
- usbnet: fix skb traversing races during unlink(v2)
- [arm] prevent VM_GROWSDOWN mmaps extending below FIRST_USER_ADDRESS
[ Jonathan Nieder ]
* wacom: Add support for various tablet models (Closes: #671801)
* rt2800usb: Add support for Ralink RT5392/RF5372 chipset (Closes: #673186)
[ Ben Hutchings ]
* test-patches: Fix -j option, broken since 3.1.0-1~experimental.1
* rt2800usb: Re-enable powersaving by default, as it should work better
than in 2.6.38
* [sparc,sparc64] Build virtio-modules-udeb for use in qemu (Closes: #673320)
* KVM: mmu_notifier: Flush TLBs before releasing mmu_lock
* [x86] KVM: nVMX: Fix erroneous exception bitmap check
* [x86] KVM: VMX: vmx_set_cr0 expects kvm->srcu locked
* [s390] KVM: do store status after handling STOP_ON_STOP bit
* [s390] KVM: Sanitize fpc registers for KVM_SET_FPU
* ACPI battery: only refresh the sysfs files when pertinent information
changes (Closes: #670958)
-- Ben Hutchings <ben@decadent.org.uk> Mon, 21 May 2012 04:07:08 +0100
linux-2.6 (3.2.17-1) unstable; urgency=low
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.17
- md: fix possible corruption of array metadata on shutdown.
- ext4: fix endianness breakage in ext4_split_extent_at()
- KVM: unmap pages from the iommu when slots are removed (CVE-2012-2121)
- btrfs: btrfs_root_readonly() broken on big-endian
- ocfs2: Fix various bugs affecting big-endian architectures
- lockd: fix the endianness bug
- phonet: Check input from user before allocating
- netlink: fix races after skb queueing
- net: fix a race in sock_queue_err_skb()
- net/ethernet: ks8851_mll fix rx frame buffer overflow
- x86, apic: APIC code touches invalid MSR on P5 class machines
- drm/i915: fix integer overflow in i915_gem_execbuffer2()
- drm/i915: fix integer overflow in i915_gem_do_execbuffer()
- USB: cdc-wdm: fix race leading leading to memory corruption
- autofs: make the autofsv5 packet file descriptor use a packetized pipe
(Closes: #633423)
- efi: Validate UEFI boot variables
- efivars: Improve variable validation
- fs/cifs: fix parsing of dfs referrals
- hfsplus: Fix potential buffer overflows (CVE-2012-2319)
- exit_signal: fix the "parent has changed security domain" logic
[ Ben Hutchings ]
* aufs: Enable AUFS_EXPORT
* ext4: Report max_batch_time option correctly (Closes: #654206)
* [i386/rt-686-pae] Enable HIGHMEM64G as intended for this configuration
* NFSv4: Revalidate uid/gid after open (Closes: #659111)
* sky2: propogate rx hash when packet is copied
* sky2: fix receive length error in mixed non-VLAN/VLAN traffic
(Closes: #492853)
* KVM: Ensure all vcpus are consistent with in-kernel irqchip settings
(CVE-2012-1601)
* KVM: lock slots_lock around device assignment (CVE-2012-2121)
* [rt] bump version to 3.2.16-rt27
[ Bastian Blank ]
* [s390] Enable IUCV special message support. (closes: #671238)
[ Arnaud Patard ]
* [armhf] Add vexpress support from Vagrant Cascadian with a slightly
modified kernel configuration (Closes: #670462)
* [armel] Introduce a new udeb module for leds and use it on kirkwoord
kernel thanks to Simon Guinot (Closes: #671200)
-- Ben Hutchings <ben@decadent.org.uk> Sat, 12 May 2012 15:29:09 +0100
>>>>>>> .merge-right.r19023
linux-2.6 (3.2.16-1) unstable; urgency=low
* New upstream stable update:

55
debian/config/armhf/config.vexpress vendored Normal file
View File

@ -0,0 +1,55 @@
##
## file: arch/arm/Kconfig
##
## choice: ARM system type
CONFIG_ARCH_VEXPRESS=y
## end choice
## arch/arm/mach-vexpress/Kconfig
CONFIG_ARCH_VEXPRESS_CA9X4=y
CONFIG_OPROFILE=m
CONFIG_SMP=y
CONFIG_VMSPLIT_2G=y
CONFIG_HOTPLUG_CPU=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_NEON=y
CONFIG_PATA_PLATFORM=m
CONFIG_MTD=m
CONFIG_MTD_CONCAT=m
CONFIG_MTD_PARTITIONS=m
CONFIG_MTD_CMDLINE_PARTS=m
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLOCK=m
CONFIG_MTD_CFI=m
CONFIG_MTD_CFI_INTELEXT=m
CONFIG_MTD_CFI_AMDSTD=m
CONFIG_MTD_PHYSMAP=m
CONFIG_MISC_DEVICES=m
CONFIG_NET_ETHERNET=m
CONFIG_SMSC911X=m
CONFIG_SERIO_AMBAKMI=y
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_FB=y
CONFIG_FB_ARMCLCD=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_SND_ARMAACI=m
CONFIG_USB=m
CONFIG_USB_ISP1760_HCD=m
CONFIG_MMC=y
CONFIG_MMC_ARMMMCI=y
CONFIG_RTC_DRV_PL031=y

View File

@ -2,6 +2,7 @@
flavours:
mx5
omap
vexpress
kernel-arch: arm
[image]
@ -26,3 +27,11 @@ hardware-long: Texas Instruments OMAP3 or OMAP4 based systems
[omap_image]
recommends: uboot-mkimage
[vexpress_build]
image-file: arch/arm/boot/zImage
[vexpress_description]
hardware: ARM Ltd. Versatile Express
hardware-long: ARM Ltd. Versatile Express family of processors

View File

@ -3318,7 +3318,7 @@ CONFIG_AUFS_BRANCH_MAX_127=y
# CONFIG_AUFS_BRANCH_MAX_32767 is not set
## end choice
# CONFIG_AUFS_HNOTIFY is not set
# CONFIG_AUFS_EXPORT is not set
CONFIG_AUFS_EXPORT=y
# CONFIG_AUFS_RDU is not set
# CONFIG_AUFS_SP_IATTR is not set
# CONFIG_AUFS_SHWH is not set

58
debian/config/i386/rt/config.686-pae vendored Normal file
View File

@ -0,0 +1,58 @@
##
## file: arch/x86/Kconfig
##
# CONFIG_X86_32_IRIS is not set
## choice: High Memory Support
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
## end choice
CONFIG_X86_PAE=y
# CONFIG_MATH_EMULATION is not set
# CONFIG_EISA is not set
# CONFIG_MCA is not set
##
## file: arch/x86/Kconfig.cpu
##
## choice: Processor family
# CONFIG_M486 is not set
CONFIG_M686=y
## end choice
##
## file: arch/x86/xen/Kconfig
##
# CONFIG_XEN is not set
##
## file: drivers/i2c/busses/Kconfig
##
# CONFIG_I2C_ELEKTOR is not set
CONFIG_I2C_STUB=m
##
## file: drivers/net/ethernet/racal/Kconfig
##
# CONFIG_NI5010 is not set
##
## file: drivers/net/hamradio/Kconfig
##
# CONFIG_DMASCC is not set
##
## file: drivers/pci/hotplug/Kconfig
##
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
##
## file: drivers/tty/Kconfig
##
# CONFIG_MOXA_INTELLIO is not set
##
## file: lib/Kconfig.debug
##
# CONFIG_DEBUG_HIGHMEM is not set

View File

@ -120,7 +120,7 @@ CONFIG_S390_VMUR=m
CONFIG_LCS=m
CONFIG_CTCM=m
CONFIG_NETIUCV=m
CONFIG_SMSGIUCV=m
CONFIG_SMSGIUCV=y
CONFIG_CLAW=m
CONFIG_QETH=m
CONFIG_QETH_L2=m

View File

@ -0,0 +1,2 @@
leds-ns2
leds-netxbig

View File

@ -472,3 +472,9 @@ Depends: kernel-image
Priority: extra
Description: lzo modules
This package contains lzo modules.
Package: leds-modules
Depends: kernel-image
Priority: extra
Description: LED modules
This package contains LED modules.

View File

@ -0,0 +1 @@
#include <virtio-modules>

View File

@ -0,0 +1 @@
#include <virtio-modules>

View File

@ -0,0 +1,49 @@
From: Andy Whitcroft <apw@canonical.com>
Date: Thu, 3 May 2012 14:48:26 +0100
Subject: ACPI battery: only refresh the sysfs files when pertinent
information changes
commit c5971456964290da7e98222892797b71ef793e62 upstream.
We only need to regenerate the sysfs files when the capacity units
change, avoid the update otherwise.
The origin of this issue is dates way back to 2.6.38:
da8aeb92d4853f37e281f11fddf61f9c7d84c3cd
(ACPI / Battery: Update information on info notification and resume)
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Tested-by: Ralf Jung <post@ralfj.de>
Signed-off-by: Len Brown <len.brown@intel.com>
---
drivers/acpi/battery.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index 86933ca..7dd3f9f 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -643,11 +643,19 @@ static int acpi_battery_update(struct acpi_battery *battery)
static void acpi_battery_refresh(struct acpi_battery *battery)
{
+ int power_unit;
+
if (!battery->bat.dev)
return;
+ power_unit = battery->power_unit;
+
acpi_battery_get_info(battery);
- /* The battery may have changed its reporting units. */
+
+ if (power_unit == battery->power_unit)
+ return;
+
+ /* The battery has changed its reporting units. */
sysfs_remove_battery(battery);
sysfs_add_battery(battery);
}
--
1.7.10

View File

@ -1,6 +1,7 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Sun, 28 Nov 2010 23:46:46 +0000
Subject: [PATCH] dm: Deal with merge_bvec_fn in component devices better
Bug-Debian: http://bugs.debian.org/604457
This is analogous to commit 627a2d3c29427637f4c5d31ccc7fcbd8d312cd71,
which does the same for md-devices at the top of the stack. The

View File

@ -1,46 +0,0 @@
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Subject: mips/ide: flush dcache also if icache does not snoop dcache
If this is not done then the new just read data which remains in dcache
will not make it into icache on time. Thus the CPU loads invalid data
and executes crap. The result is that the user is not able to execute
anything from its IDE based media while reading plain data is still
working well.
This problem has been reported as Debian #404951.
Cc: stable@kernel.org
Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
arch/mips/include/asm/mach-generic/ide.h | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/mips/include/asm/mach-generic/ide.h b/arch/mips/include/asm/mach-generic/ide.h
index 9c93a5b..e80e47f 100644
--- a/arch/mips/include/asm/mach-generic/ide.h
+++ b/arch/mips/include/asm/mach-generic/ide.h
@@ -23,7 +23,7 @@
static inline void __ide_flush_prologue(void)
{
#ifdef CONFIG_SMP
- if (cpu_has_dc_aliases)
+ if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc)
preempt_disable();
#endif
}
@@ -31,14 +31,14 @@ static inline void __ide_flush_prologue(void)
static inline void __ide_flush_epilogue(void)
{
#ifdef CONFIG_SMP
- if (cpu_has_dc_aliases)
+ if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc)
preempt_enable();
#endif
}
static inline void __ide_flush_dcache_range(unsigned long addr, unsigned long size)
{
- if (cpu_has_dc_aliases) {
+ if (cpu_has_dc_aliases || !cpu_has_ic_fills_f_dc) {
unsigned long end = addr + size;
while (addr < end) {

View File

@ -1,6 +1,7 @@
From: Ben Hutchings <ben@decadent.org.uk>
Subject: Fix console selection in PowerPC LPAR environment
Date: Tue, 27 Sep 2011 06:04:39 +0100
Bug-Debian: http://bugs.debian.org/492703
Do not override the preferred console set through the kernel parameter.

View File

@ -1,47 +0,0 @@
Subject: Skip looking for ioapic overrides when ioapics are not present
Date: Sun, 06 Jun 2010 03:56:05 -0000
From: Eric W. Biederman <ebiederm@xmission.com>
Avinash Kurup <kurup.avinash@gmail.com> writes:
> Hi Eric,
>     I get the following errors while booting into 2.6.35-rc1. I did not
> get these in 2.6.34 . The computer however boots and works fine, So its not
> serious but the following errors are displayed in dmesg.
>
> [    0.089969] ERROR: Unable to locate IOAPIC for GSI 13
> [    0.090556] ERROR: Unable to locate IOAPIC for GSI 8
> [    0.091104] ERROR: Unable to locate IOAPIC for GSI 12
> [    0.091375] ERROR: Unable to locate IOAPIC for GSI 1
> [    0.093195] ERROR: Unable to locate IOAPIC for GSI 4
> [    0.094342] ERROR: Unable to locate IOAPIC for GSI 10
> [    0.096335] ERROR: Unable to locate IOAPIC for GSI 6
The new warning originates from acpi_get_override_irq, which I changed to
use helper functions that warn when they fail.
When IOAPICs and ACPI are enabled in a kernel and run on ACPI hardware
that doesn't use the ioapics the pnp acpi code calls this function,
looking for ACPI irq overrides. ACPI irq overrides exist only in the
ioapic case so this function will never succeed. So make the function
fail fast so we don't call into help functions that legitimately
complain when they fail.
Tested-by: Avinash Kurup <kurup.avinash@gmail.com>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
[bwh: Add config condition]
---
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -4066,6 +4066,11 @@ int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity)
{
int ioapic, pin, idx;
+#ifdef CONFIG_ACPI
+ if (acpi_irq_model != ACPI_IRQ_MODEL_IOAPIC)
+ return -1;
+#endif
+
if (skip_ioapic_setup)
return -1;

View File

@ -1,13 +1,14 @@
From 76f41af7cc93591a2723d2c59918df003f90cb09 Mon Sep 17 00:00:00 2001
From: Frederic Weisbecker <fweisbec@gmail.com>
Date: Mon Sep 26 12:19:11 2011 +0200
Subject: x86: Call idle notifier after irq_enter()
Date: Mon, 26 Sep 2011 12:19:11 +0200
Subject: [PATCH 001/267] x86: Call idle notifier after irq_enter()
Interrupts notify the idle exit state before calling irq_enter(). But
the notifier code calls rcu_read_lock() and this is not allowed while
rcu is in an extended quiescent state. We need to wait for
rcu_irq_enter() to be called before doing so otherwise this results in
a grumpy RCU:
[ 0.099991] WARNING: at include/linux/rcupdate.h:194 __atomic_notifier_call_chain+0xd2/0x110()
[ 0.099991] Hardware name: AMD690VM-FMH
[ 0.099991] Modules linked in:
@ -30,7 +31,7 @@ a grumpy RCU:
[ 0.099991] [<ffffffff81cc5ca3>] start_kernel+0x3d1/0x3dc
[ 0.099991] [<ffffffff81cc5321>] x86_64_start_reservations+0x131/0x135
[ 0.099991] [<ffffffff81cc5412>] x86_64_start_kernel+0xed/0xf4
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/20110929194047.GA10247@linux.vnet.ibm.com
Cc: Ingo Molnar <mingo@redhat.com>
@ -38,7 +39,6 @@ Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Andy Henroid <andrew.d.henroid@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/kernel/apic/apic.c | 6 +++---
arch/x86/kernel/apic/io_apic.c | 2 +-
@ -47,11 +47,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/irq.c | 6 +++---
5 files changed, 9 insertions(+), 9 deletions(-)
Index: linux-3.2/arch/x86/kernel/apic/apic.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/apic/apic.c
+++ linux-3.2/arch/x86/kernel/apic/apic.c
@@ -876,8 +876,8 @@ void __irq_entry smp_apic_timer_interrup
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index f98d84c..2cd2d93 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -876,8 +876,8 @@ void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
* Besides, if we don't timer interrupts ignore the global
* interrupt lock, which is the WrongThing (tm) to do.
*/
@ -61,7 +61,7 @@ Index: linux-3.2/arch/x86/kernel/apic/apic.c
local_apic_timer_interrupt();
irq_exit();
@@ -1809,8 +1809,8 @@ void smp_spurious_interrupt(struct pt_re
@@ -1809,8 +1809,8 @@ void smp_spurious_interrupt(struct pt_regs *regs)
{
u32 v;
@ -71,7 +71,7 @@ Index: linux-3.2/arch/x86/kernel/apic/apic.c
/*
* Check if this really is a spurious interrupt and ACK it
* if it is a vectored one. Just in case...
@@ -1846,8 +1846,8 @@ void smp_error_interrupt(struct pt_regs
@@ -1846,8 +1846,8 @@ void smp_error_interrupt(struct pt_regs *regs)
"Illegal register address", /* APIC Error Bit 7 */
};
@ -81,11 +81,11 @@ Index: linux-3.2/arch/x86/kernel/apic/apic.c
/* First tickle the hardware, only then report what went on. -- REW */
v0 = apic_read(APIC_ESR);
apic_write(APIC_ESR, 0);
Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c
+++ linux-3.2/arch/x86/kernel/apic/io_apic.c
@@ -2421,8 +2421,8 @@ asmlinkage void smp_irq_move_cleanup_int
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 6d939d7..8980555 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2421,8 +2421,8 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void)
unsigned vector, me;
ack_APIC_irq();
@ -95,11 +95,11 @@ Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
me = smp_processor_id();
for (vector = FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS; vector++) {
Index: linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/cpu/mcheck/therm_throt.c
+++ linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c
@@ -397,8 +397,8 @@ static void (*smp_thermal_vector)(void)
diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
index 787e06c..ce21561 100644
--- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
+++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
@@ -397,8 +397,8 @@ static void (*smp_thermal_vector)(void) = unexpected_thermal_interrupt;
asmlinkage void smp_thermal_interrupt(struct pt_regs *regs)
{
@ -109,11 +109,11 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c
inc_irq_stat(irq_thermal_count);
smp_thermal_vector();
irq_exit();
Index: linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/cpu/mcheck/threshold.c
+++ linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c
@@ -19,8 +19,8 @@ void (*mce_threshold_vector)(void) = def
diff --git a/arch/x86/kernel/cpu/mcheck/threshold.c b/arch/x86/kernel/cpu/mcheck/threshold.c
index d746df2..aa578ca 100644
--- a/arch/x86/kernel/cpu/mcheck/threshold.c
+++ b/arch/x86/kernel/cpu/mcheck/threshold.c
@@ -19,8 +19,8 @@ void (*mce_threshold_vector)(void) = default_threshold_interrupt;
asmlinkage void smp_threshold_interrupt(void)
{
@ -123,11 +123,11 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c
inc_irq_stat(irq_threshold_count);
mce_threshold_vector();
irq_exit();
Index: linux-3.2/arch/x86/kernel/irq.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/irq.c
+++ linux-3.2/arch/x86/kernel/irq.c
@@ -181,8 +181,8 @@ unsigned int __irq_entry do_IRQ(struct p
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index 429e0c9..5d31e5b 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -181,8 +181,8 @@ unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
unsigned vector = ~regs->orig_ax;
unsigned irq;
@ -137,7 +137,7 @@ Index: linux-3.2/arch/x86/kernel/irq.c
irq = __this_cpu_read(vector_irq[vector]);
@@ -209,10 +209,10 @@ void smp_x86_platform_ipi(struct pt_regs
@@ -209,10 +209,10 @@ void smp_x86_platform_ipi(struct pt_regs *regs)
ack_APIC_irq();
@ -150,3 +150,6 @@ Index: linux-3.2/arch/x86/kernel/irq.c
inc_irq_stat(x86_platform_ipis);
if (x86_platform_ipi_callback)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: slab, lockdep: Annotate all slab caches
From 788ce6c0f8d2db7e6e5bdf6568a80a52a016e000 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Mon Nov 28 19:51:51 CET 2011
Date: Mon, 28 Nov 2011 19:51:51 +0100
Subject: [PATCH 002/267] slab, lockdep: Annotate all slab caches
Currently we only annotate the kmalloc caches, annotate all of them.
@ -17,10 +18,11 @@ Link: http://lkml.kernel.org/n/tip-10bey2cgpcvtbdkgigaoab8w@git.kernel.org
---
mm/slab.c | 52 ++++++++++++++++++++++++++++------------------------
1 file changed, 28 insertions(+), 24 deletions(-)
Index: linux-3.2/mm/slab.c
===================================================================
--- linux-3.2.orig/mm/slab.c
+++ linux-3.2/mm/slab.c
diff --git a/mm/slab.c b/mm/slab.c
index 83311c9a..b76905e 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -607,6 +607,12 @@ int slab_is_available(void)
return g_cpucache_up >= EARLY;
}
@ -34,7 +36,7 @@ Index: linux-3.2/mm/slab.c
#ifdef CONFIG_LOCKDEP
/*
@@ -668,38 +674,41 @@ static void slab_set_debugobj_lock_class
@@ -668,38 +674,41 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
slab_set_debugobj_lock_classes_node(cachep, node);
}
@ -90,7 +92,7 @@ Index: linux-3.2/mm/slab.c
{
}
@@ -712,12 +721,6 @@ static void slab_set_debugobj_lock_class
@@ -712,12 +721,6 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
}
#endif
@ -121,7 +123,7 @@ Index: linux-3.2/mm/slab.c
mutex_unlock(&cache_chain_mutex);
/* Done! */
@@ -2479,6 +2481,8 @@ kmem_cache_create (const char *name, siz
@@ -2479,6 +2481,8 @@ kmem_cache_create (const char *name, size_t size, size_t align,
slab_set_debugobj_lock_classes(cachep);
}
@ -130,3 +132,6 @@ Index: linux-3.2/mm/slab.c
/* cache setup completed, link it into the list */
list_add(&cachep->next, &cache_chain);
oops:
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: x86: kprobes: Remove remove bogus preempt_enable
From 2c5f1cf75561b0a3137ec2bc5eb77c29d00af512 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 17 Mar 2011 11:02:15 +0100
Subject: [PATCH 003/267] x86: kprobes: Remove remove bogus preempt_enable
The CONFIG_PREEMPT=n section of setup_singlestep() contains:
@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/kprobes.c | 1 -
1 file changed, 1 deletion(-)
Index: linux-3.2/arch/x86/kernel/kprobes.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/kprobes.c
+++ linux-3.2/arch/x86/kernel/kprobes.c
@@ -478,7 +478,6 @@ static void __kprobes setup_singlestep(s
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
index 7da647d..5604455 100644
--- a/arch/x86/kernel/kprobes.c
+++ b/arch/x86/kernel/kprobes.c
@@ -478,7 +478,6 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
* stepping.
*/
regs->ip = (unsigned long)p->ainsn.insn;
@ -27,3 +28,6 @@ Index: linux-3.2/arch/x86/kernel/kprobes.c
return;
}
#endif
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: x86: hpet: Disable MSI on Lenovo W510
From e13909c551bb27d491ac83994ca27ec691f070b5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 30 Sep 2011 20:03:37 +0200
Subject: [PATCH 004/267] x86: hpet: Disable MSI on Lenovo W510
MSI based per cpu timers lose interrupts when intel_idle() is enabled
- independent of the c-state. With idle=poll the problem cannot be
@ -12,10 +13,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/hpet.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
Index: linux-3.2/arch/x86/kernel/hpet.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/hpet.c
+++ linux-3.2/arch/x86/kernel/hpet.c
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 1bb0bf4..d86b821 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -9,6 +9,7 @@
#include <linux/slab.h>
#include <linux/hpet.h>
@ -24,7 +25,7 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
#include <linux/cpu.h>
#include <linux/pm.h>
#include <linux/io.h>
@@ -568,6 +569,30 @@ static void init_one_hpet_msi_clockevent
@@ -568,6 +569,30 @@ static void init_one_hpet_msi_clockevent(struct hpet_dev *hdev, int cpu)
#define RESERVE_TIMERS 0
#endif
@ -55,7 +56,7 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
static void hpet_msi_capability_lookup(unsigned int start_timer)
{
unsigned int id;
@@ -575,6 +600,8 @@ static void hpet_msi_capability_lookup(u
@@ -575,6 +600,8 @@ static void hpet_msi_capability_lookup(unsigned int start_timer)
unsigned int num_timers_used = 0;
int i;
@ -64,3 +65,6 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
if (hpet_msi_disable)
return;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: block: Shorten interrupt disabled regions
From e2c97e4d5da80e66340ea752cb33bf8802feaa53 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 22 Jun 2011 19:47:02 +0200
Subject: [PATCH 005/267] block: Shorten interrupt disabled regions
Moving the blk_sched_flush_plug() call out of the interrupt/preempt
disabled region in the scheduler allows us to replace
@ -46,11 +47,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
block/blk-core.c | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-)
Index: linux-3.2/block/blk-core.c
===================================================================
--- linux-3.2.orig/block/blk-core.c
+++ linux-3.2/block/blk-core.c
@@ -300,7 +300,11 @@ void __blk_run_queue(struct request_queu
diff --git a/block/blk-core.c b/block/blk-core.c
index 15de223..7366ad4 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -300,7 +300,11 @@ void __blk_run_queue(struct request_queue *q)
{
if (unlikely(blk_queue_stopped(q)))
return;
@ -63,7 +64,7 @@ Index: linux-3.2/block/blk-core.c
q->request_fn(q);
}
EXPORT_SYMBOL(__blk_run_queue);
@@ -2745,11 +2749,11 @@ static void queue_unplugged(struct reque
@@ -2745,11 +2749,11 @@ static void queue_unplugged(struct request_queue *q, unsigned int depth,
* this lock).
*/
if (from_schedule) {
@ -77,7 +78,7 @@ Index: linux-3.2/block/blk-core.c
}
}
@@ -2775,7 +2779,6 @@ static void flush_plug_callbacks(struct
@@ -2775,7 +2779,6 @@ static void flush_plug_callbacks(struct blk_plug *plug)
void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
{
struct request_queue *q;
@ -85,7 +86,7 @@ Index: linux-3.2/block/blk-core.c
struct request *rq;
LIST_HEAD(list);
unsigned int depth;
@@ -2796,11 +2799,6 @@ void blk_flush_plug_list(struct blk_plug
@@ -2796,11 +2799,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
q = NULL;
depth = 0;
@ -97,7 +98,7 @@ Index: linux-3.2/block/blk-core.c
while (!list_empty(&list)) {
rq = list_entry_rq(list.next);
list_del_init(&rq->queuelist);
@@ -2813,7 +2811,7 @@ void blk_flush_plug_list(struct blk_plug
@@ -2813,7 +2811,7 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
queue_unplugged(q, depth, from_schedule);
q = rq->q;
depth = 0;
@ -106,7 +107,7 @@ Index: linux-3.2/block/blk-core.c
}
/*
* rq is already accounted, so use raw insert
@@ -2831,8 +2829,6 @@ void blk_flush_plug_list(struct blk_plug
@@ -2831,8 +2829,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
*/
if (q)
queue_unplugged(q, depth, from_schedule);
@ -115,3 +116,6 @@ Index: linux-3.2/block/blk-core.c
}
void blk_finish_plug(struct blk_plug *plug)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: sched: Distangle worker accounting from rq-%3Elock
From f88ad17a5ee292086822942fee103f09abb93bc4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 22 Jun 2011 19:47:03 +0200
Subject: [PATCH 006/267] sched: Distangle worker accounting from rq-%3Elock
The worker accounting for cpu bound workers is plugged into the core
scheduler code and the wakeup code. This is not a hard requirement and
@ -23,16 +24,16 @@ Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/sched.c | 66 ++++++++++----------------------------------
kernel/workqueue.c | 69 +++++++++++++++++++++--------------------------
kernel/workqueue_sched.h | 5 +--
3 files changed, 48 insertions(+), 92 deletions(-)
kernel/sched.c | 66 +++++++++++----------------------------------
kernel/workqueue.c | 67 +++++++++++++++++++++-------------------------
kernel/workqueue_sched.h | 5 ++--
3 files changed, 47 insertions(+), 91 deletions(-)
Index: linux-3.2/kernel/sched.c
===================================================================
--- linux-3.2.orig/kernel/sched.c
+++ linux-3.2/kernel/sched.c
@@ -2644,10 +2644,6 @@ static void ttwu_activate(struct rq *rq,
diff --git a/kernel/sched.c b/kernel/sched.c
index d6b149c..a39494e 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2644,10 +2644,6 @@ static void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags)
{
activate_task(rq, p, en_flags);
p->on_rq = 1;
@ -104,7 +105,7 @@ Index: linux-3.2/kernel/sched.c
}
switch_count = &prev->nvcsw;
}
@@ -4475,6 +4424,14 @@ static inline void sched_submit_work(str
@@ -4475,6 +4424,14 @@ static inline void sched_submit_work(struct task_struct *tsk)
{
if (!tsk->state)
return;
@ -119,7 +120,7 @@ Index: linux-3.2/kernel/sched.c
/*
* If we are going to sleep and we have plugged IO queued,
* make sure to submit it to avoid deadlocks.
@@ -4483,12 +4440,19 @@ static inline void sched_submit_work(str
@@ -4483,12 +4440,19 @@ static inline void sched_submit_work(struct task_struct *tsk)
blk_schedule_flush_plug(tsk);
}
@ -139,10 +140,10 @@ Index: linux-3.2/kernel/sched.c
}
EXPORT_SYMBOL(schedule);
Index: linux-3.2/kernel/workqueue.c
===================================================================
--- linux-3.2.orig/kernel/workqueue.c
+++ linux-3.2/kernel/workqueue.c
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index bb425b1..4b4421d 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -137,6 +137,7 @@ struct worker {
unsigned int flags; /* X: flags */
int id; /* I: worker id */
@ -151,7 +152,7 @@ Index: linux-3.2/kernel/workqueue.c
};
/*
@@ -658,66 +659,58 @@ static void wake_up_worker(struct global
@@ -660,66 +661,58 @@ static void wake_up_worker(struct global_cwq *gcwq)
}
/**
@ -212,14 +213,14 @@ Index: linux-3.2/kernel/workqueue.c
if (worker->flags & WORKER_NOT_RUNNING)
- return NULL;
+ return;
- /* this can only happen on the local cpu */
- BUG_ON(cpu != raw_smp_processor_id());
+
+ if (WARN_ON_ONCE(worker->sleeping))
+ return;
- /* this can only happen on the local cpu */
- BUG_ON(cpu != raw_smp_processor_id());
+ worker->sleeping = 1;
+
+ cpu = smp_processor_id();
+ gcwq = get_gcwq(cpu);
+ spin_lock_irq(&gcwq->lock);
@ -233,11 +234,10 @@ Index: linux-3.2/kernel/workqueue.c
- * and preemption disabled, which in turn means that none else
- * could be manipulating idle_list, so dereferencing idle_list
- * without gcwq lock is safe.
- */
*/
- if (atomic_dec_and_test(nr_running) && !list_empty(&gcwq->worklist))
- to_wakeup = first_worker(gcwq);
- return to_wakeup ? to_wakeup->task : NULL;
+ */
+ if (atomic_dec_and_test(get_gcwq_nr_running(cpu)) &&
+ !list_empty(&gcwq->worklist)) {
+ worker = first_worker(gcwq);
@ -248,10 +248,10 @@ Index: linux-3.2/kernel/workqueue.c
}
/**
Index: linux-3.2/kernel/workqueue_sched.h
===================================================================
--- linux-3.2.orig/kernel/workqueue_sched.h
+++ linux-3.2/kernel/workqueue_sched.h
diff --git a/kernel/workqueue_sched.h b/kernel/workqueue_sched.h
index 2d10fc9..3bf73e2 100644
--- a/kernel/workqueue_sched.h
+++ b/kernel/workqueue_sched.h
@@ -4,6 +4,5 @@
* Scheduler hooks for concurrency managed workqueue. Only to be
* included from sched.c and workqueue.c.
@ -261,3 +261,6 @@ Index: linux-3.2/kernel/workqueue_sched.h
- unsigned int cpu);
+void wq_worker_running(struct task_struct *task);
+void wq_worker_sleeping(struct task_struct *task);
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: mips-enable-interrupts-in-signal.patch
From 7a4fa0630cdf29e9fd81872ae02888121ffe3564 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 21:32:10 +0200
Subject: [PATCH 007/267] mips-enable-interrupts-in-signal.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/kernel/signal.c | 3 +++
1 file changed, 3 insertions(+)
Index: linux-3.2/arch/mips/kernel/signal.c
===================================================================
--- linux-3.2.orig/arch/mips/kernel/signal.c
+++ linux-3.2/arch/mips/kernel/signal.c
@@ -604,6 +604,9 @@ static void do_signal(struct pt_regs *re
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index f852400..1c8f34c 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -604,6 +604,9 @@ static void do_signal(struct pt_regs *regs)
if (!user_mode(regs))
return;
@ -21,3 +22,6 @@ Index: linux-3.2/arch/mips/kernel/signal.c
if (test_thread_flag(TIF_RESTORE_SIGMASK))
oldset = &current->saved_sigmask;
else
--
1.7.10

View File

@ -0,0 +1,27 @@
From 415c7e81f6b54e5f8e8cddf0f2ff1c1855eeade3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 16:27:13 +0200
Subject: [PATCH 008/267] arm-enable-interrupts-in-signal-code.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/arm/kernel/signal.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 9e617bd..c7001bc 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -672,6 +672,9 @@ static void do_signal(struct pt_regs *regs, int syscall)
if (!user_mode(regs))
return;
+ local_irq_enable();
+ preempt_check_resched();
+
/*
* If we were from a system call, check for system call restarting...
*/
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: powerpc: 85xx: Mark cascade irq IRQF_NO_THREAD
From 490faa4e4541df017386a562e4e9ad7011f49562 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 12:09:54 +0200
Subject: [PATCH 009/267] powerpc: 85xx: Mark cascade irq IRQF_NO_THREAD
Cascade interrupt must run in hard interrupt context.
@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/platforms/85xx/mpc85xx_cds.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c
===================================================================
--- linux-3.2.orig/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -177,7 +177,7 @@ static irqreturn_t mpc85xx_8259_cascade_
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index 66cb8d6..7e2a4d2 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -177,7 +177,7 @@ static irqreturn_t mpc85xx_8259_cascade_action(int irq, void *dev_id)
static struct irqaction mpc85xxcds_8259_irqaction = {
.handler = mpc85xx_8259_cascade_action,
@ -22,3 +23,6 @@ Index: linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c
.name = "8259 cascade",
};
#endif /* PPC_I8259 */
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: powerpc: wsp: Mark opb cascade handler IRQF_NO_THREAD
From 05a48c448ba9085941f020ea02a7c880e80d683c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 05 Oct 2011 14:11:24 +0200
Date: Wed, 5 Oct 2011 14:11:24 +0200
Subject: [PATCH 010/267] powerpc: wsp: Mark opb cascade handler
IRQF_NO_THREAD
Cascade handlers must run in hard interrupt context.
@ -9,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/platforms/wsp/opb_pic.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c
===================================================================
--- linux-3.2.orig/arch/powerpc/platforms/wsp/opb_pic.c
+++ linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c
diff --git a/arch/powerpc/platforms/wsp/opb_pic.c b/arch/powerpc/platforms/wsp/opb_pic.c
index be05631..19f353d 100644
--- a/arch/powerpc/platforms/wsp/opb_pic.c
+++ b/arch/powerpc/platforms/wsp/opb_pic.c
@@ -320,7 +320,8 @@ void __init opb_pic_init(void)
}
@ -23,3 +25,6 @@ Index: linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c
if (rc) {
printk("opb: request_irq failed: %d\n", rc);
continue;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: powerpc: Mark IPI interrupts IRQF_NO_THREAD
From c5f5de2dcb79c63ab914f69b8d1a59ba211f8b15 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 05 Oct 2011 14:00:26 +0200
Date: Wed, 5 Oct 2011 14:00:26 +0200
Subject: [PATCH 011/267] powerpc: Mark IPI interrupts IRQF_NO_THREAD
IPI handlers cannot be threaded. Remove the obsolete IRQF_DISABLED
flag (see commit e58aa3d2) while at it.
@ -12,11 +13,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/sysdev/xics/xics-common.c | 5 +++--
3 files changed, 7 insertions(+), 6 deletions(-)
Index: linux-3.2/arch/powerpc/kernel/smp.c
===================================================================
--- linux-3.2.orig/arch/powerpc/kernel/smp.c
+++ linux-3.2/arch/powerpc/kernel/smp.c
@@ -187,8 +187,8 @@ int smp_request_message_ipi(int virq, in
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 6df7090..abdedd3 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -187,8 +187,8 @@ int smp_request_message_ipi(int virq, int msg)
return 1;
}
#endif
@ -27,11 +28,11 @@ Index: linux-3.2/arch/powerpc/kernel/smp.c
WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n",
virq, smp_ipi_name[msg], err);
Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c
===================================================================
--- linux-3.2.orig/arch/powerpc/platforms/powermac/smp.c
+++ linux-3.2/arch/powerpc/platforms/powermac/smp.c
@@ -200,7 +200,7 @@ static int psurge_secondary_ipi_init(voi
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 3394254..8d75ac8 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -200,7 +200,7 @@ static int psurge_secondary_ipi_init(void)
if (psurge_secondary_virq)
rc = request_irq(psurge_secondary_virq, psurge_ipi_intr,
@ -40,7 +41,7 @@ Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c
if (rc)
pr_err("Failed to setup secondary cpu IPI\n");
@@ -408,7 +408,7 @@ static int __init smp_psurge_kick_cpu(in
@@ -408,7 +408,7 @@ static int __init smp_psurge_kick_cpu(int nr)
static struct irqaction psurge_irqaction = {
.handler = psurge_ipi_intr,
@ -49,10 +50,10 @@ Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c
.name = "primary IPI",
};
Index: linux-3.2/arch/powerpc/sysdev/xics/xics-common.c
===================================================================
--- linux-3.2.orig/arch/powerpc/sysdev/xics/xics-common.c
+++ linux-3.2/arch/powerpc/sysdev/xics/xics-common.c
diff --git a/arch/powerpc/sysdev/xics/xics-common.c b/arch/powerpc/sysdev/xics/xics-common.c
index 63762c6..4ba6194 100644
--- a/arch/powerpc/sysdev/xics/xics-common.c
+++ b/arch/powerpc/sysdev/xics/xics-common.c
@@ -134,10 +134,11 @@ static void xics_request_ipi(void)
BUG_ON(ipi == NO_IRQ);
@ -67,3 +68,6 @@ Index: linux-3.2/arch/powerpc/sysdev/xics/xics-common.c
}
int __init xics_smp_probe(void)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: powerpc: Allow irq threading
From 2e574f68fff54d8c7398b3984f183fb80ec8ce3e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 13:16:24 +0200
Subject: [PATCH 012/267] powerpc: Allow irq threading
All interrupts which must be non threaded are marked
IRQF_NO_THREAD. So it's safe to allow force threaded handlers.
@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/Kconfig | 1 +
1 file changed, 1 insertion(+)
Index: linux-3.2/arch/powerpc/Kconfig
===================================================================
--- linux-3.2.orig/arch/powerpc/Kconfig
+++ linux-3.2/arch/powerpc/Kconfig
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 951e18f..7c93c7e 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -132,6 +132,7 @@ config PPC
select IRQ_PER_CPU
select GENERIC_IRQ_SHOW
@ -22,3 +23,6 @@ Index: linux-3.2/arch/powerpc/Kconfig
select HAVE_RCU_TABLE_FREE if SMP
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_BPF_JIT if (PPC64 && NET)
--
1.7.10

View File

@ -1,6 +1,8 @@
From 9e1c03d11fdc2426a5d53a1d0e0b63b412924287 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 18 Oct 2011 22:03:48 +0200
Subject: sched: Keep period timer ticking when throttling active
Subject: [PATCH 013/267] sched: Keep period timer ticking when throttling
active
When a runqueue is throttled we cannot disable the period timer
because that timer is the only way to undo the throttling.
@ -15,11 +17,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched_rt.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
Index: linux-3.2/kernel/sched_rt.c
===================================================================
--- linux-3.2.orig/kernel/sched_rt.c
+++ linux-3.2/kernel/sched_rt.c
@@ -580,12 +580,9 @@ static inline int balance_runtime(struct
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 78fcacf..40d97e1 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -580,12 +580,9 @@ static inline int balance_runtime(struct rt_rq *rt_rq)
static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
{
@ -33,7 +35,7 @@ Index: linux-3.2/kernel/sched_rt.c
span = sched_rt_period_mask();
for_each_cpu(i, span) {
int enqueue = 0;
@@ -620,12 +617,17 @@ static int do_sched_rt_period_timer(stru
@@ -620,12 +617,17 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
if (!rt_rq_throttled(rt_rq))
enqueue = 1;
}
@ -51,7 +53,7 @@ Index: linux-3.2/kernel/sched_rt.c
return idle;
}
@@ -686,7 +688,8 @@ static void update_curr_rt(struct rq *rq
@@ -686,7 +688,8 @@ static void update_curr_rt(struct rq *rq)
if (unlikely((s64)delta_exec < 0))
delta_exec = 0;
@ -61,3 +63,6 @@ Index: linux-3.2/kernel/sched_rt.c
curr->se.sum_exec_runtime += delta_exec;
account_group_exec_runtime(curr, delta_exec);
--
1.7.10

View File

@ -1,6 +1,7 @@
From ce43773df1fea5d063ac8d1aca4ff806bf899b5b Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 18 Oct 2011 22:03:48 +0200
Subject: sched: Do not throttle due to PI boosting
Subject: [PATCH 014/267] sched: Do not throttle due to PI boosting
When a runqueue has rt_runtime_us = 0 then the only way it can
accumulate rt_time is via PI boosting. Though that causes the runqueue
@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched_rt.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
Index: linux-3.2/kernel/sched_rt.c
===================================================================
--- linux-3.2.orig/kernel/sched_rt.c
+++ linux-3.2/kernel/sched_rt.c
@@ -659,8 +659,24 @@ static int sched_rt_runtime_exceeded(str
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index 40d97e1..c108b9c 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -659,8 +659,24 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
return 0;
if (rt_rq->rt_time > runtime) {
@ -46,3 +47,6 @@ Index: linux-3.2/kernel/sched_rt.c
if (rt_rq_throttled(rt_rq)) {
sched_rt_rq_dequeue(rt_rq);
return 1;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: time: Remove bogus comments
From f427d80501aa7fcdf695288aa8eb507dbd5c9369 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 19:06:50 +0100
Subject: [PATCH 015/267] time: Remove bogus comments
There is no global irq lock which makes a syscall magically SMP
safe. Remove the outdated comment concerning do_settimeofday() as
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/time.c | 6 ------
1 file changed, 6 deletions(-)
Index: linux-3.2/kernel/time.c
===================================================================
--- linux-3.2.orig/kernel/time.c
+++ linux-3.2/kernel/time.c
@@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct tim
diff --git a/kernel/time.c b/kernel/time.c
index 73e416d..ba744cf 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
return error;
if (tz) {
@ -23,7 +24,7 @@ Index: linux-3.2/kernel/time.c
sys_tz = *tz;
update_vsyscall_tz();
if (firsttime) {
@@ -173,12 +172,7 @@ int do_sys_settimeofday(const struct tim
@@ -173,12 +172,7 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
}
}
if (tv)
@ -36,3 +37,6 @@ Index: linux-3.2/kernel/time.c
return 0;
}
--
1.7.10

View File

@ -1,9 +1,11 @@
Subject: x86: vdso: Remove bogus locking in update_vsyscall_tz()
From 76f63af187b74e8d533678278b247292340ccc10 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 19:10:46 +0100
Subject: [PATCH 016/267] x86: vdso: Remove bogus locking in
update_vsyscall_tz()
Changing the sequence count in update_vsyscall_tz() is completely
pointless.
pointless.
The vdso code copies the data unprotected. There is no point to change
this as sys_tz is nowhere protected at all. See sys_gettimeofday().
@ -13,10 +15,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/vsyscall_64.c | 5 -----
1 file changed, 5 deletions(-)
Index: linux-2.6/arch/x86/kernel/vsyscall_64.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/vsyscall_64.c
+++ linux-2.6/arch/x86/kernel/vsyscall_64.c
diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
index e4d4a22..f04adbd 100644
--- a/arch/x86/kernel/vsyscall_64.c
+++ b/arch/x86/kernel/vsyscall_64.c
@@ -80,12 +80,7 @@ early_param("vsyscall", vsyscall_setup);
void update_vsyscall_tz(void)
@ -30,3 +32,6 @@ Index: linux-2.6/arch/x86/kernel/vsyscall_64.c
}
void update_vsyscall(struct timespec *wall_time, struct timespec *wtm,
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: x86: vdso: Use seqcount instead of seqlock
From 11f9d4b70b2592b57dda3c33bdcd726ee98c9a71 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 18:24:07 +0100
Subject: [PATCH 017/267] x86: vdso: Use seqcount instead of seqlock
The update of the vdso data happens under xtime_lock, so adding a
nested lock is pointless. Just use a seqcount to sync the readers.
@ -12,10 +13,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/vdso/vclock_gettime.c | 16 ++++++++--------
3 files changed, 12 insertions(+), 17 deletions(-)
Index: linux-3.2/arch/x86/include/asm/vgtod.h
===================================================================
--- linux-3.2.orig/arch/x86/include/asm/vgtod.h
+++ linux-3.2/arch/x86/include/asm/vgtod.h
diff --git a/arch/x86/include/asm/vgtod.h b/arch/x86/include/asm/vgtod.h
index 815285b..1f00717 100644
--- a/arch/x86/include/asm/vgtod.h
+++ b/arch/x86/include/asm/vgtod.h
@@ -5,7 +5,7 @@
#include <linux/clocksource.h>
@ -25,10 +26,10 @@ Index: linux-3.2/arch/x86/include/asm/vgtod.h
/* open coded 'struct timespec' */
time_t wall_time_sec;
Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/vsyscall_64.c
+++ linux-3.2/arch/x86/kernel/vsyscall_64.c
diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
index f04adbd..50392ee 100644
--- a/arch/x86/kernel/vsyscall_64.c
+++ b/arch/x86/kernel/vsyscall_64.c
@@ -52,10 +52,7 @@
#include "vsyscall_trace.h"
@ -52,7 +53,7 @@ Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
/* copy vsyscall data */
vsyscall_gtod_data.clock.vclock_mode = clock->archdata.vclock_mode;
@@ -101,7 +96,7 @@ void update_vsyscall(struct timespec *wa
@@ -101,7 +96,7 @@ void update_vsyscall(struct timespec *wall_time, struct timespec *wtm,
vsyscall_gtod_data.wall_to_monotonic = *wtm;
vsyscall_gtod_data.wall_time_coarse = __current_kernel_time();
@ -61,11 +62,11 @@ Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
}
static void warn_bad_vsyscall(const char *level, struct pt_regs *regs,
Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
===================================================================
--- linux-3.2.orig/arch/x86/vdso/vclock_gettime.c
+++ linux-3.2/arch/x86/vdso/vclock_gettime.c
@@ -86,11 +86,11 @@ notrace static noinline int do_realtime(
diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c
index 6bc0e72..d8511fb 100644
--- a/arch/x86/vdso/vclock_gettime.c
+++ b/arch/x86/vdso/vclock_gettime.c
@@ -86,11 +86,11 @@ notrace static noinline int do_realtime(struct timespec *ts)
{
unsigned long seq, ns;
do {
@ -79,7 +80,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
timespec_add_ns(ts, ns);
return 0;
}
@@ -99,12 +99,12 @@ notrace static noinline int do_monotonic
@@ -99,12 +99,12 @@ notrace static noinline int do_monotonic(struct timespec *ts)
{
unsigned long seq, ns, secs;
do {
@ -94,7 +95,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
/* wall_time_nsec, vgetns(), and wall_to_monotonic.tv_nsec
* are all guaranteed to be nonnegative.
@@ -123,10 +123,10 @@ notrace static noinline int do_realtime_
@@ -123,10 +123,10 @@ notrace static noinline int do_realtime_coarse(struct timespec *ts)
{
unsigned long seq;
do {
@ -107,7 +108,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
return 0;
}
@@ -134,12 +134,12 @@ notrace static noinline int do_monotonic
@@ -134,12 +134,12 @@ notrace static noinline int do_monotonic_coarse(struct timespec *ts)
{
unsigned long seq, ns, secs;
do {
@ -122,3 +123,6 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
/* wall_time_nsec and wall_to_monotonic.tv_nsec are
* guaranteed to be between 0 and NSEC_PER_SEC.
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: ia64: vsyscall: Use seqcount instead of seqlock
From 0ad3596103ef2c8ecb6145c8a98ed7e38a9bc6ce Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 18:33:08 +0100
Subject: [PATCH 018/267] ia64: vsyscall: Use seqcount instead of seqlock
The update of the vdso data happens under xtime_lock, so adding a
nested lock is pointless. Just use a seqcount to sync the readers.
@ -14,10 +15,10 @@ Cc: Tony Luck <tony.luck@intel.com>
arch/ia64/kernel/time.c | 10 +++-------
4 files changed, 7 insertions(+), 11 deletions(-)
Index: linux-2.6/arch/ia64/kernel/asm-offsets.c
===================================================================
--- linux-2.6.orig/arch/ia64/kernel/asm-offsets.c
+++ linux-2.6/arch/ia64/kernel/asm-offsets.c
diff --git a/arch/ia64/kernel/asm-offsets.c b/arch/ia64/kernel/asm-offsets.c
index af56501..106aeb6 100644
--- a/arch/ia64/kernel/asm-offsets.c
+++ b/arch/ia64/kernel/asm-offsets.c
@@ -269,8 +269,8 @@ void foo(void)
BLANK();
@ -29,10 +30,10 @@ Index: linux-2.6/arch/ia64/kernel/asm-offsets.c
DEFINE(IA64_GTOD_WALL_TIME_OFFSET,
offsetof (struct fsyscall_gtod_data_t, wall_time));
DEFINE(IA64_GTOD_MONO_TIME_OFFSET,
Index: linux-2.6/arch/ia64/kernel/fsys.S
===================================================================
--- linux-2.6.orig/arch/ia64/kernel/fsys.S
+++ linux-2.6/arch/ia64/kernel/fsys.S
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index 331d42b..fa77de7 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -174,7 +174,7 @@ ENTRY(fsys_set_tid_address)
FSYS_RETURN
END(fsys_set_tid_address)
@ -42,10 +43,10 @@ Index: linux-2.6/arch/ia64/kernel/fsys.S
#error fsys_gettimeofday incompatible with changes to struct fsyscall_gtod_data_t
#endif
#if IA64_ITC_JITTER_OFFSET !=0
Index: linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h
===================================================================
--- linux-2.6.orig/arch/ia64/kernel/fsyscall_gtod_data.h
+++ linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h
diff --git a/arch/ia64/kernel/fsyscall_gtod_data.h b/arch/ia64/kernel/fsyscall_gtod_data.h
index 57d2ee6..146b15b 100644
--- a/arch/ia64/kernel/fsyscall_gtod_data.h
+++ b/arch/ia64/kernel/fsyscall_gtod_data.h
@@ -6,7 +6,7 @@
*/
@ -55,10 +56,10 @@ Index: linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h
struct timespec wall_time;
struct timespec monotonic_time;
cycle_t clk_mask;
Index: linux-2.6/arch/ia64/kernel/time.c
===================================================================
--- linux-2.6.orig/arch/ia64/kernel/time.c
+++ linux-2.6/arch/ia64/kernel/time.c
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 43920de..8e991a0 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -35,9 +35,7 @@
static cycle_t itc_get_cycles(struct clocksource *cs);
@ -81,7 +82,7 @@ Index: linux-2.6/arch/ia64/kernel/time.c
/* copy fsyscall clock data */
fsyscall_gtod_data.clk_mask = c->mask;
@@ -485,6 +481,6 @@ void update_vsyscall(struct timespec *wa
@@ -485,6 +481,6 @@ void update_vsyscall(struct timespec *wall, struct timespec *wtm,
fsyscall_gtod_data.monotonic_time.tv_sec++;
}
@ -89,3 +90,6 @@ Index: linux-2.6/arch/ia64/kernel/time.c
+ write_seqcount_end(&fsyscall_gtod_data.seq);
}
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: seqlock: Remove unused functions
From 5e0436d075a54bc63fa9e48a160ca9df12ff9b77 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 18:38:22 +0200
Subject: [PATCH 019/267] seqlock: Remove unused functions
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/seqlock.h | 21 ---------------------
1 file changed, 21 deletions(-)
Index: linux-3.2/include/linux/seqlock.h
===================================================================
--- linux-3.2.orig/include/linux/seqlock.h
+++ linux-3.2/include/linux/seqlock.h
@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlo
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
index c6db9fb..b990f6e 100644
--- a/include/linux/seqlock.h
+++ b/include/linux/seqlock.h
@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlock_t *sl)
spin_unlock(&sl->lock);
}
@ -29,7 +30,7 @@ Index: linux-3.2/include/linux/seqlock.h
/* Start of read calculation -- fetch last complete writer token */
static __always_inline unsigned read_seqbegin(const seqlock_t *sl)
{
@@ -248,14 +237,4 @@ static inline void write_seqcount_barrie
@@ -248,14 +237,4 @@ static inline void write_seqcount_barrier(seqcount_t *s)
#define write_sequnlock_bh(lock) \
do { write_sequnlock(lock); local_bh_enable(); } while(0)
@ -44,3 +45,6 @@ Index: linux-3.2/include/linux/seqlock.h
- })
-
#endif /* __LINUX_SEQLOCK_H */
--
1.7.10

View File

@ -1,18 +1,19 @@
Subject: seqlock: Use seqcount
From cc961dbd2fbdd830c4ba4162c7116d354dfcb13f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 18:40:26 +0200
Subject: [PATCH 020/267] seqlock: Use seqcount
No point in having different implementations for the same thing.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/seqlock.h | 176 +++++++++++++++++++++++++-----------------------
include/linux/seqlock.h | 176 +++++++++++++++++++++++++----------------------
1 file changed, 93 insertions(+), 83 deletions(-)
Index: rt/include/linux/seqlock.h
===================================================================
--- rt.orig/include/linux/seqlock.h
+++ rt/include/linux/seqlock.h
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
index b990f6e..3e1f3f9 100644
--- a/include/linux/seqlock.h
+++ b/include/linux/seqlock.h
@@ -30,81 +30,12 @@
#include <linux/preempt.h>
#include <asm/processor.h>
@ -95,7 +96,7 @@ Index: rt/include/linux/seqlock.h
typedef struct seqcount {
unsigned sequence;
} seqcount_t;
@@ -186,7 +117,6 @@ static inline int __read_seqcount_retry(
@@ -186,7 +117,6 @@ static inline int __read_seqcount_retry(const seqcount_t *s, unsigned start)
static inline int read_seqcount_retry(const seqcount_t *s, unsigned start)
{
smp_rmb();
@ -103,7 +104,7 @@ Index: rt/include/linux/seqlock.h
return __read_seqcount_retry(s, start);
}
@@ -220,21 +150,101 @@ static inline void write_seqcount_barrie
@@ -220,21 +150,101 @@ static inline void write_seqcount_barrier(seqcount_t *s)
s->sequence+=2;
}
@ -218,3 +219,6 @@ Index: rt/include/linux/seqlock.h
+}
#endif /* __LINUX_SEQLOCK_H */
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: vfs: fs_struct: Move code out of seqcount write sections
From 00f0fcf98b55531834e45b94ad6f8b03737e2ce0 Mon Sep 17 00:00:00 2001
From: Al Viro <viro@ZenIV.linux.org.uk>
Date: Thu, 15 Mar 2012 18:39:40 +0000
Subject: [PATCH 021/267] vfs: fs_struct: Move code out of seqcount write
sections
RT cannot disable preemption in the seqcount write sections due to
functions called which take "sleeping" spinlocks.
@ -8,6 +10,9 @@ functions called which take "sleeping" spinlocks.
Move the code out of those sections. It does not need to be there.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
fs/fs_struct.c | 27 +++++++++++++++------------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/fs/fs_struct.c b/fs/fs_struct.c
index 78b519c..f5818c4 100644
@ -81,5 +86,6 @@ index 78b519c..f5818c4 100644
spin_unlock(&fs->lock);
}
task_unlock(p);
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: timekeeping: Split xtime_lock
From 575bc99dec3a6b5121859ec0dc56a400313c500b Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 01 Mar 2012 15:14:06 +0100
Date: Thu, 1 Mar 2012 15:14:06 +0100
Subject: [PATCH 022/267] timekeeping: Split xtime_lock
xtime_lock is going to be split apart in mainline, so we can shorten
the seqcount protected regions and avoid updating seqcount in some
@ -9,18 +10,18 @@ whole mess with raw seqlocks for RT.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/time/jiffies.c | 4 -
kernel/time/ntp.c | 24 +++++++----
kernel/time/tick-common.c | 10 ++--
kernel/time/tick-internal.h | 3 -
kernel/time/tick-sched.c | 16 ++++---
kernel/time/timekeeping.c | 90 +++++++++++++++++++++++++-------------------
kernel/time/jiffies.c | 4 +-
kernel/time/ntp.c | 24 ++++++++----
kernel/time/tick-common.c | 10 +++--
kernel/time/tick-internal.h | 3 +-
kernel/time/tick-sched.c | 16 +++++---
kernel/time/timekeeping.c | 90 +++++++++++++++++++++++++------------------
6 files changed, 88 insertions(+), 59 deletions(-)
Index: linux-3.2/kernel/time/jiffies.c
===================================================================
--- linux-3.2.orig/kernel/time/jiffies.c
+++ linux-3.2/kernel/time/jiffies.c
diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
index a470154..21940eb 100644
--- a/kernel/time/jiffies.c
+++ b/kernel/time/jiffies.c
@@ -74,9 +74,9 @@ u64 get_jiffies_64(void)
u64 ret;
@ -33,11 +34,11 @@ Index: linux-3.2/kernel/time/jiffies.c
return ret;
}
EXPORT_SYMBOL(get_jiffies_64);
Index: linux-3.2/kernel/time/ntp.c
===================================================================
--- linux-3.2.orig/kernel/time/ntp.c
+++ linux-3.2/kernel/time/ntp.c
@@ -358,7 +358,8 @@ static enum hrtimer_restart ntp_leap_sec
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
index 4b85a7a..419cbaa 100644
--- a/kernel/time/ntp.c
+++ b/kernel/time/ntp.c
@@ -358,7 +358,8 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer)
{
enum hrtimer_restart res = HRTIMER_NORESTART;
@ -47,7 +48,7 @@ Index: linux-3.2/kernel/time/ntp.c
switch (time_state) {
case TIME_OK:
@@ -388,7 +389,8 @@ static enum hrtimer_restart ntp_leap_sec
@@ -388,7 +389,8 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer)
break;
}
@ -77,7 +78,7 @@ Index: linux-3.2/kernel/time/ntp.c
txc->time.tv_sec = ts.tv_sec;
txc->time.tv_usec = ts.tv_nsec;
@@ -903,7 +907,8 @@ void hardpps(const struct timespec *phas
@@ -903,7 +907,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
pts_norm = pps_normalize_ts(*phase_ts);
@ -87,7 +88,7 @@ Index: linux-3.2/kernel/time/ntp.c
/* clear the error bits, they will be set again if needed */
time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR);
@@ -916,7 +921,8 @@ void hardpps(const struct timespec *phas
@@ -916,7 +921,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
* just start the frequency interval */
if (unlikely(pps_fbase.tv_sec == 0)) {
pps_fbase = *raw_ts;
@ -97,7 +98,7 @@ Index: linux-3.2/kernel/time/ntp.c
return;
}
@@ -931,7 +937,8 @@ void hardpps(const struct timespec *phas
@@ -931,7 +937,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
time_status |= STA_PPSJITTER;
/* restart the frequency calibration interval */
pps_fbase = *raw_ts;
@ -107,7 +108,7 @@ Index: linux-3.2/kernel/time/ntp.c
pr_err("hardpps: PPSJITTER: bad pulse\n");
return;
}
@@ -948,7 +955,8 @@ void hardpps(const struct timespec *phas
@@ -948,7 +955,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
hardpps_update_phase(pts_norm.nsec);
@ -117,10 +118,10 @@ Index: linux-3.2/kernel/time/ntp.c
}
EXPORT_SYMBOL(hardpps);
Index: linux-3.2/kernel/time/tick-common.c
===================================================================
--- linux-3.2.orig/kernel/time/tick-common.c
+++ linux-3.2/kernel/time/tick-common.c
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
index da6c9ec..39de540 100644
--- a/kernel/time/tick-common.c
+++ b/kernel/time/tick-common.c
@@ -63,13 +63,15 @@ int tick_is_oneshot_available(void)
static void tick_periodic(int cpu)
{
@ -139,7 +140,7 @@ Index: linux-3.2/kernel/time/tick-common.c
}
update_process_times(user_mode(get_irq_regs()));
@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_ev
@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast)
ktime_t next;
do {
@ -151,22 +152,22 @@ Index: linux-3.2/kernel/time/tick-common.c
clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT);
Index: linux-3.2/kernel/time/tick-internal.h
===================================================================
--- linux-3.2.orig/kernel/time/tick-internal.h
+++ linux-3.2/kernel/time/tick-internal.h
@@ -141,4 +141,5 @@ static inline int tick_device_is_functio
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
index 4e265b9..c91100d 100644
--- a/kernel/time/tick-internal.h
+++ b/kernel/time/tick-internal.h
@@ -141,4 +141,5 @@ static inline int tick_device_is_functional(struct clock_event_device *dev)
#endif
extern void do_timer(unsigned long ticks);
-extern seqlock_t xtime_lock;
+extern raw_spinlock_t xtime_lock;
+extern seqcount_t xtime_seq;
Index: linux-3.2/kernel/time/tick-sched.c
===================================================================
--- linux-3.2.orig/kernel/time/tick-sched.c
+++ linux-3.2/kernel/time/tick-sched.c
@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(kti
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index c923640..d7abd2f 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(ktime_t now)
return;
/* Reevalute with xtime_lock held */
@ -176,7 +177,7 @@ Index: linux-3.2/kernel/time/tick-sched.c
delta = ktime_sub(now, last_jiffies_update);
if (delta.tv64 >= tick_period.tv64) {
@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(kti
@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(ktime_t now)
/* Keep the tick_next_period variable up to date */
tick_next_period = ktime_add(last_jiffies_update, tick_period);
}
@ -186,7 +187,7 @@ Index: linux-3.2/kernel/time/tick-sched.c
}
/*
@@ -89,12 +91,14 @@ static ktime_t tick_init_jiffy_update(vo
@@ -89,12 +91,14 @@ static ktime_t tick_init_jiffy_update(void)
{
ktime_t period;
@ -203,7 +204,7 @@ Index: linux-3.2/kernel/time/tick-sched.c
return period;
}
@@ -345,11 +349,11 @@ void tick_nohz_stop_sched_tick(int inidl
@@ -345,11 +349,11 @@ void tick_nohz_stop_sched_tick(int inidle)
ts->idle_calls++;
/* Read jiffies and the time when jiffies were updated last */
do {
@ -217,11 +218,11 @@ Index: linux-3.2/kernel/time/tick-sched.c
if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) ||
arch_needs_cpu(cpu)) {
Index: linux-3.2/kernel/time/timekeeping.c
===================================================================
--- linux-3.2.orig/kernel/time/timekeeping.c
+++ linux-3.2/kernel/time/timekeeping.c
@@ -139,8 +139,8 @@ static inline s64 timekeeping_get_ns_raw
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 2378413..da9e1f9 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -139,8 +139,8 @@ static inline s64 timekeeping_get_ns_raw(void)
* This read-write spinlock protects us from races in SMP while
* playing with xtime.
*/
@ -284,7 +285,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec,
ts->tv_nsec + tomono.tv_nsec + nsecs);
@@ -313,7 +313,7 @@ void getnstime_raw_and_real(struct times
@@ -313,7 +313,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real)
do {
u32 arch_offset;
@ -293,7 +294,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
*ts_raw = raw_time;
*ts_real = xtime;
@@ -326,7 +326,7 @@ void getnstime_raw_and_real(struct times
@@ -326,7 +326,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real)
nsecs_raw += arch_offset;
nsecs_real += arch_offset;
@ -302,7 +303,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timespec_add_ns(ts_raw, nsecs_raw);
timespec_add_ns(ts_real, nsecs_real);
@@ -365,7 +365,8 @@ int do_settimeofday(const struct timespe
@@ -365,7 +365,8 @@ int do_settimeofday(const struct timespec *tv)
if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
return -EINVAL;
@ -312,7 +313,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timekeeping_forward_now();
@@ -381,7 +382,8 @@ int do_settimeofday(const struct timespe
@@ -381,7 +382,8 @@ int do_settimeofday(const struct timespec *tv)
update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
timekeeper.mult);
@ -322,7 +323,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
/* signal hrtimers about time change */
clock_was_set();
@@ -405,7 +407,8 @@ int timekeeping_inject_offset(struct tim
@@ -405,7 +407,8 @@ int timekeeping_inject_offset(struct timespec *ts)
if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC)
return -EINVAL;
@ -332,7 +333,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timekeeping_forward_now();
@@ -418,7 +421,8 @@ int timekeeping_inject_offset(struct tim
@@ -418,7 +421,8 @@ int timekeeping_inject_offset(struct timespec *ts)
update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
timekeeper.mult);
@ -342,7 +343,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
/* signal hrtimers about time change */
clock_was_set();
@@ -490,11 +494,11 @@ void getrawmonotonic(struct timespec *ts
@@ -490,11 +494,11 @@ void getrawmonotonic(struct timespec *ts)
s64 nsecs;
do {
@ -390,7 +391,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
}
/* time in seconds when suspend began */
@@ -640,7 +646,8 @@ void timekeeping_inject_sleeptime(struct
@@ -640,7 +646,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta)
if (!(ts.tv_sec == 0 && ts.tv_nsec == 0))
return;
@ -400,7 +401,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timekeeping_forward_now();
__timekeeping_inject_sleeptime(delta);
@@ -650,7 +657,8 @@ void timekeeping_inject_sleeptime(struct
@@ -650,7 +657,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta)
update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
timekeeper.mult);
@ -450,7 +451,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL);
clocksource_suspend();
@@ -1101,13 +1113,13 @@ void get_monotonic_boottime(struct times
@@ -1101,13 +1113,13 @@ void get_monotonic_boottime(struct timespec *ts)
WARN_ON(timekeeping_suspended);
do {
@ -466,7 +467,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec + sleep.tv_sec,
ts->tv_nsec + tomono.tv_nsec + sleep.tv_nsec + nsecs);
@@ -1158,10 +1170,10 @@ struct timespec current_kernel_time(void
@@ -1158,10 +1170,10 @@ struct timespec current_kernel_time(void)
unsigned long seq;
do {
@ -479,7 +480,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
return now;
}
@@ -1173,11 +1185,11 @@ struct timespec get_monotonic_coarse(voi
@@ -1173,11 +1185,11 @@ struct timespec get_monotonic_coarse(void)
unsigned long seq;
do {
@ -493,7 +494,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
set_normalized_timespec(&now, now.tv_sec + mono.tv_sec,
now.tv_nsec + mono.tv_nsec);
@@ -1209,11 +1221,11 @@ void get_xtime_and_monotonic_and_sleep_o
@@ -1209,11 +1221,11 @@ void get_xtime_and_monotonic_and_sleep_offset(struct timespec *xtim,
unsigned long seq;
do {
@ -531,3 +532,6 @@ Index: linux-3.2/kernel/time/timekeeping.c
+ write_seqcount_end(&xtime_seq);
+ raw_spin_unlock(&xtime_lock);
}
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: intel_idle: Convert i7300_idle_lock to raw spinlock
From 7e4c6f7de42bc1567381698fc906cc2ad9c2e593 Mon Sep 17 00:00:00 2001
From: Mike Galbraith <efault@gmx.de>
Date: Wed, 07 Dec 2011 12:48:42 +0100
Date: Wed, 7 Dec 2011 12:48:42 +0100
Subject: [PATCH 023/267] intel_idle: Convert i7300_idle_lock to raw spinlock
24 core Intel box's first exposure to 3.0.12-rt30-rc3 didn't go well.
@ -22,15 +23,14 @@ Signed-off-by: Mike Galbraith <efault@gmx.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/idle/i7300_idle.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-3.2/drivers/idle/i7300_idle.c
===================================================================
--- linux-3.2.orig/drivers/idle/i7300_idle.c
+++ linux-3.2/drivers/idle/i7300_idle.c
diff --git a/drivers/idle/i7300_idle.c b/drivers/idle/i7300_idle.c
index c976285..5537d7c 100644
--- a/drivers/idle/i7300_idle.c
+++ b/drivers/idle/i7300_idle.c
@@ -75,7 +75,7 @@ static unsigned long past_skip;
static struct pci_dev *fbd_dev;
@ -40,7 +40,7 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
static int i7300_idle_active;
static u8 i7300_idle_thrtctl_saved;
@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct no
@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val,
idle_begin_time = ktime_get();
}
@ -49,7 +49,7 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
if (val == IDLE_START) {
cpumask_set_cpu(smp_processor_id(), idle_cpumask);
@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct no
@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val,
}
}
end:
@ -67,3 +67,6 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
total_us = 0;
if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload))
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: mm: memcg: shorten preempt-disabled section around event checks
From 2d38d140493b8b52deebbe11692a71e4513b7605 Mon Sep 17 00:00:00 2001
From: Johannes Weiner <hannes@cmpxchg.org>
Date: Thu, 17 Nov 2011 07:49:25 +0100
Subject: [PATCH 024/267] mm: memcg: shorten preempt-disabled section around
event checks
Only the ratelimit checks themselves have to run with preemption
disabled, the resulting actions - checking for usage thresholds,
@ -12,18 +14,14 @@ Tested-by: Luis Henriques <henrix@camandro.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
mm/memcontrol.c | 73 ++++++++++++++++++++++++++------------------------------
mm/memcontrol.c | 73 ++++++++++++++++++++++++++-----------------------------
1 file changed, 35 insertions(+), 38 deletions(-)
Thomas, HTH and it is probably interesting for upstream as well.
Unfortunately, I'm in the middle of moving right now, so this is
untested except for compiling.
Index: linux-3.2/mm/memcontrol.c
===================================================================
--- linux-3.2.orig/mm/memcontrol.c
+++ linux-3.2/mm/memcontrol.c
@@ -683,37 +683,32 @@ static unsigned long mem_cgroup_nr_lru_p
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 778554f..abf5497 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -683,37 +683,32 @@ static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg,
return total;
}
@ -80,7 +78,7 @@ Index: linux-3.2/mm/memcontrol.c
}
/*
@@ -724,25 +719,27 @@ static void memcg_check_events(struct me
@@ -724,25 +719,27 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page)
{
preempt_disable();
/* threshold event is triggered in finer grain than soft limit */
@ -122,3 +120,6 @@ Index: linux-3.2/mm/memcontrol.c
}
static struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont)
--
1.7.10

View File

@ -1,6 +1,8 @@
From ee9d814d8872fc578eb31771307b2b6a8f5822f8 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Thu, 29 Sep 2011 12:24:30 -0500
Subject: tracing: Account for preempt off in preempt_schedule()
Subject: [PATCH 025/267] tracing: Account for preempt off in
preempt_schedule()
The preempt_schedule() uses the preempt_disable_notrace() version
because it can cause infinite recursion by the function tracer as
@ -25,11 +27,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched.c | 9 +++++++++
1 file changed, 9 insertions(+)
Index: linux-3.2/kernel/sched.c
===================================================================
--- linux-3.2.orig/kernel/sched.c
+++ linux-3.2/kernel/sched.c
@@ -4520,7 +4520,16 @@ asmlinkage void __sched notrace preempt_
diff --git a/kernel/sched.c b/kernel/sched.c
index a39494e..6b32395 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4520,7 +4520,16 @@ asmlinkage void __sched notrace preempt_schedule(void)
do {
add_preempt_count_notrace(PREEMPT_ACTIVE);
@ -46,3 +48,6 @@ Index: linux-3.2/kernel/sched.c
sub_preempt_count_notrace(PREEMPT_ACTIVE);
/*
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: signal-revert-ptrace-preempt-magic.patch
From f5252418489d88d27411fb576294a1e55dbb03b4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 21 Sep 2011 19:57:12 +0200
Subject: [PATCH 026/267] signal-revert-ptrace-preempt-magic.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/signal.c | 8 --------
1 file changed, 8 deletions(-)
Index: linux-3.2/kernel/signal.c
===================================================================
--- linux-3.2.orig/kernel/signal.c
+++ linux-3.2/kernel/signal.c
@@ -1857,15 +1857,7 @@ static void ptrace_stop(int exit_code, i
diff --git a/kernel/signal.c b/kernel/signal.c
index 2065515..d8b0b21 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1857,15 +1857,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)
if (gstop_done && ptrace_reparented(current))
do_notify_parent_cldstop(current, false, why);
@ -27,3 +28,6 @@ Index: linux-3.2/kernel/signal.c
schedule();
} else {
/*
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: arm: Mark pmu interupt IRQF_NO_THREAD
From 8aa76e7290f80f472b9aebdaf8ae7d627d579359 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 16 Mar 2011 14:45:31 +0100
Subject: [PATCH 027/267] arm: Mark pmu interupt IRQF_NO_THREAD
PMU interrupt must not be threaded. Remove IRQF_DISABLED while at it
as we run all handlers with interrupts disabled anyway.
@ -10,11 +11,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/kernel/perf_event.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/arch/arm/kernel/perf_event.c
===================================================================
--- linux-3.2.orig/arch/arm/kernel/perf_event.c
+++ linux-3.2/arch/arm/kernel/perf_event.c
@@ -441,7 +441,7 @@ armpmu_reserve_hardware(struct arm_pmu *
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
index ecebb89..e1286fb 100644
--- a/arch/arm/kernel/perf_event.c
+++ b/arch/arm/kernel/perf_event.c
@@ -435,7 +435,7 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu)
}
err = request_irq(irq, handle_irq,
@ -23,3 +24,6 @@ Index: linux-3.2/arch/arm/kernel/perf_event.c
"arm-pmu", armpmu);
if (err) {
pr_err("unable to request IRQ%d for ARM PMU counters\n",
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: arm: Allow forced irq threading
From d24eb79d3953d59e4a232bb66d6182d00007c02d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 13:15:20 +0200
Subject: [PATCH 028/267] arm: Allow forced irq threading
All timer interrupts and the perf interrupt are marked NO_THREAD, so
its safe to allow forced interrupt threading.
@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/Kconfig | 1 +
1 file changed, 1 insertion(+)
Index: linux-3.2/arch/arm/Kconfig
===================================================================
--- linux-3.2.orig/arch/arm/Kconfig
+++ linux-3.2/arch/arm/Kconfig
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index ab3740e..fc327b8 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -29,6 +29,7 @@ config ARM
select HAVE_GENERIC_HARDIRQS
select HAVE_SPARSE_IRQ
@ -22,3 +23,6 @@ Index: linux-3.2/arch/arm/Kconfig
select CPU_PM if (SUSPEND || CPU_IDLE)
help
The ARM series is a line of low-power-consumption RISC chip designs
--
1.7.10

View File

@ -1,7 +1,7 @@
Subject: preempt-rt: Convert arm boot_lock to raw
From b4413229a63e7c48b6f26a03eb74e418dce27d49 Mon Sep 17 00:00:00 2001
From: Frank Rowand <frank.rowand@am.sony.com>
Date: Mon, 19 Sep 2011 14:51:14 -0700
Subject: [PATCH 029/267] preempt-rt: Convert arm boot_lock to raw
The arm boot_lock is used by the secondary processor startup code. The locking
task is the idle thread, which has idle->sched_class == &idle_sched_class.
@ -28,10 +28,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/plat-versatile/platsmp.c | 10 +++++-----
6 files changed, 31 insertions(+), 31 deletions(-)
Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
===================================================================
--- linux-3.2.orig/arch/arm/mach-exynos/platsmp.c
+++ linux-3.2/arch/arm/mach-exynos/platsmp.c
diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
index 69ffb2f..fe321b0 100644
--- a/arch/arm/mach-exynos/platsmp.c
+++ b/arch/arm/mach-exynos/platsmp.c
@@ -63,7 +63,7 @@ static void __iomem *scu_base_addr(void)
return (void __iomem *)(S5P_VA_SCU);
}
@ -41,7 +41,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
static void __cpuinit exynos4_gic_secondary_init(void)
{
@@ -108,8 +108,8 @@ void __cpuinit platform_secondary_init(u
@@ -108,8 +108,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@ -52,7 +52,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -120,7 +120,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -120,7 +120,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor
* and the secondary one
*/
@ -61,7 +61,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
/*
* The secondary processor is waiting to be released from
@@ -149,7 +149,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -149,7 +149,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
if (timeout == 0) {
printk(KERN_ERR "cpu1 power enable failed");
@ -70,7 +70,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
return -ETIMEDOUT;
}
}
@@ -177,7 +177,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -177,7 +177,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@ -79,10 +79,10 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
Index: linux-3.2/arch/arm/mach-msm/platsmp.c
===================================================================
--- linux-3.2.orig/arch/arm/mach-msm/platsmp.c
+++ linux-3.2/arch/arm/mach-msm/platsmp.c
diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c
index fdec58a..cad6b81 100644
--- a/arch/arm/mach-msm/platsmp.c
+++ b/arch/arm/mach-msm/platsmp.c
@@ -39,7 +39,7 @@ extern void msm_secondary_startup(void);
*/
volatile int pen_release = -1;
@ -92,7 +92,7 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
static inline int get_core_count(void)
{
@@ -69,8 +69,8 @@ void __cpuinit platform_secondary_init(u
@@ -69,8 +69,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@ -103,7 +103,7 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
}
static __cpuinit void prepare_cold_cpu(unsigned int cpu)
@@ -107,7 +107,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -107,7 +107,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor
* and the secondary one
*/
@ -112,7 +112,7 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
/*
* The secondary processor is waiting to be released from
@@ -141,7 +141,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -141,7 +141,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@ -121,10 +121,10 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
===================================================================
--- linux-3.2.orig/arch/arm/mach-omap2/omap-smp.c
+++ linux-3.2/arch/arm/mach-omap2/omap-smp.c
diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
index 4412ddb..490de9c 100644
--- a/arch/arm/mach-omap2/omap-smp.c
+++ b/arch/arm/mach-omap2/omap-smp.c
@@ -29,7 +29,7 @@
/* SCU base address */
static void __iomem *scu_base;
@ -134,7 +134,7 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
void __cpuinit platform_secondary_init(unsigned int cpu)
{
@@ -43,8 +43,8 @@ void __cpuinit platform_secondary_init(u
@@ -43,8 +43,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@ -145,7 +145,7 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -53,7 +53,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -53,7 +53,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor
* and the secondary one
*/
@ -154,7 +154,7 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
/*
* Update the AuxCoreBoot0 with boot state for secondary core.
@@ -70,7 +70,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -70,7 +70,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@ -163,10 +163,10 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
return 0;
}
Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
===================================================================
--- linux-3.2.orig/arch/arm/mach-tegra/platsmp.c
+++ linux-3.2/arch/arm/mach-tegra/platsmp.c
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
index 7d2b5d0..571f61a 100644
--- a/arch/arm/mach-tegra/platsmp.c
+++ b/arch/arm/mach-tegra/platsmp.c
@@ -28,7 +28,7 @@
extern void tegra_secondary_startup(void);
@ -176,7 +176,7 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
static void __iomem *scu_base = IO_ADDRESS(TEGRA_ARM_PERIF_BASE);
#define EVP_CPU_RESET_VECTOR \
@@ -50,8 +50,8 @@ void __cpuinit platform_secondary_init(u
@@ -50,8 +50,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@ -187,7 +187,7 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -65,7 +65,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -65,7 +65,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor
* and the secondary one
*/
@ -196,7 +196,7 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
/* set the reset vector to point to the secondary_startup routine */
@@ -101,7 +101,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -101,7 +101,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@ -205,10 +205,10 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
return 0;
}
Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
===================================================================
--- linux-3.2.orig/arch/arm/mach-ux500/platsmp.c
+++ linux-3.2/arch/arm/mach-ux500/platsmp.c
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
index a19e398..9e92c6c 100644
--- a/arch/arm/mach-ux500/platsmp.c
+++ b/arch/arm/mach-ux500/platsmp.c
@@ -57,7 +57,7 @@ static void __iomem *scu_base_addr(void)
return NULL;
}
@ -218,7 +218,7 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
void __cpuinit platform_secondary_init(unsigned int cpu)
{
@@ -77,8 +77,8 @@ void __cpuinit platform_secondary_init(u
@@ -77,8 +77,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@ -229,7 +229,7 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -89,7 +89,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -89,7 +89,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor
* and the secondary one
*/
@ -238,7 +238,7 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
/*
* The secondary processor is waiting to be released from
@@ -110,7 +110,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -110,7 +110,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@ -247,11 +247,11 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
===================================================================
--- linux-3.2.orig/arch/arm/plat-versatile/platsmp.c
+++ linux-3.2/arch/arm/plat-versatile/platsmp.c
@@ -37,7 +37,7 @@ static void __cpuinit write_pen_release(
diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c
index 92f18d3..287bbb5 100644
--- a/arch/arm/plat-versatile/platsmp.c
+++ b/arch/arm/plat-versatile/platsmp.c
@@ -37,7 +37,7 @@ static void __cpuinit write_pen_release(int val)
outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
}
@ -260,7 +260,7 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
void __cpuinit platform_secondary_init(unsigned int cpu)
{
@@ -57,8 +57,8 @@ void __cpuinit platform_secondary_init(u
@@ -57,8 +57,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@ -271,7 +271,7 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -69,7 +69,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -69,7 +69,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor
* and the secondary one
*/
@ -280,7 +280,7 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
/*
* This is really belt and braces; we hold unintended secondary
@@ -99,7 +99,7 @@ int __cpuinit boot_secondary(unsigned in
@@ -99,7 +99,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@ -289,3 +289,6 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: sched: Create schedule_preempt_disabled()
From 64b759067a99f8482feb0c2f75f6ce0fde842166 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 12:09:35 +0100
Subject: [PATCH 030/267] sched: Create schedule_preempt_disabled()
Get rid of the ever repeating:
@ -14,11 +15,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched.c | 12 ++++++++++++
2 files changed, 13 insertions(+)
Index: linux-3.2/include/linux/sched.h
===================================================================
--- linux-3.2.orig/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h
@@ -359,6 +359,7 @@ extern signed long schedule_timeout_inte
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 1c4f3e9..9897fe6 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -359,6 +359,7 @@ extern signed long schedule_timeout_interruptible(signed long timeout);
extern signed long schedule_timeout_killable(signed long timeout);
extern signed long schedule_timeout_uninterruptible(signed long timeout);
asmlinkage void schedule(void);
@ -26,10 +27,10 @@ Index: linux-3.2/include/linux/sched.h
extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner);
struct nsproxy;
Index: linux-3.2/kernel/sched.c
===================================================================
--- linux-3.2.orig/kernel/sched.c
+++ linux-3.2/kernel/sched.c
diff --git a/kernel/sched.c b/kernel/sched.c
index 6b32395..465fd11 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4456,6 +4456,18 @@ asmlinkage void __sched schedule(void)
}
EXPORT_SYMBOL(schedule);
@ -49,3 +50,6 @@ Index: linux-3.2/kernel/sched.c
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
static inline bool owner_running(struct mutex *lock, struct task_struct *owner)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: sched: Use schedule_preempt_disabled()
From 662df03fb70d4e277547eaa2adfd7e0d520bb35f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 12:33:18 +0100
Subject: [PATCH 031/267] sched: Use schedule_preempt_disabled()
Coccinelle based conversion.
@ -36,10 +37,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/softirq.c | 4 +---
28 files changed, 36 insertions(+), 95 deletions(-)
Index: linux-3.2/arch/arm/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/arm/kernel/process.c
+++ linux-3.2/arch/arm/kernel/process.c
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 3d0c6fb..54833ff 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -214,9 +214,7 @@ void cpu_idle(void)
}
leds_event(led_idle_end);
@ -51,10 +52,10 @@ Index: linux-3.2/arch/arm/kernel/process.c
}
}
Index: linux-3.2/arch/avr32/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/avr32/kernel/process.c
+++ linux-3.2/arch/avr32/kernel/process.c
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c
index ef5a2a0..c8724c9 100644
--- a/arch/avr32/kernel/process.c
+++ b/arch/avr32/kernel/process.c
@@ -38,9 +38,7 @@ void cpu_idle(void)
while (!need_resched())
cpu_idle_sleep();
@ -66,10 +67,10 @@ Index: linux-3.2/arch/avr32/kernel/process.c
}
}
Index: linux-3.2/arch/blackfin/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/blackfin/kernel/process.c
+++ linux-3.2/arch/blackfin/kernel/process.c
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
index 6a80a9e..11acc10 100644
--- a/arch/blackfin/kernel/process.c
+++ b/arch/blackfin/kernel/process.c
@@ -92,9 +92,7 @@ void cpu_idle(void)
while (!need_resched())
idle();
@ -81,10 +82,10 @@ Index: linux-3.2/arch/blackfin/kernel/process.c
}
}
Index: linux-3.2/arch/cris/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/cris/kernel/process.c
+++ linux-3.2/arch/cris/kernel/process.c
diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c
index aa585e4..d8f50ff 100644
--- a/arch/cris/kernel/process.c
+++ b/arch/cris/kernel/process.c
@@ -115,9 +115,7 @@ void cpu_idle (void)
idle = default_idle;
idle();
@ -96,10 +97,10 @@ Index: linux-3.2/arch/cris/kernel/process.c
}
}
Index: linux-3.2/arch/frv/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/frv/kernel/process.c
+++ linux-3.2/arch/frv/kernel/process.c
diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c
index 3901df1..29cc497 100644
--- a/arch/frv/kernel/process.c
+++ b/arch/frv/kernel/process.c
@@ -92,9 +92,7 @@ void cpu_idle(void)
idle();
}
@ -111,10 +112,10 @@ Index: linux-3.2/arch/frv/kernel/process.c
}
}
Index: linux-3.2/arch/h8300/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/h8300/kernel/process.c
+++ linux-3.2/arch/h8300/kernel/process.c
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c
index 933bd38..1a173b3 100644
--- a/arch/h8300/kernel/process.c
+++ b/arch/h8300/kernel/process.c
@@ -81,9 +81,7 @@ void cpu_idle(void)
while (1) {
while (!need_resched())
@ -126,10 +127,10 @@ Index: linux-3.2/arch/h8300/kernel/process.c
}
}
Index: linux-3.2/arch/ia64/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/ia64/kernel/process.c
+++ linux-3.2/arch/ia64/kernel/process.c
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index 6d33c5c..9dc52b6 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -330,9 +330,7 @@ cpu_idle (void)
normal_xtp();
#endif
@ -141,10 +142,10 @@ Index: linux-3.2/arch/ia64/kernel/process.c
check_pgt_cache();
if (cpu_is_offline(cpu))
play_dead();
Index: linux-3.2/arch/m32r/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/m32r/kernel/process.c
+++ linux-3.2/arch/m32r/kernel/process.c
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c
index 422bea9..3a4a32b 100644
--- a/arch/m32r/kernel/process.c
+++ b/arch/m32r/kernel/process.c
@@ -90,9 +90,7 @@ void cpu_idle (void)
idle();
@ -156,10 +157,10 @@ Index: linux-3.2/arch/m32r/kernel/process.c
}
}
Index: linux-3.2/arch/m68k/kernel/process_mm.c
===================================================================
--- linux-3.2.orig/arch/m68k/kernel/process_mm.c
+++ linux-3.2/arch/m68k/kernel/process_mm.c
diff --git a/arch/m68k/kernel/process_mm.c b/arch/m68k/kernel/process_mm.c
index aa4ffb8..c413aa0 100644
--- a/arch/m68k/kernel/process_mm.c
+++ b/arch/m68k/kernel/process_mm.c
@@ -94,9 +94,7 @@ void cpu_idle(void)
while (1) {
while (!need_resched())
@ -171,10 +172,10 @@ Index: linux-3.2/arch/m68k/kernel/process_mm.c
}
}
Index: linux-3.2/arch/m68k/kernel/process_no.c
===================================================================
--- linux-3.2.orig/arch/m68k/kernel/process_no.c
+++ linux-3.2/arch/m68k/kernel/process_no.c
diff --git a/arch/m68k/kernel/process_no.c b/arch/m68k/kernel/process_no.c
index 5e1078c..f7fe6c3 100644
--- a/arch/m68k/kernel/process_no.c
+++ b/arch/m68k/kernel/process_no.c
@@ -73,9 +73,7 @@ void cpu_idle(void)
/* endless idle loop with no priority at all */
while (1) {
@ -186,10 +187,10 @@ Index: linux-3.2/arch/m68k/kernel/process_no.c
}
}
Index: linux-3.2/arch/microblaze/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/microblaze/kernel/process.c
+++ linux-3.2/arch/microblaze/kernel/process.c
diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c
index 95cc295..d3b2b42 100644
--- a/arch/microblaze/kernel/process.c
+++ b/arch/microblaze/kernel/process.c
@@ -108,9 +108,7 @@ void cpu_idle(void)
idle();
tick_nohz_restart_sched_tick();
@ -201,10 +202,10 @@ Index: linux-3.2/arch/microblaze/kernel/process.c
check_pgt_cache();
}
}
Index: linux-3.2/arch/mips/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/mips/kernel/process.c
+++ linux-3.2/arch/mips/kernel/process.c
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index c47f96e..4dbf66d 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -78,9 +78,7 @@ void __noreturn cpu_idle(void)
play_dead();
#endif
@ -216,10 +217,10 @@ Index: linux-3.2/arch/mips/kernel/process.c
}
}
Index: linux-3.2/arch/mn10300/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/mn10300/kernel/process.c
+++ linux-3.2/arch/mn10300/kernel/process.c
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c
index 28eec31..cac401d 100644
--- a/arch/mn10300/kernel/process.c
+++ b/arch/mn10300/kernel/process.c
@@ -123,9 +123,7 @@ void cpu_idle(void)
idle();
}
@ -231,10 +232,10 @@ Index: linux-3.2/arch/mn10300/kernel/process.c
}
}
Index: linux-3.2/arch/parisc/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/parisc/kernel/process.c
+++ linux-3.2/arch/parisc/kernel/process.c
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index 4b4b918..f6eb367 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -71,9 +71,7 @@ void cpu_idle(void)
while (1) {
while (!need_resched())
@ -246,10 +247,10 @@ Index: linux-3.2/arch/parisc/kernel/process.c
check_pgt_cache();
}
}
Index: linux-3.2/arch/powerpc/kernel/idle.c
===================================================================
--- linux-3.2.orig/arch/powerpc/kernel/idle.c
+++ linux-3.2/arch/powerpc/kernel/idle.c
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c
index 39a2baa..f46dae5 100644
--- a/arch/powerpc/kernel/idle.c
+++ b/arch/powerpc/kernel/idle.c
@@ -94,11 +94,11 @@ void cpu_idle(void)
HMT_medium();
ppc64_runlatch_on();
@ -266,10 +267,10 @@ Index: linux-3.2/arch/powerpc/kernel/idle.c
}
}
Index: linux-3.2/arch/powerpc/platforms/iseries/setup.c
===================================================================
--- linux-3.2.orig/arch/powerpc/platforms/iseries/setup.c
+++ linux-3.2/arch/powerpc/platforms/iseries/setup.c
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
index ea0acbd..e0c5b49 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -582,9 +582,7 @@ static void iseries_shared_idle(void)
if (hvlpevent_is_pending())
process_iSeries_events();
@ -292,11 +293,11 @@ Index: linux-3.2/arch/powerpc/platforms/iseries/setup.c
}
}
Index: linux-3.2/arch/s390/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/s390/kernel/process.c
+++ linux-3.2/arch/s390/kernel/process.c
@@ -95,9 +95,7 @@ void cpu_idle(void)
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 53088e2..fa093f7 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -94,9 +94,7 @@ void cpu_idle(void)
while (!need_resched())
default_idle();
tick_nohz_restart_sched_tick();
@ -307,10 +308,10 @@ Index: linux-3.2/arch/s390/kernel/process.c
}
}
Index: linux-3.2/arch/score/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/score/kernel/process.c
+++ linux-3.2/arch/score/kernel/process.c
diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c
index 25d0803..2707023 100644
--- a/arch/score/kernel/process.c
+++ b/arch/score/kernel/process.c
@@ -53,9 +53,7 @@ void __noreturn cpu_idle(void)
while (!need_resched())
barrier();
@ -322,10 +323,10 @@ Index: linux-3.2/arch/score/kernel/process.c
}
}
Index: linux-3.2/arch/sh/kernel/idle.c
===================================================================
--- linux-3.2.orig/arch/sh/kernel/idle.c
+++ linux-3.2/arch/sh/kernel/idle.c
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c
index db4ecd7..b7c18f0 100644
--- a/arch/sh/kernel/idle.c
+++ b/arch/sh/kernel/idle.c
@@ -112,9 +112,7 @@ void cpu_idle(void)
}
@ -337,10 +338,10 @@ Index: linux-3.2/arch/sh/kernel/idle.c
}
}
Index: linux-3.2/arch/sparc/kernel/process_32.c
===================================================================
--- linux-3.2.orig/arch/sparc/kernel/process_32.c
+++ linux-3.2/arch/sparc/kernel/process_32.c
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index f793742..935fdbc 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -113,9 +113,7 @@ void cpu_idle(void)
while (!need_resched())
cpu_relax();
@ -363,10 +364,10 @@ Index: linux-3.2/arch/sparc/kernel/process_32.c
check_pgt_cache();
}
}
Index: linux-3.2/arch/sparc/kernel/process_64.c
===================================================================
--- linux-3.2.orig/arch/sparc/kernel/process_64.c
+++ linux-3.2/arch/sparc/kernel/process_64.c
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
index 3739a06..8ba0dbe 100644
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -102,15 +102,13 @@ void cpu_idle(void)
tick_nohz_restart_sched_tick();
@ -387,10 +388,10 @@ Index: linux-3.2/arch/sparc/kernel/process_64.c
}
}
Index: linux-3.2/arch/tile/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/tile/kernel/process.c
+++ linux-3.2/arch/tile/kernel/process.c
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c
index 9c45d8b..5a8b631 100644
--- a/arch/tile/kernel/process.c
+++ b/arch/tile/kernel/process.c
@@ -106,9 +106,7 @@ void cpu_idle(void)
current_thread_info()->status |= TS_POLLING;
}
@ -402,10 +403,10 @@ Index: linux-3.2/arch/tile/kernel/process.c
}
}
Index: linux-3.2/arch/x86/kernel/process_32.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/process_32.c
+++ linux-3.2/arch/x86/kernel/process_32.c
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index 8598296..ada175e3 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -117,9 +117,7 @@ void cpu_idle(void)
start_critical_timings();
}
@ -417,10 +418,10 @@ Index: linux-3.2/arch/x86/kernel/process_32.c
}
}
Index: linux-3.2/arch/x86/kernel/process_64.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/process_64.c
+++ linux-3.2/arch/x86/kernel/process_64.c
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 6a364a6..08840ab 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -150,9 +150,7 @@ void cpu_idle(void)
}
@ -432,10 +433,10 @@ Index: linux-3.2/arch/x86/kernel/process_64.c
}
}
Index: linux-3.2/arch/xtensa/kernel/process.c
===================================================================
--- linux-3.2.orig/arch/xtensa/kernel/process.c
+++ linux-3.2/arch/xtensa/kernel/process.c
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
index 47041e7..2c90047 100644
--- a/arch/xtensa/kernel/process.c
+++ b/arch/xtensa/kernel/process.c
@@ -113,9 +113,7 @@ void cpu_idle(void)
while (1) {
while (!need_resched())
@ -447,11 +448,11 @@ Index: linux-3.2/arch/xtensa/kernel/process.c
}
}
Index: linux-3.2/init/main.c
===================================================================
--- linux-3.2.orig/init/main.c
+++ linux-3.2/init/main.c
@@ -378,11 +378,8 @@ static noinline void __init_refok rest_i
diff --git a/init/main.c b/init/main.c
index 217ed23..0e274f9 100644
--- a/init/main.c
+++ b/init/main.c
@@ -378,11 +378,8 @@ static noinline void __init_refok rest_init(void)
* at least once to get things moving:
*/
init_idle_bootup_task(current);
@ -464,11 +465,11 @@ Index: linux-3.2/init/main.c
cpu_idle();
}
Index: linux-3.2/kernel/mutex.c
===================================================================
--- linux-3.2.orig/kernel/mutex.c
+++ linux-3.2/kernel/mutex.c
@@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock,
diff --git a/kernel/mutex.c b/kernel/mutex.c
index 89096dd..a307cc9 100644
--- a/kernel/mutex.c
+++ b/kernel/mutex.c
@@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
/* didn't get the lock, go to sleep: */
spin_unlock_mutex(&lock->wait_lock, flags);
@ -479,11 +480,11 @@ Index: linux-3.2/kernel/mutex.c
spin_lock_mutex(&lock->wait_lock, flags);
}
Index: linux-3.2/kernel/softirq.c
===================================================================
--- linux-3.2.orig/kernel/softirq.c
+++ linux-3.2/kernel/softirq.c
@@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_c
diff --git a/kernel/softirq.c b/kernel/softirq.c
index 2c71d91..c9da2c8 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_cpu)
while (!kthread_should_stop()) {
preempt_disable();
if (!local_softirq_pending()) {
@ -494,3 +495,6 @@ Index: linux-3.2/kernel/softirq.c
}
__set_current_state(TASK_RUNNING);
--
1.7.10

View File

@ -1,21 +1,21 @@
From 244867f1bbbcc44274b4bf053f82e6de83b5e32d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:44 -0500
Subject: signals: Do not wakeup self
Subject: [PATCH 032/267] signals: Do not wakeup self
Signals which are delivered by current to current can do without
waking up current :)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/signal.c | 3 +++
1 file changed, 3 insertions(+)
Index: linux-3.2/kernel/signal.c
===================================================================
--- linux-3.2.orig/kernel/signal.c
+++ linux-3.2/kernel/signal.c
@@ -682,6 +682,9 @@ void signal_wake_up(struct task_struct *
diff --git a/kernel/signal.c b/kernel/signal.c
index d8b0b21..8ad4755 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -682,6 +682,9 @@ void signal_wake_up(struct task_struct *t, int resume)
set_tsk_thread_flag(t, TIF_SIGPENDING);
@ -25,3 +25,6 @@ Index: linux-3.2/kernel/signal.c
/*
* For SIGKILL, we want to wake it up in the stopped/traced/killable
* case. We don't check t->state here because there is a race with it
--
1.7.10

View File

@ -1,21 +1,21 @@
From 224b94ef7444a37fa715a10779f3a758722c7598 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:29:20 -0500
Subject: posix-timers: Prevent broadcast signals
Subject: [PATCH 033/267] posix-timers: Prevent broadcast signals
Posix timers should not send broadcast signals and kernel only
signals. Prevent it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/posix-timers.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index: linux-3.2/kernel/posix-timers.c
===================================================================
--- linux-3.2.orig/kernel/posix-timers.c
+++ linux-3.2/kernel/posix-timers.c
@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
index 69185ae..7b73c34 100644
--- a/kernel/posix-timers.c
+++ b/kernel/posix-timers.c
@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer)
static struct pid *good_sigevent(sigevent_t * event)
{
struct task_struct *rtn = current->group_leader;
@ -23,7 +23,7 @@ Index: linux-3.2/kernel/posix-timers.c
if ((event->sigev_notify & SIGEV_THREAD_ID ) &&
(!(rtn = find_task_by_vpid(event->sigev_notify_thread_id)) ||
@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigeven
@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigevent_t * event)
return NULL;
if (((event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE) &&
@ -33,3 +33,6 @@ Index: linux-3.2/kernel/posix-timers.c
return NULL;
return task_pid(rtn);
--
1.7.10

View File

@ -1,24 +1,24 @@
From 4f199fd1218f10cf419d1c9f9a7ed6c57969320c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:56 -0500
Subject: signals: Allow rt tasks to cache one sigqueue struct
Subject: [PATCH 034/267] signals: Allow rt tasks to cache one sigqueue struct
To avoid allocation allow rt tasks to cache one sigqueue struct in
task struct.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/sched.h | 1
include/linux/signal.h | 1
kernel/exit.c | 2 -
kernel/fork.c | 1
kernel/signal.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++---
include/linux/sched.h | 1 +
include/linux/signal.h | 1 +
kernel/exit.c | 2 +-
kernel/fork.c | 1 +
kernel/signal.c | 83 +++++++++++++++++++++++++++++++++++++++++++++---
5 files changed, 83 insertions(+), 5 deletions(-)
Index: linux-3.2/include/linux/sched.h
===================================================================
--- linux-3.2.orig/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 9897fe6..7268acf 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1387,6 +1387,7 @@ struct task_struct {
/* signal handlers */
struct signal_struct *signal;
@ -27,11 +27,11 @@ Index: linux-3.2/include/linux/sched.h
sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
Index: linux-3.2/include/linux/signal.h
===================================================================
--- linux-3.2.orig/include/linux/signal.h
+++ linux-3.2/include/linux/signal.h
@@ -229,6 +229,7 @@ static inline void init_sigpending(struc
diff --git a/include/linux/signal.h b/include/linux/signal.h
index a822300..a448900 100644
--- a/include/linux/signal.h
+++ b/include/linux/signal.h
@@ -229,6 +229,7 @@ static inline void init_sigpending(struct sigpending *sig)
}
extern void flush_sigqueue(struct sigpending *queue);
@ -39,11 +39,11 @@ Index: linux-3.2/include/linux/signal.h
/* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */
static inline int valid_signal(unsigned long sig)
Index: linux-3.2/kernel/exit.c
===================================================================
--- linux-3.2.orig/kernel/exit.c
+++ linux-3.2/kernel/exit.c
@@ -141,7 +141,7 @@ static void __exit_signal(struct task_st
diff --git a/kernel/exit.c b/kernel/exit.c
index e6e01b9..9075780 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -141,7 +141,7 @@ static void __exit_signal(struct task_struct *tsk)
* Do this under ->siglock, we can race with another thread
* doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals.
*/
@ -52,11 +52,11 @@ Index: linux-3.2/kernel/exit.c
tsk->sighand = NULL;
spin_unlock(&sighand->siglock);
Index: linux-3.2/kernel/fork.c
===================================================================
--- linux-3.2.orig/kernel/fork.c
+++ linux-3.2/kernel/fork.c
@@ -1131,6 +1131,7 @@ static struct task_struct *copy_process(
diff --git a/kernel/fork.c b/kernel/fork.c
index 0acf42c0..d8aa0c7 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1134,6 +1134,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
spin_lock_init(&p->alloc_lock);
init_sigpending(&p->pending);
@ -64,11 +64,11 @@ Index: linux-3.2/kernel/fork.c
p->utime = cputime_zero;
p->stime = cputime_zero;
Index: linux-3.2/kernel/signal.c
===================================================================
--- linux-3.2.orig/kernel/signal.c
+++ linux-3.2/kernel/signal.c
@@ -344,13 +344,45 @@ static bool task_participate_group_stop(
diff --git a/kernel/signal.c b/kernel/signal.c
index 8ad4755..fc1a67a 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -344,13 +344,45 @@ static bool task_participate_group_stop(struct task_struct *task)
return false;
}
@ -115,7 +115,7 @@ Index: linux-3.2/kernel/signal.c
{
struct sigqueue *q = NULL;
struct user_struct *user;
@@ -367,7 +399,10 @@ __sigqueue_alloc(int sig, struct task_st
@@ -367,7 +399,10 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
if (override_rlimit ||
atomic_read(&user->sigpending) <=
task_rlimit(t, RLIMIT_SIGPENDING)) {
@ -127,7 +127,7 @@ Index: linux-3.2/kernel/signal.c
} else {
print_dropped_signal(sig);
}
@@ -384,6 +419,13 @@ __sigqueue_alloc(int sig, struct task_st
@@ -384,6 +419,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
return q;
}
@ -141,7 +141,7 @@ Index: linux-3.2/kernel/signal.c
static void __sigqueue_free(struct sigqueue *q)
{
if (q->flags & SIGQUEUE_PREALLOC)
@@ -393,6 +435,21 @@ static void __sigqueue_free(struct sigqu
@@ -393,6 +435,21 @@ static void __sigqueue_free(struct sigqueue *q)
kmem_cache_free(sigqueue_cachep, q);
}
@ -163,7 +163,7 @@ Index: linux-3.2/kernel/signal.c
void flush_sigqueue(struct sigpending *queue)
{
struct sigqueue *q;
@@ -406,6 +463,21 @@ void flush_sigqueue(struct sigpending *q
@@ -406,6 +463,21 @@ void flush_sigqueue(struct sigpending *queue)
}
/*
@ -185,7 +185,7 @@ Index: linux-3.2/kernel/signal.c
* Flush all pending signals for a task.
*/
void __flush_signals(struct task_struct *t)
@@ -554,7 +626,7 @@ static void collect_signal(int sig, stru
@@ -554,7 +626,7 @@ static void collect_signal(int sig, struct sigpending *list, siginfo_t *info)
still_pending:
list_del_init(&first->list);
copy_siginfo(info, &first->info);
@ -194,7 +194,7 @@ Index: linux-3.2/kernel/signal.c
} else {
/*
* Ok, it wasn't in the queue. This must be
@@ -600,6 +672,8 @@ int dequeue_signal(struct task_struct *t
@@ -600,6 +672,8 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
{
int signr;
@ -213,3 +213,6 @@ Index: linux-3.2/kernel/signal.c
if (q)
q->flags |= SIGQUEUE_PREALLOC;
--
1.7.10

View File

@ -1,5 +1,7 @@
Subject: signal/x86: Delay calling signals in atomic
From 1c54a96e16e5e6f3e9978d231c9db374a68f968e Mon Sep 17 00:00:00 2001
From: Oleg Nesterov <oleg@redhat.com>
Date: Tue, 10 Apr 2012 14:33:53 -0400
Subject: [PATCH 035/267] signal/x86: Delay calling signals in atomic
On x86_64 we must disable preemption before we enable interrupts
for stack faults, int3 and debugging, because the current task is using
@ -28,17 +30,16 @@ Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/include/asm/signal.h | 13 +++++++++++++
arch/x86/kernel/signal.c | 9 +++++++++
include/linux/sched.h | 4 ++++
kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++--
4 files changed, 61 insertions(+), 2 deletions(-)
Index: linux-3.2/arch/x86/include/asm/signal.h
===================================================================
--- linux-3.2.orig/arch/x86/include/asm/signal.h
+++ linux-3.2/arch/x86/include/asm/signal.h
diff --git a/arch/x86/include/asm/signal.h b/arch/x86/include/asm/signal.h
index 598457c..1213ebd 100644
--- a/arch/x86/include/asm/signal.h
+++ b/arch/x86/include/asm/signal.h
@@ -31,6 +31,19 @@ typedef struct {
unsigned long sig[_NSIG_WORDS];
} sigset_t;
@ -59,11 +60,11 @@ Index: linux-3.2/arch/x86/include/asm/signal.h
#else
/* Here we must cater to libcs that poke about in kernel headers. */
Index: linux-3.2/arch/x86/kernel/signal.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/signal.c
+++ linux-3.2/arch/x86/kernel/signal.c
@@ -820,6 +820,15 @@ do_notify_resume(struct pt_regs *regs, v
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
index 54ddaeb2..12c4d53 100644
--- a/arch/x86/kernel/signal.c
+++ b/arch/x86/kernel/signal.c
@@ -820,6 +820,15 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
mce_notify_process();
#endif /* CONFIG_X86_64 && CONFIG_X86_MCE */
@ -79,10 +80,10 @@ Index: linux-3.2/arch/x86/kernel/signal.c
/* deal with pending signal delivery */
if (thread_info_flags & _TIF_SIGPENDING)
do_signal(regs);
Index: linux-3.2/include/linux/sched.h
===================================================================
--- linux-3.2.orig/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 7268acf..ed2b9f9 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1392,6 +1392,10 @@ struct task_struct {
sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
@ -94,11 +95,11 @@ Index: linux-3.2/include/linux/sched.h
unsigned long sas_ss_sp;
size_t sas_ss_size;
Index: linux-3.2/kernel/signal.c
===================================================================
--- linux-3.2.orig/kernel/signal.c
+++ linux-3.2/kernel/signal.c
@@ -1273,8 +1273,8 @@ int do_send_sig_info(int sig, struct sig
diff --git a/kernel/signal.c b/kernel/signal.c
index fc1a67a..c8b1bc1 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1273,8 +1273,8 @@ int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p,
* We don't want to have recursive SIGSEGV's etc, for example,
* that is why we also clear SIGNAL_UNKILLABLE.
*/
@ -109,7 +110,7 @@ Index: linux-3.2/kernel/signal.c
{
unsigned long int flags;
int ret, blocked, ignored;
@@ -1299,6 +1299,39 @@ force_sig_info(int sig, struct siginfo *
@@ -1299,6 +1299,39 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
return ret;
}
@ -149,3 +150,6 @@ Index: linux-3.2/kernel/signal.c
/*
* Nuke all other threads in the group.
*/
--
1.7.10

View File

@ -1,21 +1,22 @@
From f105d10b4701b0b44c781bc0c37379f3468521a3 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:30 -0500
Subject: generic: Use raw local irq variant for generic cmpxchg
Subject: [PATCH 036/267] generic: Use raw local irq variant for generic
cmpxchg
No point in tracing those.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/asm-generic/cmpxchg-local.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-3.2/include/asm-generic/cmpxchg-local.h
===================================================================
--- linux-3.2.orig/include/asm-generic/cmpxchg-local.h
+++ linux-3.2/include/asm-generic/cmpxchg-local.h
@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_lo
diff --git a/include/asm-generic/cmpxchg-local.h b/include/asm-generic/cmpxchg-local.h
index 2533fdd..d8d4c89 100644
--- a/include/asm-generic/cmpxchg-local.h
+++ b/include/asm-generic/cmpxchg-local.h
@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr,
if (size == 8 && sizeof(unsigned long) != 8)
wrong_size_cmpxchg(ptr);
@ -24,7 +25,7 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
switch (size) {
case 1: prev = *(u8 *)ptr;
if (prev == old)
@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_lo
@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr,
default:
wrong_size_cmpxchg(ptr);
}
@ -33,7 +34,7 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
return prev;
}
@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_gene
@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_generic(volatile void *ptr,
u64 prev;
unsigned long flags;
@ -47,3 +48,6 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
return prev;
}
--
1.7.10

View File

@ -1,21 +1,21 @@
From a908abba18460e32b36e6b183e77b6c7c1cceb94 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:30 -0500
Subject: drivers: random: Reduce preempt disabled region
Subject: [PATCH 037/267] drivers: random: Reduce preempt disabled region
No need to keep preemption disabled across the whole function.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/char/random.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
Index: linux-3.2/drivers/char/random.c
===================================================================
--- linux-3.2.orig/drivers/char/random.c
+++ linux-3.2/drivers/char/random.c
@@ -633,8 +633,11 @@ static void add_timer_randomness(struct
diff --git a/drivers/char/random.c b/drivers/char/random.c
index 6035ab8..786a856 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -633,8 +633,11 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
preempt_disable();
/* if over the trickle threshold, use only 1 in 4096 samples */
if (input_pool.entropy_count > trickle_thresh &&
@ -29,7 +29,7 @@ Index: linux-3.2/drivers/char/random.c
sample.jiffies = jiffies;
sample.cycles = get_cycles();
@@ -676,8 +679,6 @@ static void add_timer_randomness(struct
@@ -676,8 +679,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
credit_entropy_bits(&input_pool,
min_t(int, fls(delta>>1), 11));
}
@ -38,3 +38,6 @@ Index: linux-3.2/drivers/char/random.c
}
void add_input_randomness(unsigned int type, unsigned int code,
--
1.7.10

View File

@ -1,6 +1,8 @@
From 31e34bf84003d53073f3fa91d53cd6ac31bfbe58 Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <b.spranger@linutronix.de>
Date: Sat, 6 Mar 2010 17:47:10 +0100
Subject: ARM: AT91: PIT: Remove irq handler when clock event is unused
Subject: [PATCH 038/267] ARM: AT91: PIT: Remove irq handler when clock event
is unused
Setup and remove the interrupt handler in clock event mode selection.
This avoids calling the (shared) interrupt handler when the device is
@ -8,17 +10,16 @@ not used.
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/arm/mach-at91/at91rm9200_time.c | 2 ++
arch/arm/mach-at91/at91sam926x_time.c | 6 +++++-
2 files changed, 7 insertions(+), 1 deletion(-)
Index: linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
===================================================================
--- linux-3.2.orig/arch/arm/mach-at91/at91rm9200_time.c
+++ linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
@@ -114,6 +114,7 @@ clkevt32k_mode(enum clock_event_mode mod
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
index 1dd69c8..0666570 100644
--- a/arch/arm/mach-at91/at91rm9200_time.c
+++ b/arch/arm/mach-at91/at91rm9200_time.c
@@ -114,6 +114,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev)
last_crtr = read_CRTR();
switch (mode) {
case CLOCK_EVT_MODE_PERIODIC:
@ -26,7 +27,7 @@ Index: linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
/* PIT for periodic irqs; fixed rate of 1/HZ */
irqmask = AT91_ST_PITS;
at91_sys_write(AT91_ST_PIMR, LATCH);
@@ -127,6 +128,7 @@ clkevt32k_mode(enum clock_event_mode mod
@@ -127,6 +128,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev)
break;
case CLOCK_EVT_MODE_SHUTDOWN:
case CLOCK_EVT_MODE_UNUSED:
@ -34,10 +35,10 @@ Index: linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
case CLOCK_EVT_MODE_RESUME:
irqmask = 0;
break;
Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
===================================================================
--- linux-3.2.orig/arch/arm/mach-at91/at91sam926x_time.c
+++ linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
index 4ba8549..97d1e14 100644
--- a/arch/arm/mach-at91/at91sam926x_time.c
+++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -54,7 +54,7 @@ static struct clocksource pit_clk = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@ -47,7 +48,7 @@ Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
/*
* Clockevent device: interrupts every 1/HZ (== pit_cycles * MCK/16)
*/
@@ -63,6 +63,9 @@ pit_clkevt_mode(enum clock_event_mode mo
@@ -63,6 +63,9 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
{
switch (mode) {
case CLOCK_EVT_MODE_PERIODIC:
@ -57,7 +58,7 @@ Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
/* update clocksource counter */
pit_cnt += pit_cycle * PIT_PICNT(at91_sys_read(AT91_PIT_PIVR));
at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN
@@ -75,6 +78,7 @@ pit_clkevt_mode(enum clock_event_mode mo
@@ -75,6 +78,7 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
case CLOCK_EVT_MODE_UNUSED:
/* disable irq, leaving the clocksource active */
at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
@ -65,3 +66,6 @@ Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
break;
case CLOCK_EVT_MODE_RESUME:
break;
--
1.7.10

View File

@ -1,22 +1,23 @@
From b4217e96b0c71c84b8edbca7b99813b5f0f72033 Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <b.spranger@linutronix.de>
Date: Mon, 8 Mar 2010 18:57:04 +0100
Subject: clocksource: TCLIB: Allow higher clock rates for clock events
Subject: [PATCH 039/267] clocksource: TCLIB: Allow higher clock rates for
clock events
As default the TCLIB uses the 32KiHz base clock rate for clock events.
Add a compile time selection to allow higher clock resulution.
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/clocksource/tcb_clksrc.c | 44 +++++++++++++++++++++++----------------
drivers/misc/Kconfig | 11 +++++++--
drivers/clocksource/tcb_clksrc.c | 44 ++++++++++++++++++++++----------------
drivers/misc/Kconfig | 11 ++++++++--
2 files changed, 35 insertions(+), 20 deletions(-)
Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
===================================================================
--- linux-3.2.orig/drivers/clocksource/tcb_clksrc.c
+++ linux-3.2/drivers/clocksource/tcb_clksrc.c
diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
index 79c47e8..8976b3d 100644
--- a/drivers/clocksource/tcb_clksrc.c
+++ b/drivers/clocksource/tcb_clksrc.c
@@ -21,8 +21,7 @@
* resolution better than 200 nsec).
*
@ -35,7 +36,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
void __iomem *regs;
};
@@ -76,13 +76,6 @@ static struct tc_clkevt_device *to_tc_cl
@@ -76,13 +76,6 @@ static struct tc_clkevt_device *to_tc_clkevt(struct clock_event_device *clkevt)
return container_of(clkevt, struct tc_clkevt_device, clkevt);
}
@ -49,7 +50,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
static u32 timer_clock;
static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
@@ -105,11 +98,12 @@ static void tc_mode(enum clock_event_mod
@@ -105,11 +98,12 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
case CLOCK_EVT_MODE_PERIODIC:
clk_enable(tcd->clk);
@ -64,7 +65,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
/* Enable clock and interrupts on RC compare */
__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
@@ -122,7 +116,7 @@ static void tc_mode(enum clock_event_mod
@@ -122,7 +116,7 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
case CLOCK_EVT_MODE_ONESHOT:
clk_enable(tcd->clk);
@ -73,7 +74,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
__raw_writel(timer_clock | ATMEL_TC_CPCSTOP
| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
regs + ATMEL_TC_REG(2, CMR));
@@ -152,8 +146,12 @@ static struct tc_clkevt_device clkevt =
@@ -152,8 +146,12 @@ static struct tc_clkevt_device clkevt = {
.features = CLOCK_EVT_FEAT_PERIODIC
| CLOCK_EVT_FEAT_ONESHOT,
.shift = 32,
@ -97,7 +98,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
struct clk *t2_clk = tc->clk[2];
int irq = tc->irq[2];
@@ -188,11 +187,17 @@ static void __init setup_clkevents(struc
@@ -188,11 +187,17 @@ static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx)
clkevt.clk = t2_clk;
tc_irqaction.dev_id = &clkevt;
@ -132,10 +133,10 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
return 0;
}
arch_initcall(tcb_clksrc_init);
Index: linux-3.2/drivers/misc/Kconfig
===================================================================
--- linux-3.2.orig/drivers/misc/Kconfig
+++ linux-3.2/drivers/misc/Kconfig
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 5664696..f3031a4 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -97,8 +97,7 @@ config ATMEL_TCB_CLKSRC
are combined to make a single 32-bit timer.
@ -161,3 +162,6 @@ Index: linux-3.2/drivers/misc/Kconfig
config IBM_ASM
tristate "Device driver for IBM RSA service processor"
depends on X86 && PCI && INPUT && EXPERIMENTAL
--
1.7.10

View File

@ -1,21 +1,22 @@
From 32a59ec7007ad587e8523ea3628b364c434d4c54 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:18 -0500
Subject: drivers/net: tulip_remove_one needs to call pci_disable_device()
Subject: [PATCH 040/267] drivers/net: tulip_remove_one needs to call
pci_disable_device()
Otherwise the device is not completely shut down.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/net/ethernet/dec/tulip/tulip_core.c | 1 +
1 file changed, 1 insertion(+)
Index: linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c
===================================================================
--- linux-3.2.orig/drivers/net/ethernet/dec/tulip/tulip_core.c
+++ linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c
@@ -1949,6 +1949,7 @@ static void __devexit tulip_remove_one (
diff --git a/drivers/net/ethernet/dec/tulip/tulip_core.c b/drivers/net/ethernet/dec/tulip/tulip_core.c
index 9656dd0..ef7df09 100644
--- a/drivers/net/ethernet/dec/tulip/tulip_core.c
+++ b/drivers/net/ethernet/dec/tulip/tulip_core.c
@@ -1949,6 +1949,7 @@ static void __devexit tulip_remove_one (struct pci_dev *pdev)
pci_iounmap(pdev, tp->base_addr);
free_netdev (dev);
pci_release_regions (pdev);
@ -23,3 +24,6 @@ Index: linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c
pci_set_drvdata (pdev, NULL);
/* pci_power_off (pdev, -1); */
--
1.7.10

View File

@ -1,22 +1,22 @@
From 4d7e0a71990ab73749dfde4f4cd201cf1bdb0f45 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:24 -0500
Subject: drivers/net: Use disable_irq_nosync() in 8139too
Subject: [PATCH 041/267] drivers/net: Use disable_irq_nosync() in 8139too
Use disable_irq_nosync() instead of disable_irq() as this might be
called in atomic context with netpoll.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/net/ethernet/realtek/8139too.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/drivers/net/ethernet/realtek/8139too.c
===================================================================
--- linux-3.2.orig/drivers/net/ethernet/realtek/8139too.c
+++ linux-3.2/drivers/net/ethernet/realtek/8139too.c
@@ -2174,7 +2174,7 @@ static irqreturn_t rtl8139_interrupt (in
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index 4d6b254..004c054 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -2174,7 +2174,7 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance)
*/
static void rtl8139_poll_controller(struct net_device *dev)
{
@ -25,3 +25,6 @@ Index: linux-3.2/drivers/net/ethernet/realtek/8139too.c
rtl8139_interrupt(dev->irq, dev);
enable_irq(dev->irq);
}
--
1.7.10

View File

@ -1,6 +1,8 @@
From 1c36d3306722a2042bd4dc26baf20393c42c5b22 Mon Sep 17 00:00:00 2001
From: Darren Hart <dvhltc@us.ibm.com>
Date: Tue, 18 May 2010 14:33:07 -0700
Subject: drivers: net: ehea: Make rx irq handler non-threaded (IRQF_NO_THREAD)
Subject: [PATCH 042/267] drivers: net: ehea: Make rx irq handler non-threaded
(IRQF_NO_THREAD)
The underlying hardware is edge triggered but presented by XICS as level
triggered. The edge triggered interrupts are not reissued after masking. This
@ -33,16 +35,15 @@ Cc: Michael Ellerman <ellerman@au1.ibm.com>
Cc: Doug Maxey <doug.maxey@us.ibm.com>
LKML-Reference: <4BF30793.5070300@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
===================================================================
--- linux-3.2.orig/drivers/net/ethernet/ibm/ehea/ehea_main.c
+++ linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
@@ -1304,7 +1304,7 @@ static int ehea_reg_interrupts(struct ne
diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c
index bfeccbf..fddfaf1 100644
--- a/drivers/net/ethernet/ibm/ehea/ehea_main.c
+++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c
@@ -1304,7 +1304,7 @@ static int ehea_reg_interrupts(struct net_device *dev)
"%s-queue%d", dev->name, i);
ret = ibmebus_request_irq(pr->eq->attr.ist1,
ehea_recv_irq_handler,
@ -51,3 +52,6 @@ Index: linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
pr);
if (ret) {
netdev_err(dev, "failed registering irq for ehea_queue port_res_nr:%d, ist=%X\n",
--
1.7.10

View File

@ -1,6 +1,8 @@
From 2989477b9c1c1f9aa82a8db158ab3a03a4b7b2f5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 17 Nov 2009 12:02:43 +0100
Subject: drivers: net: at91_ether: Make mdio protection -rt safe
Subject: [PATCH 043/267] drivers: net: at91_ether: Make mdio protection -rt
safe
Neither the phy interrupt nor the timer callback which updates the
link status in absense of a phy interrupt are taking lp->lock which
@ -13,16 +15,15 @@ Fix this by adding proper locking to at91ether_phy_interrupt() and
at91_check_ether() which serializes the access on -rt.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/net/ethernet/cadence/at91_ether.c | 5 +++++
1 file changed, 5 insertions(+)
Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
===================================================================
--- linux-3.2.orig/drivers/net/ethernet/cadence/at91_ether.c
+++ linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
@@ -200,7 +200,9 @@ static irqreturn_t at91ether_phy_interru
diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
index 56624d3..ad4dbea 100644
--- a/drivers/net/ethernet/cadence/at91_ether.c
+++ b/drivers/net/ethernet/cadence/at91_ether.c
@@ -200,7 +200,9 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id)
struct net_device *dev = (struct net_device *) dev_id;
struct at91_private *lp = netdev_priv(dev);
unsigned int phy;
@ -32,7 +33,7 @@ Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
/*
* This hander is triggered on both edges, but the PHY chips expect
* level-triggering. We therefore have to check if the PHY actually has
@@ -242,6 +244,7 @@ static irqreturn_t at91ether_phy_interru
@@ -242,6 +244,7 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id)
done:
disable_mdi();
@ -40,7 +41,7 @@ Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
return IRQ_HANDLED;
}
@@ -398,9 +401,11 @@ static void at91ether_check_link(unsigne
@@ -398,9 +401,11 @@ static void at91ether_check_link(unsigned long dev_id)
struct net_device *dev = (struct net_device *) dev_id;
struct at91_private *lp = netdev_priv(dev);
@ -52,3 +53,6 @@ Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
mod_timer(&lp->check_timer, jiffies + LINK_POLL_INTERVAL);
}
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: preempt-mark-legitimated-no-resched-sites.patch
From a5f63f3c98dcea7b51fda0df14ecc187fb329eee Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 13:32:17 +0100
Subject: [PATCH 044/267] preempt-mark-legitimated-no-resched-sites.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/softirq.c | 4 ++--
5 files changed, 11 insertions(+), 8 deletions(-)
Index: linux-3.2/arch/powerpc/kernel/idle.c
===================================================================
--- linux-3.2.orig/arch/powerpc/kernel/idle.c
+++ linux-3.2/arch/powerpc/kernel/idle.c
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c
index f46dae5..5d70d10 100644
--- a/arch/powerpc/kernel/idle.c
+++ b/arch/powerpc/kernel/idle.c
@@ -95,7 +95,7 @@ void cpu_idle(void)
ppc64_runlatch_on();
tick_nohz_restart_sched_tick();
@ -24,10 +25,10 @@ Index: linux-3.2/arch/powerpc/kernel/idle.c
cpu_die();
}
schedule_preempt_disabled();
Index: linux-3.2/arch/sparc/kernel/process_64.c
===================================================================
--- linux-3.2.orig/arch/sparc/kernel/process_64.c
+++ linux-3.2/arch/sparc/kernel/process_64.c
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
index 8ba0dbe..86fe09a 100644
--- a/arch/sparc/kernel/process_64.c
+++ b/arch/sparc/kernel/process_64.c
@@ -104,7 +104,7 @@ void cpu_idle(void)
#ifdef CONFIG_HOTPLUG_CPU
@ -37,10 +38,10 @@ Index: linux-3.2/arch/sparc/kernel/process_64.c
cpu_play_dead();
}
#endif
Index: linux-3.2/include/linux/preempt.h
===================================================================
--- linux-3.2.orig/include/linux/preempt.h
+++ linux-3.2/include/linux/preempt.h
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
index 58969b2..227b0f5 100644
--- a/include/linux/preempt.h
+++ b/include/linux/preempt.h
@@ -48,12 +48,14 @@ do { \
barrier(); \
} while (0)
@ -65,10 +66,10 @@ Index: linux-3.2/include/linux/preempt.h
#define preempt_enable_no_resched() do { } while (0)
#define preempt_enable() do { } while (0)
Index: linux-3.2/kernel/sched.c
===================================================================
--- linux-3.2.orig/kernel/sched.c
+++ linux-3.2/kernel/sched.c
diff --git a/kernel/sched.c b/kernel/sched.c
index 465fd11..e35f01c 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4415,7 +4415,7 @@ need_resched:
post_schedule(rq);
@ -96,10 +97,10 @@ Index: linux-3.2/kernel/sched.c
schedule();
Index: linux-3.2/kernel/softirq.c
===================================================================
--- linux-3.2.orig/kernel/softirq.c
+++ linux-3.2/kernel/softirq.c
diff --git a/kernel/softirq.c b/kernel/softirq.c
index c9da2c8..a8becbf 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -353,7 +353,7 @@ void irq_exit(void)
if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched())
tick_nohz_stop_sched_tick(0);
@ -109,7 +110,7 @@ Index: linux-3.2/kernel/softirq.c
}
/*
@@ -759,7 +759,7 @@ static int run_ksoftirqd(void * __bind_c
@@ -759,7 +759,7 @@ static int run_ksoftirqd(void * __bind_cpu)
if (local_softirq_pending())
__do_softirq();
local_irq_enable();
@ -118,3 +119,6 @@ Index: linux-3.2/kernel/softirq.c
cond_resched();
preempt_disable();
rcu_note_context_switch((long)__bind_cpu);
--
1.7.10

View File

@ -1,13 +1,14 @@
From 53e45a133e1f67b90e680878517ce10dc5c0d04b Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:37 -0500
Subject: mm: Prepare decoupling the page fault disabling logic
Subject: [PATCH 045/267] mm: Prepare decoupling the page fault disabling
logic
Add a pagefault_disabled variable to task_struct to allow decoupling
the pagefault-disabled logic from the preempt count.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/sched.h | 1 +
include/linux/uaccess.h | 33 +++------------------------------
@ -15,10 +16,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/memory.c | 29 +++++++++++++++++++++++++++++
4 files changed, 34 insertions(+), 30 deletions(-)
Index: linux-3.2/include/linux/sched.h
===================================================================
--- linux-3.2.orig/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h
diff --git a/include/linux/sched.h b/include/linux/sched.h
index ed2b9f9..bce86f9 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1435,6 +1435,7 @@ struct task_struct {
/* mutex deadlock detection */
struct mutex_waiter *blocked_on;
@ -27,10 +28,10 @@ Index: linux-3.2/include/linux/sched.h
#ifdef CONFIG_TRACE_IRQFLAGS
unsigned int irq_events;
unsigned long hardirq_enable_ip;
Index: linux-3.2/include/linux/uaccess.h
===================================================================
--- linux-3.2.orig/include/linux/uaccess.h
+++ linux-3.2/include/linux/uaccess.h
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index 5ca0951..9414a1b 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -6,37 +6,10 @@
/*
@ -72,11 +73,11 @@ Index: linux-3.2/include/linux/uaccess.h
#ifndef ARCH_HAS_NOCACHE_UACCESS
Index: linux-3.2/kernel/fork.c
===================================================================
--- linux-3.2.orig/kernel/fork.c
+++ linux-3.2/kernel/fork.c
@@ -1193,6 +1193,7 @@ static struct task_struct *copy_process(
diff --git a/kernel/fork.c b/kernel/fork.c
index d8aa0c7..a17bc75 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1196,6 +1196,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->hardirq_context = 0;
p->softirq_context = 0;
#endif
@ -84,11 +85,11 @@ Index: linux-3.2/kernel/fork.c
#ifdef CONFIG_LOCKDEP
p->lockdep_depth = 0; /* no locks held yet */
p->curr_chain_key = 0;
Index: linux-3.2/mm/memory.c
===================================================================
--- linux-3.2.orig/mm/memory.c
+++ linux-3.2/mm/memory.c
@@ -3436,6 +3436,35 @@ unlock:
diff --git a/mm/memory.c b/mm/memory.c
index 1b1ca17..454ad3f 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3444,6 +3444,35 @@ unlock:
return 0;
}
@ -124,3 +125,6 @@ Index: linux-3.2/mm/memory.c
/*
* By the time we get here, we already hold the mm semaphore
*/
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: mm: Fixup all fault handlers to check current->pagefault_disable
From ce05fde6b2b86bc5569433eef6869bdb1adcb32c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 17 Mar 2011 11:32:28 +0100
Subject: [PATCH 046/267] mm: Fixup all fault handlers to check
current->pagefault_disable
Necessary for decoupling pagefault disable from preempt count.
@ -30,11 +32,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/xtensa/mm/fault.c | 2 +-
22 files changed, 27 insertions(+), 24 deletions(-)
Index: linux-3.2/arch/alpha/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/alpha/mm/fault.c
+++ linux-3.2/arch/alpha/mm/fault.c
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, uns
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index fadd5f8..6d73e1b 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
/* If we're in an interrupt context, or have no user context,
we must not take the fault. */
@ -43,11 +45,11 @@ Index: linux-3.2/arch/alpha/mm/fault.c
goto no_context;
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
Index: linux-3.2/arch/arm/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/arm/mm/fault.c
+++ linux-3.2/arch/arm/mm/fault.c
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsign
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index aa33949..c8dd303 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -56,11 +58,11 @@ Index: linux-3.2/arch/arm/mm/fault.c
goto no_context;
/*
Index: linux-3.2/arch/avr32/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/avr32/mm/fault.c
+++ linux-3.2/arch/avr32/mm/fault.c
@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned l
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index f7040a1..623a027 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
* If we're in an interrupt or have no user context, we must
* not take the fault...
*/
@ -70,11 +72,11 @@ Index: linux-3.2/arch/avr32/mm/fault.c
goto no_context;
local_irq_enable();
Index: linux-3.2/arch/cris/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/cris/mm/fault.c
+++ linux-3.2/arch/cris/mm/fault.c
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, str
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
index 9dcac8e..2b2c292 100644
--- a/arch/cris/mm/fault.c
+++ b/arch/cris/mm/fault.c
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
* user context, we must not take the fault.
*/
@ -83,11 +85,11 @@ Index: linux-3.2/arch/cris/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/frv/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/frv/mm/fault.c
+++ linux-3.2/arch/frv/mm/fault.c
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datamm
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
index a325d57..3da8ec7 100644
--- a/arch/frv/mm/fault.c
+++ b/arch/frv/mm/fault.c
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -96,11 +98,11 @@ Index: linux-3.2/arch/frv/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/ia64/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/ia64/mm/fault.c
+++ linux-3.2/arch/ia64/mm/fault.c
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long addres
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 20b3593..2a4e44f 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
/*
* If we're in an interrupt or have no user context, we must not take the fault..
*/
@ -109,11 +111,11 @@ Index: linux-3.2/arch/ia64/mm/fault.c
goto no_context;
#ifdef CONFIG_VIRTUAL_MEM_MAP
Index: linux-3.2/arch/m32r/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/m32r/mm/fault.c
+++ linux-3.2/arch/m32r/mm/fault.c
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
index 2c9aeb4..16fa2c7 100644
--- a/arch/m32r/mm/fault.c
+++ b/arch/m32r/mm/fault.c
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
* If we're in an interrupt or have no user context or are running in an
* atomic region then we must not take the fault..
*/
@ -122,11 +124,11 @@ Index: linux-3.2/arch/m32r/mm/fault.c
goto bad_area_nosemaphore;
/* When running in the kernel we expect faults to occur only to
Index: linux-3.2/arch/m68k/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/m68k/mm/fault.c
+++ linux-3.2/arch/m68k/mm/fault.c
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs,
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
index 2db6099..238ffc0 100644
--- a/arch/m68k/mm/fault.c
+++ b/arch/m68k/mm/fault.c
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -135,11 +137,11 @@ Index: linux-3.2/arch/m68k/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/microblaze/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/microblaze/mm/fault.c
+++ linux-3.2/arch/microblaze/mm/fault.c
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs,
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
index ae97d2c..c3f219c 100644
--- a/arch/microblaze/mm/fault.c
+++ b/arch/microblaze/mm/fault.c
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
is_write = 0;
@ -148,11 +150,11 @@ Index: linux-3.2/arch/microblaze/mm/fault.c
if (kernel_mode(regs))
goto bad_area_nosemaphore;
Index: linux-3.2/arch/mips/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/mips/mm/fault.c
+++ linux-3.2/arch/mips/mm/fault.c
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index 937cf33..ce7e75e 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -161,11 +163,11 @@ Index: linux-3.2/arch/mips/mm/fault.c
goto bad_area_nosemaphore;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/mn10300/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/mn10300/mm/fault.c
+++ linux-3.2/arch/mn10300/mm/fault.c
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
index 0945409..53c8d16 100644
--- a/arch/mn10300/mm/fault.c
+++ b/arch/mn10300/mm/fault.c
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -174,11 +176,11 @@ Index: linux-3.2/arch/mn10300/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/parisc/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/parisc/mm/fault.c
+++ linux-3.2/arch/parisc/mm/fault.c
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs,
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
index 18162ce..09ecc8a 100644
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
unsigned long acc_type;
int fault;
@ -187,11 +189,11 @@ Index: linux-3.2/arch/parisc/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/powerpc/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/powerpc/mm/fault.c
+++ linux-3.2/arch/powerpc/mm/fault.c
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_re
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index 5efe8c9..17f8bbe 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
}
#endif
@ -200,11 +202,11 @@ Index: linux-3.2/arch/powerpc/mm/fault.c
if (!user_mode(regs))
return SIGSEGV;
/* in_atomic() in user mode is really bad,
Index: linux-3.2/arch/s390/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/s390/mm/fault.c
+++ linux-3.2/arch/s390/mm/fault.c
@@ -295,7 +295,8 @@ static inline int do_exception(struct pt
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index c7f0fbc..0d60168 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -294,7 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
* user context.
*/
fault = VM_FAULT_BADCONTEXT;
@ -214,7 +216,7 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto out;
address = trans_exc_code & __FAIL_ADDR_MASK;
@@ -426,7 +427,8 @@ void __kprobes do_asce_exception(struct
@@ -425,7 +426,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma;
@ -224,11 +226,11 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/score/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/score/mm/fault.c
+++ linux-3.2/arch/score/mm/fault.c
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_
diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
index 47b600e..4c12824 100644
--- a/arch/score/mm/fault.c
+++ b/arch/score/mm/fault.c
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -237,11 +239,11 @@ Index: linux-3.2/arch/score/mm/fault.c
goto bad_area_nosemaphore;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sh/mm/fault_32.c
===================================================================
--- linux-3.2.orig/arch/sh/mm/fault_32.c
+++ linux-3.2/arch/sh/mm/fault_32.c
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
index 7bebd04..a67ac56 100644
--- a/arch/sh/mm/fault_32.c
+++ b/arch/sh/mm/fault_32.c
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@ -250,11 +252,11 @@ Index: linux-3.2/arch/sh/mm/fault_32.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sparc/mm/fault_32.c
===================================================================
--- linux-3.2.orig/arch/sparc/mm/fault_32.c
+++ linux-3.2/arch/sparc/mm/fault_32.c
@@ -247,8 +247,8 @@ asmlinkage void do_sparc_fault(struct pt
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
index 8023fd7..e0742c1 100644
--- a/arch/sparc/mm/fault_32.c
+++ b/arch/sparc/mm/fault_32.c
@@ -247,8 +247,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -265,11 +267,11 @@ Index: linux-3.2/arch/sparc/mm/fault_32.c
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/sparc/mm/fault_64.c
===================================================================
--- linux-3.2.orig/arch/sparc/mm/fault_64.c
+++ linux-3.2/arch/sparc/mm/fault_64.c
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fau
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
index 504c062..9d691a5 100644
--- a/arch/sparc/mm/fault_64.c
+++ b/arch/sparc/mm/fault_64.c
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -278,11 +280,11 @@ Index: linux-3.2/arch/sparc/mm/fault_64.c
goto intr_or_no_mm;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/tile/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/tile/mm/fault.c
+++ linux-3.2/arch/tile/mm/fault.c
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_r
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
index 25b7b90..ecdb016 100644
--- a/arch/tile/mm/fault.c
+++ b/arch/tile/mm/fault.c
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running in an
* atomic region then we must not take the fault.
*/
@ -291,11 +293,11 @@ Index: linux-3.2/arch/tile/mm/fault.c
vma = NULL; /* happy compiler */
goto bad_area_nosemaphore;
}
Index: linux-3.2/arch/um/kernel/trap.c
===================================================================
--- linux-3.2.orig/arch/um/kernel/trap.c
+++ linux-3.2/arch/um/kernel/trap.c
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
index dafc947..a283400 100644
--- a/arch/um/kernel/trap.c
+++ b/arch/um/kernel/trap.c
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
* If the fault was during atomic operation, don't take the fault, just
* fail.
*/
@ -304,11 +306,11 @@ Index: linux-3.2/arch/um/kernel/trap.c
goto out_nosemaphore;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/x86/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/x86/mm/fault.c
+++ linux-3.2/arch/x86/mm/fault.c
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsi
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 5db0490..191015f 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@ -317,10 +319,10 @@ Index: linux-3.2/arch/x86/mm/fault.c
bad_area_nosemaphore(regs, error_code, address);
return;
}
Index: linux-3.2/arch/xtensa/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/xtensa/mm/fault.c
+++ linux-3.2/arch/xtensa/mm/fault.c
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
index e367e30..705f483 100644
--- a/arch/xtensa/mm/fault.c
+++ b/arch/xtensa/mm/fault.c
@@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)
/* If we're in an interrupt or have no user
* context, we must not take the fault..
@ -330,3 +332,6 @@ Index: linux-3.2/arch/xtensa/mm/fault.c
bad_page_fault(regs, address, SIGSEGV);
return;
}
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: mm: pagefault_disabled()
From 2ee27c95145e16e1c9cff6bc19ae777e55269863 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Thu Aug 11 15:31:31 CEST 2011
Date: Thu, 11 Aug 2011 15:31:31 +0200
Subject: [PATCH 047/267] mm: pagefault_disabled()
Wrap the test for pagefault_disabled() into a helper, this allows us
to remove the need for current->pagefault_disabled on !-rt kernels.
@ -34,11 +35,11 @@ Link: http://lkml.kernel.org/n/tip-3yy517m8zsi9fpsf14xfaqkw@git.kernel.org
kernel/fork.c | 2 ++
24 files changed, 41 insertions(+), 26 deletions(-)
Index: linux-3.2/arch/alpha/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/alpha/mm/fault.c
+++ linux-3.2/arch/alpha/mm/fault.c
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, uns
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index 6d73e1b..4a0a0af 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
/* If we're in an interrupt context, or have no user context,
we must not take the fault. */
@ -47,11 +48,11 @@ Index: linux-3.2/arch/alpha/mm/fault.c
goto no_context;
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
Index: linux-3.2/arch/arm/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/arm/mm/fault.c
+++ linux-3.2/arch/arm/mm/fault.c
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsign
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index c8dd303..d717bd3 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -60,11 +61,11 @@ Index: linux-3.2/arch/arm/mm/fault.c
goto no_context;
/*
Index: linux-3.2/arch/avr32/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/avr32/mm/fault.c
+++ linux-3.2/arch/avr32/mm/fault.c
@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned l
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index 623a027..155ad8d 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
* If we're in an interrupt or have no user context, we must
* not take the fault...
*/
@ -74,11 +75,11 @@ Index: linux-3.2/arch/avr32/mm/fault.c
goto no_context;
local_irq_enable();
Index: linux-3.2/arch/cris/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/cris/mm/fault.c
+++ linux-3.2/arch/cris/mm/fault.c
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, str
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
index 2b2c292..ba9cfbe 100644
--- a/arch/cris/mm/fault.c
+++ b/arch/cris/mm/fault.c
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
* user context, we must not take the fault.
*/
@ -87,11 +88,11 @@ Index: linux-3.2/arch/cris/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/frv/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/frv/mm/fault.c
+++ linux-3.2/arch/frv/mm/fault.c
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datamm
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
index 3da8ec7..a9ce0f0 100644
--- a/arch/frv/mm/fault.c
+++ b/arch/frv/mm/fault.c
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -100,11 +101,11 @@ Index: linux-3.2/arch/frv/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/ia64/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/ia64/mm/fault.c
+++ linux-3.2/arch/ia64/mm/fault.c
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long addres
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 2a4e44f..05946c2 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
/*
* If we're in an interrupt or have no user context, we must not take the fault..
*/
@ -113,11 +114,11 @@ Index: linux-3.2/arch/ia64/mm/fault.c
goto no_context;
#ifdef CONFIG_VIRTUAL_MEM_MAP
Index: linux-3.2/arch/m32r/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/m32r/mm/fault.c
+++ linux-3.2/arch/m32r/mm/fault.c
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
index 16fa2c7..6d763f6 100644
--- a/arch/m32r/mm/fault.c
+++ b/arch/m32r/mm/fault.c
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
* If we're in an interrupt or have no user context or are running in an
* atomic region then we must not take the fault..
*/
@ -126,11 +127,11 @@ Index: linux-3.2/arch/m32r/mm/fault.c
goto bad_area_nosemaphore;
/* When running in the kernel we expect faults to occur only to
Index: linux-3.2/arch/m68k/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/m68k/mm/fault.c
+++ linux-3.2/arch/m68k/mm/fault.c
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs,
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
index 238ffc0..74fe559 100644
--- a/arch/m68k/mm/fault.c
+++ b/arch/m68k/mm/fault.c
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -139,11 +140,11 @@ Index: linux-3.2/arch/m68k/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/microblaze/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/microblaze/mm/fault.c
+++ linux-3.2/arch/microblaze/mm/fault.c
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs,
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
index c3f219c..4cdd84d 100644
--- a/arch/microblaze/mm/fault.c
+++ b/arch/microblaze/mm/fault.c
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
is_write = 0;
@ -152,11 +153,11 @@ Index: linux-3.2/arch/microblaze/mm/fault.c
if (kernel_mode(regs))
goto bad_area_nosemaphore;
Index: linux-3.2/arch/mips/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/mips/mm/fault.c
+++ linux-3.2/arch/mips/mm/fault.c
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index ce7e75e..7ade72b 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -165,11 +166,11 @@ Index: linux-3.2/arch/mips/mm/fault.c
goto bad_area_nosemaphore;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/mn10300/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/mn10300/mm/fault.c
+++ linux-3.2/arch/mn10300/mm/fault.c
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
index 53c8d16..2fea01c 100644
--- a/arch/mn10300/mm/fault.c
+++ b/arch/mn10300/mm/fault.c
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -178,11 +179,11 @@ Index: linux-3.2/arch/mn10300/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/parisc/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/parisc/mm/fault.c
+++ linux-3.2/arch/parisc/mm/fault.c
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs,
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
index 09ecc8a..df22f39 100644
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
unsigned long acc_type;
int fault;
@ -191,11 +192,11 @@ Index: linux-3.2/arch/parisc/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/powerpc/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/powerpc/mm/fault.c
+++ linux-3.2/arch/powerpc/mm/fault.c
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_re
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index 17f8bbe..94bedd4 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
}
#endif
@ -204,11 +205,11 @@ Index: linux-3.2/arch/powerpc/mm/fault.c
if (!user_mode(regs))
return SIGSEGV;
/* in_atomic() in user mode is really bad,
Index: linux-3.2/arch/s390/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/s390/mm/fault.c
+++ linux-3.2/arch/s390/mm/fault.c
@@ -295,8 +295,8 @@ static inline int do_exception(struct pt
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 0d60168..a68d836 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -294,8 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
* user context.
*/
fault = VM_FAULT_BADCONTEXT;
@ -219,7 +220,7 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto out;
address = trans_exc_code & __FAIL_ADDR_MASK;
@@ -427,8 +427,8 @@ void __kprobes do_asce_exception(struct
@@ -426,8 +426,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma;
@ -230,11 +231,11 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/score/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/score/mm/fault.c
+++ linux-3.2/arch/score/mm/fault.c
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_
diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
index 4c12824..59fccbe 100644
--- a/arch/score/mm/fault.c
+++ b/arch/score/mm/fault.c
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -243,11 +244,11 @@ Index: linux-3.2/arch/score/mm/fault.c
goto bad_area_nosemaphore;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sh/mm/fault_32.c
===================================================================
--- linux-3.2.orig/arch/sh/mm/fault_32.c
+++ linux-3.2/arch/sh/mm/fault_32.c
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
index a67ac56..643670d 100644
--- a/arch/sh/mm/fault_32.c
+++ b/arch/sh/mm/fault_32.c
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@ -256,11 +257,11 @@ Index: linux-3.2/arch/sh/mm/fault_32.c
goto no_context;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sparc/mm/fault_32.c
===================================================================
--- linux-3.2.orig/arch/sparc/mm/fault_32.c
+++ linux-3.2/arch/sparc/mm/fault_32.c
@@ -247,7 +247,7 @@ asmlinkage void do_sparc_fault(struct pt
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
index e0742c1..054cf56 100644
--- a/arch/sparc/mm/fault_32.c
+++ b/arch/sparc/mm/fault_32.c
@@ -247,7 +247,7 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -269,11 +270,11 @@ Index: linux-3.2/arch/sparc/mm/fault_32.c
goto no_context;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/sparc/mm/fault_64.c
===================================================================
--- linux-3.2.orig/arch/sparc/mm/fault_64.c
+++ linux-3.2/arch/sparc/mm/fault_64.c
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fau
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
index 9d691a5..f6572f8 100644
--- a/arch/sparc/mm/fault_64.c
+++ b/arch/sparc/mm/fault_64.c
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@ -282,11 +283,11 @@ Index: linux-3.2/arch/sparc/mm/fault_64.c
goto intr_or_no_mm;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/tile/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/tile/mm/fault.c
+++ linux-3.2/arch/tile/mm/fault.c
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_r
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
index ecdb016..1b6fa51 100644
--- a/arch/tile/mm/fault.c
+++ b/arch/tile/mm/fault.c
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running in an
* atomic region then we must not take the fault.
*/
@ -295,11 +296,11 @@ Index: linux-3.2/arch/tile/mm/fault.c
vma = NULL; /* happy compiler */
goto bad_area_nosemaphore;
}
Index: linux-3.2/arch/um/kernel/trap.c
===================================================================
--- linux-3.2.orig/arch/um/kernel/trap.c
+++ linux-3.2/arch/um/kernel/trap.c
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
index a283400..7878069 100644
--- a/arch/um/kernel/trap.c
+++ b/arch/um/kernel/trap.c
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
* If the fault was during atomic operation, don't take the fault, just
* fail.
*/
@ -308,11 +309,11 @@ Index: linux-3.2/arch/um/kernel/trap.c
goto out_nosemaphore;
down_read(&mm->mmap_sem);
Index: linux-3.2/arch/x86/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/x86/mm/fault.c
+++ linux-3.2/arch/x86/mm/fault.c
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsi
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 191015f..b567837 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@ -321,10 +322,10 @@ Index: linux-3.2/arch/x86/mm/fault.c
bad_area_nosemaphore(regs, error_code, address);
return;
}
Index: linux-3.2/arch/xtensa/mm/fault.c
===================================================================
--- linux-3.2.orig/arch/xtensa/mm/fault.c
+++ linux-3.2/arch/xtensa/mm/fault.c
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
index 705f483..8f3f52a 100644
--- a/arch/xtensa/mm/fault.c
+++ b/arch/xtensa/mm/fault.c
@@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)
/* If we're in an interrupt or have no user
* context, we must not take the fault..
@ -334,10 +335,10 @@ Index: linux-3.2/arch/xtensa/mm/fault.c
bad_page_fault(regs, address, SIGSEGV);
return;
}
Index: linux-3.2/include/linux/sched.h
===================================================================
--- linux-3.2.orig/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h
diff --git a/include/linux/sched.h b/include/linux/sched.h
index bce86f9..8cb4365 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -91,6 +91,7 @@ struct sched_param {
#include <linux/latencytop.h>
#include <linux/cred.h>
@ -374,11 +375,11 @@ Index: linux-3.2/include/linux/sched.h
/*
* Priority of a process goes from 0..MAX_PRIO-1, valid RT
* priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
Index: linux-3.2/kernel/fork.c
===================================================================
--- linux-3.2.orig/kernel/fork.c
+++ linux-3.2/kernel/fork.c
@@ -1193,7 +1193,9 @@ static struct task_struct *copy_process(
diff --git a/kernel/fork.c b/kernel/fork.c
index a17bc75..7992f54 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1196,7 +1196,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->hardirq_context = 0;
p->softirq_context = 0;
#endif
@ -388,3 +389,6 @@ Index: linux-3.2/kernel/fork.c
#ifdef CONFIG_LOCKDEP
p->lockdep_depth = 0; /* no locks held yet */
p->curr_chain_key = 0;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: mm: raw_pagefault_disable
From 48b2128f0cb2e9503cce884a100c636729eb6b23 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Fri Aug 05 17:16:58 CEST 2011
Date: Fri, 5 Aug 2011 17:16:58 +0200
Subject: [PATCH 048/267] mm: raw_pagefault_disable
Adding migrate_disable() to pagefault_disable() to preserve the
per-cpu thing for kmap_atomic might not have been the best of choices.
@ -70,7 +71,6 @@ that up by adding raw_pagefault_disable().
[<ffffffff814ffb38>] smp_apic_timer_interrupt+0x85/0x98
[<ffffffff814fef13>] apic_timer_interrupt+0x13/0x20
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org
---
@ -78,10 +78,10 @@ Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org
mm/memory.c | 2 ++
2 files changed, 30 insertions(+), 2 deletions(-)
Index: linux-3.2/include/linux/uaccess.h
===================================================================
--- linux-3.2.orig/include/linux/uaccess.h
+++ linux-3.2/include/linux/uaccess.h
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
index 9414a1b..44b3751 100644
--- a/include/linux/uaccess.h
+++ b/include/linux/uaccess.h
@@ -8,8 +8,34 @@
* These routines enable/disable the pagefault handler in that
* it will not take any MM locks and go straight to the fixup table.
@ -117,7 +117,7 @@ Index: linux-3.2/include/linux/uaccess.h
#ifndef ARCH_HAS_NOCACHE_UACCESS
@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_
@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_user_nocache(void *to,
mm_segment_t old_fs = get_fs(); \
\
set_fs(KERNEL_DS); \
@ -129,11 +129,11 @@ Index: linux-3.2/include/linux/uaccess.h
set_fs(old_fs); \
ret; \
})
Index: linux-3.2/mm/memory.c
===================================================================
--- linux-3.2.orig/mm/memory.c
+++ linux-3.2/mm/memory.c
@@ -3436,6 +3436,7 @@ unlock:
diff --git a/mm/memory.c b/mm/memory.c
index 454ad3f..a3f7ed8 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3444,6 +3444,7 @@ unlock:
return 0;
}
@ -141,7 +141,7 @@ Index: linux-3.2/mm/memory.c
void pagefault_disable(void)
{
inc_preempt_count();
@@ -3464,6 +3465,7 @@ void pagefault_enable(void)
@@ -3472,6 +3473,7 @@ void pagefault_enable(void)
preempt_check_resched();
}
EXPORT_SYMBOL_GPL(pagefault_enable);
@ -149,3 +149,6 @@ Index: linux-3.2/mm/memory.c
/*
* By the time we get here, we already hold the mm semaphore
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: filemap-fix-up.patch
From 90e4703e2535c334bf845c719179075440e4fdca Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 17 Jun 2011 18:56:24 +0200
Subject: [PATCH 049/267] filemap-fix-up.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Wrecked-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
@ -9,11 +10,11 @@ Link: http://lkml.kernel.org/n/tip-m6yuzd6ul717hlnl2gj6p3ou@git.kernel.org
mm/filemap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/mm/filemap.c
===================================================================
--- linux-3.2.orig/mm/filemap.c
+++ linux-3.2/mm/filemap.c
@@ -2044,7 +2044,7 @@ size_t iov_iter_copy_from_user_atomic(st
diff --git a/mm/filemap.c b/mm/filemap.c
index 03c5b0e..4a30d36 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2044,7 +2044,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page,
char *kaddr;
size_t copied;
@ -22,3 +23,6 @@ Index: linux-3.2/mm/filemap.c
kaddr = kmap_atomic(page, KM_USER0);
if (likely(i->nr_segs == 1)) {
int left;
--
1.7.10

View File

@ -1,6 +1,8 @@
From d7f4a8b96d5578399fab50795bb26568d3a4a1dc Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 25 Jul 2009 22:06:27 +0200
Subject: mm: Remove preempt count from pagefault disable/enable
Subject: [PATCH 050/267] mm: Remove preempt count from pagefault
disable/enable
Now that all users are cleaned up, we can remove the preemption count.
@ -9,11 +11,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/memory.c | 7 -------
1 file changed, 7 deletions(-)
Index: linux-3.2/mm/memory.c
===================================================================
--- linux-3.2.orig/mm/memory.c
+++ linux-3.2/mm/memory.c
@@ -3439,7 +3439,6 @@ unlock:
diff --git a/mm/memory.c b/mm/memory.c
index a3f7ed8..7fa62d9 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3447,7 +3447,6 @@ unlock:
#ifdef CONFIG_PREEMPT_RT_FULL
void pagefault_disable(void)
{
@ -21,7 +23,7 @@ Index: linux-3.2/mm/memory.c
current->pagefault_disabled++;
/*
* make sure to have issued the store before a pagefault
@@ -3457,12 +3456,6 @@ void pagefault_enable(void)
@@ -3465,12 +3464,6 @@ void pagefault_enable(void)
*/
barrier();
current->pagefault_disabled--;
@ -34,3 +36,6 @@ Index: linux-3.2/mm/memory.c
}
EXPORT_SYMBOL_GPL(pagefault_enable);
#endif
--
1.7.10

View File

@ -1,22 +1,22 @@
From 7aa88c0924519e9f412b40d1b5fe72bd7d9afff0 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:25 -0500
Subject: x86: highmem: Replace BUG_ON by WARN_ON
Subject: [PATCH 051/267] x86: highmem: Replace BUG_ON by WARN_ON
The machine might survive that problem and be at least in a state
which allows us to get more information about the problem.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/mm/highmem_32.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/arch/x86/mm/highmem_32.c
===================================================================
--- linux-3.2.orig/arch/x86/mm/highmem_32.c
+++ linux-3.2/arch/x86/mm/highmem_32.c
@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c
index f4f29b1..71bd7d6 100644
--- a/arch/x86/mm/highmem_32.c
+++ b/arch/x86/mm/highmem_32.c
@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
type = kmap_atomic_idx_push();
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
@ -25,3 +25,6 @@ Index: linux-3.2/arch/x86/mm/highmem_32.c
set_pte(kmap_pte-idx, mk_pte(page, prot));
arch_flush_lazy_mmu_mode();
--
1.7.10

View File

@ -1,6 +1,7 @@
From f79388c83db88b6ef89497405df9c630964b512e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 15 Jul 2010 10:29:00 +0200
Subject: suspend: Prevent might sleep splats
Subject: [PATCH 052/267] suspend: Prevent might sleep splats
timekeeping suspend/resume calls read_persistant_clock() which takes
rtc_lock. That results in might sleep warnings because at that point
@ -16,18 +17,17 @@ and restoring it to SYSTEM_RUNNING afer sysdev_resume().
Needs to be revisited.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/kernel.h | 2 +-
kernel/power/hibernate.c | 7 +++++++
kernel/power/suspend.c | 4 ++++
3 files changed, 12 insertions(+), 1 deletion(-)
Index: linux-3.2/include/linux/kernel.h
===================================================================
--- linux-3.2.orig/include/linux/kernel.h
+++ linux-3.2/include/linux/kernel.h
@@ -356,7 +356,7 @@ extern enum system_states {
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index a70783d..22bdd4b 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -369,7 +369,7 @@ extern enum system_states {
SYSTEM_HALT,
SYSTEM_POWER_OFF,
SYSTEM_RESTART,
@ -36,11 +36,11 @@ Index: linux-3.2/include/linux/kernel.h
} system_state;
#define TAINT_PROPRIETARY_MODULE 0
Index: linux-3.2/kernel/power/hibernate.c
===================================================================
--- linux-3.2.orig/kernel/power/hibernate.c
+++ linux-3.2/kernel/power/hibernate.c
@@ -284,6 +284,8 @@ static int create_image(int platform_mod
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index 7c0d578..32741e2 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -284,6 +284,8 @@ static int create_image(int platform_mode)
local_irq_disable();
@ -49,7 +49,7 @@ Index: linux-3.2/kernel/power/hibernate.c
error = syscore_suspend();
if (error) {
printk(KERN_ERR "PM: Some system devices failed to power down, "
@@ -311,6 +313,7 @@ static int create_image(int platform_mod
@@ -311,6 +313,7 @@ static int create_image(int platform_mode)
syscore_resume();
Enable_irqs:
@ -57,7 +57,7 @@ Index: linux-3.2/kernel/power/hibernate.c
local_irq_enable();
Enable_cpus:
@@ -437,6 +440,7 @@ static int resume_target_kernel(bool pla
@@ -437,6 +440,7 @@ static int resume_target_kernel(bool platform_mode)
goto Enable_cpus;
local_irq_disable();
@ -65,7 +65,7 @@ Index: linux-3.2/kernel/power/hibernate.c
error = syscore_suspend();
if (error)
@@ -470,6 +474,7 @@ static int resume_target_kernel(bool pla
@@ -470,6 +474,7 @@ static int resume_target_kernel(bool platform_mode)
syscore_resume();
Enable_irqs:
@ -89,11 +89,11 @@ Index: linux-3.2/kernel/power/hibernate.c
local_irq_enable();
enable_nonboot_cpus();
Index: linux-3.2/kernel/power/suspend.c
===================================================================
--- linux-3.2.orig/kernel/power/suspend.c
+++ linux-3.2/kernel/power/suspend.c
@@ -171,6 +171,8 @@ static int suspend_enter(suspend_state_t
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index 4953dc0..691f46e 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -171,6 +171,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
arch_suspend_disable_irqs();
BUG_ON(!irqs_disabled());
@ -102,7 +102,7 @@ Index: linux-3.2/kernel/power/suspend.c
error = syscore_suspend();
if (!error) {
*wakeup = pm_wakeup_pending();
@@ -181,6 +183,8 @@ static int suspend_enter(suspend_state_t
@@ -181,6 +183,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
syscore_resume();
}
@ -111,3 +111,6 @@ Index: linux-3.2/kernel/power/suspend.c
arch_suspend_enable_irqs();
BUG_ON(irqs_disabled());
--
1.7.10

View File

@ -1,6 +1,7 @@
From 417e0d7c3de36b87075e446b0920e480fb96a871 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 13 Aug 2009 09:04:10 +0200
Subject: OF: Fixup resursive locking code paths
Subject: [PATCH 053/267] OF: Fixup resursive locking code paths
There is no real reason to use a rwlock for devtree_lock. It even
could be a mutex, but unfortunately it's locked from cpu hotplug
@ -12,16 +13,15 @@ recursive locking pathes which allows us to convert devtree_lock to a
read_lock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/of/base.c | 93 +++++++++++++++++++++++++++++++++++++++++-------------
drivers/of/base.c | 93 ++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 71 insertions(+), 22 deletions(-)
Index: linux-3.2/drivers/of/base.c
===================================================================
--- linux-3.2.orig/drivers/of/base.c
+++ linux-3.2/drivers/of/base.c
@@ -163,16 +163,14 @@ void of_node_put(struct device_node *nod
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 9b6588e..200f2dd 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -163,16 +163,14 @@ void of_node_put(struct device_node *node)
EXPORT_SYMBOL(of_node_put);
#endif /* !CONFIG_SPARC */
@ -40,7 +40,7 @@ Index: linux-3.2/drivers/of/base.c
for (pp = np->properties; pp != 0; pp = pp->next) {
if (of_prop_cmp(pp->name, name) == 0) {
if (lenp != 0)
@@ -180,6 +178,18 @@ struct property *of_find_property(const
@@ -180,6 +178,18 @@ struct property *of_find_property(const struct device_node *np,
break;
}
}
@ -99,7 +99,7 @@ Index: linux-3.2/drivers/of/base.c
if (cp == NULL)
return 0;
while (cplen > 0) {
@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct
@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct device_node *device,
return 0;
}
@ -120,7 +120,7 @@ Index: linux-3.2/drivers/of/base.c
EXPORT_SYMBOL(of_device_is_compatible);
/**
@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_n
@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_node(struct device_node *from,
if (type
&& !(np->type && (of_node_cmp(np->type, type) == 0)))
continue;
@ -149,7 +149,7 @@ Index: linux-3.2/drivers/of/base.c
{
if (!matches)
return NULL;
@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node
@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
match &= node->type
&& !strcmp(matches->type, node->type);
if (matches->compatible[0])
@ -184,7 +184,7 @@ Index: linux-3.2/drivers/of/base.c
EXPORT_SYMBOL(of_match_node);
/**
@@ -563,7 +612,7 @@ struct device_node *of_find_matching_nod
@@ -563,7 +612,7 @@ struct device_node *of_find_matching_node(struct device_node *from,
read_lock(&devtree_lock);
np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) {
@ -193,3 +193,6 @@ Index: linux-3.2/drivers/of/base.c
break;
}
of_node_put(from);
--
1.7.10

View File

@ -1,19 +1,20 @@
Subject: of-convert-devtree-lock.patch
From 580a4dd59597f8d389ab340f87ebb0ad654db7e3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 14:35:34 +0100
Subject: [PATCH 054/267] of-convert-devtree-lock.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/sparc/kernel/prom_common.c | 4 -
drivers/of/base.c | 92 ++++++++++++++++++++++------------------
include/linux/of.h | 2
arch/sparc/kernel/prom_common.c | 4 +-
drivers/of/base.c | 92 ++++++++++++++++++++++-----------------
include/linux/of.h | 2 +-
3 files changed, 55 insertions(+), 43 deletions(-)
Index: linux-3.2/arch/sparc/kernel/prom_common.c
===================================================================
--- linux-3.2.orig/arch/sparc/kernel/prom_common.c
+++ linux-3.2/arch/sparc/kernel/prom_common.c
@@ -65,7 +65,7 @@ int of_set_property(struct device_node *
diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c
index 741df91..ca73a28 100644
--- a/arch/sparc/kernel/prom_common.c
+++ b/arch/sparc/kernel/prom_common.c
@@ -65,7 +65,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
err = -ENODEV;
mutex_lock(&of_set_property_mutex);
@ -22,7 +23,7 @@ Index: linux-3.2/arch/sparc/kernel/prom_common.c
prevp = &dp->properties;
while (*prevp) {
struct property *prop = *prevp;
@@ -92,7 +92,7 @@ int of_set_property(struct device_node *
@@ -92,7 +92,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
}
prevp = &(*prevp)->next;
}
@ -31,10 +32,10 @@ Index: linux-3.2/arch/sparc/kernel/prom_common.c
mutex_unlock(&of_set_property_mutex);
/* XXX Upate procfs if necessary... */
Index: linux-3.2/drivers/of/base.c
===================================================================
--- linux-3.2.orig/drivers/of/base.c
+++ linux-3.2/drivers/of/base.c
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 200f2dd..becc6ca 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -54,7 +54,7 @@ static DEFINE_MUTEX(of_aliases_mutex);
/* use when traversing tree through the allnext, child, sibling,
* or parent members of struct device_node.
@ -44,7 +45,7 @@ Index: linux-3.2/drivers/of/base.c
int of_n_addr_cells(struct device_node *np)
{
@@ -187,10 +187,11 @@ struct property *of_find_property(const
@@ -187,10 +187,11 @@ struct property *of_find_property(const struct device_node *np,
int *lenp)
{
struct property *pp;
@ -58,7 +59,7 @@ Index: linux-3.2/drivers/of/base.c
return pp;
}
@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(st
@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(struct device_node *prev)
{
struct device_node *np;
@ -74,7 +75,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_all_nodes);
@@ -273,11 +274,12 @@ static int __of_device_is_compatible(con
@@ -273,11 +274,12 @@ static int __of_device_is_compatible(const struct device_node *device,
int of_device_is_compatible(const struct device_node *device,
const char *compat)
{
@ -124,7 +125,7 @@ Index: linux-3.2/drivers/of/base.c
return parent;
}
@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(co
@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(const struct device_node *node,
struct device_node *prev)
{
struct device_node *next;
@ -160,7 +161,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_path);
@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name
@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name(struct device_node *from,
const char *name)
{
struct device_node *np;
@ -179,7 +180,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_name);
@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type
@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type(struct device_node *from,
const char *type)
{
struct device_node *np;
@ -198,7 +199,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_type);
@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_n
@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_node(struct device_node *from,
const char *type, const char *compatible)
{
struct device_node *np;
@ -209,7 +210,7 @@ Index: linux-3.2/drivers/of/base.c
np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) {
if (type
@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_n
@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_node(struct device_node *from,
break;
}
of_node_put(from);
@ -218,7 +219,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_compatible_node);
@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_pr
@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_property(struct device_node *from,
{
struct device_node *np;
struct property *pp;
@ -229,7 +230,7 @@ Index: linux-3.2/drivers/of/base.c
np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) {
for (pp = np->properties; pp != 0; pp = pp->next) {
@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_pr
@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_property(struct device_node *from,
}
out:
of_node_put(from);
@ -238,7 +239,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_with_property);
@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node
@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
const struct device_node *node)
{
const struct of_device_id *match;
@ -252,7 +253,7 @@ Index: linux-3.2/drivers/of/base.c
return match;
}
EXPORT_SYMBOL(of_match_node);
@@ -608,15 +619,16 @@ struct device_node *of_find_matching_nod
@@ -608,15 +619,16 @@ struct device_node *of_find_matching_node(struct device_node *from,
const struct of_device_id *matches)
{
struct device_node *np;
@ -271,7 +272,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_matching_node);
@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phan
@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phandle(phandle handle)
{
struct device_node *np;
@ -286,7 +287,7 @@ Index: linux-3.2/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_phandle);
@@ -998,18 +1010,18 @@ int prom_add_property(struct device_node
@@ -998,18 +1010,18 @@ int prom_add_property(struct device_node *np, struct property *prop)
unsigned long flags;
prop->next = NULL;
@ -308,7 +309,7 @@ Index: linux-3.2/drivers/of/base.c
#ifdef CONFIG_PROC_DEVICETREE
/* try to add to proc as well if it was initialized */
@@ -1034,7 +1046,7 @@ int prom_remove_property(struct device_n
@@ -1034,7 +1046,7 @@ int prom_remove_property(struct device_node *np, struct property *prop)
unsigned long flags;
int found = 0;
@ -317,7 +318,7 @@ Index: linux-3.2/drivers/of/base.c
next = &np->properties;
while (*next) {
if (*next == prop) {
@@ -1047,7 +1059,7 @@ int prom_remove_property(struct device_n
@@ -1047,7 +1059,7 @@ int prom_remove_property(struct device_node *np, struct property *prop)
}
next = &(*next)->next;
}
@ -326,7 +327,7 @@ Index: linux-3.2/drivers/of/base.c
if (!found)
return -ENODEV;
@@ -1077,7 +1089,7 @@ int prom_update_property(struct device_n
@@ -1077,7 +1089,7 @@ int prom_update_property(struct device_node *np,
unsigned long flags;
int found = 0;
@ -335,7 +336,7 @@ Index: linux-3.2/drivers/of/base.c
next = &np->properties;
while (*next) {
if (*next == oldprop) {
@@ -1091,7 +1103,7 @@ int prom_update_property(struct device_n
@@ -1091,7 +1103,7 @@ int prom_update_property(struct device_node *np,
}
next = &(*next)->next;
}
@ -344,7 +345,7 @@ Index: linux-3.2/drivers/of/base.c
if (!found)
return -ENODEV;
@@ -1121,12 +1133,12 @@ void of_attach_node(struct device_node *
@@ -1121,12 +1133,12 @@ void of_attach_node(struct device_node *np)
{
unsigned long flags;
@ -359,7 +360,7 @@ Index: linux-3.2/drivers/of/base.c
}
/**
@@ -1140,7 +1152,7 @@ void of_detach_node(struct device_node *
@@ -1140,7 +1152,7 @@ void of_detach_node(struct device_node *np)
struct device_node *parent;
unsigned long flags;
@ -368,7 +369,7 @@ Index: linux-3.2/drivers/of/base.c
parent = np->parent;
if (!parent)
@@ -1171,7 +1183,7 @@ void of_detach_node(struct device_node *
@@ -1171,7 +1183,7 @@ void of_detach_node(struct device_node *np)
of_node_set_flag(np, OF_DETACHED);
out_unlock:
@ -377,10 +378,10 @@ Index: linux-3.2/drivers/of/base.c
}
#endif /* defined(CONFIG_OF_DYNAMIC) */
Index: linux-3.2/include/linux/of.h
===================================================================
--- linux-3.2.orig/include/linux/of.h
+++ linux-3.2/include/linux/of.h
diff --git a/include/linux/of.h b/include/linux/of.h
index 4948552..e87303d 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -71,7 +71,7 @@ struct device_node {
extern struct device_node *allnodes;
extern struct device_node *of_chosen;
@ -390,3 +391,6 @@ Index: linux-3.2/include/linux/of.h
static inline bool of_have_populated_dt(void)
{
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: list-add-list-last-entry.patch
From cbf1e12f91e468d580db7a5ecefa0bdab8021cdf Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 21 Jun 2011 11:22:36 +0200
Subject: [PATCH 055/267] list-add-list-last-entry.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/list.h | 11 +++++++++++
1 file changed, 11 insertions(+)
Index: linux-3.2/include/linux/list.h
===================================================================
--- linux-3.2.orig/include/linux/list.h
+++ linux-3.2/include/linux/list.h
@@ -362,6 +362,17 @@ static inline void list_splice_tail_init
diff --git a/include/linux/list.h b/include/linux/list.h
index cc6d2aa..7a9851b 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -362,6 +362,17 @@ static inline void list_splice_tail_init(struct list_head *list,
list_entry((ptr)->next, type, member)
/**
@ -29,3 +30,6 @@ Index: linux-3.2/include/linux/list.h
* list_for_each - iterate over a list
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list.
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: mm-page-alloc-use-list-last-entry.patch
From eadff32638247080501a10cd5294d86e535c0019 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 21 Jun 2011 11:24:35 +0200
Subject: [PATCH 056/267] mm-page-alloc-use-list-last-entry.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/mm/page_alloc.c
===================================================================
--- linux-3.2.orig/mm/page_alloc.c
+++ linux-3.2/mm/page_alloc.c
@@ -625,7 +625,7 @@ static void free_pcppages_bulk(struct zo
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 485be89..3344154 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -625,7 +625,7 @@ static void free_pcppages_bulk(struct zone *zone, int count,
batch_free = to_free;
do {
@ -20,3 +21,6 @@ Index: linux-3.2/mm/page_alloc.c
/* must delete as __free_one_page list manipulates */
list_del(&page->lru);
/* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: mm-slab-move-debug-out.patch
From a04f0b4dea8eaefdb1f1c10122a74aee2875b1f0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 20 Jun 2011 10:42:04 +0200
Subject: [PATCH 057/267] mm-slab-move-debug-out.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
mm/slab.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/mm/slab.c
===================================================================
--- linux-3.2.orig/mm/slab.c
+++ linux-3.2/mm/slab.c
@@ -3851,10 +3851,10 @@ void kmem_cache_free(struct kmem_cache *
diff --git a/mm/slab.c b/mm/slab.c
index b76905e..1fd9983 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3851,10 +3851,10 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
{
unsigned long flags;
@ -36,3 +37,6 @@ Index: linux-3.2/mm/slab.c
__cache_free(c, (void *)objp, __builtin_return_address(0));
local_irq_restore(flags);
}
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: rwsem-inlcude-fix.patch
From dde840601c92b17bf87a3357ac64ad703ef3e7e2 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 15 Jul 2011 21:24:27 +0200
Subject: [PATCH 058/267] rwsem-inlcude-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/pid.h | 1 +
1 file changed, 1 insertion(+)
Index: linux-3.2/include/linux/pid.h
===================================================================
--- linux-3.2.orig/include/linux/pid.h
+++ linux-3.2/include/linux/pid.h
diff --git a/include/linux/pid.h b/include/linux/pid.h
index b152d44..7f33683 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -2,6 +2,7 @@
#define _LINUX_PID_H
@ -19,3 +20,6 @@ Index: linux-3.2/include/linux/pid.h
enum pid_type
{
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: sysctl-include-fix.patch
From b44a025ed02cf7deb699ff642758cea3b6198cb7 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 14 Nov 2011 10:52:34 +0100
Subject: [PATCH 059/267] sysctl-include-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/sysctl.h | 1 +
1 file changed, 1 insertion(+)
Index: linux-3.2/include/linux/sysctl.h
===================================================================
--- linux-3.2.orig/include/linux/sysctl.h
+++ linux-3.2/include/linux/sysctl.h
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 703cfa33..b954c41 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -932,6 +932,7 @@ enum
#include <linux/list.h>
#include <linux/rcupdate.h>
@ -19,3 +20,6 @@ Index: linux-3.2/include/linux/sysctl.h
/* For the /proc/sys support */
struct ctl_table;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: net-flip-lock-dep-thingy.patch
From 7f2038cd9f9a170fb63f0ab16d1ff7a8b9ee92cf Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 10:59:58 +0200
Subject: [PATCH 060/267] net-flip-lock-dep-thingy.patch
=======================================================
[ INFO: possible circular locking dependency detected ]
@ -14,7 +15,6 @@ but task is already holding lock:
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (sk_lock-AF_INET){+.+...}:
@ -87,17 +87,16 @@ Call Trace:
[<ffffffff8112667a>] sys_close+0xf8/0x13d
[<ffffffff814ae882>] system_call_fastpath+0x16/0x1b
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
net/core/sock.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Index: linux-3.2/net/core/sock.c
===================================================================
--- linux-3.2.orig/net/core/sock.c
+++ linux-3.2/net/core/sock.c
@@ -2031,12 +2031,11 @@ void lock_sock_nested(struct sock *sk, i
diff --git a/net/core/sock.c b/net/core/sock.c
index b23f174..a87eb16 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -2031,12 +2031,11 @@ void lock_sock_nested(struct sock *sk, int subclass)
if (sk->sk_lock.owned)
__lock_sock(sk);
sk->sk_lock.owned = 1;
@ -111,3 +110,6 @@ Index: linux-3.2/net/core/sock.c
}
EXPORT_SYMBOL(lock_sock_nested);
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: softirq-thread-do-softirq.patch
From 96af58acea4b1f2d36ff57313a95c5cd6e8c0e9c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 15:44:15 +0200
Subject: [PATCH 061/267] softirq-thread-do-softirq.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
net/core/dev.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
Index: linux-3.2/include/linux/interrupt.h
===================================================================
--- linux-3.2.orig/include/linux/interrupt.h
+++ linux-3.2/include/linux/interrupt.h
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index a64b00e..21b94de 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -454,6 +454,8 @@ struct softirq_action
asmlinkage void do_softirq(void);
@ -21,10 +22,10 @@ Index: linux-3.2/include/linux/interrupt.h
extern void open_softirq(int nr, void (*action)(struct softirq_action *));
extern void softirq_init(void);
static inline void __raise_softirq_irqoff(unsigned int nr)
Index: linux-3.2/net/core/dev.c
===================================================================
--- linux-3.2.orig/net/core/dev.c
+++ linux-3.2/net/core/dev.c
diff --git a/net/core/dev.c b/net/core/dev.c
index 55cd370..c28987a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3037,7 +3037,7 @@ int netif_rx_ni(struct sk_buff *skb)
preempt_disable();
err = netif_rx(skb);
@ -34,3 +35,6 @@ Index: linux-3.2/net/core/dev.c
preempt_enable();
return err;
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: softirq-split-out-code.patch
From afd97d0727b378d48a20073ae838cb800ec0c7df Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 15:46:49 +0200
Subject: [PATCH 062/267] softirq-split-out-code.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/softirq.c | 94 ++++++++++++++++++++++++++++++-------------------------
kernel/softirq.c | 94 ++++++++++++++++++++++++++++++------------------------
1 file changed, 52 insertions(+), 42 deletions(-)
Index: linux-3.2/kernel/softirq.c
===================================================================
--- linux-3.2.orig/kernel/softirq.c
+++ linux-3.2/kernel/softirq.c
diff --git a/kernel/softirq.c b/kernel/softirq.c
index a8becbf..c6c5824 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -76,6 +76,34 @@ static void wakeup_softirqd(void)
wake_up_process(tsk);
}
@ -128,7 +129,7 @@ Index: linux-3.2/kernel/softirq.c
#ifndef __ARCH_HAS_DO_SOFTIRQ
asmlinkage void do_softirq(void)
@@ -743,22 +761,14 @@ static int run_ksoftirqd(void * __bind_c
@@ -743,22 +761,14 @@ static int run_ksoftirqd(void * __bind_cpu)
while (!kthread_should_stop()) {
preempt_disable();
@ -153,3 +154,6 @@ Index: linux-3.2/kernel/softirq.c
__preempt_enable_no_resched();
cond_resched();
preempt_disable();
--
1.7.10

View File

@ -1,22 +1,23 @@
From f6adc04c439c56acd6163820b2ac6251a138755f Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:27 -0500
Subject: x86: Do not unmask io_apic when interrupt is in progress
Subject: [PATCH 063/267] x86: Do not unmask io_apic when interrupt is in
progress
With threaded interrupts we might see an interrupt in progress on
migration. Do not unmask it when this is the case.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/kernel/apic/io_apic.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c
+++ linux-3.2/arch/x86/kernel/apic/io_apic.c
@@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_da
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 8980555..91527bc 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_data *data)
irq_complete_move(cfg);
#ifdef CONFIG_GENERIC_PENDING_IRQ
/* If we are moving the irq we need to mask it */
@ -26,3 +27,6 @@ Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
do_unmask_irq = 1;
mask_ioapic(cfg);
}
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: x86-32-fix-signal-crap.patch
From 52c45c824d10baf0dd84cc56dc2fc35536d4fa49 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 15:59:38 +0200
Subject: [PATCH 064/267] x86-32-fix-signal-crap.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/kernel/entry_32.S | 8 ++++++++
1 file changed, 8 insertions(+)
Index: linux-3.2/arch/x86/kernel/entry_32.S
===================================================================
--- linux-3.2.orig/arch/x86/kernel/entry_32.S
+++ linux-3.2/arch/x86/kernel/entry_32.S
@@ -626,7 +626,11 @@ work_notifysig: # deal with pending s
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
index bcda816..426cf51 100644
--- a/arch/x86/kernel/entry_32.S
+++ b/arch/x86/kernel/entry_32.S
@@ -629,7 +629,11 @@ work_notifysig: # deal with pending signals and
jne work_notifysig_v86 # returning to kernel-space or
# vm86-space
xorl %edx, %edx
@ -23,7 +24,7 @@ Index: linux-3.2/arch/x86/kernel/entry_32.S
jmp resume_userspace_sig
ALIGN
@@ -639,7 +643,11 @@ work_notifysig_v86:
@@ -642,7 +646,11 @@ work_notifysig_v86:
movl %esp, %eax
#endif
xorl %edx, %edx
@ -35,3 +36,6 @@ Index: linux-3.2/arch/x86/kernel/entry_32.S
jmp resume_userspace_sig
END(work_pending)
--
1.7.10

View File

@ -1,5 +1,7 @@
Subject: x86: Do not disable preemption in int3 on 32bit
From 31561541540fcec25c731c360a66fab17d50fa33 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Tue, 10 Apr 2012 14:33:57 -0400
Subject: [PATCH 065/267] x86: Do not disable preemption in int3 on 32bit
Preemption must be disabled before enabling interrupts in do_trap
on x86_64 because the stack in use for int3 and debug is a per CPU
@ -17,16 +19,15 @@ when the stack is on the IST.
Cc: stable-rt@vger.kernel.org
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/kernel/traps.c | 32 +++++++++++++++++++++++---------
1 file changed, 23 insertions(+), 9 deletions(-)
Index: linux-3.2/arch/x86/kernel/traps.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/traps.c
+++ linux-3.2/arch/x86/kernel/traps.c
@@ -87,9 +87,21 @@ static inline void conditional_sti(struc
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 31d9d0f..cc88aec 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -87,9 +87,21 @@ static inline void conditional_sti(struct pt_regs *regs)
local_irq_enable();
}
@ -49,7 +50,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
if (regs->flags & X86_EFLAGS_IF)
local_irq_enable();
}
@@ -100,11 +112,13 @@ static inline void conditional_cli(struc
@@ -100,11 +112,13 @@ static inline void conditional_cli(struct pt_regs *regs)
local_irq_disable();
}
@ -64,7 +65,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
}
static void __kprobes
@@ -222,9 +236,9 @@ dotraplinkage void do_stack_segment(stru
@@ -222,9 +236,9 @@ dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code)
if (notify_die(DIE_TRAP, "stack segment", regs, error_code,
12, SIGBUS) == NOTIFY_STOP)
return;
@ -76,7 +77,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
}
dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
@@ -316,9 +330,9 @@ dotraplinkage void __kprobes do_int3(str
@@ -316,9 +330,9 @@ dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code)
return;
#endif
@ -88,7 +89,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
}
#ifdef CONFIG_X86_64
@@ -412,12 +426,12 @@ dotraplinkage void __kprobes do_debug(st
@@ -412,12 +426,12 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
return;
/* It's safe to allow irq's after DR6 has been saved */
@ -103,7 +104,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
return;
}
@@ -436,7 +450,7 @@ dotraplinkage void __kprobes do_debug(st
@@ -436,7 +450,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
si_code = get_si_code(tsk->thread.debugreg6);
if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp)
send_sigtrap(tsk, regs, error_code, si_code);
@ -112,3 +113,6 @@ Index: linux-3.2/arch/x86/kernel/traps.c
return;
}
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: rcu: Reduce lock section
From e48b25d1e88f0066fc74583020ad764cd0d002f5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 24 Jun 2011 22:23:02 +0200
Subject: [PATCH 066/267] rcu: Reduce lock section
So the waitqueue wakeup is outside the raw locked section.
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/rcutree_plugin.h | 14 ++++++++------
3 files changed, 11 insertions(+), 8 deletions(-)
Index: linux-3.2/kernel/rcutree.c
===================================================================
--- linux-3.2.orig/kernel/rcutree.c
+++ linux-3.2/kernel/rcutree.c
@@ -1221,7 +1221,7 @@ static void __rcu_offline_cpu(int cpu, s
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 6b76d81..8ef8675 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1221,7 +1221,7 @@ static void __rcu_offline_cpu(int cpu, struct rcu_state *rsp)
else
raw_spin_unlock_irqrestore(&rnp->lock, flags);
if (need_report & RCU_OFL_TASKS_EXP_GP)
@ -24,11 +25,11 @@ Index: linux-3.2/kernel/rcutree.c
rcu_node_kthread_setaffinity(rnp, -1);
}
Index: linux-3.2/kernel/rcutree.h
===================================================================
--- linux-3.2.orig/kernel/rcutree.h
+++ linux-3.2/kernel/rcutree.h
@@ -451,7 +451,8 @@ static void rcu_preempt_check_callbacks(
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index 849ce9e..dca495d 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -451,7 +451,8 @@ static void rcu_preempt_check_callbacks(int cpu);
static void rcu_preempt_process_callbacks(void);
void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu));
#if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU)
@ -38,11 +39,11 @@ Index: linux-3.2/kernel/rcutree.h
#endif /* #if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU) */
static int rcu_preempt_pending(int cpu);
static int rcu_preempt_needs_cpu(int cpu);
Index: linux-3.2/kernel/rcutree_plugin.h
===================================================================
--- linux-3.2.orig/kernel/rcutree_plugin.h
+++ linux-3.2/kernel/rcutree_plugin.h
@@ -407,7 +407,7 @@ static noinline void rcu_read_unlock_spe
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index 4b9b9f8..73cab33 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -407,7 +407,7 @@ static noinline void rcu_read_unlock_special(struct task_struct *t)
* then we need to report up the rcu_node hierarchy.
*/
if (!empty_exp && !rcu_preempted_readers_exp(rnp))
@ -51,7 +52,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
} else {
local_irq_restore(flags);
}
@@ -731,7 +731,8 @@ static int sync_rcu_preempt_exp_done(str
@@ -731,7 +731,8 @@ static int sync_rcu_preempt_exp_done(struct rcu_node *rnp)
*
* Caller must hold sync_rcu_preempt_exp_mutex.
*/
@ -61,7 +62,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
{
unsigned long flags;
unsigned long mask;
@@ -744,7 +745,8 @@ static void rcu_report_exp_rnp(struct rc
@@ -744,7 +745,8 @@ static void rcu_report_exp_rnp(struct rcu_state *rsp, struct rcu_node *rnp)
}
if (rnp->parent == NULL) {
raw_spin_unlock_irqrestore(&rnp->lock, flags);
@ -71,7 +72,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
break;
}
mask = rnp->grpmask;
@@ -777,7 +779,7 @@ sync_rcu_preempt_exp_init(struct rcu_sta
@@ -777,7 +779,7 @@ sync_rcu_preempt_exp_init(struct rcu_state *rsp, struct rcu_node *rnp)
must_wait = 1;
}
if (!must_wait)
@ -80,7 +81,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
}
/*
@@ -1069,9 +1071,9 @@ EXPORT_SYMBOL_GPL(synchronize_rcu_expedi
@@ -1069,9 +1071,9 @@ EXPORT_SYMBOL_GPL(synchronize_rcu_expedited);
* report on tasks preempted in RCU read-side critical sections during
* expedited RCU grace periods.
*/
@ -92,3 +93,6 @@ Index: linux-3.2/kernel/rcutree_plugin.h
}
#endif /* #ifdef CONFIG_HOTPLUG_CPU */
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: locking-various-init-fixes.patch
From dc11bfa3d93805ee1ad47b3b449f2ca456b2abd0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:25:03 +0200
Subject: [PATCH 067/267] locking-various-init-fixes.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/cred.c | 2 +-
5 files changed, 7 insertions(+), 7 deletions(-)
Index: linux-3.2/drivers/char/random.c
===================================================================
--- linux-3.2.orig/drivers/char/random.c
+++ linux-3.2/drivers/char/random.c
@@ -433,7 +433,7 @@ static struct entropy_store input_pool =
diff --git a/drivers/char/random.c b/drivers/char/random.c
index 786a856..026bdbb 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -433,7 +433,7 @@ static struct entropy_store input_pool = {
.poolinfo = &poolinfo_table[0],
.name = "input",
.limit = 1,
@ -24,7 +25,7 @@ Index: linux-3.2/drivers/char/random.c
.pool = input_pool_data
};
@@ -442,7 +442,7 @@ static struct entropy_store blocking_poo
@@ -442,7 +442,7 @@ static struct entropy_store blocking_pool = {
.name = "blocking",
.limit = 1,
.pull = &input_pool,
@ -33,7 +34,7 @@ Index: linux-3.2/drivers/char/random.c
.pool = blocking_pool_data
};
@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_
@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_pool = {
.poolinfo = &poolinfo_table[1],
.name = "nonblocking",
.pull = &input_pool,
@ -42,10 +43,10 @@ Index: linux-3.2/drivers/char/random.c
.pool = nonblocking_pool_data
};
Index: linux-3.2/drivers/usb/gadget/ci13xxx_udc.c
===================================================================
--- linux-3.2.orig/drivers/usb/gadget/ci13xxx_udc.c
+++ linux-3.2/drivers/usb/gadget/ci13xxx_udc.c
diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c
index 9a0c397..f526873 100644
--- a/drivers/usb/gadget/ci13xxx_udc.c
+++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -819,7 +819,7 @@ static struct {
} dbg_data = {
.idx = 0,
@ -55,10 +56,10 @@ Index: linux-3.2/drivers/usb/gadget/ci13xxx_udc.c
};
/**
Index: linux-3.2/fs/file.c
===================================================================
--- linux-3.2.orig/fs/file.c
+++ linux-3.2/fs/file.c
diff --git a/fs/file.c b/fs/file.c
index 4c6992d..375472d 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -422,7 +422,7 @@ struct files_struct init_files = {
.close_on_exec = (fd_set *)&init_files.close_on_exec_init,
.open_fds = (fd_set *)&init_files.open_fds_init,
@ -68,10 +69,10 @@ Index: linux-3.2/fs/file.c
};
/*
Index: linux-3.2/include/linux/idr.h
===================================================================
--- linux-3.2.orig/include/linux/idr.h
+++ linux-3.2/include/linux/idr.h
diff --git a/include/linux/idr.h b/include/linux/idr.h
index 255491c..4eaacf0 100644
--- a/include/linux/idr.h
+++ b/include/linux/idr.h
@@ -136,7 +136,7 @@ struct ida {
struct ida_bitmap *free_bitmap;
};
@ -81,10 +82,10 @@ Index: linux-3.2/include/linux/idr.h
#define DEFINE_IDA(name) struct ida name = IDA_INIT(name)
int ida_pre_get(struct ida *ida, gfp_t gfp_mask);
Index: linux-3.2/kernel/cred.c
===================================================================
--- linux-3.2.orig/kernel/cred.c
+++ linux-3.2/kernel/cred.c
diff --git a/kernel/cred.c b/kernel/cred.c
index 48c6fd3..482a0e3 100644
--- a/kernel/cred.c
+++ b/kernel/cred.c
@@ -35,7 +35,7 @@ static struct kmem_cache *cred_jar;
static struct thread_group_cred init_tgcred = {
.usage = ATOMIC_INIT(2),
@ -94,3 +95,6 @@ Index: linux-3.2/kernel/cred.c
};
#endif
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: wait: Provide __wake_up_all_locked
From 90713b9e3f210d7ebb96dade4cc71b7397ce99d4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 01 Dec 2011 00:04:00 +0100
Date: Thu, 1 Dec 2011 00:04:00 +0100
Subject: [PATCH 068/267] wait: Provide __wake_up_all_locked
For code which protects the waitqueue itself with another lock it
makes no sense to acquire the waitqueue lock for wakeup all. Provide
@ -13,11 +14,11 @@ Cc: stable-rt@vger.kernel.org
kernel/sched.c | 4 ++--
2 files changed, 5 insertions(+), 4 deletions(-)
Index: linux-3.2/include/linux/wait.h
===================================================================
--- linux-3.2.orig/include/linux/wait.h
+++ linux-3.2/include/linux/wait.h
@@ -157,7 +157,7 @@ void __wake_up(wait_queue_head_t *q, uns
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 3efc9f3..1e904b8 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -157,7 +157,7 @@ void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key);
void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr,
void *key);
@ -26,7 +27,7 @@ Index: linux-3.2/include/linux/wait.h
void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
void __wake_up_bit(wait_queue_head_t *, void *, int);
int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned);
@@ -170,7 +170,8 @@ wait_queue_head_t *bit_waitqueue(void *,
@@ -170,7 +170,8 @@ wait_queue_head_t *bit_waitqueue(void *, int);
#define wake_up(x) __wake_up(x, TASK_NORMAL, 1, NULL)
#define wake_up_nr(x, nr) __wake_up(x, TASK_NORMAL, nr, NULL)
#define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
@ -36,10 +37,10 @@ Index: linux-3.2/include/linux/wait.h
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
#define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
Index: linux-3.2/kernel/sched.c
===================================================================
--- linux-3.2.orig/kernel/sched.c
+++ linux-3.2/kernel/sched.c
diff --git a/kernel/sched.c b/kernel/sched.c
index e35f01c..bb93b0b 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4637,9 +4637,9 @@ EXPORT_SYMBOL(__wake_up);
/*
* Same as __wake_up but called with the spinlock in wait_queue_head_t held.
@ -52,3 +53,6 @@ Index: linux-3.2/kernel/sched.c
}
EXPORT_SYMBOL_GPL(__wake_up_locked);
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: pci: Use __wake_up_all_locked pci_unblock_user_cfg_access()
From 0285604d1f4283b1bb59ec7efd683d4475c018db Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 01 Dec 2011 00:07:16 +0100
Date: Thu, 1 Dec 2011 00:07:16 +0100
Subject: [PATCH 069/267] pci: Use __wake_up_all_locked
pci_unblock_user_cfg_access()
The waitqueue is protected by the pci_lock, so we can just avoid to
lock the waitqueue lock itself. That prevents the
@ -12,11 +14,11 @@ Cc: stable-rt@vger.kernel.org
drivers/pci/access.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/drivers/pci/access.c
===================================================================
--- linux-3.2.orig/drivers/pci/access.c
+++ linux-3.2/drivers/pci/access.c
@@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct
diff --git a/drivers/pci/access.c b/drivers/pci/access.c
index fdaa42a..1a6cc67 100644
--- a/drivers/pci/access.c
+++ b/drivers/pci/access.c
@@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct pci_dev *dev)
WARN_ON(!dev->block_ucfg_access);
dev->block_ucfg_access = 0;
@ -25,3 +27,6 @@ Index: linux-3.2/drivers/pci/access.c
raw_spin_unlock_irqrestore(&pci_lock, flags);
}
EXPORT_SYMBOL_GPL(pci_unblock_user_cfg_access);
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: latency-hist.patch
From e14a7c82d8bd43fbda64e57a9cae2a4fff5cb7fb Mon Sep 17 00:00:00 2001
From: Carsten Emde <C.Emde@osadl.org>
Date: Tue, 19 Jul 2011 14:03:41 +0100
Subject: [PATCH 070/267] latency-hist.patch
This patch provides a recording mechanism to store data of potential
sources of system latencies. The recordings separately determine the
@ -11,23 +12,27 @@ filesystem. For details please consult Documentation/trace/histograms.txt.
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
Documentation/trace/histograms.txt | 186 +++++
include/linux/sched.h | 6
include/trace/events/hist.h | 69 ++
include/trace/events/latency_hist.h | 30
kernel/hrtimer.c | 11
kernel/trace/Kconfig | 104 +++
kernel/trace/Makefile | 4
kernel/trace/latency_hist.c | 1170 ++++++++++++++++++++++++++++++++++++
kernel/trace/trace_irqsoff.c | 11
Documentation/trace/histograms.txt | 186 ++++++
include/linux/sched.h | 6 +
include/trace/events/hist.h | 69 +++
include/trace/events/latency_hist.h | 30 +
kernel/hrtimer.c | 11 +
kernel/trace/Kconfig | 104 ++++
kernel/trace/Makefile | 4 +
kernel/trace/latency_hist.c | 1170 +++++++++++++++++++++++++++++++++++
kernel/trace/trace_irqsoff.c | 11 +
9 files changed, 1591 insertions(+)
create mode 100644 Documentation/trace/histograms.txt
create mode 100644 include/trace/events/hist.h
create mode 100644 include/trace/events/latency_hist.h
create mode 100644 kernel/trace/latency_hist.c
Index: linux-3.2/Documentation/trace/histograms.txt
===================================================================
diff --git a/Documentation/trace/histograms.txt b/Documentation/trace/histograms.txt
new file mode 100644
index 0000000..6f2aeab
--- /dev/null
+++ linux-3.2/Documentation/trace/histograms.txt
+++ b/Documentation/trace/histograms.txt
@@ -0,0 +1,186 @@
+ Using the Linux Kernel Latency Histograms
+
@ -215,10 +220,10 @@ Index: linux-3.2/Documentation/trace/histograms.txt
+is provided.
+
+These data are also reset when the wakeup histogram is reset.
Index: linux-3.2/include/linux/sched.h
===================================================================
--- linux-3.2.orig/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 8cb4365..30ac0b5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1570,6 +1570,12 @@ struct task_struct {
unsigned long trace;
/* bitmask and counter of trace recursion */
@ -232,10 +237,11 @@ Index: linux-3.2/include/linux/sched.h
#endif /* CONFIG_TRACING */
#ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */
struct memcg_batch_info {
Index: linux-3.2/include/trace/events/hist.h
===================================================================
diff --git a/include/trace/events/hist.h b/include/trace/events/hist.h
new file mode 100644
index 0000000..28646db
--- /dev/null
+++ linux-3.2/include/trace/events/hist.h
+++ b/include/trace/events/hist.h
@@ -0,0 +1,69 @@
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM hist
@ -306,10 +312,11 @@ Index: linux-3.2/include/trace/events/hist.h
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
Index: linux-3.2/include/trace/events/latency_hist.h
===================================================================
diff --git a/include/trace/events/latency_hist.h b/include/trace/events/latency_hist.h
new file mode 100644
index 0000000..d6b5d77
--- /dev/null
+++ linux-3.2/include/trace/events/latency_hist.h
+++ b/include/trace/events/latency_hist.h
@@ -0,0 +1,30 @@
+#ifndef _LATENCY_HIST_H
+#define _LATENCY_HIST_H
@ -341,10 +348,10 @@ Index: linux-3.2/include/trace/events/latency_hist.h
+
+#endif /* _LATENCY_HIST_H */
+
Index: linux-3.2/kernel/hrtimer.c
===================================================================
--- linux-3.2.orig/kernel/hrtimer.c
+++ linux-3.2/kernel/hrtimer.c
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index ae34bf5..1a3695e 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -49,6 +49,7 @@
#include <asm/uaccess.h>
@ -353,7 +360,7 @@ Index: linux-3.2/kernel/hrtimer.c
/*
* The timer bases:
@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer
@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now)
#ifdef CONFIG_HIGH_RES_TIMERS
@ -377,10 +384,10 @@ Index: linux-3.2/kernel/hrtimer.c
/*
* The immediate goal for using the softexpires is
* minimizing wakeups, not running timers at the
Index: linux-3.2/kernel/trace/Kconfig
===================================================================
--- linux-3.2.orig/kernel/trace/Kconfig
+++ linux-3.2/kernel/trace/Kconfig
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index cd31345..2685322 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -192,6 +192,24 @@ config IRQSOFF_TRACER
enabled. This option and the preempt-off timing option can be
used together or separately.)
@ -506,11 +513,11 @@ Index: linux-3.2/kernel/trace/Kconfig
config ENABLE_DEFAULT_TRACERS
bool "Trace process context switches and events"
depends on !GENERIC_TRACER
Index: linux-3.2/kernel/trace/Makefile
===================================================================
--- linux-3.2.orig/kernel/trace/Makefile
+++ linux-3.2/kernel/trace/Makefile
@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f
diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile
index 5f39a07..108a387 100644
--- a/kernel/trace/Makefile
+++ b/kernel/trace/Makefile
@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_functions.o
obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o
obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o
obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o
@ -521,10 +528,11 @@ Index: linux-3.2/kernel/trace/Makefile
obj-$(CONFIG_NOP_TRACER) += trace_nop.o
obj-$(CONFIG_STACK_TRACER) += trace_stack.o
obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o
Index: linux-3.2/kernel/trace/latency_hist.c
===================================================================
diff --git a/kernel/trace/latency_hist.c b/kernel/trace/latency_hist.c
new file mode 100644
index 0000000..9d49fcb
--- /dev/null
+++ linux-3.2/kernel/trace/latency_hist.c
+++ b/kernel/trace/latency_hist.c
@@ -0,0 +1,1170 @@
+/*
+ * kernel/trace/latency_hist.c
@ -1696,10 +1704,10 @@ Index: linux-3.2/kernel/trace/latency_hist.c
+}
+
+__initcall(latency_hist_init);
Index: linux-3.2/kernel/trace/trace_irqsoff.c
===================================================================
--- linux-3.2.orig/kernel/trace/trace_irqsoff.c
+++ linux-3.2/kernel/trace/trace_irqsoff.c
diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c
index 20dad0d..1e6c33e 100644
--- a/kernel/trace/trace_irqsoff.c
+++ b/kernel/trace/trace_irqsoff.c
@@ -17,6 +17,7 @@
#include <linux/fs.h>
@ -1722,7 +1730,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (preempt_trace() || irq_trace())
stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1);
}
@@ -440,6 +443,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings)
@@ -440,6 +443,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings);
#ifdef CONFIG_PROVE_LOCKING
void time_hardirqs_on(unsigned long a0, unsigned long a1)
{
@ -1730,7 +1738,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (!preempt_trace() && irq_trace())
stop_critical_timing(a0, a1);
}
@@ -448,6 +452,7 @@ void time_hardirqs_off(unsigned long a0,
@@ -448,6 +452,7 @@ void time_hardirqs_off(unsigned long a0, unsigned long a1)
{
if (!preempt_trace() && irq_trace())
start_critical_timing(a0, a1);
@ -1738,7 +1746,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
}
#else /* !CONFIG_PROVE_LOCKING */
@@ -473,6 +478,7 @@ inline void print_irqtrace_events(struct
@@ -473,6 +478,7 @@ inline void print_irqtrace_events(struct task_struct *curr)
*/
void trace_hardirqs_on(void)
{
@ -1760,7 +1768,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (!preempt_trace() && irq_trace())
stop_critical_timing(CALLER_ADDR0, caller_addr);
}
@@ -496,6 +504,7 @@ void trace_hardirqs_off_caller(unsigned
@@ -496,6 +504,7 @@ void trace_hardirqs_off_caller(unsigned long caller_addr)
{
if (!preempt_trace() && irq_trace())
start_critical_timing(CALLER_ADDR0, caller_addr);
@ -1768,7 +1776,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
}
EXPORT_SYMBOL(trace_hardirqs_off_caller);
@@ -505,12 +514,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller)
@@ -505,12 +514,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller);
#ifdef CONFIG_PREEMPT_TRACER
void trace_preempt_on(unsigned long a0, unsigned long a1)
{
@ -1783,3 +1791,6 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (preempt_trace() && !irq_trace())
start_critical_timing(a0, a1);
}
--
1.7.10

View File

@ -1,25 +1,28 @@
Subject: hwlatdetect.patch
From 64c6278c3b79d72e2992c767dca658f4c7f65739 Mon Sep 17 00:00:00 2001
From: Carsten Emde <C.Emde@osadl.org>
Date: Tue, 19 Jul 2011 13:53:12 +0100
Subject: [PATCH 071/267] hwlatdetect.patch
Jon Masters developed this wonderful SMI detector. For details please
consult Documentation/hwlat_detector.txt. It could be ported to Linux
3.0 RT without any major change.
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
---
Documentation/hwlat_detector.txt | 64 ++
MAINTAINERS | 9
drivers/misc/Kconfig | 29
drivers/misc/Makefile | 1
drivers/misc/hwlat_detector.c | 1212 +++++++++++++++++++++++++++++++++++++++
MAINTAINERS | 9 +
drivers/misc/Kconfig | 29 +
drivers/misc/Makefile | 1 +
drivers/misc/hwlat_detector.c | 1212 ++++++++++++++++++++++++++++++++++++++
5 files changed, 1315 insertions(+)
create mode 100644 Documentation/hwlat_detector.txt
create mode 100644 drivers/misc/hwlat_detector.c
Index: linux-3.2/Documentation/hwlat_detector.txt
===================================================================
diff --git a/Documentation/hwlat_detector.txt b/Documentation/hwlat_detector.txt
new file mode 100644
index 0000000..cb61516
--- /dev/null
+++ linux-3.2/Documentation/hwlat_detector.txt
+++ b/Documentation/hwlat_detector.txt
@@ -0,0 +1,64 @@
+Introduction:
+-------------
@ -85,10 +88,10 @@ Index: linux-3.2/Documentation/hwlat_detector.txt
+observe any latencies that exceed the threshold (initially 100 usecs),
+then we write to a global sample ring buffer of 8K samples, which is
+consumed by reading from the "sample" (pipe) debugfs file interface.
Index: linux-3.2/MAINTAINERS
===================================================================
--- linux-3.2.orig/MAINTAINERS
+++ linux-3.2/MAINTAINERS
diff --git a/MAINTAINERS b/MAINTAINERS
index f986e7d..b257477 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3008,6 +3008,15 @@ L: linuxppc-dev@lists.ozlabs.org
S: Odd Fixes
F: drivers/tty/hvc/
@ -105,10 +108,10 @@ Index: linux-3.2/MAINTAINERS
HARDWARE MONITORING
M: Jean Delvare <khali@linux-fr.org>
M: Guenter Roeck <guenter.roeck@ericsson.com>
Index: linux-3.2/drivers/misc/Kconfig
===================================================================
--- linux-3.2.orig/drivers/misc/Kconfig
+++ linux-3.2/drivers/misc/Kconfig
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index f3031a4..1cb530c 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -140,6 +140,35 @@ config IBM_ASM
for information on the specific driver level and support statement
for your IBM server.
@ -145,19 +148,20 @@ Index: linux-3.2/drivers/misc/Kconfig
config PHANTOM
tristate "Sensable PHANToM (PCI)"
depends on PCI
Index: linux-3.2/drivers/misc/Makefile
===================================================================
--- linux-3.2.orig/drivers/misc/Makefile
+++ linux-3.2/drivers/misc/Makefile
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index b26495a..84c4554 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -48,3 +48,4 @@ obj-y += lis3lv02d/
obj-y += carma/
obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o
obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/
+obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o
Index: linux-3.2/drivers/misc/hwlat_detector.c
===================================================================
diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
new file mode 100644
index 0000000..b7b7c90
--- /dev/null
+++ linux-3.2/drivers/misc/hwlat_detector.c
+++ b/drivers/misc/hwlat_detector.c
@@ -0,0 +1,1212 @@
+/*
+ * hwlat_detector.c - A simple Hardware Latency detector.
@ -1371,3 +1375,6 @@ Index: linux-3.2/drivers/misc/hwlat_detector.c
+
+module_init(detector_init);
+module_exit(detector_exit);
--
1.7.10

View File

@ -0,0 +1,23 @@
From dc3a0b29103cadebe8c40fd3ad80b18b7d1af27b Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 8 Jul 2011 20:25:16 +0200
Subject: [PATCH 072/267] localversion.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org
---
localversion-rt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 localversion-rt
diff --git a/localversion-rt b/localversion-rt
new file mode 100644
index 0000000..b2111a2
--- /dev/null
+++ b/localversion-rt
@@ -0,0 +1 @@
+-rt24
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: early-printk-consolidate.patch
From d6a466f7aef3ff53e864d1d0a8f5e93d61768714 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 23 Jul 2011 11:04:08 +0200
Subject: [PATCH 073/267] early-printk-consolidate.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@ -21,11 +22,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/printk.c | 27 ++++++++++++++++++++-------
15 files changed, 62 insertions(+), 110 deletions(-)
Index: linux-3.2/arch/arm/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/arm/kernel/early_printk.c
+++ linux-3.2/arch/arm/kernel/early_printk.c
@@ -29,28 +29,17 @@ static void early_console_write(struct c
diff --git a/arch/arm/kernel/early_printk.c b/arch/arm/kernel/early_printk.c
index 85aa2b2..4307653 100644
--- a/arch/arm/kernel/early_printk.c
+++ b/arch/arm/kernel/early_printk.c
@@ -29,28 +29,17 @@ static void early_console_write(struct console *con, const char *s, unsigned n)
early_write(s, n);
}
@ -57,11 +58,11 @@ Index: linux-3.2/arch/arm/kernel/early_printk.c
return 0;
}
Index: linux-3.2/arch/blackfin/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/blackfin/kernel/early_printk.c
+++ linux-3.2/arch/blackfin/kernel/early_printk.c
@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_
diff --git a/arch/blackfin/kernel/early_printk.c b/arch/blackfin/kernel/early_printk.c
index 84ed837..61fbd2d 100644
--- a/arch/blackfin/kernel/early_printk.c
+++ b/arch/blackfin/kernel/early_printk.c
@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_init(unsigned int port,
extern struct console *bfin_jc_early_init(void);
#endif
@ -70,10 +71,10 @@ Index: linux-3.2/arch/blackfin/kernel/early_printk.c
/* Default console */
#define DEFAULT_PORT 0
#define DEFAULT_CFLAG CS8|B57600
Index: linux-3.2/arch/microblaze/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/microblaze/kernel/early_printk.c
+++ linux-3.2/arch/microblaze/kernel/early_printk.c
diff --git a/arch/microblaze/kernel/early_printk.c b/arch/microblaze/kernel/early_printk.c
index d26d92d..0420624 100644
--- a/arch/microblaze/kernel/early_printk.c
+++ b/arch/microblaze/kernel/early_printk.c
@@ -21,7 +21,6 @@
#include <asm/setup.h>
#include <asm/prom.h>
@ -82,7 +83,7 @@ Index: linux-3.2/arch/microblaze/kernel/early_printk.c
static u32 base_addr;
#ifdef CONFIG_SERIAL_UARTLITE_CONSOLE
@@ -109,27 +108,11 @@ static struct console early_serial_uart1
@@ -109,27 +108,11 @@ static struct console early_serial_uart16550_console = {
};
#endif /* CONFIG_SERIAL_8250_CONSOLE */
@ -140,11 +141,11 @@ Index: linux-3.2/arch/microblaze/kernel/early_printk.c
- early_console_initialized = 0;
+ early_console = NULL;
}
Index: linux-3.2/arch/mips/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/mips/kernel/early_printk.c
+++ linux-3.2/arch/mips/kernel/early_printk.c
@@ -25,20 +25,18 @@ early_console_write(struct console *con,
diff --git a/arch/mips/kernel/early_printk.c b/arch/mips/kernel/early_printk.c
index 9ae813e..973c995 100644
--- a/arch/mips/kernel/early_printk.c
+++ b/arch/mips/kernel/early_printk.c
@@ -25,20 +25,18 @@ early_console_write(struct console *con, const char *s, unsigned n)
}
}
@ -169,10 +170,10 @@ Index: linux-3.2/arch/mips/kernel/early_printk.c
- register_console(&early_console);
+ register_console(&early_console_prom);
}
Index: linux-3.2/arch/powerpc/kernel/udbg.c
===================================================================
--- linux-3.2.orig/arch/powerpc/kernel/udbg.c
+++ linux-3.2/arch/powerpc/kernel/udbg.c
diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c
index 57fa2c0..1b9174d 100644
--- a/arch/powerpc/kernel/udbg.c
+++ b/arch/powerpc/kernel/udbg.c
@@ -182,15 +182,13 @@ static struct console udbg_console = {
.index = 0,
};
@ -190,7 +191,7 @@ Index: linux-3.2/arch/powerpc/kernel/udbg.c
return;
if (!udbg_putc)
@@ -200,7 +198,7 @@ void __init register_early_udbg_console(
@@ -200,7 +198,7 @@ void __init register_early_udbg_console(void)
printk(KERN_INFO "early console immortal !\n");
udbg_console.flags &= ~CON_BOOT;
}
@ -199,10 +200,10 @@ Index: linux-3.2/arch/powerpc/kernel/udbg.c
register_console(&udbg_console);
}
Index: linux-3.2/arch/sh/kernel/sh_bios.c
===================================================================
--- linux-3.2.orig/arch/sh/kernel/sh_bios.c
+++ linux-3.2/arch/sh/kernel/sh_bios.c
diff --git a/arch/sh/kernel/sh_bios.c b/arch/sh/kernel/sh_bios.c
index 47475cc..a5b51b9 100644
--- a/arch/sh/kernel/sh_bios.c
+++ b/arch/sh/kernel/sh_bios.c
@@ -144,8 +144,6 @@ static struct console bios_console = {
.index = -1,
};
@ -212,10 +213,10 @@ Index: linux-3.2/arch/sh/kernel/sh_bios.c
static int __init setup_early_printk(char *buf)
{
int keep_early = 0;
Index: linux-3.2/arch/sparc/kernel/setup_32.c
===================================================================
--- linux-3.2.orig/arch/sparc/kernel/setup_32.c
+++ linux-3.2/arch/sparc/kernel/setup_32.c
diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c
index fe1e3fc..e6475f0 100644
--- a/arch/sparc/kernel/setup_32.c
+++ b/arch/sparc/kernel/setup_32.c
@@ -221,6 +221,7 @@ void __init setup_arch(char **cmdline_p)
boot_flags_init(*cmdline_p);
@ -224,11 +225,11 @@ Index: linux-3.2/arch/sparc/kernel/setup_32.c
register_console(&prom_early_console);
/* Set sparc_cpu_model */
Index: linux-3.2/arch/sparc/kernel/setup_64.c
===================================================================
--- linux-3.2.orig/arch/sparc/kernel/setup_64.c
+++ linux-3.2/arch/sparc/kernel/setup_64.c
@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwca
diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c
index a854a1c..b85d039 100644
--- a/arch/sparc/kernel/setup_64.c
+++ b/arch/sparc/kernel/setup_64.c
@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwcap(void)
popc_patch();
}
@ -250,11 +251,11 @@ Index: linux-3.2/arch/sparc/kernel/setup_64.c
if (tlb_type == hypervisor)
printk("ARCH: SUN4V\n");
Index: linux-3.2/arch/tile/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/tile/kernel/early_printk.c
+++ linux-3.2/arch/tile/kernel/early_printk.c
@@ -32,25 +32,8 @@ static struct console early_hv_console =
diff --git a/arch/tile/kernel/early_printk.c b/arch/tile/kernel/early_printk.c
index 493a0e6..ba2ac00 100644
--- a/arch/tile/kernel/early_printk.c
+++ b/arch/tile/kernel/early_printk.c
@@ -32,25 +32,8 @@ static struct console early_hv_console = {
};
/* Direct interface for emergencies */
@ -296,7 +297,7 @@ Index: linux-3.2/arch/tile/kernel/early_printk.c
register_console(early_console);
return 0;
@@ -84,12 +66,12 @@ static int __init setup_early_printk(cha
@@ -84,12 +66,12 @@ static int __init setup_early_printk(char *str)
void __init disable_early_printk(void)
{
early_console_complete = 1;
@ -320,11 +321,11 @@ Index: linux-3.2/arch/tile/kernel/early_printk.c
return;
early_printk("\
Machine shutting down before console output is fully initialized.\n\
Index: linux-3.2/arch/um/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/um/kernel/early_printk.c
+++ linux-3.2/arch/um/kernel/early_printk.c
@@ -16,7 +16,7 @@ static void early_console_write(struct c
diff --git a/arch/um/kernel/early_printk.c b/arch/um/kernel/early_printk.c
index ec649bf..183060f 100644
--- a/arch/um/kernel/early_printk.c
+++ b/arch/um/kernel/early_printk.c
@@ -16,7 +16,7 @@ static void early_console_write(struct console *con, const char *s, unsigned int
um_early_printk(s, n);
}
@ -346,11 +347,11 @@ Index: linux-3.2/arch/um/kernel/early_printk.c
return 0;
}
Index: linux-3.2/arch/unicore32/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/unicore32/kernel/early_printk.c
+++ linux-3.2/arch/unicore32/kernel/early_printk.c
@@ -33,21 +33,17 @@ static struct console early_ocd_console
diff --git a/arch/unicore32/kernel/early_printk.c b/arch/unicore32/kernel/early_printk.c
index 3922255..9be0d5d 100644
--- a/arch/unicore32/kernel/early_printk.c
+++ b/arch/unicore32/kernel/early_printk.c
@@ -33,21 +33,17 @@ static struct console early_ocd_console = {
.index = -1,
};
@ -376,11 +377,11 @@ Index: linux-3.2/arch/unicore32/kernel/early_printk.c
if (keep_early)
early_console->flags &= ~CON_BOOT;
Index: linux-3.2/arch/x86/kernel/early_printk.c
===================================================================
--- linux-3.2.orig/arch/x86/kernel/early_printk.c
+++ linux-3.2/arch/x86/kernel/early_printk.c
@@ -169,25 +169,9 @@ static struct console early_serial_conso
diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
index cd28a35..5f3d9c5 100644
--- a/arch/x86/kernel/early_printk.c
+++ b/arch/x86/kernel/early_printk.c
@@ -169,25 +169,9 @@ static struct console early_serial_console = {
.index = -1,
};
@ -407,7 +408,7 @@ Index: linux-3.2/arch/x86/kernel/early_printk.c
printk(KERN_CRIT "ERROR: earlyprintk= %s already used\n",
con->name);
return;
@@ -207,9 +191,8 @@ static int __init setup_early_printk(cha
@@ -207,9 +191,8 @@ static int __init setup_early_printk(char *buf)
if (!buf)
return 0;
@ -418,10 +419,10 @@ Index: linux-3.2/arch/x86/kernel/early_printk.c
keep = (strstr(buf, "keep") != NULL);
Index: linux-3.2/include/linux/console.h
===================================================================
--- linux-3.2.orig/include/linux/console.h
+++ linux-3.2/include/linux/console.h
diff --git a/include/linux/console.h b/include/linux/console.h
index 7453cfd..e5b5dc0 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -133,6 +133,7 @@ struct console {
for (con = console_drivers; con != NULL; con = con->next)
@ -430,10 +431,10 @@ Index: linux-3.2/include/linux/console.h
extern int add_preferred_console(char *name, int idx, char *options);
extern int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options);
Index: linux-3.2/include/linux/printk.h
===================================================================
--- linux-3.2.orig/include/linux/printk.h
+++ linux-3.2/include/linux/printk.h
diff --git a/include/linux/printk.h b/include/linux/printk.h
index f0e22f7..be10455 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -88,8 +88,13 @@ int no_printk(const char *fmt, ...)
return 0;
}
@ -448,10 +449,10 @@ Index: linux-3.2/include/linux/printk.h
extern int printk_needs_cpu(int cpu);
extern void printk_tick(void);
Index: linux-3.2/kernel/printk.c
===================================================================
--- linux-3.2.orig/kernel/printk.c
+++ linux-3.2/kernel/printk.c
diff --git a/kernel/printk.c b/kernel/printk.c
index 7982a0a..b7aa50e 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -44,13 +44,6 @@
#include <asm/uaccess.h>
@ -466,7 +467,7 @@ Index: linux-3.2/kernel/printk.c
#define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
/* printk's without a loglevel use this.. */
@@ -521,6 +514,26 @@ static void __call_console_drivers(unsig
@@ -521,6 +514,26 @@ static void __call_console_drivers(unsigned start, unsigned end)
}
}
@ -493,3 +494,6 @@ Index: linux-3.2/kernel/printk.c
static int __read_mostly ignore_loglevel;
static int __init ignore_loglevel_setup(char *str)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: printk-kill.patch
From 91869f3a1488dba10d311b5892e4555e94f67353 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 22 Jul 2011 17:58:40 +0200
Subject: [PATCH 074/267] printk-kill.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/watchdog.c | 15 +++++++++++++--
3 files changed, 48 insertions(+), 3 deletions(-)
Index: linux-3.2/include/linux/printk.h
===================================================================
--- linux-3.2.orig/include/linux/printk.h
+++ linux-3.2/include/linux/printk.h
diff --git a/include/linux/printk.h b/include/linux/printk.h
index be10455..a53adf6 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -91,9 +91,11 @@ int no_printk(const char *fmt, ...)
#ifdef CONFIG_EARLY_PRINTK
extern asmlinkage __printf(1, 2)
@ -25,7 +26,7 @@ Index: linux-3.2/include/linux/printk.h
#endif
extern int printk_needs_cpu(int cpu);
@@ -114,7 +116,6 @@ extern int __printk_ratelimit(const char
@@ -114,7 +116,6 @@ extern int __printk_ratelimit(const char *func);
#define printk_ratelimit() __printk_ratelimit(__func__)
extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
unsigned int interval_msec);
@ -33,11 +34,11 @@ Index: linux-3.2/include/linux/printk.h
extern int printk_delay_msec;
extern int dmesg_restrict;
extern int kptr_restrict;
Index: linux-3.2/kernel/printk.c
===================================================================
--- linux-3.2.orig/kernel/printk.c
+++ linux-3.2/kernel/printk.c
@@ -532,6 +532,32 @@ asmlinkage void early_printk(const char
diff --git a/kernel/printk.c b/kernel/printk.c
index b7aa50e..96ee3cd 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -532,6 +532,32 @@ asmlinkage void early_printk(const char *fmt, ...)
early_vprintk(fmt, ap);
va_end(ap);
}
@ -70,7 +71,7 @@ Index: linux-3.2/kernel/printk.c
#endif
static int __read_mostly ignore_loglevel;
@@ -850,6 +876,13 @@ asmlinkage int vprintk(const char *fmt,
@@ -850,6 +876,13 @@ asmlinkage int vprintk(const char *fmt, va_list args)
size_t plen;
char special;
@ -84,11 +85,11 @@ Index: linux-3.2/kernel/printk.c
boot_delay_msec();
printk_delay();
Index: linux-3.2/kernel/watchdog.c
===================================================================
--- linux-3.2.orig/kernel/watchdog.c
+++ linux-3.2/kernel/watchdog.c
@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long t
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index 1d7bca7..c7e2a2f 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long touch_ts)
#ifdef CONFIG_HARDLOCKUP_DETECTOR
@ -97,7 +98,7 @@ Index: linux-3.2/kernel/watchdog.c
static struct perf_event_attr wd_hw_attr = {
.type = PERF_TYPE_HARDWARE,
.config = PERF_COUNT_HW_CPU_CYCLES,
@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(s
@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(struct perf_event *event,
if (__this_cpu_read(hard_watchdog_warn) == true)
return;
@ -119,3 +120,6 @@ Index: linux-3.2/kernel/watchdog.c
__this_cpu_write(hard_watchdog_warn, true);
return;
--
1.7.10

View File

@ -1,10 +1,8 @@
Subject: printk: %27force_early_printk%27 boot param to help with debugging
From: Peter Zijlstra <peterz@infradead.org>
Date: Fri, 02 Sep 2011 14:41:29 +0200
Subject: printk: 'force_early_printk' boot param to help with debugging
From 7e09744cd7ca0c94a940049f7557916e764ef9ea Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Fri Sep 02 14:29:33 CEST 2011
Date: Fri, 2 Sep 2011 14:29:33 +0200
Subject: [PATCH 075/267] printk: 'force_early_printk' boot param to help with
debugging
Gives me an option to screw printk and actually see what the machine
says.
@ -17,11 +15,11 @@ Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org
kernel/printk.c | 7 +++++++
1 file changed, 7 insertions(+)
Index: linux-3.2/kernel/printk.c
===================================================================
--- linux-3.2.orig/kernel/printk.c
+++ linux-3.2/kernel/printk.c
@@ -541,6 +541,13 @@ asmlinkage void early_printk(const char
diff --git a/kernel/printk.c b/kernel/printk.c
index 96ee3cd..1f06626 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -541,6 +541,13 @@ asmlinkage void early_printk(const char *fmt, ...)
*/
static int __read_mostly printk_killswitch;
@ -35,3 +33,6 @@ Index: linux-3.2/kernel/printk.c
void printk_kill(void)
{
printk_killswitch = 1;
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: rt-preempt-base-config.patch
From fa80496475ea56404325811b11eb95bdb1519b13 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 17 Jun 2011 12:39:57 +0200
Subject: [PATCH 076/267] rt-preempt-base-config.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/Kconfig.preempt | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
Index: linux-3.2/kernel/Kconfig.preempt
===================================================================
--- linux-3.2.orig/kernel/Kconfig.preempt
+++ linux-3.2/kernel/Kconfig.preempt
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 24e7cb0..35c6f20 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -1,3 +1,10 @@
+config PREEMPT
+ bool
@ -49,3 +50,6 @@ Index: linux-3.2/kernel/Kconfig.preempt
endchoice
config PREEMPT_COUNT
--
1.7.10

View File

@ -1,18 +1,18 @@
From 7258f0c5442a0dde07c06e12f431134e4b9bff47 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:58 -0500
Subject: bug: BUG_ON/WARN_ON variants dependend on RT/!RT
Subject: [PATCH 077/267] bug: BUG_ON/WARN_ON variants dependend on RT/!RT
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/asm-generic/bug.h | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
Index: linux-3.2/include/asm-generic/bug.h
===================================================================
--- linux-3.2.orig/include/asm-generic/bug.h
+++ linux-3.2/include/asm-generic/bug.h
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index 84458b0..97c1eaf 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -3,6 +3,10 @@
#include <linux/compiler.h>
@ -24,7 +24,7 @@ Index: linux-3.2/include/asm-generic/bug.h
#ifdef CONFIG_BUG
#ifdef CONFIG_GENERIC_BUG
@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const cha
@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const char *file, const int line);
# define WARN_ON_SMP(x) ({0;})
#endif
@ -43,3 +43,6 @@ Index: linux-3.2/include/asm-generic/bug.h
+#endif
+
#endif
--
1.7.10

View File

@ -1,23 +1,23 @@
From 7ff90eac6ba7e1e5fefaf931f42ec83ed6534a7c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 22:34:14 +0200
Subject: rt: local_irq_* variants depending on RT/!RT
Subject: [PATCH 078/267] rt: local_irq_* variants depending on RT/!RT
Add local_irq_*_(no)rt variant which are mainly used to break
interrupt disabled sections on PREEMPT_RT or to explicitely disable
interrupts on PREEMPT_RT.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/interrupt.h | 2 +-
include/linux/irqflags.h | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
Index: linux-3.2/include/linux/interrupt.h
===================================================================
--- linux-3.2.orig/include/linux/interrupt.h
+++ linux-3.2/include/linux/interrupt.h
@@ -219,7 +219,7 @@ extern void devm_free_irq(struct device
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 21b94de..ddd6b2a 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -219,7 +219,7 @@ extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id);
#ifdef CONFIG_LOCKDEP
# define local_irq_enable_in_hardirq() do { } while (0)
#else
@ -26,10 +26,10 @@ Index: linux-3.2/include/linux/interrupt.h
#endif
extern void disable_irq_nosync(unsigned int irq);
Index: linux-3.2/include/linux/irqflags.h
===================================================================
--- linux-3.2.orig/include/linux/irqflags.h
+++ linux-3.2/include/linux/irqflags.h
diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
index d176d65..37b13c4 100644
--- a/include/linux/irqflags.h
+++ b/include/linux/irqflags.h
@@ -147,4 +147,23 @@
#endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */
@ -54,3 +54,6 @@ Index: linux-3.2/include/linux/irqflags.h
+#endif
+
#endif
--
1.7.10

View File

@ -1,20 +1,20 @@
From b114ea4baca627525d85c109fefcb2ba3de55ffa Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 24 Jul 2009 12:38:56 +0200
Subject: preempt: Provide preempt_*_(no)rt variants
Subject: [PATCH 079/267] preempt: Provide preempt_*_(no)rt variants
RT needs a few preempt_disable/enable points which are not necessary
otherwise. Implement variants to avoid #ifdeffery.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/preempt.h | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
Index: linux-3.2/include/linux/preempt.h
===================================================================
--- linux-3.2.orig/include/linux/preempt.h
+++ linux-3.2/include/linux/preempt.h
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
index 227b0f5..29db25f 100644
--- a/include/linux/preempt.h
+++ b/include/linux/preempt.h
@@ -54,11 +54,15 @@ do { \
dec_preempt_count(); \
} while (0)
@ -52,3 +52,6 @@ Index: linux-3.2/include/linux/preempt.h
#ifdef CONFIG_PREEMPT_NOTIFIERS
struct preempt_notifier;
--
1.7.10

View File

@ -1,22 +1,23 @@
From 8568db0e556b5159c9c7d85ce78f66d1df5d50ee Mon Sep 17 00:00:00 2001
From: Steven Rostedt <srostedt@redhat.com>
Date: Fri, 3 Jul 2009 08:44:29 -0500
Subject: ata: Do not disable interrupts in ide code for preempt-rt
Subject: [PATCH 080/267] ata: Do not disable interrupts in ide code for
preempt-rt
Use the local_irq_*_nort variants.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/ata/libata-sff.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
Index: linux-3.2/drivers/ata/libata-sff.c
===================================================================
--- linux-3.2.orig/drivers/ata/libata-sff.c
+++ linux-3.2/drivers/ata/libata-sff.c
@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(str
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 4cadfa2..100f85c 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,
unsigned long flags;
unsigned int consumed;
@ -28,7 +29,7 @@ Index: linux-3.2/drivers/ata/libata-sff.c
return consumed;
}
@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_qu
@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
unsigned long flags;
/* FIXME: use a bounce buffer */
@ -37,7 +38,7 @@ Index: linux-3.2/drivers/ata/libata-sff.c
buf = kmap_atomic(page, KM_IRQ0);
/* do the actual data transfer */
@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_qu
@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
do_write);
kunmap_atomic(buf, KM_IRQ0);
@ -64,3 +65,6 @@ Index: linux-3.2/drivers/ata/libata-sff.c
} else {
buf = page_address(page);
consumed = ap->ops->sff_data_xfer(dev, buf + offset,
--
1.7.10

View File

@ -1,12 +1,12 @@
From 56ffc28ceb835c0eb0bff7fb3395cd66ba0860b0 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:16 -0500
Subject: ide: Do not disable interrupts for PREEMPT-RT
Subject: [PATCH 081/267] ide: Do not disable interrupts for PREEMPT-RT
Use the local_irq_*_nort variants.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/ide/alim15x3.c | 4 ++--
drivers/ide/hpt366.c | 4 ++--
@ -17,11 +17,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/ide/ide-taskfile.c | 6 +++---
7 files changed, 16 insertions(+), 16 deletions(-)
Index: linux-3.2/drivers/ide/alim15x3.c
===================================================================
--- linux-3.2.orig/drivers/ide/alim15x3.c
+++ linux-3.2/drivers/ide/alim15x3.c
@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct p
diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c
index 2c8016a..6fd6037 100644
--- a/drivers/ide/alim15x3.c
+++ b/drivers/ide/alim15x3.c
@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev)
isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
@ -39,11 +39,11 @@ Index: linux-3.2/drivers/ide/alim15x3.c
return 0;
}
Index: linux-3.2/drivers/ide/hpt366.c
===================================================================
--- linux-3.2.orig/drivers/ide/hpt366.c
+++ linux-3.2/drivers/ide/hpt366.c
@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide
diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c
index 58c51cd..d2a4059 100644
--- a/drivers/ide/hpt366.c
+++ b/drivers/ide/hpt366.c
@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
dma_old = inb(base + 2);
@ -52,7 +52,7 @@ Index: linux-3.2/drivers/ide/hpt366.c
dma_new = dma_old;
pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma);
@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide
@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
if (dma_new != dma_old)
outb(dma_new, base + 2);
@ -61,11 +61,11 @@ Index: linux-3.2/drivers/ide/hpt366.c
printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n",
hwif->name, base, base + 7);
Index: linux-3.2/drivers/ide/ide-io-std.c
===================================================================
--- linux-3.2.orig/drivers/ide/ide-io-std.c
+++ linux-3.2/drivers/ide/ide-io-std.c
@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive,
diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c
index 1976397..4169433 100644
--- a/drivers/ide/ide-io-std.c
+++ b/drivers/ide/ide-io-std.c
@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) {
@ -74,7 +74,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
ata_vlb_sync(io_ports->nsect_addr);
}
@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive,
@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
insl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio)
@ -83,7 +83,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
if (((len + 1) & 3) < 2)
return;
@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive,
@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) {
@ -92,7 +92,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
ata_vlb_sync(io_ports->nsect_addr);
}
@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive,
@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
outsl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio)
@ -101,11 +101,11 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
if (((len + 1) & 3) < 2)
return;
Index: linux-3.2/drivers/ide/ide-io.c
===================================================================
--- linux-3.2.orig/drivers/ide/ide-io.c
+++ linux-3.2/drivers/ide/ide-io.c
@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long dat
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index 177db6d..079ae6b 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long data)
/* disable_irq_nosync ?? */
disable_irq(hwif->irq);
/* local CPU only, as if we were handling an interrupt */
@ -114,11 +114,11 @@ Index: linux-3.2/drivers/ide/ide-io.c
if (hwif->polling) {
startstop = handler(drive);
} else if (drive_is_ready(drive)) {
Index: linux-3.2/drivers/ide/ide-iops.c
===================================================================
--- linux-3.2.orig/drivers/ide/ide-iops.c
+++ linux-3.2/drivers/ide/ide-iops.c
@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive,
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 376f2dc..f014dd1 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad,
if ((stat & ATA_BUSY) == 0)
break;
@ -133,11 +133,11 @@ Index: linux-3.2/drivers/ide/ide-iops.c
}
/*
* Allow status to settle, then read it again.
Index: linux-3.2/drivers/ide/ide-probe.c
===================================================================
--- linux-3.2.orig/drivers/ide/ide-probe.c
+++ linux-3.2/drivers/ide/ide-probe.c
@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *dri
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 068cef0..38e69e1 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id)
int bswap = 1;
/* local CPU only; some systems need this */
@ -150,11 +150,11 @@ Index: linux-3.2/drivers/ide/ide-probe.c
drive->dev_flags |= IDE_DFLAG_ID_READ;
#ifdef DEBUG
Index: linux-3.2/drivers/ide/ide-taskfile.c
===================================================================
--- linux-3.2.orig/drivers/ide/ide-taskfile.c
+++ linux-3.2/drivers/ide/ide-taskfile.c
@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, s
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 5bc2839..da861a6 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
page_is_high = PageHighMem(page);
if (page_is_high)
@ -163,7 +163,7 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset;
@@ -272,7 +272,7 @@ void ide_pio_bytes(ide_drive_t *drive, s
@@ -272,7 +272,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
kunmap_atomic(buf, KM_BIO_SRC_IRQ);
if (page_is_high)
@ -172,7 +172,7 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
len -= nr_bytes;
}
@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr
@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive,
}
if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0)
@ -181,3 +181,6 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE);
--
1.7.10

View File

@ -1,6 +1,8 @@
From cd9cb9fbaf1df154b72fa6be9a3665ba7ad81433 Mon Sep 17 00:00:00 2001
From: Sven-Thorsten Dietrich <sdietrich@novell.com>
Date: Fri, 3 Jul 2009 08:30:35 -0500
Subject: infiniband: Mellanox IB driver patch use _nort() primitives
Subject: [PATCH 082/267] infiniband: Mellanox IB driver patch use _nort()
primitives
Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT
Kernel.
@ -13,16 +15,15 @@ changes."
Signed-off-by: Sven-Thorsten Dietrich <sven@thebigcorporation.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
===================================================================
--- linux-3.2.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -806,7 +806,7 @@ void ipoib_mcast_restart_task(struct wor
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index e5069b4..2683192 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -799,7 +799,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
ipoib_mcast_stop_thread(dev, 0);
@ -31,7 +32,7 @@ Index: linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
netif_addr_lock(dev);
spin_lock(&priv->lock);
@@ -888,7 +888,7 @@ void ipoib_mcast_restart_task(struct wor
@@ -881,7 +881,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
spin_unlock(&priv->lock);
netif_addr_unlock(dev);
@ -40,3 +41,6 @@ Index: linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
/* We have to cancel outside of the spinlock */
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
--
1.7.10

View File

@ -1,21 +1,22 @@
From 359b7e30fef466df9d38227b1f570e21fcb37b5e Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:16 -0500
Subject: input: gameport: Do not disable interrupts on PREEMPT_RT
Subject: [PATCH 083/267] input: gameport: Do not disable interrupts on
PREEMPT_RT
Use the _nort() primitives.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/input/gameport/gameport.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-3.2/drivers/input/gameport/gameport.c
===================================================================
--- linux-3.2.orig/drivers/input/gameport/gameport.c
+++ linux-3.2/drivers/input/gameport/gameport.c
@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
index c351aa4..1ecaf60 100644
--- a/drivers/input/gameport/gameport.c
+++ b/drivers/input/gameport/gameport.c
@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct gameport *gameport)
tx = 1 << 30;
for(i = 0; i < 50; i++) {
@ -30,7 +31,7 @@ Index: linux-3.2/drivers/input/gameport/gameport.c
udelay(i * 10);
if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t;
}
@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct
@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct gameport *gameport)
tx = 1 << 30;
for(i = 0; i < 50; i++) {
@ -44,3 +45,6 @@ Index: linux-3.2/drivers/input/gameport/gameport.c
udelay(i * 10);
if (t2 - t1 < tx) tx = t2 - t1;
}
--
1.7.10

View File

@ -1,19 +1,19 @@
From 6bd3fc45f9c1bd877a0fd6776610ca5658dae3b1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 22:54:51 +0200
Subject: acpi: Do not disable interrupts on PREEMPT_RT
Subject: [PATCH 084/267] acpi: Do not disable interrupts on PREEMPT_RT
Use the local_irq_*_nort() variants.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/include/asm/acpi.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/arch/x86/include/asm/acpi.h
===================================================================
--- linux-3.2.orig/arch/x86/include/asm/acpi.h
+++ linux-3.2/arch/x86/include/asm/acpi.h
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index 610001d..c1c23d2 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -51,8 +51,8 @@
#define ACPI_ASM_MACROS
@ -25,3 +25,6 @@ Index: linux-3.2/arch/x86/include/asm/acpi.h
#define ACPI_FLUSH_CPU_CACHE() wbinvd()
int __acpi_acquire_global_lock(unsigned int *lock);
--
1.7.10

Some files were not shown because too many files have changed in this diff Show More