Merge changes from sid up to 3.2.12-1

Drop the ABI versions and ignore lists.

svn path=/dists/trunk/linux-2.6/; revision=18870
This commit is contained in:
Ben Hutchings 2012-03-20 16:08:41 +00:00
commit 296fb7c8c7
30 changed files with 669 additions and 62 deletions

View File

@ -71,7 +71,13 @@ class Main(object):
self.dir = tempfile.mkdtemp(prefix='abiupdate')
try:
self.log("Retrieve config\n")
config = self.get_config()
try:
config = self.get_config()
except urllib2.HTTPError as e:
self.log("Failed to retrieve %s: %s\n" % (e.filename, e))
sys.exit(1)
if self.override_arch:
arches = [self.override_arch]
else:

62
debian/changelog vendored
View File

@ -19,6 +19,68 @@ 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.12-1) unstable; urgency=high
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.11
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.12
- aio: fix io_setup/io_destroy race
- aio: fix the "too late munmap()" race
- vfs: fix double put after complete_walk()
- acer-wmi: No wifi rfkill on Lenovo machines (Closes: #655941)
- tcp: fix false reordering signal in tcp_shifted_skb
- r8169: corrupted IP fragments fix for large mtu
- tcp: don't fragment SACKed skbs in tcp_mark_head_lost()
- tcp: fix tcp_shift_skb_data() to not shift SACKed data below snd_una
- block: Fix NULL pointer dereference in sd_revalidate_disk
(Closes: #649735)
- block: fix __blkdev_get and add_disk race condition
[ Ben Hutchings ]
* [powerpc] Enable KVM_GUEST
* [s390] Ignore arch_pick_mmap_layout version change; it should not be
needed by modules (fixes FTBFS)
* [x86] Disable POHMELFS; this version is obsolete
* epoll: Don't limit non-nested epoll paths
* CIFS: Fix a spurious error in cifs_push_posix_locks
* [rt] bump rt patch to version 3.2.11-rt20
* aufs: Update to aufs3.2-20120312
* tcp: fix syncookie regression
* ipv6: Don't dev_hold(dev) in ip6_mc_find_dev_rcu
[ Jonathan Nieder ]
* [x86] Enable RTS5139 as module (Closes: #663912)
-- Ben Hutchings <ben@decadent.org.uk> Tue, 20 Mar 2012 04:32:51 +0000
linux-2.6 (3.2.10-1) unstable; urgency=high
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.10
- regset: Prevent null pointer reference on readonly regsets
(CVE-2012-1097)
[ Uwe Kleine-König ]
* [rt] bump rt patch to version 3.2.9-rt17
* [rt] fix conflict between the security restrictions on links introduced in
3.2.9-1 and rt (Closes: #663269)
[ Aurelien Jarno ]
* [mips,mipsel] Mark ext4-modules as provided by the kernel-image udeb, remove
ide-core-modules provide.
[ Ben Hutchings ]
* [x86,ia64] PCI/hotplug: Build-in common hotplug drivers:
- Change HOTPLUG_PCI, HOTPLUG_PCI_PCIE to built-in
- [x86] Change HOTPLUG_PCI_ACPI to built-in (Closes: #663433)
- [ia64] Enable HOTPLUG_PCI_SGI as built-in
* linux-headers: Remove unused, broken symlinks to Kbuild (Closes: #663597)
* udeb: Remove dependency of {pcmcia,usb}-storage-modules on ide-core-modules
* [mips,mipsel] Mark ata-modules as provided by the kernel-image udeb
for most flavours
-- Bastian Blank <waldi@debian.org> Tue, 13 Mar 2012 17:19:32 +0100
linux-2.6 (3.2.9-1) unstable; urgency=high
* New upstream stable update:

View File

@ -1832,7 +1832,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_E1000=m
CONFIG_E1000E=m
CONFIG_IGB=m
CONFIG_IGB_DCA=m
CONFIG_IGB_DCA=y
CONFIG_IGBVF=m
CONFIG_IXGB=m
CONFIG_IXGBE=m
@ -2400,7 +2400,7 @@ CONFIG_HOTPLUG_PCI_CPCI=y
## file: drivers/pci/pcie/Kconfig
##
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_HOTPLUG_PCI_PCIE=y
CONFIG_PCIEASPM=y
# CONFIG_PCIEASPM_DEBUG is not set

View File

@ -25,6 +25,9 @@ featuresets:
none
rt
[featureset-rt_base]
enabled: true
[description]
part-long-up: This kernel is not suitable for SMP (multi-processor,
multi-core or hyper-threaded) systems.
@ -49,6 +52,3 @@ initramfs-tools: initramfs-tools (>= 0.99~)
elilo: elilo (>= 3.12-3.1~)
lilo: lilo (>= 22.8-8.2~)
s390-tools: s390-tools (>= 1.8.3-2~)
[featureset-rt]
enabled: true

View File

@ -3,3 +3,6 @@ CONFIG_PREEMPT_RT_FULL=y
CONFIG_SCHED_TRACER=y
CONFIG_MISSED_TIMER_OFFSETS_HIST=y
CONFIG_WAKEUP_LATENCY_HIST=y
## disable aufs as it's not needed on rt and conflicts with fs-dentry-use-seqlock.patch
# CONFIG_AUFS_FS is not set

View File

@ -590,7 +590,8 @@ CONFIG_PCMCIA_SPECTRUM=m
##
## file: drivers/pci/hotplug/Kconfig
##
CONFIG_HOTPLUG_PCI=m
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_SGI=y
##
## file: drivers/pcmcia/Kconfig

View File

@ -1039,9 +1039,9 @@ CONFIG_HT_IRQ=y
##
## file: drivers/pci/hotplug/Kconfig
##
CONFIG_HOTPLUG_PCI=m
CONFIG_HOTPLUG_PCI=y
CONFIG_HOTPLUG_PCI_FAKE=m
CONFIG_HOTPLUG_PCI_ACPI=m
CONFIG_HOTPLUG_PCI_ACPI=y
CONFIG_HOTPLUG_PCI_ACPI_IBM=m
CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
@ -1306,12 +1306,6 @@ CONFIG_LIRC_SIR=m
CONFIG_LIRC_TTUSBIR=m
CONFIG_LIRC_ZILOG=m
##
## file: drivers/staging/pohmelfs/Kconfig
##
CONFIG_POHMELFS=m
# CONFIG_POHMELFS_DEBUG is not set
##
## file: drivers/staging/rtl8187se/Kconfig
##
@ -1332,6 +1326,12 @@ CONFIG_RTL8192U=m
##
CONFIG_R8712U=m
##
## file: drivers/staging/rts5139/Kconfig
##
CONFIG_RTS5139=m
# CONFIG_RTS5139_DEBUG is not set
##
## file: drivers/staging/rts_pstor/Kconfig
##

View File

@ -9,11 +9,6 @@ flavours:
octeon
kernel-arch: mips
[abi]
ignore-changes:
# Removal of EXT3_FS
journal_* log_start_commit log_wait_commit
[image]
configs:
kernelarch-mips/config

View File

@ -8,11 +8,6 @@ flavours:
loongson-2f
kernel-arch: mips
[abi]
ignore-changes:
# Removal of EXT3_FS
journal_* log_start_commit log_wait_commit
[image]
configs:
kernelarch-mips/config

View File

@ -38,6 +38,7 @@ CONFIG_VIRTUALIZATION=y
##
## file: arch/powerpc/platforms/Kconfig
##
CONFIG_KVM_GUEST=y
CONFIG_RTAS_PROC=y
CONFIG_CPU_FREQ_PMAC=y
CONFIG_PPC601_SYNC_FIX=y

View File

@ -4,9 +4,9 @@
# It overwrites specifications from /usr/share/kernel-wedge/package-list.
#
Package: kernel-image
Provides: ext2-modules, ext3-modules, rtc-modules
Provides_4kc-malta: ext2-modules, ext3-modules, ide-core-modules, rtc-modules
Provides_sb1-bcm91250a: ext2-modules, ext3-modules, ide-core-modules, rtc-modules
Provides: ext2-modules, ext3-modules, ext4-modules, rtc-modules
Provides_4kc-malta: ata-modules, ext2-modules, ext3-modules, ext4-modules, rtc-modules
Provides_sb1-bcm91250a: ata-modules, ext2-modules, ext3-modules, ext4-modules, rtc-modules
Package: nbd-modules
Depends: kernel-image

View File

@ -4,10 +4,10 @@
# It overwrites specifications from /usr/share/kernel-wedge/package-list.
#
Package: kernel-image
Provides_sb1-bcm91250a: ext2-modules, ext3-modules, ide-core-modules, rtc-modules
Provides_r5k-cobalt: ext2-modules, ext3-modules, ide-core-modules, rtc-modules
Provides_4kc-malta: ext2-modules, ext3-modules, ide-core-modules, rtc-modules
Provides_loongson-2f: ext2-modules, ext3-modules, rtc-modules
Provides_sb1-bcm91250a: ata-modules, ext2-modules, ext3-modules, ext4-modules, rtc-modules
Provides_r5k-cobalt: ata-modules, ext2-modules, ext3-modules, ext4-modules, rtc-modules
Provides_4kc-malta: ata-modules, ext2-modules, ext3-modules, ext4-modules, rtc-modules
Provides_loongson-2f: ata-modules, ext2-modules, ext3-modules, ext4-modules, rtc-modules
Package: nbd-modules
Depends: kernel-image

View File

@ -278,13 +278,13 @@ Description: USB support
This package contains core USB drivers for the kernel.
Package: usb-storage-modules
Depends: kernel-image, ide-core-modules, scsi-core-modules, usb-modules
Depends: kernel-image, scsi-core-modules, usb-modules
Priority: standard
Description: USB storage support
This package contains the USB storage driver for the kernel.
Package: pcmcia-storage-modules
Depends: kernel-image, ide-core-modules, cdrom-core-modules, pcmcia-modules, ata-modules
Depends: kernel-image, cdrom-core-modules, pcmcia-modules, ata-modules
Priority: standard
Description: PCMCIA storage drivers
This package contains PCMCIA storage drivers for the kernel.

View File

@ -168,7 +168,7 @@ class ConfigCoreHierarchy(object):
for section in iter(config):
if section[0].startswith('featureset-'):
real = (section[-1], None, section[0].lstrip('featureset-'))
real = (section[-1], None, section[0][11:])
else:
real = (section[-1],) + section[1:]
ret[real] = config[section]

View File

@ -0,0 +1,67 @@
From ce85852b90a214cf577fc1b4f49d99fd7e98784a Mon Sep 17 00:00:00 2001
From: Pavel Shilovsky <piastry@etersoft.ru>
Date: Sat, 17 Mar 2012 09:46:55 +0300
Subject: [PATCH] CIFS: Fix a spurious error in cifs_push_posix_locks
Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Reported-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Steve French <stevef@smf-gateway.(none)>
---
fs/cifs/file.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 5e64748..8e02dbd 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -960,9 +960,9 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
INIT_LIST_HEAD(&locks_to_send);
/*
- * Allocating count locks is enough because no locks can be added to
- * the list while we are holding cinode->lock_mutex that protects
- * locking operations of this inode.
+ * Allocating count locks is enough because no FL_POSIX locks can be
+ * added to the list while we are holding cinode->lock_mutex that
+ * protects locking operations of this inode.
*/
for (; i < count; i++) {
lck = kmalloc(sizeof(struct lock_to_push), GFP_KERNEL);
@@ -973,18 +973,20 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
list_add_tail(&lck->llist, &locks_to_send);
}
- i = 0;
el = locks_to_send.next;
lock_flocks();
cifs_for_each_lock(cfile->dentry->d_inode, before) {
+ flock = *before;
+ if ((flock->fl_flags & FL_POSIX) == 0)
+ continue;
if (el == &locks_to_send) {
- /* something is really wrong */
+ /*
+ * The list ended. We don't have enough allocated
+ * structures - something is really wrong.
+ */
cERROR(1, "Can't push all brlocks!");
break;
}
- flock = *before;
- if ((flock->fl_flags & FL_POSIX) == 0)
- continue;
length = 1 + flock->fl_end - flock->fl_start;
if (flock->fl_type == F_RDLCK || flock->fl_type == F_SHLCK)
type = CIFS_RDLCK;
@@ -996,7 +998,6 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile)
lck->length = length;
lck->type = type;
lck->offset = flock->fl_start;
- i++;
el = el->next;
}
unlock_flocks();
--
1.7.0.4

View File

@ -18,10 +18,14 @@ Cc: Clark Williams <clark.williams@gmail.com>
Cc: stable-rt@vger.kernel.org
Link: http://lkml.kernel.org/r/1330702617.25686.265.camel@gandalf.stny.rr.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
diff --git a/kernel/cpu.c b/kernel/cpu.c
index fa40834..c25b5ff 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
---
kernel/cpu.c | 35 ++++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)
Index: linux-3.2/kernel/cpu.c
===================================================================
--- linux-3.2.orig/kernel/cpu.c
+++ linux-3.2/kernel/cpu.c
@@ -46,7 +46,12 @@ static int cpu_hotplug_disabled;
static struct {
@ -35,22 +39,30 @@ index fa40834..c25b5ff 100644
/*
* Also blocks the new readers during
* an ongoing cpu hotplug operation.
@@ -58,6 +63,14 @@ static struct {
@@ -54,10 +59,22 @@ static struct {
int refcount;
} cpu_hotplug = {
.active_writer = NULL,
+#ifdef CONFIG_PREEMPT_RT_FULL
+ .lock = __SPIN_LOCK_UNLOCKED(cpu_hotplug.lock),
+#else
.lock = __MUTEX_INITIALIZER(cpu_hotplug.lock),
+#endif
.refcount = 0,
};
+#ifdef CONFIG_PREEMPT_RT_FULL
+# define hotplug_lock() spin_lock(&cpu_hotplug.lock)
+# define hotplug_unlock() spin_unlock(&cpu_hotplug.lock)
+# define hotplug_lock() rt_spin_lock(&cpu_hotplug.lock)
+# define hotplug_unlock() rt_spin_unlock(&cpu_hotplug.lock)
+#else
+# define hotplug_lock() mutex_lock(&cpu_hotplug.lock)
+# define hotplug_lock() mutex_unlock(&cpu_hotplug.lock)
+# define hotplug_unlock() mutex_unlock(&cpu_hotplug.lock)
+#endif
+
struct hotplug_pcp {
struct task_struct *unplug;
int refcount;
@@ -87,8 +100,8 @@ retry:
@@ -87,8 +104,8 @@ retry:
return;
}
preempt_enable();
@ -61,7 +73,7 @@ index fa40834..c25b5ff 100644
preempt_disable();
goto retry;
}
@@ -161,9 +174,9 @@ void get_online_cpus(void)
@@ -161,9 +178,9 @@ void get_online_cpus(void)
might_sleep();
if (cpu_hotplug.active_writer == current)
return;
@ -73,7 +85,7 @@ index fa40834..c25b5ff 100644
}
EXPORT_SYMBOL_GPL(get_online_cpus);
@@ -172,10 +185,10 @@ void put_online_cpus(void)
@@ -172,10 +189,10 @@ void put_online_cpus(void)
{
if (cpu_hotplug.active_writer == current)
return;
@ -86,7 +98,7 @@ index fa40834..c25b5ff 100644
}
EXPORT_SYMBOL_GPL(put_online_cpus);
@@ -207,11 +220,11 @@ static void cpu_hotplug_begin(void)
@@ -207,11 +224,11 @@ static void cpu_hotplug_begin(void)
cpu_hotplug.active_writer = current;
for (;;) {
@ -100,7 +112,7 @@ index fa40834..c25b5ff 100644
schedule();
}
}
@@ -219,7 +232,7 @@ static void cpu_hotplug_begin(void)
@@ -219,7 +236,7 @@ static void cpu_hotplug_begin(void)
static void cpu_hotplug_done(void)
{
cpu_hotplug.active_writer = NULL;
@ -109,7 +121,3 @@ index fa40834..c25b5ff 100644
}
#else /* #if CONFIG_HOTPLUG_CPU */

View File

@ -36,9 +36,9 @@ Index: linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
- }
+ spin_lock_irqsave(&adapter->tx_lock, flags);
+
if (skb->mark == 0x01)
type = atl1c_trans_high;
else
if (atl1c_tpd_avail(adapter, type) < tpd_req) {
/* no enough descriptor, just stop queue */
Index: linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
===================================================================
--- linux-3.2.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c

View File

@ -0,0 +1,22 @@
---
fs/namei.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -679,13 +679,13 @@
return 0;
/* Check parent directory mode and owner. */
- spin_lock(&dentry->d_lock);
+ seq_spin_lock(&dentry->d_lock);
parent = dentry->d_parent->d_inode;
if ((parent->i_mode & (S_ISVTX|S_IWOTH)) == (S_ISVTX|S_IWOTH) &&
parent->i_uid != inode->i_uid) {
error = -EACCES;
}
- spin_unlock(&dentry->d_lock);
+ seq_spin_unlock(&dentry->d_lock);
if (error)
audit_log_link_denied("follow_link", link);

View File

@ -0,0 +1,80 @@
Subject: fs: dcache: Use cpu_chill() in trylock loops
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 07 Mar 2012 21:00:34 +0100
Retry loops on RT might loop forever when the modifying side was
preempted. Use cpu_chill() instead of cpu_relax() to let the system
make progress.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
---
fs/autofs4/autofs_i.h | 1 +
fs/autofs4/expire.c | 2 +-
fs/dcache.c | 7 ++++---
3 files changed, 6 insertions(+), 4 deletions(-)
Index: linux-3.2/fs/autofs4/autofs_i.h
===================================================================
--- linux-3.2.orig/fs/autofs4/autofs_i.h
+++ linux-3.2/fs/autofs4/autofs_i.h
@@ -34,6 +34,7 @@
#include <linux/sched.h>
#include <linux/mount.h>
#include <linux/namei.h>
+#include <linux/delay.h>
#include <asm/current.h>
#include <asm/uaccess.h>
Index: linux-3.2/fs/autofs4/expire.c
===================================================================
--- linux-3.2.orig/fs/autofs4/expire.c
+++ linux-3.2/fs/autofs4/expire.c
@@ -170,7 +170,7 @@ again:
parent = p->d_parent;
if (!seq_spin_trylock(&parent->d_lock)) {
seq_spin_unlock(&p->d_lock);
- cpu_relax();
+ cpu_chill();
goto relock;
}
seq_spin_unlock(&p->d_lock);
Index: linux-3.2/fs/dcache.c
===================================================================
--- linux-3.2.orig/fs/dcache.c
+++ linux-3.2/fs/dcache.c
@@ -37,6 +37,7 @@
#include <linux/rculist_bl.h>
#include <linux/prefetch.h>
#include <linux/ratelimit.h>
+#include <linux/delay.h>
#include "internal.h"
/*
@@ -410,7 +411,7 @@ static inline struct dentry *dentry_kill
if (inode && !spin_trylock(&inode->i_lock)) {
relock:
seq_spin_unlock(&dentry->d_lock);
- cpu_relax();
+ cpu_chill();
return dentry; /* try again with same dentry */
}
if (IS_ROOT(dentry))
@@ -796,7 +797,7 @@ relock:
if (!seq_spin_trylock(&dentry->d_lock)) {
spin_unlock(&dcache_lru_lock);
- cpu_relax();
+ cpu_chill();
goto relock;
}
@@ -1974,7 +1975,7 @@ again:
if (dentry->d_count == 1) {
if (inode && !spin_trylock(&inode->i_lock)) {
seq_spin_unlock(&dentry->d_lock);
- cpu_relax();
+ cpu_chill();
goto again;
}
dentry->d_flags &= ~DCACHE_CANT_MOUNT;

View File

@ -0,0 +1,35 @@
Subject: fs: namespace: Use cpu_chill() instead of cpu_relax()
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 07 Mar 2012 21:05:19 +0100
Retry loops on RT might loop forever when the modifying side was
preempted. Use cpu_chill() instead of cpu_relax() to let the system
make progress.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
---
fs/namespace.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-3.2/fs/namespace.c
===================================================================
--- linux-3.2.orig/fs/namespace.c
+++ linux-3.2/fs/namespace.c
@@ -31,6 +31,7 @@
#include <linux/idr.h>
#include <linux/fs_struct.h>
#include <linux/fsnotify.h>
+#include <linux/delay.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
#include "pnode.h"
@@ -346,7 +347,7 @@ int mnt_want_write(struct vfsmount *mnt)
*/
while (mnt->mnt_flags & MNT_WRITE_HOLD) {
preempt_enable();
- cpu_relax();
+ cpu_chill();
preempt_disable();
}
/*

View File

@ -14,4 +14,4 @@ Index: linux-3.2/localversion-rt
--- /dev/null
+++ linux-3.2/localversion-rt
@@ -0,0 +1 @@
+-rt15
+-rt20

View File

@ -0,0 +1,66 @@
Subject: net: Use cpu_chill() instead of cpu_relax()
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 07 Mar 2012 21:10:04 +0100
Retry loops on RT might loop forever when the modifying side was
preempted. Use cpu_chill() instead of cpu_relax() to let the system
make progress.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
---
net/packet/af_packet.c | 5 +++--
net/rds/ib_rdma.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
Index: linux-3.2/net/packet/af_packet.c
===================================================================
--- linux-3.2.orig/net/packet/af_packet.c
+++ linux-3.2/net/packet/af_packet.c
@@ -89,6 +89,7 @@
#include <linux/virtio_net.h>
#include <linux/errqueue.h>
#include <linux/net_tstamp.h>
+#include <linux/delay.h>
#ifdef CONFIG_INET
#include <net/inet_common.h>
@@ -673,7 +674,7 @@ static void prb_retire_rx_blk_timer_expi
if (BLOCK_NUM_PKTS(pbd)) {
while (atomic_read(&pkc->blk_fill_in_prog)) {
/* Waiting for skb_copy_bits to finish... */
- cpu_relax();
+ cpu_chill();
}
}
@@ -928,7 +929,7 @@ static void prb_retire_current_block(str
if (!(status & TP_STATUS_BLK_TMO)) {
while (atomic_read(&pkc->blk_fill_in_prog)) {
/* Waiting for skb_copy_bits to finish... */
- cpu_relax();
+ cpu_chill();
}
}
prb_close_block(pkc, pbd, po, status);
Index: linux-3.2/net/rds/ib_rdma.c
===================================================================
--- linux-3.2.orig/net/rds/ib_rdma.c
+++ linux-3.2/net/rds/ib_rdma.c
@@ -34,6 +34,7 @@
#include <linux/slab.h>
#include <linux/rculist.h>
#include <linux/llist.h>
+#include <linux/delay.h>
#include "rds.h"
#include "ib.h"
@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace
for_each_online_cpu(cpu) {
flag = &per_cpu(clean_list_grace, cpu);
while (test_bit(CLEAN_LIST_BUSY_BIT, flag))
- cpu_relax();
+ cpu_chill();
}
}

View File

@ -0,0 +1,30 @@
Subject: rt: Introduce cpu_chill()
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 07 Mar 2012 20:51:03 +0100
Retry loops on RT might loop forever when the modifying side was
preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill()
defaults to cpu_relax() for non RT. On RT it puts the looping task to
sleep for a tick so the preempted task can make progress.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
---
include/linux/delay.h | 6 ++++++
1 file changed, 6 insertions(+)
Index: linux-3.2/include/linux/delay.h
===================================================================
--- linux-3.2.orig/include/linux/delay.h
+++ linux-3.2/include/linux/delay.h
@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int s
msleep(seconds * 1000);
}
+#ifdef CONFIG_PREEMPT_RT_FULL
+# define cpu_chill() msleep(1)
+#else
+# define cpu_chill() cpu_relax()
+#endif
+
#endif /* defined(_LINUX_DELAY_H) */

View File

@ -14,7 +14,8 @@ Cc: stable-rt@vger.kernel.org
---
include/linux/seqlock.h | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
include/net/neighbour.h | 2 +-
2 files changed, 24 insertions(+), 1 deletion(-)
Index: linux-3.2/include/linux/seqlock.h
===================================================================
@ -24,7 +25,7 @@ Index: linux-3.2/include/linux/seqlock.h
/*
* Read side functions for starting and finalizing a read side section.
*/
+#ifndef CONFIG_PREEMPT_RT
+#ifndef CONFIG_PREEMPT_RT_FULL
static inline unsigned read_seqbegin(const seqlock_t *sl)
{
return read_seqcount_begin(&sl->seqcount);
@ -54,3 +55,16 @@ Index: linux-3.2/include/linux/seqlock.h
static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start)
{
Index: linux-3.2/include/net/neighbour.h
===================================================================
--- linux-3.2.orig/include/net/neighbour.h
+++ linux-3.2/include/net/neighbour.h
@@ -385,7 +385,7 @@ struct neighbour_cb {
#define NEIGH_CB(skb) ((struct neighbour_cb *)(skb)->cb)
-static inline void neigh_ha_snapshot(char *dst, const struct neighbour *n,
+static inline void neigh_ha_snapshot(char *dst, struct neighbour *n,
const struct net_device *dev)
{
unsigned int seq;

View File

@ -5,6 +5,7 @@
############################################################
# UPSTREAM changes queued for 3.3 or 3.2
############################################################
x88-derandom-tsc-delay-64-bit.patch
x86_64-patch-for-idle-notifiers.patch
re-possible-slab-deadlock-while-doing-ifenslave-1.patch
@ -585,8 +586,16 @@ rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch
rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch
rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch
# Enable full RT
cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch
softirq-preempt-fix-3-re.txt
rt-introduce-cpu-chill.patch
fs-dcache-use-cpu-chill-in-trylock-loops.patch
fs-more-cpu-chill-fixups.patch
net-use-cpu-chill.patch
# Enable full RT
kconfig-disable-a-few-options-rt.patch
kconfig-preempt-rt-full.patch

View File

@ -0,0 +1,153 @@
Subject: softirq: Check preemption after reenabling interrupts
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 13 Nov 2011 17:17:09 +0100 (CET)
raise_softirq_irqoff() disables interrupts and wakes the softirq
daemon, but after reenabling interrupts there is no preemption check,
so the execution of the softirq thread might be delayed arbitrarily.
In principle we could add that check to local_irq_enable/restore, but
that's overkill as the rasie_softirq_irqoff() sections are the only
ones which show this behaviour.
Reported-by: Carsten Emde <cbe@osadl.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
---
block/blk-iopoll.c | 3 +++
block/blk-softirq.c | 3 +++
include/linux/preempt.h | 3 +++
net/core/dev.c | 6 ++++++
4 files changed, 15 insertions(+)
Index: linux-3.2/block/blk-iopoll.c
===================================================================
--- linux-3.2.orig/block/blk-iopoll.c
+++ linux-3.2/block/blk-iopoll.c
@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll
list_add_tail(&iop->list, &__get_cpu_var(blk_cpu_iopoll));
__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
local_irq_restore(flags);
+ preempt_check_resched_rt();
}
EXPORT_SYMBOL(blk_iopoll_sched);
@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct so
__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
local_irq_enable();
+ preempt_check_resched_rt();
}
/**
@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_noti
&__get_cpu_var(blk_cpu_iopoll));
__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
local_irq_enable();
+ preempt_check_resched_rt();
}
return NOTIFY_OK;
Index: linux-3.2/block/blk-softirq.c
===================================================================
--- linux-3.2.orig/block/blk-softirq.c
+++ linux-3.2/block/blk-softirq.c
@@ -50,6 +50,7 @@ static void trigger_softirq(void *data)
raise_softirq_irqoff(BLOCK_SOFTIRQ);
local_irq_restore(flags);
+ preempt_check_resched_rt();
}
/*
@@ -92,6 +93,7 @@ static int __cpuinit blk_cpu_notify(stru
&__get_cpu_var(blk_cpu_done));
raise_softirq_irqoff(BLOCK_SOFTIRQ);
local_irq_enable();
+ preempt_check_resched_rt();
}
return NOTIFY_OK;
@@ -150,6 +152,7 @@ do_local:
goto do_local;
local_irq_restore(flags);
+ preempt_check_resched_rt();
}
/**
Index: linux-3.2/include/linux/preempt.h
===================================================================
--- linux-3.2.orig/include/linux/preempt.h
+++ linux-3.2/include/linux/preempt.h
@@ -56,8 +56,10 @@ do { \
#ifndef CONFIG_PREEMPT_RT_BASE
# define preempt_enable_no_resched() __preempt_enable_no_resched()
+# define preempt_check_resched_rt() do { } while (0)
#else
# define preempt_enable_no_resched() preempt_enable()
+# define preempt_check_resched_rt() preempt_check_resched()
#endif
#define preempt_enable() \
@@ -105,6 +107,7 @@ do { \
#define preempt_disable_notrace() do { } while (0)
#define preempt_enable_no_resched_notrace() do { } while (0)
#define preempt_enable_notrace() do { } while (0)
+#define preempt_check_resched_rt() do { } while (0)
#endif /* CONFIG_PREEMPT_COUNT */
Index: linux-3.2/net/core/dev.c
===================================================================
--- linux-3.2.orig/net/core/dev.c
+++ linux-3.2/net/core/dev.c
@@ -1779,6 +1779,7 @@ static inline void __netif_reschedule(st
sd->output_queue_tailp = &q->next_sched;
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_restore(flags);
+ preempt_check_resched_rt();
}
void __netif_schedule(struct Qdisc *q)
@@ -1800,6 +1801,7 @@ void dev_kfree_skb_irq(struct sk_buff *s
sd->completion_queue = skb;
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_restore(flags);
+ preempt_check_resched_rt();
}
}
EXPORT_SYMBOL(dev_kfree_skb_irq);
@@ -2969,6 +2971,7 @@ enqueue:
rps_unlock(sd);
local_irq_restore(flags);
+ preempt_check_resched_rt();
atomic_long_inc(&skb->dev->rx_dropped);
kfree_skb(skb);
@@ -3789,6 +3792,7 @@ static void net_rps_action_and_irq_enabl
} else
#endif
local_irq_enable();
+ preempt_check_resched_rt();
}
static int process_backlog(struct napi_struct *napi, int quota)
@@ -3861,6 +3865,7 @@ void __napi_schedule(struct napi_struct
local_irq_save(flags);
____napi_schedule(&__get_cpu_var(softnet_data), n);
local_irq_restore(flags);
+ preempt_check_resched_rt();
}
EXPORT_SYMBOL(__napi_schedule);
@@ -6401,6 +6406,7 @@ static int dev_cpu_callback(struct notif
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
+ preempt_check_resched_rt();
/* Process offline CPU's input_pkt_queue */
while ((skb = __skb_dequeue(&oldsd->process_queue))) {

View File

@ -0,0 +1,54 @@
From 0bf0d69e1a358e93e5c9b256bb18cab4041e7d8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig@pengutronix.de>
Date: Sun, 11 Mar 2012 17:14:22 +0100
Subject: [PATCH RT] staging/pohmelfs: convert struct fs->lock usage to seq_spin_{,un}lock
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fixes:
drivers/staging/pohmelfs/path_entry.c:47:2: warning: passing argument 1 of rt_spin_lock from incompatible pointer type [enabled by default]
include/linux/spinlock_rt.h:19:56: note: expected struct spinlock_t * but argument is of type struct seqlock_t *
drivers/staging/pohmelfs/path_entry.c:49:2: warning: passing argument 1 of rt_spin_unlock from incompatible pointer type [enabled by default]
include/linux/spinlock_rt.h:22:56: note: expected struct spinlock_t * but argument is of type struct seqlock_t *
drivers/staging/pohmelfs/path_entry.c:95:2: warning: passing argument 1 of rt_spin_lock from incompatible pointer type [enabled by default]
include/linux/spinlock_rt.h:19:56: note: expected struct spinlock_t * but argument is of type struct seqlock_t *
drivers/staging/pohmelfs/path_entry.c:97:2: warning: passing argument 1 of rt_spin_unlock from incompatible pointer type [enabled by default]
include/linux/spinlock_rt.h:22:56: note: expected struct spinlock_t * but argument is of type struct seqlock_t *
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Forwarded: http://mid.gmane.org/1331482999-32252-1-git-send-email-u.kleine-koenig@pengutronix.de
---
drivers/staging/pohmelfs/path_entry.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/pohmelfs/path_entry.c b/drivers/staging/pohmelfs/path_entry.c
index 400a9fc..fc0c3fe 100644
--- a/drivers/staging/pohmelfs/path_entry.c
+++ b/drivers/staging/pohmelfs/path_entry.c
@@ -44,9 +44,9 @@ int pohmelfs_construct_path_string(struct pohmelfs_inode *pi, void *data, int le
return -ENOENT;
}
- spin_lock(&current->fs->lock);
+ seq_spin_lock(&current->fs->lock);
path.mnt = mntget(current->fs->root.mnt);
- spin_unlock(&current->fs->lock);
+ seq_spin_unlock(&current->fs->lock);
path.dentry = d;
@@ -92,9 +92,9 @@ int pohmelfs_path_length(struct pohmelfs_inode *pi)
return -ENOENT;
}
- spin_lock(&current->fs->lock);
+ seq_spin_lock(&current->fs->lock);
root = dget(current->fs->root.dentry);
- spin_unlock(&current->fs->lock);
+ seq_spin_unlock(&current->fs->lock);
rename_retry:
len = 1; /* Root slash */

View File

@ -52,3 +52,4 @@
+ features/all/fs-hardlink-creation-restrictions.patch
+ features/all/fs-hardlink-creation-restrictions-fix.patch
+ features/all/fs-hardlink-creation-restriction-cleanup.patch
+ bugfix/all/CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch

View File

@ -260,5 +260,12 @@
+ features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch featureset=rt
+ features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch featureset=rt
+ features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch featureset=rt
+ features/all/rt/softirq-preempt-fix-3-re.txt featureset=rt
+ features/all/rt/rt-introduce-cpu-chill.patch featureset=rt
+ features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch featureset=rt
+ features/all/rt/fs-more-cpu-chill-fixups.patch featureset=rt
+ features/all/rt/net-use-cpu-chill.patch featureset=rt
+ features/all/rt/kconfig-disable-a-few-options-rt.patch featureset=rt
+ features/all/rt/kconfig-preempt-rt-full.patch featureset=rt
+ features/all/rt/fix-rt+link-creation-restrictions featureset=rt
+ features/all/rt/staging-pohmelfs-convert-struct-fs-lock-usage-to-.patch featureset=rt

4
debian/rules.real vendored
View File

@ -215,9 +215,7 @@ install-headers_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET
| \
cpio -pd --preserve-modification-time '$(CURDIR)/$(DIR)'
dh_link \
/usr/lib/$(PACKAGE_NAME_KBUILD)/Kbuild $(BASE_DIR)/Kbuild \
/usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(BASE_DIR)/scripts
dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(BASE_DIR)/scripts
+$(MAKE_SELF) install-base