From 1dbc9c565333847e650fcf885be53abf5ee4fc2a Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 1 May 2012 01:45:02 +0000 Subject: [PATCH 01/31] aufs: Enable AUFS_EXPORT svn path=/dists/sid/linux-2.6/; revision=18969 --- debian/changelog | 7 +++++++ debian/config/config | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4c6065ef6..5321ebc38 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +linux-2.6 (3.2.16-2) UNRELEASED; urgency=low + + [ Ben Hutchings ] + * aufs: Enable AUFS_EXPORT + + -- Ben Hutchings Tue, 01 May 2012 00:43:48 +0100 + linux-2.6 (3.2.16-1) unstable; urgency=low * New upstream stable update: diff --git a/debian/config/config b/debian/config/config index 802b3da63..fd240bf1c 100644 --- a/debian/config/config +++ b/debian/config/config @@ -3310,7 +3310,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 From 43eb0a755bf3392a790e258e27db444819c3d9c4 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 1 May 2012 01:45:51 +0000 Subject: [PATCH 02/31] ext4: Report max_batch_time option correctly (Closes: #654206) svn path=/dists/sid/linux-2.6/; revision=18970 --- debian/changelog | 1 + ...port-max_batch_time-option-correctly.patch | 31 +++++++++++++++++++ debian/patches/series/base | 2 ++ 3 files changed, 34 insertions(+) create mode 100644 debian/patches/bugfix/all/ext4-Report-max_batch_time-option-correctly.patch diff --git a/debian/changelog b/debian/changelog index 5321ebc38..dd674d35b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ linux-2.6 (3.2.16-2) UNRELEASED; urgency=low [ Ben Hutchings ] * aufs: Enable AUFS_EXPORT + * ext4: Report max_batch_time option correctly (Closes: #654206) -- Ben Hutchings Tue, 01 May 2012 00:43:48 +0100 diff --git a/debian/patches/bugfix/all/ext4-Report-max_batch_time-option-correctly.patch b/debian/patches/bugfix/all/ext4-Report-max_batch_time-option-correctly.patch new file mode 100644 index 000000000..13e050f7a --- /dev/null +++ b/debian/patches/bugfix/all/ext4-Report-max_batch_time-option-correctly.patch @@ -0,0 +1,31 @@ +From: Ben Hutchings +Date: Wed, 4 Jan 2012 21:22:51 -0500 +Subject: [PATCH] ext4: Report max_batch_time option correctly + +commit 1d526fc91bea04ee35b7599bf8b82f86c0aaf46c upstream. + +Currently the value reported for max_batch_time is really the +value of min_batch_time. + +Reported-by: Russell Coker +Signed-off-by: Ben Hutchings +--- + fs/ext4/super.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/ext4/super.c b/fs/ext4/super.c +index 35377d5..36570b7 100644 +--- a/fs/ext4/super.c ++++ b/fs/ext4/super.c +@@ -1096,7 +1096,7 @@ static int ext4_show_options(struct seq_file *seq, struct vfsmount *vfs) + } + if (sbi->s_max_batch_time != EXT4_DEF_MAX_BATCH_TIME) { + seq_printf(seq, ",max_batch_time=%u", +- (unsigned) sbi->s_min_batch_time); ++ (unsigned) sbi->s_max_batch_time); + } + + /* +-- +1.7.10 + diff --git a/debian/patches/series/base b/debian/patches/series/base index f52816bfe..1e747a3e9 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -198,3 +198,5 @@ + debian/revert-rtc-Provide-flag-for-rtc-devices-that-don-t-s.patch + debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch + debian/efi-avoid-ABI-change.patch + ++ bugfix/all/ext4-Report-max_batch_time-option-correctly.patch From d493861613192759d9fa0f3d2f11ba7faf5e0bee Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 7 May 2012 13:59:48 +0000 Subject: [PATCH 03/31] [i386/rt-686-pae] Enable HIGHMEM64G as intended for this configuration svn path=/dists/sid/linux-2.6/; revision=18986 --- debian/changelog | 1 + debian/config/i386/rt/config.686-pae | 58 ++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 debian/config/i386/rt/config.686-pae diff --git a/debian/changelog b/debian/changelog index dd674d35b..35ceae685 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ linux-2.6 (3.2.16-2) UNRELEASED; urgency=low [ 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 -- Ben Hutchings Tue, 01 May 2012 00:43:48 +0100 diff --git a/debian/config/i386/rt/config.686-pae b/debian/config/i386/rt/config.686-pae new file mode 100644 index 000000000..96c3cc35c --- /dev/null +++ b/debian/config/i386/rt/config.686-pae @@ -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 + From ea1716c4a4141782a7d5c2414a74578da99a5a0b Mon Sep 17 00:00:00 2001 From: Bastian Blank Date: Mon, 7 May 2012 15:15:09 +0000 Subject: [PATCH 04/31] * debian/changelog: Update. * debian/config/s390/config: Set SMSGIUCV. svn path=/dists/sid/linux-2.6/; revision=18987 --- debian/changelog | 3 +++ debian/config/s390/config | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 35ceae685..f8c7fdaa8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,9 @@ linux-2.6 (3.2.16-2) UNRELEASED; urgency=low * ext4: Report max_batch_time option correctly (Closes: #654206) * [i386/rt-686-pae] Enable HIGHMEM64G as intended for this configuration + [ Bastian Blank ] + * [s390] Enable IUCV special message support. (closes: #671238) + -- Ben Hutchings Tue, 01 May 2012 00:43:48 +0100 linux-2.6 (3.2.16-1) unstable; urgency=low diff --git a/debian/config/s390/config b/debian/config/s390/config index 089f27f1c..f17e99d36 100644 --- a/debian/config/s390/config +++ b/debian/config/s390/config @@ -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 From 763201715b226f84e4a753db18bee40c0f349d15 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 11 May 2012 22:47:31 +0000 Subject: [PATCH 05/31] Update to 3.2.17 svn path=/dists/sid/linux-2.6/; revision=18989 --- debian/changelog | 5 +- .../Don-t-limit-non-nested-epoll-paths.patch | 42 ---- ...t-the-LOCK-code-sets-exception-inode.patch | 52 ----- ...t-we-check-lock-exclusive-shared-typ.patch | 44 ----- .../all/net-fix-proc-net-dev-regression.patch | 183 ------------------ ...rk-around-unhappy-compat-problem-on-.patch | 132 ------------- ...r-overflow-in-i915_gem_do_execbuffer.patch | 38 ---- ...ger-overflow-in-i915_gem_execbuffer2.patch | 37 ---- .../rt2x00-Identify-rt2800usb-chipsets.patch | 146 -------------- ...-boottime-locate_handle-search-types.patch | 12 +- debian/patches/series/base | 9 - 11 files changed, 9 insertions(+), 691 deletions(-) delete mode 100644 debian/patches/bugfix/all/Don-t-limit-non-nested-epoll-paths.patch delete mode 100644 debian/patches/bugfix/all/NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch delete mode 100644 debian/patches/bugfix/all/NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch delete mode 100644 debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch delete mode 100644 debian/patches/bugfix/all/revert-autofs-work-around-unhappy-compat-problem-on-.patch delete mode 100644 debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_do_execbuffer.patch delete mode 100644 debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_execbuffer2.patch delete mode 100644 debian/patches/features/all/rt2x00-Identify-rt2800usb-chipsets.patch diff --git a/debian/changelog b/debian/changelog index f8c7fdaa8..8ac0894a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,7 @@ -linux-2.6 (3.2.16-2) UNRELEASED; urgency=low +linux-2.6 (3.2.17-1) UNRELEASED; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.17 [ Ben Hutchings ] * aufs: Enable AUFS_EXPORT diff --git a/debian/patches/bugfix/all/Don-t-limit-non-nested-epoll-paths.patch b/debian/patches/bugfix/all/Don-t-limit-non-nested-epoll-paths.patch deleted file mode 100644 index a30836e00..000000000 --- a/debian/patches/bugfix/all/Don-t-limit-non-nested-epoll-paths.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: Jason Baron -Date: Fri, 16 Mar 2012 16:34:03 -0400 -Subject: [PATCH] Don't limit non-nested epoll paths - -commit 93dc6107a76daed81c07f50215fa6ae77691634f upstream. - -Commit 28d82dc1c4ed ("epoll: limit paths") that I did to limit the -number of possible wakeup paths in epoll is causing a few applications -to longer work (dovecot for one). - -The original patch is really about limiting the amount of epoll nesting -(since epoll fds can be attached to other fds). Thus, we probably can -allow an unlimited number of paths of depth 1. My current patch limits -it at 1000. And enforce the limits on paths that have a greater depth. - -This is captured in: https://bugzilla.redhat.com/show_bug.cgi?id=681578 - -Signed-off-by: Jason Baron -Cc: Andrew Morton -Signed-off-by: Linus Torvalds ---- - fs/eventpoll.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/fs/eventpoll.c b/fs/eventpoll.c -index ea54cde..4d9d3a4 100644 ---- a/fs/eventpoll.c -+++ b/fs/eventpoll.c -@@ -988,6 +988,10 @@ static int path_count[PATH_ARR_SIZE]; - - static int path_count_inc(int nests) - { -+ /* Allow an arbitrary number of depth 1 paths */ -+ if (nests == 0) -+ return 0; -+ - if (++path_count[nests] > path_limits[nests]) - return -1; - return 0; --- -1.7.9.1 - diff --git a/debian/patches/bugfix/all/NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch b/debian/patches/bugfix/all/NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch deleted file mode 100644 index 6a9e5b9d5..000000000 --- a/debian/patches/bugfix/all/NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch +++ /dev/null @@ -1,52 +0,0 @@ -From: Trond Myklebust -Date: Wed, 18 Apr 2012 12:20:10 -0400 -Subject: [PATCH 1/2] NFSv4: Ensure that the LOCK code sets exception->inode - -commit 05ffe24f5290dc095f98fbaf84afe51ef404ccc5 upstream. - -All callers of nfs4_handle_exception() that need to handle -NFS4ERR_OPENMODE correctly should set exception->inode - -Signed-off-by: Trond Myklebust -Cc: stable@vger.kernel.org ---- - fs/nfs/nfs4proc.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index f82bde0..3c787d0 100644 ---- a/fs/nfs/nfs4proc.c -+++ b/fs/nfs/nfs4proc.c -@@ -4558,7 +4558,9 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f - static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request) - { - struct nfs_server *server = NFS_SERVER(state->inode); -- struct nfs4_exception exception = { }; -+ struct nfs4_exception exception = { -+ .inode = state->inode, -+ }; - int err; - - do { -@@ -4576,7 +4578,9 @@ static int nfs4_lock_reclaim(struct nfs4_state *state, struct file_lock *request - static int nfs4_lock_expired(struct nfs4_state *state, struct file_lock *request) - { - struct nfs_server *server = NFS_SERVER(state->inode); -- struct nfs4_exception exception = { }; -+ struct nfs4_exception exception = { -+ .inode = state->inode, -+ }; - int err; - - err = nfs4_set_lock_state(state, request); -@@ -4676,6 +4680,7 @@ static int nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock * - { - struct nfs4_exception exception = { - .state = state, -+ .inode = state->inode, - }; - int err; - --- -1.7.10 - diff --git a/debian/patches/bugfix/all/NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch b/debian/patches/bugfix/all/NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch deleted file mode 100644 index 8eda0d139..000000000 --- a/debian/patches/bugfix/all/NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Trond Myklebust -Date: Wed, 18 Apr 2012 12:48:35 -0400 -Subject: [PATCH 2/2] NFSv4: Ensure that we check lock exclusive/shared type - against open modes - -commit 55725513b5ef9d462aa3e18527658a0362aaae83 upstream. - -Since we may be simulating flock() locks using NFS byte range locks, -we can't rely on the VFS having checked the file open mode for us. - -Signed-off-by: Trond Myklebust -Cc: stable@vger.kernel.org ---- - fs/nfs/nfs4proc.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index 3c787d0..ba837d9 100644 ---- a/fs/nfs/nfs4proc.c -+++ b/fs/nfs/nfs4proc.c -@@ -4726,6 +4726,20 @@ nfs4_proc_lock(struct file *filp, int cmd, struct file_lock *request) - - if (state == NULL) - return -ENOLCK; -+ /* -+ * Don't rely on the VFS having checked the file open mode, -+ * since it won't do this for flock() locks. -+ */ -+ switch (request->fl_type & (F_RDLCK|F_WRLCK|F_UNLCK)) { -+ case F_RDLCK: -+ if (!(filp->f_mode & FMODE_READ)) -+ return -EBADF; -+ break; -+ case F_WRLCK: -+ if (!(filp->f_mode & FMODE_WRITE)) -+ return -EBADF; -+ } -+ - do { - status = nfs4_proc_setlk(state, cmd, request); - if ((status != -EAGAIN) || IS_SETLK(cmd)) --- -1.7.10 - diff --git a/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch b/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch deleted file mode 100644 index 2bc8b2ead..000000000 --- a/debian/patches/bugfix/all/net-fix-proc-net-dev-regression.patch +++ /dev/null @@ -1,183 +0,0 @@ -From: Eric Dumazet -Date: Mon, 2 Apr 2012 22:33:02 +0000 -Subject: [PATCH] net: fix /proc/net/dev regression - -commit 2def16ae6b0c77571200f18ba4be049b03d75579 upstream. - -Commit f04565ddf52 (dev: use name hash for dev_seq_ops) added a second -regression, as some devices are missing from /proc/net/dev if many -devices are defined. - -When seq_file buffer is filled, the last ->next/show() method is -canceled (pos value is reverted to value prior ->next() call) - -Problem is after above commit, we dont restart the lookup at right -position in ->start() method. - -Fix this by removing the internal 'pos' pointer added in commit, since -we need to use the 'loff_t *pos' provided by seq_file layer. - -This also reverts commit 5cac98dd0 (net: Fix corruption -in /proc/*/net/dev_mcast), since its not needed anymore. - -Reported-by: Ben Greear -Signed-off-by: Eric Dumazet -Cc: Mihai Maruseac -Tested-by: Ben Greear -Signed-off-by: David S. Miller ---- - include/linux/netdevice.h | 2 -- - net/core/dev.c | 58 ++++++++++----------------------------------- - net/core/dev_addr_lists.c | 3 ++- - 3 files changed, 15 insertions(+), 48 deletions(-) - -diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 1f77540..5cbaa20 100644 ---- a/include/linux/netdevice.h -+++ b/include/linux/netdevice.h -@@ -2604,8 +2604,6 @@ extern void net_disable_timestamp(void); - extern void *dev_seq_start(struct seq_file *seq, loff_t *pos); - extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos); - extern void dev_seq_stop(struct seq_file *seq, void *v); --extern int dev_seq_open_ops(struct inode *inode, struct file *file, -- const struct seq_operations *ops); - #endif - - extern int netdev_class_create_file(struct class_attribute *class_attr); -diff --git a/net/core/dev.c b/net/core/dev.c -index 6c7dc9d..c25d453 100644 ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -4028,54 +4028,41 @@ static int dev_ifconf(struct net *net, char __user *arg) - - #ifdef CONFIG_PROC_FS - --#define BUCKET_SPACE (32 - NETDEV_HASHBITS) -- --struct dev_iter_state { -- struct seq_net_private p; -- unsigned int pos; /* bucket << BUCKET_SPACE + offset */ --}; -+#define BUCKET_SPACE (32 - NETDEV_HASHBITS - 1) - - #define get_bucket(x) ((x) >> BUCKET_SPACE) - #define get_offset(x) ((x) & ((1 << BUCKET_SPACE) - 1)) - #define set_bucket_offset(b, o) ((b) << BUCKET_SPACE | (o)) - --static inline struct net_device *dev_from_same_bucket(struct seq_file *seq) -+static inline struct net_device *dev_from_same_bucket(struct seq_file *seq, loff_t *pos) - { -- struct dev_iter_state *state = seq->private; - struct net *net = seq_file_net(seq); - struct net_device *dev; - struct hlist_node *p; - struct hlist_head *h; -- unsigned int count, bucket, offset; -+ unsigned int count = 0, offset = get_offset(*pos); - -- bucket = get_bucket(state->pos); -- offset = get_offset(state->pos); -- h = &net->dev_name_head[bucket]; -- count = 0; -+ h = &net->dev_name_head[get_bucket(*pos)]; - hlist_for_each_entry_rcu(dev, p, h, name_hlist) { -- if (count++ == offset) { -- state->pos = set_bucket_offset(bucket, count); -+ if (++count == offset) - return dev; -- } - } - - return NULL; - } - --static inline struct net_device *dev_from_new_bucket(struct seq_file *seq) -+static inline struct net_device *dev_from_bucket(struct seq_file *seq, loff_t *pos) - { -- struct dev_iter_state *state = seq->private; - struct net_device *dev; - unsigned int bucket; - -- bucket = get_bucket(state->pos); - do { -- dev = dev_from_same_bucket(seq); -+ dev = dev_from_same_bucket(seq, pos); - if (dev) - return dev; - -- bucket++; -- state->pos = set_bucket_offset(bucket, 0); -+ bucket = get_bucket(*pos) + 1; -+ *pos = set_bucket_offset(bucket, 1); - } while (bucket < NETDEV_HASHENTRIES); - - return NULL; -@@ -4088,33 +4075,20 @@ static inline struct net_device *dev_from_new_bucket(struct seq_file *seq) - void *dev_seq_start(struct seq_file *seq, loff_t *pos) - __acquires(RCU) - { -- struct dev_iter_state *state = seq->private; -- - rcu_read_lock(); - if (!*pos) - return SEQ_START_TOKEN; - -- /* check for end of the hash */ -- if (state->pos == 0 && *pos > 1) -+ if (get_bucket(*pos) >= NETDEV_HASHENTRIES) - return NULL; - -- return dev_from_new_bucket(seq); -+ return dev_from_bucket(seq, pos); - } - - void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos) - { -- struct net_device *dev; -- - ++*pos; -- -- if (v == SEQ_START_TOKEN) -- return dev_from_new_bucket(seq); -- -- dev = dev_from_same_bucket(seq); -- if (dev) -- return dev; -- -- return dev_from_new_bucket(seq); -+ return dev_from_bucket(seq, pos); - } - - void dev_seq_stop(struct seq_file *seq, void *v) -@@ -4213,13 +4187,7 @@ static const struct seq_operations dev_seq_ops = { - static int dev_seq_open(struct inode *inode, struct file *file) - { - return seq_open_net(inode, file, &dev_seq_ops, -- sizeof(struct dev_iter_state)); --} -- --int dev_seq_open_ops(struct inode *inode, struct file *file, -- const struct seq_operations *ops) --{ -- return seq_open_net(inode, file, ops, sizeof(struct dev_iter_state)); -+ sizeof(struct seq_net_private)); - } - - static const struct file_operations dev_seq_fops = { -diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c -index 29c07fe..626698f 100644 ---- a/net/core/dev_addr_lists.c -+++ b/net/core/dev_addr_lists.c -@@ -696,7 +696,8 @@ static const struct seq_operations dev_mc_seq_ops = { - - static int dev_mc_seq_open(struct inode *inode, struct file *file) - { -- return dev_seq_open_ops(inode, file, &dev_mc_seq_ops); -+ return seq_open_net(inode, file, &dev_mc_seq_ops, -+ sizeof(struct seq_net_private)); - } - - static const struct file_operations dev_mc_seq_fops = { --- -1.7.9.5 - diff --git a/debian/patches/bugfix/all/revert-autofs-work-around-unhappy-compat-problem-on-.patch b/debian/patches/bugfix/all/revert-autofs-work-around-unhappy-compat-problem-on-.patch deleted file mode 100644 index 7e752733f..000000000 --- a/debian/patches/bugfix/all/revert-autofs-work-around-unhappy-compat-problem-on-.patch +++ /dev/null @@ -1,132 +0,0 @@ -From: Linus Torvalds -Date: Sat, 28 Apr 2012 08:29:56 -0700 -Subject: [PATCH] Revert "autofs: work around unhappy compat problem on - x86-64" - -commit fcbf94b9dedd2ce08e798a99aafc94fec8668161 upstream. - -This reverts commit a32744d4abae24572eff7269bc17895c41bd0085. - -While that commit was technically the right thing to do, and made the -x86-64 compat mode work identically to native 32-bit mode (and thus -fixing the problem with a 32-bit systemd install on a 64-bit kernel), it -turns out that the automount binaries had workarounds for this compat -problem. - -Now, the workarounds are disgusting: doing an "uname()" to find out the -architecture of the kernel, and then comparing it for the 64-bit cases -and fixing up the size of the read() in automount for those. And they -were confused: it's not actually a generic 64-bit issue at all, it's -very much tied to just x86-64, which has different alignment for an -'u64' in 64-bit mode than in 32-bit mode. - -But the end result is that fixing the compat layer actually breaks the -case of a 32-bit automount on a x86-64 kernel. - -There are various approaches to fix this (including just doing a -"strcmp()" on current->comm and comparing it to "automount"), but I -think that I will do the one that teaches pipes about a special "packet -mode", which will allow user space to not have to care too deeply about -the padding at the end of the autofs packet. - -That change will make the compat workaround unnecessary, so let's revert -it first, and get automount working again in compat mode. The -packetized pipes will then fix autofs for systemd. - -Reported-and-requested-by: Michael Tokarev -Cc: Ian Kent -Cc: stable@kernel.org # for 3.3 -Signed-off-by: Linus Torvalds -[bwh: Backported to 3.2: adjust context] ---- - fs/autofs4/autofs_i.h | 1 - - fs/autofs4/dev-ioctl.c | 1 - - fs/autofs4/inode.c | 2 -- - fs/autofs4/waitq.c | 22 +++------------------- - 4 files changed, 3 insertions(+), 23 deletions(-) - -diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h -index eb1cc92..d8d8e7b 100644 ---- a/fs/autofs4/autofs_i.h -+++ b/fs/autofs4/autofs_i.h -@@ -110,7 +110,6 @@ struct autofs_sb_info { - int sub_version; - int min_proto; - int max_proto; -- int compat_daemon; - unsigned long exp_timeout; - unsigned int type; - int reghost_enabled; -diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c -index 9dacb85..3dfd615 100644 ---- a/fs/autofs4/dev-ioctl.c -+++ b/fs/autofs4/dev-ioctl.c -@@ -385,7 +385,6 @@ static int autofs_dev_ioctl_setpipefd(struct file *fp, - sbi->pipefd = pipefd; - sbi->pipe = pipe; - sbi->catatonic = 0; -- sbi->compat_daemon = is_compat_task(); - } - out: - mutex_unlock(&sbi->wq_mutex); ---- a/fs/autofs4/inode.c -+++ b/fs/autofs4/inode.c -@@ -19,7 +19,6 @@ - #include - #include - #include --#include - #include "autofs_i.h" - #include - -@@ -225,7 +224,6 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent) - set_autofs_type_indirect(&sbi->type); - sbi->min_proto = 0; - sbi->max_proto = 0; -- sbi->compat_daemon = is_compat_task(); - mutex_init(&sbi->wq_mutex); - spin_lock_init(&sbi->fs_lock); - sbi->queues = NULL; -diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c -index 9c098db..da8876d 100644 ---- a/fs/autofs4/waitq.c -+++ b/fs/autofs4/waitq.c -@@ -91,24 +91,7 @@ static int autofs4_write(struct autofs_sb_info *sbi, - - return (bytes > 0); - } -- --/* -- * The autofs_v5 packet was misdesigned. -- * -- * The packets are identical on x86-32 and x86-64, but have different -- * alignment. Which means that 'sizeof()' will give different results. -- * Fix it up for the case of running 32-bit user mode on a 64-bit kernel. -- */ --static noinline size_t autofs_v5_packet_size(struct autofs_sb_info *sbi) --{ -- size_t pktsz = sizeof(struct autofs_v5_packet); --#if defined(CONFIG_X86_64) && defined(CONFIG_COMPAT) -- if (sbi->compat_daemon > 0) -- pktsz -= 4; --#endif -- return pktsz; --} -- -+ - static void autofs4_notify_daemon(struct autofs_sb_info *sbi, - struct autofs_wait_queue *wq, - int type) -@@ -172,7 +155,8 @@ static void autofs4_notify_daemon(struct autofs_sb_info *sbi, - { - struct autofs_v5_packet *packet = &pkt.v5_pkt.v5_packet; - -- pktsz = autofs_v5_packet_size(sbi); -+ pktsz = sizeof(*packet); -+ - packet->wait_queue_token = wq->wait_queue_token; - packet->len = wq->name.len; - memcpy(packet->name, wq->name.name, wq->name.len); --- -1.7.10 - diff --git a/debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_do_execbuffer.patch b/debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_do_execbuffer.patch deleted file mode 100644 index 032ac89ac..000000000 --- a/debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_do_execbuffer.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Xi Wang -Date: Mon, 23 Apr 2012 04:06:42 -0400 -Message-Id: <1335168402-25174-2-git-send-email-xi.wang@gmail.com> -Subject: [PATCH v2 2/2] drm/i915: fix integer overflow in - i915_gem_do_execbuffer() - -On 32-bit systems, a large args->num_cliprects from userspace via ioctl -may overflow the allocation size, leading to out-of-bounds access. - -This vulnerability was introduced in commit 432e58ed ("drm/i915: Avoid -allocation for execbuffer object list"). - -Signed-off-by: Xi Wang -Cc: Chris Wilson -Cc: stable@vger.kernel.org ---- - drivers/gpu/drm/i915/i915_gem_execbuffer.c | 5 +++++ - 1 files changed, 5 insertions(+), 0 deletions(-) - -diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -index 7c50e58..de43194 100644 ---- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c -+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -@@ -1133,6 +1133,11 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, - return -EINVAL; - } - -+ if (args->num_cliprects > UINT_MAX / sizeof(*cliprects)) { -+ DRM_DEBUG("execbuf with %u cliprects\n", -+ args->num_cliprects); -+ return -EINVAL; -+ } - cliprects = kmalloc(args->num_cliprects * sizeof(*cliprects), - GFP_KERNEL); - if (cliprects == NULL) { --- -1.7.5.4 - diff --git a/debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_execbuffer2.patch b/debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_execbuffer2.patch deleted file mode 100644 index bb39a6254..000000000 --- a/debian/patches/bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_execbuffer2.patch +++ /dev/null @@ -1,37 +0,0 @@ -From: Xi Wang -Date: Mon, 23 Apr 2012 04:06:41 -0400 -Message-Id: <1335168402-25174-1-git-send-email-xi.wang@gmail.com> -Subject: [PATCH v2 1/2] drm/i915: fix integer overflow in - i915_gem_execbuffer2() - -On 32-bit systems, a large args->buffer_count from userspace via ioctl -may overflow the allocation size, leading to out-of-bounds access. - -This vulnerability was introduced in commit 8408c282 ("drm/i915: -First try a normal large kmalloc for the temporary exec buffers"). - -Signed-off-by: Xi Wang -Cc: Chris Wilson -Cc: stable@vger.kernel.org -[bwh: Backported to 3.2: adjust context] ---- - drivers/gpu/drm/i915/i915_gem_execbuffer.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -index f51a696..7c50e58 100644 ---- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c -+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -@@ -1404,7 +1404,8 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data, - struct drm_i915_gem_exec_object2 *exec2_list = NULL; - int ret; - -- if (args->buffer_count < 1) { -+ if (args->buffer_count < 1 || -+ args->buffer_count > UINT_MAX / sizeof(*exec2_list)) { - DRM_ERROR("execbuf2 with %d buffers\n", args->buffer_count); - return -EINVAL; - } --- -1.7.5.4 - diff --git a/debian/patches/features/all/rt2x00-Identify-rt2800usb-chipsets.patch b/debian/patches/features/all/rt2x00-Identify-rt2800usb-chipsets.patch deleted file mode 100644 index f4522129d..000000000 --- a/debian/patches/features/all/rt2x00-Identify-rt2800usb-chipsets.patch +++ /dev/null @@ -1,146 +0,0 @@ -From: Gertjan van Wingerde -Date: Wed, 28 Dec 2011 01:53:18 +0100 -Subject: [PATCH] rt2x00: Identify rt2800usb chipsets. - -commit bc93eda7e903ff75cefcb6e247ed9b8e9f8e9783 upstream. - -According to the latest USB ID database these are all RT2770 / RT2870 / RT307x -devices. - -Signed-off-by: Gertjan van Wingerde -Acked-by: Ivo van Doorn -Signed-off-by: John W. Linville -[bwh: Backported to 3.2: adjust context for previously cherry-picked - commit d42a179b941a9e4cc6cf41d0f3cbadd75fc48a89 'rt2x00: Add support - for D-Link DWA-127 to rt2800usb'] ---- - drivers/net/wireless/rt2x00/rt2800usb.c | 26 ++++++++++++-------------- - 1 file changed, 12 insertions(+), 14 deletions(-) - -diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c -index 486fd49..5bff495 100644 ---- a/drivers/net/wireless/rt2x00/rt2800usb.c -+++ b/drivers/net/wireless/rt2x00/rt2800usb.c -@@ -914,12 +914,14 @@ static struct usb_device_id rt2800usb_device_table[] = { - { USB_DEVICE(0x050d, 0x8053) }, - { USB_DEVICE(0x050d, 0x805c) }, - { USB_DEVICE(0x050d, 0x815c) }, -+ { USB_DEVICE(0x050d, 0x825a) }, - { USB_DEVICE(0x050d, 0x825b) }, - { USB_DEVICE(0x050d, 0x935a) }, - { USB_DEVICE(0x050d, 0x935b) }, - /* Buffalo */ - { USB_DEVICE(0x0411, 0x00e8) }, - { USB_DEVICE(0x0411, 0x0158) }, -+ { USB_DEVICE(0x0411, 0x015d) }, - { USB_DEVICE(0x0411, 0x016f) }, - { USB_DEVICE(0x0411, 0x01a2) }, - /* Corega */ -@@ -934,6 +936,8 @@ static struct usb_device_id rt2800usb_device_table[] = { - { USB_DEVICE(0x07d1, 0x3c0e) }, - { USB_DEVICE(0x07d1, 0x3c0f) }, - { USB_DEVICE(0x07d1, 0x3c11) }, -+ { USB_DEVICE(0x07d1, 0x3c13) }, -+ { USB_DEVICE(0x07d1, 0x3c15) }, - { USB_DEVICE(0x07d1, 0x3c16) }, - { USB_DEVICE(0x2001, 0x3c1b) }, - /* Draytek */ -@@ -943,6 +947,7 @@ static struct usb_device_id rt2800usb_device_table[] = { - { USB_DEVICE(0x7392, 0x7711) }, - { USB_DEVICE(0x7392, 0x7717) }, - { USB_DEVICE(0x7392, 0x7718) }, -+ { USB_DEVICE(0x7392, 0x7722) }, - /* Encore */ - { USB_DEVICE(0x203d, 0x1480) }, - { USB_DEVICE(0x203d, 0x14a9) }, -@@ -977,6 +982,7 @@ static struct usb_device_id rt2800usb_device_table[] = { - { USB_DEVICE(0x1737, 0x0070) }, - { USB_DEVICE(0x1737, 0x0071) }, - { USB_DEVICE(0x1737, 0x0077) }, -+ { USB_DEVICE(0x1737, 0x0078) }, - /* Logitec */ - { USB_DEVICE(0x0789, 0x0162) }, - { USB_DEVICE(0x0789, 0x0163) }, -@@ -1000,9 +1006,13 @@ static struct usb_device_id rt2800usb_device_table[] = { - { USB_DEVICE(0x0db0, 0x871b) }, - { USB_DEVICE(0x0db0, 0x871c) }, - { USB_DEVICE(0x0db0, 0x899a) }, -+ /* Ovislink */ -+ { USB_DEVICE(0x1b75, 0x3071) }, -+ { USB_DEVICE(0x1b75, 0x3072) }, - /* Para */ - { USB_DEVICE(0x20b8, 0x8888) }, - /* Pegatron */ -+ { USB_DEVICE(0x1d4d, 0x0002) }, - { USB_DEVICE(0x1d4d, 0x000c) }, - { USB_DEVICE(0x1d4d, 0x000e) }, - { USB_DEVICE(0x1d4d, 0x0011) }, -@@ -1055,7 +1065,9 @@ static struct usb_device_id rt2800usb_device_table[] = { - /* Sparklan */ - { USB_DEVICE(0x15a9, 0x0006) }, - /* Sweex */ -+ { USB_DEVICE(0x177f, 0x0153) }, - { USB_DEVICE(0x177f, 0x0302) }, -+ { USB_DEVICE(0x177f, 0x0313) }, - /* U-Media */ - { USB_DEVICE(0x157e, 0x300e) }, - { USB_DEVICE(0x157e, 0x3013) }, -@@ -1139,25 +1151,20 @@ static struct usb_device_id rt2800usb_device_table[] = { - { USB_DEVICE(0x13d3, 0x3322) }, - /* Belkin */ - { USB_DEVICE(0x050d, 0x1003) }, -- { USB_DEVICE(0x050d, 0x825a) }, - /* Buffalo */ - { USB_DEVICE(0x0411, 0x012e) }, - { USB_DEVICE(0x0411, 0x0148) }, - { USB_DEVICE(0x0411, 0x0150) }, -- { USB_DEVICE(0x0411, 0x015d) }, - /* Corega */ - { USB_DEVICE(0x07aa, 0x0041) }, - { USB_DEVICE(0x07aa, 0x0042) }, - { USB_DEVICE(0x18c5, 0x0008) }, - /* D-Link */ - { USB_DEVICE(0x07d1, 0x3c0b) }, -- { USB_DEVICE(0x07d1, 0x3c13) }, -- { USB_DEVICE(0x07d1, 0x3c15) }, - { USB_DEVICE(0x07d1, 0x3c17) }, - { USB_DEVICE(0x2001, 0x3c17) }, - /* Edimax */ - { USB_DEVICE(0x7392, 0x4085) }, -- { USB_DEVICE(0x7392, 0x7722) }, - /* Encore */ - { USB_DEVICE(0x203d, 0x14a1) }, - /* Fujitsu Stylistic 550 */ -@@ -1173,19 +1180,13 @@ static struct usb_device_id rt2800usb_device_table[] = { - /* LevelOne */ - { USB_DEVICE(0x1740, 0x0605) }, - { USB_DEVICE(0x1740, 0x0615) }, -- /* Linksys */ -- { USB_DEVICE(0x1737, 0x0078) }, - /* Logitec */ - { USB_DEVICE(0x0789, 0x0168) }, - { USB_DEVICE(0x0789, 0x0169) }, - /* Motorola */ - { USB_DEVICE(0x100d, 0x9032) }, -- /* Ovislink */ -- { USB_DEVICE(0x1b75, 0x3071) }, -- { USB_DEVICE(0x1b75, 0x3072) }, - /* Pegatron */ - { USB_DEVICE(0x05a6, 0x0101) }, -- { USB_DEVICE(0x1d4d, 0x0002) }, - { USB_DEVICE(0x1d4d, 0x0010) }, - /* Planex */ - { USB_DEVICE(0x2019, 0x5201) }, -@@ -1204,9 +1205,6 @@ static struct usb_device_id rt2800usb_device_table[] = { - { USB_DEVICE(0x083a, 0xc522) }, - { USB_DEVICE(0x083a, 0xd522) }, - { USB_DEVICE(0x083a, 0xf511) }, -- /* Sweex */ -- { USB_DEVICE(0x177f, 0x0153) }, -- { USB_DEVICE(0x177f, 0x0313) }, - /* Zyxel */ - { USB_DEVICE(0x0586, 0x341a) }, - #endif --- -1.7.10 - diff --git a/debian/patches/features/x86/efi-stub/0007-efi.h-Add-boottime-locate_handle-search-types.patch b/debian/patches/features/x86/efi-stub/0007-efi.h-Add-boottime-locate_handle-search-types.patch index 81dfa2a5e..1b9d038d0 100644 --- a/debian/patches/features/x86/efi-stub/0007-efi.h-Add-boottime-locate_handle-search-types.patch +++ b/debian/patches/features/x86/efi-stub/0007-efi.h-Add-boottime-locate_handle-search-types.patch @@ -10,17 +10,18 @@ Cc: Matthew Garrett Signed-off-by: Matt Fleming Link: http://lkml.kernel.org/r/1318848017-12301-1-git-send-email-matt@console-pimps.org Signed-off-by: H. Peter Anvin +[bwh: Adjust context to apply after commit + 3a91135a4b1720f83810399e596937598b38b158 'efi: Add new variable attributes' + in 3.2.17] --- include/linux/efi.h | 7 +++++++ 1 file changed, 7 insertions(+) -diff --git a/include/linux/efi.h b/include/linux/efi.h -index e46d771..d407c88 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -472,6 +472,13 @@ extern int __init efi_setup_pcdp_console(char *); - #define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004 - + EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS | \ + EFI_VARIABLE_APPEND_WRITE) /* + * The type of search to perform when calling boottime->locate_handle + */ @@ -32,6 +33,3 @@ index e46d771..d407c88 100644 * EFI Device Path information */ #define EFI_DEV_HW 0x01 --- -1.7.10 - diff --git a/debian/patches/series/base b/debian/patches/series/base index 1e747a3e9..33e435c53 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -78,13 +78,11 @@ + 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/Don-t-limit-non-nested-epoll-paths.patch + bugfix/all/kbuild-do-not-check-for-ancient-modutils-tools.patch # Temporary, until the original change has been tested some more + debian/revert-CIFS-Respect-negotiated-MaxMpxCount.patch -+ bugfix/all/net-fix-proc-net-dev-regression.patch + bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch # Update all Hyper-V drivers to 3.4-rc1 (no longer staging) @@ -166,8 +164,6 @@ + features/x86/hyperv/0076-net-hyperv-Fix-the-code-handling-tx-busy.patch + features/x86/hyperv/0077-hv-remove-the-second-argument-of-k-un-map_atomic.patch -+ features/all/rt2x00-Identify-rt2800usb-chipsets.patch - + features/x86/efi-stub/0001-x86-Add-missing-bzImage-fields-to-struct-setup_heade.patch + features/x86/efi-stub/0002-x86-Don-t-use-magic-strings-for-EFI-loader-signature.patch + features/x86/efi-stub/0003-efi.h-Add-struct-definition-for-boot-time-services.patch @@ -188,11 +184,6 @@ + bugfix/all/brcmsmac-INTERMEDIATE-but-not-AMPDU-only-when-tracin.patch + bugfix/all/NFSv4-Rate-limit-the-state-manager-for-lock-reclaim-.patch -+ bugfix/all/NFSv4-Ensure-that-the-LOCK-code-sets-exception-inode.patch -+ bugfix/all/NFSv4-Ensure-that-we-check-lock-exclusive-shared-typ.patch -+ bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_execbuffer2.patch -+ bugfix/x86/drm-i915-fix-integer-overflow-in-i915_gem_do_execbuffer.patch -+ bugfix/all/revert-autofs-work-around-unhappy-compat-problem-on-.patch # Temporary, until the next ABI bump + debian/revert-rtc-Provide-flag-for-rtc-devices-that-don-t-s.patch From fade3581912b6e36b179c624bd512712b02dedd2 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 09:30:01 +0000 Subject: [PATCH 06/31] brcm80211: smac: pass missing argument to 'brcms_b_mute' svn path=/dists/sid/linux-2.6/; revision=18990 --- ...ass-missing-argument-to-brcms_b_mute.patch | 44 +++++++++++++++++++ debian/patches/series/base | 1 + 2 files changed, 45 insertions(+) create mode 100644 debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch diff --git a/debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch b/debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch new file mode 100644 index 000000000..2f0b2e538 --- /dev/null +++ b/debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch @@ -0,0 +1,44 @@ +From jrnieder@gmail.com Sat May 12 01:35:51 2012 +Date: Fri, 11 May 2012 19:35:33 -0500 +From: Jonathan Nieder +Subject: brcm80211: smac: pass missing argument to 'brcms_b_mute' + +[Not needed upstream --- this bug is specific to 3.2.y.] + +Commit c6c44893c864, which removes the flag argument from brcms_b_mute, +is not part of 3.2.y, and we forgot to adjust a new call accordingly +when applying commit badc4f07622f ("brcm80211: smac: resume transmit +fifo upon receiving frames"). + + drivers/net/wireless/brcm80211/brcmsmac/main.c: In function 'brcms_c_recvctl': + drivers/net/wireless/brcm80211/brcmsmac/main.c:7882:4: error: too few arguments to function 'brcms_b_mute' + drivers/net/wireless/brcm80211/brcmsmac/main.c:2538:13: note: declared here + +Earlier build tests missed this because they didn't include this driver +due to 'depends on BCMA=n'. + +Reported-by: Ben Hutchings +Signed-off-by: Jonathan Nieder +Signed-off-by: Ben Hutchings +--- + drivers/net/wireless/brcm80211/brcmsmac/main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c +index f98becc9e169..833cbefcbfd2 100644 +--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c ++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c +@@ -7879,7 +7879,7 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh, + if (wlc->hw->suspended_fifos) { + hdr = (struct ieee80211_hdr *)p->data; + if (ieee80211_is_beacon(hdr->frame_control)) +- brcms_b_mute(wlc->hw, false); ++ brcms_b_mute(wlc->hw, false, 0); + } + + memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status)); +-- +1.7.10.1 + + + diff --git a/debian/patches/series/base b/debian/patches/series/base index 33e435c53..c174e6ac0 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -191,3 +191,4 @@ + debian/efi-avoid-ABI-change.patch + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch ++ bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch From 79fb5c5107c12e2176df8f11a8342de0a1efbf6b Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 09:37:26 +0000 Subject: [PATCH 07/31] NFSv4: Revalidate uid/gid after open (Closes: #659111) svn path=/dists/sid/linux-2.6/; revision=18991 --- debian/changelog | 1 + .../nfsv4-revalidate-uid-gid-after-open.patch | 74 +++++++++++++++++++ debian/patches/series/base | 1 + 3 files changed, 76 insertions(+) create mode 100644 debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch diff --git a/debian/changelog b/debian/changelog index 8ac0894a6..c9ffe6155 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low * 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) [ Bastian Blank ] * [s390] Enable IUCV special message support. (closes: #671238) diff --git a/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch b/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch new file mode 100644 index 000000000..9449c18ac --- /dev/null +++ b/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch @@ -0,0 +1,74 @@ +From stable-owner@vger.kernel.org Fri May 11 10:20:33 2012 +Date: Fri, 11 May 2012 04:20:20 -0500 +From: Jonathan Nieder +Subject: [PATCH] NFSv4: Revalidate uid/gid after open + +This is a shorter (and more appropriate for stable kernels) analog to +the following upstream commit: + +commit 6926afd1925a54a13684ebe05987868890665e2b +Author: Trond Myklebust +Date: Sat Jan 7 13:22:46 2012 -0500 + + NFSv4: Save the owner/group name string when doing open + + ...so that we can do the uid/gid mapping outside the asynchronous RPC + context. + This fixes a bug in the current NFSv4 atomic open code where the client + isn't able to determine what the true uid/gid fields of the file are, + (because the asynchronous nature of the OPEN call denies it the ability + to do an upcall) and so fills them with default values, marking the + inode as needing revalidation. + Unfortunately, in some cases, the VFS will do some additional sanity + checks on the file, and may override the server's decision to allow + the open because it sees the wrong owner/group fields. + + Signed-off-by: Trond Myklebust + +Without this patch, logging into two different machines with home +directories mounted over NFS4 and then running "vim" and typing ":q" +in each reliably produces the following error on the second machine: + + E137: Viminfo file is not writable: /users/system/rtheys/.viminfo + +This regression was introduced by 80e52aced138 ("NFSv4: Don't do +idmapper upcalls for asynchronous RPC calls", merged during the 2.6.32 +cycle) --- after the OPEN call, .viminfo has the default values for +st_uid and st_gid (0xfffffffe) cached because we do not want to let +rpciod wait for an idmapper upcall to fill them in. + +The fix used in mainline is to save the owner and group as strings and +perform the upcall in _nfs4_proc_open outside the rpciod context, +which takes about 600 lines. For stable, we can do something similar +with a one-liner: make open check for the stale fields and make a +(synchronous) GETATTR call to fill them when needed. + +Trond dictated the patch, I typed it in, and Rik tested it. + +Addresses http://bugs.debian.org/659111 and + https://bugzilla.redhat.com/789298 + +Reported-by: Rik Theys +Explained-by: David Flyn +Signed-off-by: Jonathan Nieder +Tested-by: Rik Theys +Signed-off-by: Ben Hutchings +--- + fs/nfs/nfs4proc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c +index 3d6730213f9d..30f6548f2b99 100644 +--- a/fs/nfs/nfs4proc.c ++++ b/fs/nfs/nfs4proc.c +@@ -1771,6 +1771,7 @@ static int _nfs4_do_open(struct inode *dir, struct path *path, fmode_t fmode, in + nfs_setattr_update_inode(state->inode, sattr); + nfs_post_op_update_inode(state->inode, opendata->o_res.f_attr); + } ++ nfs_revalidate_inode(server, state->inode); + nfs4_opendata_put(opendata); + nfs4_put_state_owner(sp); + *res = state; +-- +1.7.10.1 + diff --git a/debian/patches/series/base b/debian/patches/series/base index c174e6ac0..8c4b94920 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -192,3 +192,4 @@ + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch + bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch ++ bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch From 49bfc8e1cb3e721d54045729e1367d58ae30ca7b Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 10:03:30 +0000 Subject: [PATCH 08/31] sky2: fix receive length error in mixed non-VLAN/VLAN traffic (Closes: #492853) svn path=/dists/sid/linux-2.6/; revision=18992 --- debian/changelog | 2 + ...-length-error-in-mixed-non-vlan-vlan.patch | 137 ++++++++++++++++++ debian/patches/series/base | 1 + 3 files changed, 140 insertions(+) create mode 100644 debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch diff --git a/debian/changelog b/debian/changelog index c9ffe6155..b9f5588cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,8 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low * 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: fix receive length error in mixed non-VLAN/VLAN traffic + (Closes: #492853) [ Bastian Blank ] * [s390] Enable IUCV special message support. (closes: #671238) diff --git a/debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch b/debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch new file mode 100644 index 000000000..64b8396ff --- /dev/null +++ b/debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch @@ -0,0 +1,137 @@ +From dc7296f6dc82ac546b5006dcfff1b16967b6c234 Mon Sep 17 00:00:00 2001 +From: stephen hemminger +Date: Mon, 30 Apr 2012 06:47:37 +0000 +Subject: [PATCH 06/10] sky2: fix receive length error in mixed non-VLAN/VLAN + traffic + +[ Upstream commit e072b3fad5f3915102c94628b4971f52ff99dd05 ] + +Bug: The VLAN bit of the MAC RX Status Word is unreliable in several older +supported chips. Sometimes the VLAN bit is not set for valid VLAN packets +and also sometimes the VLAN bit is set for non-VLAN packets that came after +a VLAN packet. This results in a receive length error when VLAN hardware +tagging is enabled. + +Fix: Variation on original fix proposed by Mirko. +The VLAN information is decoded in the status loop, and can be +applied to the received SKB there. This eliminates the need for the +separate tag field in the interface data structure. The tag has to +be copied and cleared if packet is copied. This version checked out +with vlan and normal traffic. + +Note: vlan_tx_tag_present should be renamed vlan_tag_present, but that +is outside scope of this. + +Reported-by: Mirko Lindner +Signed-off-by: Stephen Hemminger +Signed-off-by: David S. Miller +Signed-off-by: Ben Hutchings +--- + drivers/net/ethernet/marvell/sky2.c | 28 +++++++++++++++++----------- + drivers/net/ethernet/marvell/sky2.h | 1 - + 2 files changed, 17 insertions(+), 12 deletions(-) + +diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c +index e1f4b65..65c51ff 100644 +--- a/drivers/net/ethernet/marvell/sky2.c ++++ b/drivers/net/ethernet/marvell/sky2.c +@@ -2476,9 +2476,11 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2, + skb->ip_summed = re->skb->ip_summed; + skb->csum = re->skb->csum; + skb->rxhash = re->skb->rxhash; ++ skb->vlan_tci = re->skb->vlan_tci; + + pci_dma_sync_single_for_device(sky2->hw->pdev, re->data_addr, + length, PCI_DMA_FROMDEVICE); ++ re->skb->vlan_tci = 0; + re->skb->rxhash = 0; + re->skb->ip_summed = CHECKSUM_NONE; + skb_put(skb, length); +@@ -2564,9 +2566,6 @@ static struct sk_buff *sky2_receive(struct net_device *dev, + struct sk_buff *skb = NULL; + u16 count = (status & GMR_FS_LEN) >> 16; + +- if (status & GMR_FS_VLAN) +- count -= VLAN_HLEN; /* Account for vlan tag */ +- + netif_printk(sky2, rx_status, KERN_DEBUG, dev, + "rx slot %u status 0x%x len %d\n", + sky2->rx_next, status, length); +@@ -2574,6 +2573,9 @@ static struct sk_buff *sky2_receive(struct net_device *dev, + sky2->rx_next = (sky2->rx_next + 1) % sky2->rx_pending; + prefetch(sky2->rx_ring + sky2->rx_next); + ++ if (vlan_tx_tag_present(re->skb)) ++ count -= VLAN_HLEN; /* Account for vlan tag */ ++ + /* This chip has hardware problems that generates bogus status. + * So do only marginal checking and expect higher level protocols + * to handle crap frames. +@@ -2631,11 +2633,8 @@ static inline void sky2_tx_done(struct net_device *dev, u16 last) + } + + static inline void sky2_skb_rx(const struct sky2_port *sky2, +- u32 status, struct sk_buff *skb) ++ struct sk_buff *skb) + { +- if (status & GMR_FS_VLAN) +- __vlan_hwaccel_put_tag(skb, be16_to_cpu(sky2->rx_tag)); +- + if (skb->ip_summed == CHECKSUM_NONE) + netif_receive_skb(skb); + else +@@ -2689,6 +2688,14 @@ static void sky2_rx_checksum(struct sky2_port *sky2, u32 status) + } + } + ++static void sky2_rx_tag(struct sky2_port *sky2, u16 length) ++{ ++ struct sk_buff *skb; ++ ++ skb = sky2->rx_ring[sky2->rx_next].skb; ++ __vlan_hwaccel_put_tag(skb, be16_to_cpu(length)); ++} ++ + static void sky2_rx_hash(struct sky2_port *sky2, u32 status) + { + struct sk_buff *skb; +@@ -2747,8 +2754,7 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx) + } + + skb->protocol = eth_type_trans(skb, dev); +- +- sky2_skb_rx(sky2, status, skb); ++ sky2_skb_rx(sky2, skb); + + /* Stop after net poll weight */ + if (++work_done >= to_do) +@@ -2756,11 +2762,11 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx) + break; + + case OP_RXVLAN: +- sky2->rx_tag = length; ++ sky2_rx_tag(sky2, length); + break; + + case OP_RXCHKSVLAN: +- sky2->rx_tag = length; ++ sky2_rx_tag(sky2, length); + /* fall through */ + case OP_RXCHKS: + if (likely(dev->features & NETIF_F_RXCSUM)) +diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h +index ff6f58b..3c896ce 100644 +--- a/drivers/net/ethernet/marvell/sky2.h ++++ b/drivers/net/ethernet/marvell/sky2.h +@@ -2241,7 +2241,6 @@ struct sky2_port { + u16 rx_pending; + u16 rx_data_size; + u16 rx_nfrags; +- u16 rx_tag; + + struct { + unsigned long last; +-- +1.7.10.1 + + diff --git a/debian/patches/series/base b/debian/patches/series/base index 8c4b94920..293c48358 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -193,3 +193,4 @@ + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch + bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch + bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch ++ bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch From 083d79dd264bf15bda96cf4146859a63ee4ff99f Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 10:10:33 +0000 Subject: [PATCH 09/31] sky2: propogate rx hash when packet is copied svn path=/dists/sid/linux-2.6/; revision=18993 --- debian/changelog | 1 + ...pogate-rx-hash-when-packet-is-copied.patch | 39 +++++++++++++++++++ debian/patches/series/base | 1 + 3 files changed, 41 insertions(+) create mode 100644 debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch diff --git a/debian/changelog b/debian/changelog index b9f5588cd..d2c7d3add 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,7 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low * 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) diff --git a/debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch b/debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch new file mode 100644 index 000000000..385593f04 --- /dev/null +++ b/debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch @@ -0,0 +1,39 @@ +From 5ab3f9a96c8f77166a2d0c3bdd9ed2a5029e3271 Mon Sep 17 00:00:00 2001 +From: stephen hemminger +Date: Mon, 30 Apr 2012 05:49:45 +0000 +Subject: [PATCH 05/10] sky2: propogate rx hash when packet is copied + +[ Upstream commit 3f42941b5d1d13542b1a755a9e4f633aa72e4d3e ] + +When a small packet is received, the driver copies it to a new skb to allow +reusing the full size Rx buffer. The copy was propogating the checksum offload +but not the receive hash information. The bug is impact was mostly harmless +and therefore not observed until reviewing this area of code. + +Signed-off-by: Stephen Hemminger +Signed-off-by: David S. Miller +Signed-off-by: Ben Hutchings +--- + drivers/net/ethernet/marvell/sky2.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c +index 7eb8a00..e1f4b65 100644 +--- a/drivers/net/ethernet/marvell/sky2.c ++++ b/drivers/net/ethernet/marvell/sky2.c +@@ -2475,8 +2475,11 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2, + skb_copy_from_linear_data(re->skb, skb->data, length); + skb->ip_summed = re->skb->ip_summed; + skb->csum = re->skb->csum; ++ skb->rxhash = re->skb->rxhash; ++ + pci_dma_sync_single_for_device(sky2->hw->pdev, re->data_addr, + length, PCI_DMA_FROMDEVICE); ++ re->skb->rxhash = 0; + re->skb->ip_summed = CHECKSUM_NONE; + skb_put(skb, length); + } +-- +1.7.10.1 + + diff --git a/debian/patches/series/base b/debian/patches/series/base index 293c48358..2c871796a 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -193,4 +193,5 @@ + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch + bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch + bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch ++ bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch + bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch From d09c14f9cdbde59752b55b08e69681d3ee8ce74c Mon Sep 17 00:00:00 2001 From: Arnaud Patard Date: Sat, 12 May 2012 10:22:18 +0000 Subject: [PATCH 10/31] Add vexpress support to armhf kernel. svn path=/dists/sid/linux-2.6/; revision=18994 --- debian/changelog | 4 +++ debian/config/armhf/config.vexpress | 55 +++++++++++++++++++++++++++++ debian/config/armhf/defines | 9 +++++ 3 files changed, 68 insertions(+) create mode 100644 debian/config/armhf/config.vexpress diff --git a/debian/changelog b/debian/changelog index d2c7d3add..fa0daaf21 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,10 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low [ 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) + -- Ben Hutchings Tue, 01 May 2012 00:43:48 +0100 linux-2.6 (3.2.16-1) unstable; urgency=low diff --git a/debian/config/armhf/config.vexpress b/debian/config/armhf/config.vexpress new file mode 100644 index 000000000..f1fdb9bac --- /dev/null +++ b/debian/config/armhf/config.vexpress @@ -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 + diff --git a/debian/config/armhf/defines b/debian/config/armhf/defines index 06f7c8b8e..2f1d035e3 100644 --- a/debian/config/armhf/defines +++ b/debian/config/armhf/defines @@ -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 + From 78ed20c18a611437fb543bff6ae64d35ab706c9f Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 11:00:44 +0000 Subject: [PATCH 11/31] List most important changes in 3.2.17 svn path=/dists/sid/linux-2.6/; revision=18995 --- debian/changelog | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/debian/changelog b/debian/changelog index fa0daaf21..f25e6e043 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,26 @@ linux-2.6 (3.2.17-1) UNRELEASED; 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() + - 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 From c9fee85d358e81d5ae852eebfe7b991106281f02 Mon Sep 17 00:00:00 2001 From: Arnaud Patard Date: Sat, 12 May 2012 11:09:31 +0000 Subject: [PATCH 12/31] add leds-modules udeb svn path=/dists/sid/linux-2.6/; revision=18996 --- debian/changelog | 2 ++ debian/installer/armel/modules/armel-kirkwood/leds-modules | 2 ++ debian/installer/package-list | 6 ++++++ 3 files changed, 10 insertions(+) create mode 100644 debian/installer/armel/modules/armel-kirkwood/leds-modules diff --git a/debian/changelog b/debian/changelog index f25e6e043..6f5d1f31e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -38,6 +38,8 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low [ 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 Tue, 01 May 2012 00:43:48 +0100 diff --git a/debian/installer/armel/modules/armel-kirkwood/leds-modules b/debian/installer/armel/modules/armel-kirkwood/leds-modules new file mode 100644 index 000000000..b18bac13f --- /dev/null +++ b/debian/installer/armel/modules/armel-kirkwood/leds-modules @@ -0,0 +1,2 @@ +leds-ns2 +leds-netxbig diff --git a/debian/installer/package-list b/debian/installer/package-list index ffb158651..1bde8a815 100644 --- a/debian/installer/package-list +++ b/debian/installer/package-list @@ -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. From 5f9b292b8aee1e182d071f1447ba4aaec6f76479 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 11:16:51 +0000 Subject: [PATCH 13/31] Add/note KVM security fixes svn path=/dists/sid/linux-2.6/; revision=18997 --- debian/changelog | 4 + ...re-consistent-with-in-kernel-irqchip.patch | 107 ++++++++++++++++++ ...-slots_lock-around-device-assignment.patch | 80 +++++++++++++ debian/patches/series/base | 2 + 4 files changed, 193 insertions(+) create mode 100644 debian/patches/bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch create mode 100644 debian/patches/bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch diff --git a/debian/changelog b/debian/changelog index 6f5d1f31e..4f9d18ae0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,7 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low 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 @@ -31,6 +32,9 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low * 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) [ Bastian Blank ] * [s390] Enable IUCV special message support. (closes: #671238) diff --git a/debian/patches/bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch b/debian/patches/bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch new file mode 100644 index 000000000..3059ac98e --- /dev/null +++ b/debian/patches/bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch @@ -0,0 +1,107 @@ +From: Avi Kivity +Date: Mon, 5 Mar 2012 14:23:29 +0200 +Subject: [PATCH] KVM: Ensure all vcpus are consistent with in-kernel irqchip + settings + +commit 3e515705a1f46beb1c942bb8043c16f8ac7b1e9e upstream. + +If some vcpus are created before KVM_CREATE_IRQCHIP, then +irqchip_in_kernel() and vcpu->arch.apic will be inconsistent, leading +to potential NULL pointer dereferences. + +Fix by: +- ensuring that no vcpus are installed when KVM_CREATE_IRQCHIP is called +- ensuring that a vcpu has an apic if it is installed after KVM_CREATE_IRQCHIP + +This is somewhat long winded because vcpu->arch.apic is created without +kvm->lock held. + +Based on earlier patch by Michael Ellerman. + +Signed-off-by: Michael Ellerman +Signed-off-by: Avi Kivity +--- + arch/ia64/kvm/kvm-ia64.c | 5 +++++ + arch/x86/kvm/x86.c | 8 ++++++++ + include/linux/kvm_host.h | 7 +++++++ + virt/kvm/kvm_main.c | 4 ++++ + 4 files changed, 24 insertions(+) + +diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c +index d8ddbba..f5104b7 100644 +--- a/arch/ia64/kvm/kvm-ia64.c ++++ b/arch/ia64/kvm/kvm-ia64.c +@@ -1172,6 +1172,11 @@ out: + + #define PALE_RESET_ENTRY 0x80000000ffffffb0UL + ++bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) ++{ ++ return irqchip_in_kernel(vcpu->kcm) == (vcpu->arch.apic != NULL); ++} ++ + int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) + { + struct kvm_vcpu *v; +diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c +index 03a1fd4..9477dc6 100644 +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -3199,6 +3199,9 @@ long kvm_arch_vm_ioctl(struct file *filp, + r = -EEXIST; + if (kvm->arch.vpic) + goto create_irqchip_unlock; ++ r = -EINVAL; ++ if (atomic_read(&kvm->online_vcpus)) ++ goto create_irqchip_unlock; + r = -ENOMEM; + vpic = kvm_create_pic(kvm); + if (vpic) { +@@ -6107,6 +6110,11 @@ void kvm_arch_check_processor_compat(void *rtn) + kvm_x86_ops->check_processor_compatibility(rtn); + } + ++bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) ++{ ++ return irqchip_in_kernel(vcpu->kvm) == (vcpu->arch.apic != NULL); ++} ++ + int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) + { + struct page *page; +diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h +index 355e445..e42d85a 100644 +--- a/include/linux/kvm_host.h ++++ b/include/linux/kvm_host.h +@@ -805,6 +805,13 @@ static inline bool kvm_vcpu_is_bsp(struct kvm_vcpu *vcpu) + { + return vcpu->kvm->bsp_vcpu_id == vcpu->vcpu_id; + } ++ ++bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu); ++ ++#else ++ ++static inline bool kvm_vcpu_compatible(struct kvm_vcpu *vcpu) { return true; } ++ + #endif + + #ifdef __KVM_HAVE_DEVICE_ASSIGNMENT +diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c +index e4431ad..94e148e 100644 +--- a/virt/kvm/kvm_main.c ++++ b/virt/kvm/kvm_main.c +@@ -1651,6 +1651,10 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, u32 id) + goto vcpu_destroy; + + mutex_lock(&kvm->lock); ++ if (!kvm_vcpu_compatible(vcpu)) { ++ r = -EINVAL; ++ goto unlock_vcpu_destroy; ++ } + if (atomic_read(&kvm->online_vcpus) == KVM_MAX_VCPUS) { + r = -EINVAL; + goto unlock_vcpu_destroy; +-- +1.7.10 + diff --git a/debian/patches/bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch b/debian/patches/bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch new file mode 100644 index 000000000..8c23d61db --- /dev/null +++ b/debian/patches/bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch @@ -0,0 +1,80 @@ +From: Alex Williamson +Date: Tue, 17 Apr 2012 21:46:44 -0600 +Subject: [PATCH] KVM: lock slots_lock around device assignment + +commit 21a1416a1c945c5aeaeaf791b63c64926018eb77 upstream. + +As pointed out by Jason Baron, when assigning a device to a guest +we first set the iommu domain pointer, which enables mapping +and unmapping of memory slots to the iommu. This leaves a window +where this path is enabled, but we haven't synchronized the iommu +mappings to the existing memory slots. Thus a slot being removed +at that point could send us down unexpected code paths removing +non-existent pinnings and iommu mappings. Take the slots_lock +around creating the iommu domain and initial mappings as well as +around iommu teardown to avoid this race. + +Signed-off-by: Alex Williamson +Signed-off-by: Marcelo Tosatti +--- + virt/kvm/iommu.c | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c +index fec1723..e9fff98 100644 +--- a/virt/kvm/iommu.c ++++ b/virt/kvm/iommu.c +@@ -240,9 +240,13 @@ int kvm_iommu_map_guest(struct kvm *kvm) + return -ENODEV; + } + ++ mutex_lock(&kvm->slots_lock); ++ + kvm->arch.iommu_domain = iommu_domain_alloc(&pci_bus_type); +- if (!kvm->arch.iommu_domain) +- return -ENOMEM; ++ if (!kvm->arch.iommu_domain) { ++ r = -ENOMEM; ++ goto out_unlock; ++ } + + if (!allow_unsafe_assigned_interrupts && + !iommu_domain_has_cap(kvm->arch.iommu_domain, +@@ -253,17 +257,16 @@ int kvm_iommu_map_guest(struct kvm *kvm) + " module option.\n", __func__); + iommu_domain_free(kvm->arch.iommu_domain); + kvm->arch.iommu_domain = NULL; +- return -EPERM; ++ r = -EPERM; ++ goto out_unlock; + } + + r = kvm_iommu_map_memslots(kvm); + if (r) +- goto out_unmap; +- +- return 0; ++ kvm_iommu_unmap_memslots(kvm); + +-out_unmap: +- kvm_iommu_unmap_memslots(kvm); ++out_unlock: ++ mutex_unlock(&kvm->slots_lock); + return r; + } + +@@ -340,7 +343,11 @@ int kvm_iommu_unmap_guest(struct kvm *kvm) + if (!domain) + return 0; + ++ mutex_lock(&kvm->slots_lock); + kvm_iommu_unmap_memslots(kvm); ++ kvm->arch.iommu_domain = NULL; ++ mutex_unlock(&kvm->slots_lock); ++ + iommu_domain_free(domain); + return 0; + } +-- +1.7.10 + diff --git a/debian/patches/series/base b/debian/patches/series/base index 2c871796a..2d0ce64b5 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -195,3 +195,5 @@ + bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch + bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch + bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch ++ bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch ++ bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch From 88590a0642b3aca0c5b730ca3be186e859b16295 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 13:52:25 +0000 Subject: [PATCH 14/31] Avoid symbol version changes for some binary-compatible structure changes svn path=/dists/sid/linux-2.6/; revision=18998 --- .../skbuff-avoid-ABI-change-in-3.2.17.patch | 14 ++++++++++++++ .../usb-hcd-avoid-ABI-change-in-3.2.17.patch | 15 +++++++++++++++ debian/patches/series/base | 2 ++ 3 files changed, 31 insertions(+) create mode 100644 debian/patches/debian/skbuff-avoid-ABI-change-in-3.2.17.patch create mode 100644 debian/patches/debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch diff --git a/debian/patches/debian/skbuff-avoid-ABI-change-in-3.2.17.patch b/debian/patches/debian/skbuff-avoid-ABI-change-in-3.2.17.patch new file mode 100644 index 000000000..a1041dafb --- /dev/null +++ b/debian/patches/debian/skbuff-avoid-ABI-change-in-3.2.17.patch @@ -0,0 +1,14 @@ +diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h +index e689b47..cc2eefd 100644 +--- a/include/linux/skbuff.h ++++ b/include/linux/skbuff.h +@@ -458,7 +458,9 @@ struct sk_buff { + union { + __u32 mark; + __u32 dropcount; ++#ifndef __GENKSYMS__ + __u32 avail_size; ++#endif + }; + + __u16 vlan_tci; diff --git a/debian/patches/debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch b/debian/patches/debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch new file mode 100644 index 000000000..7801297a7 --- /dev/null +++ b/debian/patches/debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch @@ -0,0 +1,15 @@ +diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h +index 64cec8d..605092f 100644 +--- a/include/linux/usb/hcd.h ++++ b/include/linux/usb/hcd.h +@@ -128,8 +128,10 @@ struct usb_hcd { + unsigned wireless:1; /* Wireless USB HCD */ + unsigned authorized_default:1; + unsigned has_tt:1; /* Integrated TT in root hub */ ++#ifndef __GENKSYMS__ + unsigned broken_pci_sleep:1; /* Don't put the + controller in PCI-D3 for system sleep */ ++#endif + + int irq; /* irq allocated */ + void __iomem *regs; /* device memory/io */ diff --git a/debian/patches/series/base b/debian/patches/series/base index 2d0ce64b5..b9ac37b4f 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -189,6 +189,8 @@ + debian/revert-rtc-Provide-flag-for-rtc-devices-that-don-t-s.patch + debian/nls-Avoid-ABI-change-from-improvement-to-utf8s_to_ut.patch + debian/efi-avoid-ABI-change.patch ++ debian/skbuff-avoid-ABI-change-in-3.2.17.patch ++ debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch + bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch From e39ab1b0015749576508d5d816ee8f7d5fb2437c Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 14:20:55 +0000 Subject: [PATCH 15/31] [rt] bump version to 3.2.16-rt27 svn path=/dists/sid/linux-2.6/; revision=18999 --- debian/changelog | 1 + ...-Call-idle-notifier-after-irq_enter.patch} | 71 +- ...ab-lockdep-Annotate-all-slab-caches.patch} | 23 +- ...-Remove-remove-bogus-preempt_enable.patch} | 16 +- ...x86-hpet-Disable-MSI-on-Lenovo-W510.patch} | 18 +- ...-Shorten-interrupt-disabled-regions.patch} | 26 +- ...le-worker-accounting-from-rq-3Elock.patch} | 57 +- ...s-enable-interrupts-in-signal.patch.patch} | 16 +- ...able-interrupts-in-signal-code.patch.patch | 27 + ...5xx-Mark-cascade-irq-IRQF_NO_THREAD.patch} | 16 +- ...-opb-cascade-handler-IRQF_NO_THREAD.patch} | 17 +- ...-Mark-IPI-interrupts-IRQF_NO_THREAD.patch} | 38 +- ...=> 0012-powerpc-Allow-irq-threading.patch} | 14 +- ...-timer-ticking-when-throttling-acti.patch} | 21 +- ...-Do-not-throttle-due-to-PI-boosting.patch} | 16 +- ... => 0015-time-Remove-bogus-comments.patch} | 18 +- ...bogus-locking-in-update_vsyscall_tz.patch} | 17 +- ...dso-Use-seqcount-instead-of-seqlock.patch} | 40 +- ...all-Use-seqcount-instead-of-seqlock.patch} | 40 +- ...019-seqlock-Remove-unused-functions.patch} | 18 +- ....patch => 0020-seqlock-Use-seqcount.patch} | 20 +- ...e-code-out-of-seqcount-write-sectio.patch} | 10 +- ...> 0022-timekeeping-Split-xtime_lock.patch} | 120 +-- ...ert-i7300_idle_lock-to-raw-spinlock.patch} | 21 +- ...preempt-disabled-section-around-eve.patch} | 25 +- ...for-preempt-off-in-preempt_schedule.patch} | 17 +- ...l-revert-ptrace-preempt-magic.patch.patch} | 16 +- ...rm-Mark-pmu-interupt-IRQF_NO_THREAD.patch} | 16 +- ...0028-arm-Allow-forced-irq-threading.patch} | 14 +- ...mpt-rt-Convert-arm-boot_lock-to-raw.patch} | 95 +- ...ed-Create-schedule_preempt_disabled.patch} | 24 +- ...sched-Use-schedule_preempt_disabled.patch} | 238 ++--- ... => 0032-signals-Do-not-wakeup-self.patch} | 17 +- ...ix-timers-Prevent-broadcast-signals.patch} | 19 +- ...-tasks-to-cache-one-sigqueue-struct.patch} | 77 +- ...x86-Delay-calling-signals-in-atomic.patch} | 46 +- ...ocal-irq-variant-for-generic-cmpxch.patch} | 22 +- ...ndom-Reduce-preempt-disabled-region.patch} | 19 +- ...ve-irq-handler-when-clock-event-is-.patch} | 32 +- ...-Allow-higher-clock-rates-for-clock.patch} | 38 +- ..._remove_one-needs-to-call-pci_disab.patch} | 18 +- ...t-Use-disable_irq_nosync-in-8139too.patch} | 17 +- ...Make-rx-irq-handler-non-threaded-IR.patch} | 18 +- ..._ether-Make-mdio-protection-rt-safe.patch} | 22 +- ...-legitimated-no-resched-sites.patch.patch} | 48 +- ...ling-the-page-fault-disabling-logic.patch} | 44 +- ...t-handlers-to-check-current-pagefau.patch} | 227 ++--- ...patch => 0047-mm-pagefault_disabled.patch} | 246 ++--- ...ch => 0048-mm-raw_pagefault_disable.patch} | 31 +- ....patch => 0049-filemap-fix-up.patch.patch} | 16 +- ...-count-from-pagefault-disable-enabl.patch} | 19 +- ...6-highmem-Replace-BUG_ON-by-WARN_ON.patch} | 17 +- ...-suspend-Prevent-might-sleep-splats.patch} | 45 +- ...-Fixup-resursive-locking-code-paths.patch} | 29 +- ... 0054-of-convert-devtree-lock.patch.patch} | 82 +- ...0055-list-add-list-last-entry.patch.patch} | 16 +- ...age-alloc-use-list-last-entry.patch.patch} | 16 +- ...> 0057-mm-slab-move-debug-out.patch.patch} | 16 +- ...tch => 0058-rwsem-inlcude-fix.patch.patch} | 14 +- ...ch => 0059-sysctl-include-fix.patch.patch} | 14 +- ...0060-net-flip-lock-dep-thingy.patch.patch} | 18 +- ...061-softirq-thread-do-softirq.patch.patch} | 22 +- ...> 0062-softirq-split-out-code.patch.patch} | 18 +- ...-io_apic-when-interrupt-is-in-progr.patch} | 18 +- ...> 0064-x86-32-fix-signal-crap.patch.patch} | 18 +- ...disable-preemption-in-int3-on-32bit.patch} | 28 +- ...tch => 0066-rcu-Reduce-lock-section.patch} | 44 +- ...67-locking-various-init-fixes.patch.patch} | 52 +- ...8-wait-Provide-__wake_up_all_locked.patch} | 28 +- ..._all_locked-pci_unblock_user_cfg_ac.patch} | 19 +- ...st.patch => 0070-latency-hist.patch.patch} | 111 ++- ...ect.patch => 0071-hwlatdetect.patch.patch} | 55 +- .../all/rt/0072-localversion.patch.patch | 23 + ...0073-early-printk-consolidate.patch.patch} | 152 +-- ...ill.patch => 0074-printk-kill.patch.patch} | 40 +- ...y_printk-boot-param-to-help-with-de.patch} | 23 +- ...> 0076-rt-preempt-base-config.patch.patch} | 14 +- ...WARN_ON-variants-dependend-on-RT-RT.patch} | 17 +- ...al_irq_-variants-depending-on-RT-RT.patch} | 25 +- ...t-Provide-preempt_-_-no-rt-variants.patch} | 15 +- ...e-interrupts-in-ide-code-for-preemp.patch} | 22 +- ...t-disable-interrupts-for-PREEMPT-RT.patch} | 89 +- ...ox-IB-driver-patch-use-_nort-primit.patch} | 20 +- ...-not-disable-interrupts-on-PREEMPT_.patch} | 20 +- ...ot-disable-interrupts-on-PREEMPT_RT.patch} | 15 +- ...le-interrupts-on-RT-in-kernel-users.patch} | 16 +- ...le-interrupts-on-RT-in-res_counter..patch} | 20 +- ...7-usb-Use-local_irq_-_nort-variants.patch} | 19 +- ...sable-interrupts-in-put_ldisc-on-rt.patch} | 19 +- ...scatterlist-dont-disable-irqs-on-RT.patch} | 20 +- ...90-signal-fix-up-rcu-wreckage.patch.patch} | 18 +- ...> 0091-net-wireless-warn-nort.patch.patch} | 16 +- ...mm-Replace-cgroup_page-bit-spinlock.patch} | 27 +- ...ead-Replace-bh_uptodate_lock-for-rt.patch} | 48 +- ...state-lock-and-journal-head-lock-rt.patch} | 31 +- ...5-genirq-Disable-DEBUG_SHIRQ-for-rt.patch} | 16 +- ...q-Disable-random-call-on-preempt-rt.patch} | 17 +- ...> 0097-genirq-disable-irqpoll-on-rt.patch} | 17 +- ...> 0098-genirq-force-threading.patch.patch} | 28 +- ...099-drivers-net-fix-livelock-issues.patch} | 77 +- ...ivers-net-vortex-fix-locking-issues.patch} | 21 +- ...1-drivers-net-gianfar-Make-RT-aware.patch} | 19 +- ...-problem-when-copying-large-amounts.patch} | 18 +- ...l-var.patch => 0103-local-var.patch.patch} | 14 +- ...tch => 0104-rt-local-irq-lock.patch.patch} | 16 +- ...patch => 0105-cpu-rt-variants.patch.patch} | 16 +- ...> 0106-mm-slab-wrap-functions.patch.patch} | 70 +- ..._drain-to-use-the-right-array-cache.patch} | 17 +- ... 0108-mm-More-lock-breaks-in-slab.c.patch} | 49 +- ...age_alloc-rt-friendly-per-cpu-pages.patch} | 29 +- ..._alloc-reduce-lock-sections-further.patch} | 32 +- ...tch => 0111-mm-page-alloc-fix.patch.patch} | 16 +- ...12-mm-convert-swap-to-percpu-locked.patch} | 19 +- ...tat-fix-the-irq-lock-asymetry.patch.patch} | 20 +- ...tch => 0114-mm-make-vmstat-rt-aware.patch} | 39 +- ...mm-shrink-the-page-frame-to-rt-size.patch} | 35 +- ...Initialize-ptl-lock-for-vector-page.patch} | 16 +- ...ch => 0117-mm-Allow-only-slab-on-RT.patch} | 15 +- ...h => 0118-radix-tree-rt-aware.patch.patch} | 30 +- ... => 0119-panic-disable-random-on-rt.patch} | 14 +- ...0120-ipc-Make-the-ipc-code-rt-aware.patch} | 31 +- ...critical-section-to-avoid-a-deadloc.patch} | 18 +- ...tch => 0122-relay-fix-timer-madness.patch} | 21 +- ...ipv4-route-use-locks-on-up-rt.patch.patch} | 14 +- ...e-avoid-the-lock-in-cpu-dying.patch.patch} | 20 +- ...-timers-prepare-for-full-preemption.patch} | 35 +- ...h => 0126-timers-preempt-rt-support.patch} | 18 +- ...0127-timers-fix-timer-hotplug-on-rt.patch} | 21 +- ...s-mov-printk_tick-to-soft-interrupt.patch} | 17 +- ...waking-softirqs-from-the-jiffy-tick.patch} | 15 +- ...switch-timers-base-set-to-NULL-tric.patch} | 19 +- ...-printk_tick-in-printk_needs_cpu-on.patch} | 15 +- ...32-hrtimers-prepare-full-preemption.patch} | 51 +- ...imer-callback-changes-for-preempt-r.patch} | 88 +- ...l-the-timer-handler-from-hrtimer_st.patch} | 21 +- ...ing-debug_activate-aid-Was-Re-ANNOUN.patch | 41 + ...hrtimer-fix-reprogram-madness.patch.patch} | 18 +- ... => 0137-timer-fd-Prevent-live-lock.patch} | 16 +- ...imers-thread-posix-cpu-timers-on-rt.patch} | 69 +- ...ten-posix_cpu_timers-CPU-kernel-thr.patch} | 18 +- ...d-wakeups-when-no-timers-are-active.patch} | 20 +- ... => 0141-sched-delay-put-task.patch.patch} | 26 +- ...> 0142-sched-limit-nr-migrate.patch.patch} | 16 +- ... => 0143-sched-mmdrop-delayed.patch.patch} | 52 +- ...=> 0144-sched-rt-mutex-wakeup.patch.patch} | 28 +- ...0145-sched-prevent-idle-boost.patch.patch} | 20 +- ...leep-do-not-account-rcu-depth.patch.patch} | 26 +- ...rom-load_balancing-on-rq_lock-conte.patch} | 20 +- ...ch => 0148-sched-cond-resched.patch.patch} | 16 +- ...0149-cond-resched-softirq-fix.patch.patch} | 26 +- ...sched-no-work-when-pi-blocked.patch.patch} | 26 +- ...51-cond-resched-lock-rt-tweak.patch.patch} | 14 +- ...0152-sched-disable-ttwu-queue.patch.patch} | 14 +- ...Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch} | 14 +- ...-success-when-only-changing-the-sav.patch} | 17 +- ...vert-stop_machine_run-to-PREEMPT_RT.patch} | 20 +- ...p-machine-mark-stomper-thread.patch.patch} | 26 +- ...> 0157-stomp-machine-raw-lock.patch.patch} | 34 +- ...hotplug-Lightweight-get-online-cpus.patch} | 38 +- ...atch => 0159-hotplug-sync_unplug-No.patch} | 16 +- ...otplug_pcp-on-pin_current_cpu-retry.patch} | 17 +- ...=> 0161-sched-migrate-disable.patch.patch} | 64 +- ...2-hotplug-use-migrate-disable.patch.patch} | 18 +- ...pu_unplug_begin-before-DOWN_PREPARE.patch} | 16 +- ...trace-migrate-disable-tracing.patch.patch} | 46 +- ...cing-Show-padding-as-unsigned-short.patch} | 18 +- ...66-migrate-disable-rt-variant.patch.patch} | 14 +- ...0167-sched-Optimize-migrate_disable.patch} | 16 +- ... 0168-sched-Generic-migrate_disable.patch} | 68 +- ...-sched-rt-Fix-migrate_enable-thinko.patch} | 27 +- ...grate_disable-about-atomic-contexts.patch} | 28 +- ...ctual-migration-disalbe-to-schedule.patch} | 21 +- ...-not-compare-cpu-masks-in-scheduler.patch} | 19 +- ...rate_disable-ignore-bounded-threads.patch} | 17 +- ...f-thread-bound-on-fallback-rq.patch.patch} | 18 +- ...rap.patch => 0175-ftrace-crap.patch.patch} | 36 +- ...rt-reader_lock-from-raw_spin_lock-i.patch} | 70 +- ...t-netif_rx_ni-migrate-disable.patch.patch} | 14 +- ...anitize-softirq-pending-for-NOHZ-RT.patch} | 41 +- ...n-rt.patch => 0179-lockdep-rt.patch.patch} | 26 +- ...h => 0180-mutex-no-spin-on-rt.patch.patch} | 14 +- ...ch => 0181-softirq-local-lock.patch.patch} | 62 +- ...2-softirq-Export-in_serving_softirq.patch} | 15 +- ...softirq_count-as-OUL-to-kill-build-.patch} | 18 +- ...=> 0184-softirq-Fix-unplug-deadlock.patch} | 24 +- ...disable-softirq-stacks-for-rt.patch.patch} | 82 +- ...tch => 0186-softirq-make-fifo.patch.patch} | 16 +- ...asklets-from-going-into-infinite-sp.patch} | 50 +- ...bling-of-softirq-processing-in-irq-.patch} | 57 +- ...89-local-vars-migrate-disable.patch.patch} | 14 +- ...Make-raid5_percpu-handling-RT-aware.patch} | 29 +- ...=> 0191-rtmutex-lock-killable.patch.patch} | 28 +- ...0192-rtmutex-futex-prepare-rt.patch.patch} | 58 +- ...n-when-a-requeued-RT-task-times-out.patch} | 35 +- ...dd-sleeping-spinlocks-support.patch.patch} | 74 +- ...5-spinlock-types-separate-raw.patch.patch} | 44 +- ...96-rtmutex-avoid-include-hell.patch.patch} | 14 +- ...h => 0197-rt-add-rt-spinlocks.patch.patch} | 34 +- ...98-rt-add-rt-to-mutex-headers.patch.patch} | 28 +- ... => 0199-rwsem-add-rt-variant.patch.patch} | 40 +- ...he-preempt-rt-lock-replacement-APIs.patch} | 109 ++- ...> 0201-rwlocks-Fix-section-mismatch.patch} | 31 +- ...-trylock-in-get-next-timer-irq.patc.patch} | 34 +- ...CU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch} | 14 +- ...patch => 0204-rcu-Frob-softirq-test.patch} | 42 +- ...5-rcu-Merge-RCU-bh-into-RCU-preempt.patch} | 59 +- ...stitution-for-synchronize_rcu_bh-on.patch} | 18 +- ...atch => 0207-rcu-more-fallout.patch.patch} | 18 +- ...e-ksoftirqd-do-RCU-quiescent-states.patch} | 55 +- ...rt-rcutree-Move-misplaced-prototype.patch} | 28 +- ...s-rt.patch => 0210-lglocks-rt.patch.patch} | 16 +- ...al-8250-Clean-up-the-locking-for-rt.patch} | 19 +- ...flush_to_ldisc-when-the-irq-is-thre.patch} | 28 +- ...rivers-tty-fix-omap-lock-crap.patch.patch} | 18 +- ...prove-the-serial-console-PASS_LIMIT.patch} | 23 +- ...=> 0215-fs-namespace-preemption-fix.patch} | 15 +- ...mm-protect-activate-switch-mm.patch.patch} | 26 +- ...h => 0217-fs-block-rt-support.patch.patch} | 24 +- ...s-ntfs-disable-interrupt-only-on-RT.patch} | 17 +- ...19-x86-Convert-mce-timer-to-hrtimer.patch} | 31 +- ...ckprotector-Avoid-random-pool-on-rt.patch} | 17 +- ...6-Use-generic-rwsem_spinlocks-on-rt.patch} | 15 +- ...tacks-for-debug-int-3-stack-fault-f.patch} | 33 +- ...3-workqueue-use-get-cpu-light.patch.patch} | 16 +- ...cpu-light.patch => 0224-epoll.patch.patch} | 18 +- ...ight.patch => 0225-mm-vmalloc.patch.patch} | 22 +- ...workqueue-Fix-cpuhotplug-trainwreck.patch} | 96 +- ...workqueue-Fix-PF_THREAD_BOUND-abuse.patch} | 26 +- ...eue-Use-get_cpu_light-in-flush_gcwq.patch} | 16 +- ...t.patch => 0229-hotplug-stuff.patch.patch} | 18 +- ...patch => 0230-debugobjects-rt.patch.patch} | 18 +- ...t.patch => 0231-jump-label-rt.patch.patch} | 14 +- ...ch => 0232-skbufhead-raw-lock.patch.patch} | 40 +- ... 0233-x86-no-perf-irq-work-rt.patch.patch} | 34 +- ...0234-console-make-rt-friendly.patch.patch} | 22 +- ...ble-migration-instead-of-preemption.patch} | 18 +- ... 0236-power-use-generic-rwsem-on-rt.patch} | 14 +- ...7-power-disable-highmem-on-rt.patch.patch} | 14 +- ...238-arm-disable-highmem-on-rt.patch.patch} | 14 +- ...tclib-Default-to-tclib-timer-for-RT.patch} | 15 +- ...40-mips-disable-highmem-on-rt.patch.patch} | 14 +- ...oid-livelock-in-net_tx_action-on-RT.patch} | 19 +- ...ysrq.patch => 0242-ping-sysrq.patch.patch} | 45 +- ...3-kgdb-serial-Short-term-workaround.patch} | 39 +- ... 0244-add-sys-kernel-realtime-entry.patch} | 18 +- ...> 0245-mm-rt-kmap_atomic-scheduling.patch} | 36 +- ...46-ipc-sem-Rework-semaphore-wakeups.patch} | 26 +- ...iate-Magic-SysRq-output-for-PREEMPT.patch} | 57 +- ...-kvm-require-const-tsc-for-rt.patch.patch} | 18 +- ...ch => 0249-scsi-fcoe-rt-aware.patch.patch} | 44 +- ...pto-Reduce-preempt-disabled-regions.patch} | 24 +- ...ware.patch => 0251-dm-Make-rt-aware.patch} | 16 +- ...able-CONFIG_CPUMASK_OFFSTACK-for-RT.patch} | 22 +- ... 0253-seqlock-Prevent-rt-starvation.patch} | 35 +- ...ch => 0254-timer-Fix-hotplug-for-rt.patch} | 20 +- ...ible-lockup-when-taking-pi_lock-in-.patch} | 17 +- ...eck-for-irqs-disabled-before-grabbi.patch} | 17 +- ..._task_interactive-to-test-rt_spin_l.patch} | 17 +- ...-Use-non-rt-for_each_cpu-in-rt-code.patch} | 16 +- ...plug.lock-a-sleeping-spinlock-on-RT.patch} | 16 +- ...emption-after-reenabling-interrupts.patch} | 59 +- ...atch => 0261-rt-Introduce-cpu_chill.patch} | 18 +- ...ache-Use-cpu_chill-in-trylock-loops.patch} | 42 +- ...-Use-cpu_chill-instead-of-cpu_relax.patch} | 30 +- ...nfig-disable-a-few-options-rt.patch.patch} | 30 +- ... 0265-kconfig-preempt-rt-full.patch.patch} | 30 +- ...disable-enable-and-__rt_mutex_init-n.patch | 54 ++ .../rt/0267-Linux-3.2.16-rt27-REBASE.patch | 19 + ...arm-enable-interrupts-in-signal-code.patch | 23 - debian/patches/features/all/rt/check-series | 2 +- ...ivate-aid-was-re-announce-3-0-6-rt17.patch | 70 -- .../features/all/rt/localversion.patch | 17 - debian/patches/features/all/rt/series | 869 ++++++------------ debian/patches/series/base-extra | 529 +++++------ 274 files changed, 5329 insertions(+), 4600 deletions(-) rename debian/patches/features/all/rt/{x86_64-patch-for-idle-notifiers.patch => 0001-x86-Call-idle-notifier-after-irq_enter.patch} (68%) rename debian/patches/features/all/rt/{re-possible-slab-deadlock-while-doing-ifenslave-1.patch => 0002-slab-lockdep-Annotate-all-slab-caches.patch} (85%) rename debian/patches/features/all/rt/{x86-kprobes-remove-bogus-preempt-enable.patch => 0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch} (58%) rename debian/patches/features/all/rt/{x86-hpet-disable-msi-on-lenovo-w510.patch => 0004-x86-hpet-Disable-MSI-on-Lenovo-W510.patch} (77%) rename debian/patches/features/all/rt/{block-shorten-interrupt-disabled-regions.patch => 0005-block-Shorten-interrupt-disabled-regions.patch} (80%) rename debian/patches/features/all/rt/{sched-distangle-worker-accounting-from-rq-3elock.patch => 0006-sched-Distangle-worker-accounting-from-rq-3Elock.patch} (86%) rename debian/patches/features/all/rt/{mips-enable-interrupts-in-signal.patch => 0007-mips-enable-interrupts-in-signal.patch.patch} (50%) create mode 100644 debian/patches/features/all/rt/0008-arm-enable-interrupts-in-signal-code.patch.patch rename debian/patches/features/all/rt/{powerpc-85xx-mark-cascade-irq-no-thread.patch => 0009-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch} (52%) rename debian/patches/features/all/rt/{powerpc-wsp-opb-mark-demux-handler-nothread.patch => 0010-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch} (59%) rename debian/patches/features/all/rt/{powerpc-markipi-interrupts-nothread.patch => 0011-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch} (62%) rename debian/patches/features/all/rt/{power-allow-irq-threading.patch => 0012-powerpc-Allow-irq-threading.patch} (67%) rename debian/patches/features/all/rt/{sched-keep-period-timer-alive-when-throttled.patch => 0013-sched-Keep-period-timer-ticking-when-throttling-acti.patch} (73%) rename debian/patches/features/all/rt/{sched-prevent-boosting-from-throttling.patch => 0014-sched-Do-not-throttle-due-to-PI-boosting.patch} (78%) rename debian/patches/features/all/rt/{time-remove-bogus-comments.patch => 0015-time-Remove-bogus-comments.patch} (60%) rename debian/patches/features/all/rt/{x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch => 0016-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch} (69%) rename debian/patches/features/all/rt/{x86-vdso-use-seqcount.patch => 0017-x86-vdso-Use-seqcount-instead-of-seqlock.patch} (75%) rename debian/patches/features/all/rt/{ia64-vdso-use-seqcount.patch => 0018-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch} (70%) rename debian/patches/features/all/rt/{seqlock-remove-unused-functions.patch => 0019-seqlock-Remove-unused-functions.patch} (68%) rename debian/patches/features/all/rt/{seqlock-use-seqcount.patch => 0020-seqlock-Use-seqcount.patch} (91%) rename debian/patches/features/all/rt/{vfs-fstruct-move-code-out-of-seqcount-write-sections.patch => 0021-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch} (89%) rename debian/patches/features/all/rt/{timekeeping-split-xtime-lock.patch => 0022-timekeeping-Split-xtime_lock.patch} (81%) rename debian/patches/features/all/rt/{intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch => 0023-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch} (78%) rename debian/patches/features/all/rt/{mm-memcg-shorten-preempt-disabled-section-around-event-checks.patch => 0024-mm-memcg-shorten-preempt-disabled-section-around-eve.patch} (85%) rename debian/patches/features/all/rt/{tracing-account-for-preempt-off-in-preempt_schedule.patch => 0025-tracing-Account-for-preempt-off-in-preempt_schedule.patch} (81%) rename debian/patches/features/all/rt/{signal-revert-ptrace-preempt-magic.patch => 0026-signal-revert-ptrace-preempt-magic.patch.patch} (61%) rename debian/patches/features/all/rt/{arm-mark-pmu-interupt-no-thread.patch => 0027-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch} (60%) rename debian/patches/features/all/rt/{arm-allow-irq-threading.patch => 0028-arm-Allow-forced-irq-threading.patch} (68%) rename debian/patches/features/all/rt/{arm-convert-boot-lock-to-raw.patch => 0029-preempt-rt-Convert-arm-boot_lock-to-raw.patch} (69%) rename debian/patches/features/all/rt/{sched-create-schedule-preempt-disabled.patch => 0030-sched-Create-schedule_preempt_disabled.patch} (69%) rename debian/patches/features/all/rt/{sched-use-schedule-preempt-disabled.patch => 0031-sched-Use-schedule_preempt_disabled.patch} (58%) rename debian/patches/features/all/rt/{signals-do-not-wake-self.patch => 0032-signals-Do-not-wakeup-self.patch} (61%) rename debian/patches/features/all/rt/{posix-timers-no-broadcast.patch => 0033-posix-timers-Prevent-broadcast-signals.patch} (65%) rename debian/patches/features/all/rt/{signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch => 0034-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch} (71%) rename debian/patches/features/all/rt/{oleg-signal-rt-fix.patch => 0035-signal-x86-Delay-calling-signals-in-atomic.patch} (80%) rename debian/patches/features/all/rt/{generic-cmpxchg-use-raw-local-irq.patch => 0036-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch} (57%) rename debian/patches/features/all/rt/{drivers-random-reduce-preempt-disabled-region.patch => 0037-drivers-random-Reduce-preempt-disabled-region.patch} (64%) rename debian/patches/features/all/rt/{arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch => 0038-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch} (64%) rename debian/patches/features/all/rt/{clocksource-tclib-allow-higher-clockrates.patch => 0039-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch} (81%) rename debian/patches/features/all/rt/{drivers-net-tulip-add-missing-pci-disable.patch => 0040-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch} (50%) rename debian/patches/features/all/rt/{drivers-net-8139-disable-irq-nosync.patch => 0041-drivers-net-Use-disable_irq_nosync-in-8139too.patch} (55%) rename debian/patches/features/all/rt/{drivers-net-ehea-mark-rx-irq-no-thread.patch => 0042-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch} (80%) rename debian/patches/features/all/rt/{drivers-net-at91-make-mdio-protection-rt-safe.patch => 0043-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch} (69%) rename debian/patches/features/all/rt/{preempt-mark-legitimated-no-resched-sites.patch => 0044-preempt-mark-legitimated-no-resched-sites.patch.patch} (70%) rename debian/patches/features/all/rt/{mm-prepare-pf-disable-discoupling.patch => 0045-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch} (75%) rename debian/patches/features/all/rt/{arch-use-pagefault-disabled.patch => 0046-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch} (55%) rename debian/patches/features/all/rt/{peter_zijlstra-frob-pagefault_disable.patch => 0047-mm-pagefault_disabled.patch} (59%) rename debian/patches/features/all/rt/{peterz-raw_pagefault_disable.patch => 0048-mm-raw_pagefault_disable.patch} (89%) rename debian/patches/features/all/rt/{filemap-fix-up.patch => 0049-filemap-fix-up.patch.patch} (61%) rename debian/patches/features/all/rt/{mm-remove-preempt-count-from-pf.patch => 0050-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch} (65%) rename debian/patches/features/all/rt/{x86-highmem-warn.patch => 0051-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch} (63%) rename debian/patches/features/all/rt/{suspend-prevernt-might-sleep-splats.patch => 0052-suspend-Prevent-might-sleep-splats.patch} (66%) rename debian/patches/features/all/rt/{of-fixup-recursive-locking.patch => 0053-OF-Fixup-resursive-locking-code-paths.patch} (86%) rename debian/patches/features/all/rt/{of-convert-devtree-lock.patch => 0054-of-convert-devtree-lock.patch.patch} (77%) rename debian/patches/features/all/rt/{list-add-list-last-entry.patch => 0055-list-add-list-last-entry.patch.patch} (67%) rename debian/patches/features/all/rt/{mm-page-alloc-use-list-last-entry.patch => 0056-mm-page-alloc-use-list-last-entry.patch.patch} (58%) rename debian/patches/features/all/rt/{mm-slab-move-debug-out.patch => 0057-mm-slab-move-debug-out.patch.patch} (79%) rename debian/patches/features/all/rt/{pid-h-include-atomic-h.patch => 0058-rwsem-inlcude-fix.patch.patch} (54%) rename debian/patches/features/all/rt/{sysctl-include-atomic-h.patch => 0059-sysctl-include-fix.patch.patch} (57%) rename debian/patches/features/all/rt/{net-flip-lock-dep-thingy.patch => 0060-net-flip-lock-dep-thingy.patch.patch} (93%) rename debian/patches/features/all/rt/{softirq-thread-do-softirq.patch => 0061-softirq-thread-do-softirq.patch.patch} (66%) rename debian/patches/features/all/rt/{softirq-split-out-code.patch => 0062-softirq-split-out-code.patch.patch} (91%) rename debian/patches/features/all/rt/{x86-io-apic-migra-no-unmask.patch => 0063-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch} (62%) rename debian/patches/features/all/rt/{x86-32-fix-signal-crap.patch => 0064-x86-32-fix-signal-crap.patch.patch} (61%) rename debian/patches/features/all/rt/{fix-rt-int3-x86_32-3.2-rt.patch => 0065-x86-Do-not-disable-preemption-in-int3-on-32bit.patch} (77%) rename debian/patches/features/all/rt/{rcu-reduce-lock-section.patch => 0066-rcu-Reduce-lock-section.patch} (67%) rename debian/patches/features/all/rt/{locking-various-init-fixes.patch => 0067-locking-various-init-fixes.patch.patch} (65%) rename debian/patches/features/all/rt/{wait-provide-__wake_up_all_locked.patch => 0068-wait-Provide-__wake_up_all_locked.patch} (75%) rename debian/patches/features/all/rt/{pci-access-use-__wake_up_all_locked.patch => 0069-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch} (59%) rename debian/patches/features/all/rt/{latency-hist.patch => 0070-latency-hist.patch.patch} (95%) rename debian/patches/features/all/rt/{hwlatdetect.patch => 0071-hwlatdetect.patch.patch} (97%) create mode 100644 debian/patches/features/all/rt/0072-localversion.patch.patch rename debian/patches/features/all/rt/{early-printk-consolidate.patch => 0073-early-printk-consolidate.patch.patch} (72%) rename debian/patches/features/all/rt/{printk-kill.patch => 0074-printk-kill.patch.patch} (74%) rename debian/patches/features/all/rt/{printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch => 0075-printk-force_early_printk-boot-param-to-help-with-de.patch} (58%) rename debian/patches/features/all/rt/{rt-preempt-base-config.patch => 0076-rt-preempt-base-config.patch.patch} (80%) rename debian/patches/features/all/rt/{bug-rt-dependend-variants.patch => 0077-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch} (72%) rename debian/patches/features/all/rt/{local-irq-rt-depending-variants.patch => 0078-rt-local_irq_-variants-depending-on-RT-RT.patch} (73%) rename debian/patches/features/all/rt/{preempt-nort-rt-variants.patch => 0079-preempt-Provide-preempt_-_-no-rt-variants.patch} (82%) rename debian/patches/features/all/rt/{ata-disable-interrupts-if-non-rt.patch => 0080-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch} (72%) rename debian/patches/features/all/rt/{ide-use-nort-local-irq-variants.patch => 0081-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch} (59%) rename debian/patches/features/all/rt/{infiniband-mellanox-ib-use-nort-irq.patch => 0082-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch} (64%) rename debian/patches/features/all/rt/{inpt-gameport-use-local-irq-nort.patch => 0083-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch} (64%) rename debian/patches/features/all/rt/{acpi-use-local-irq-nort.patch => 0084-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch} (66%) rename debian/patches/features/all/rt/{user-use-local-irq-nort.patch => 0085-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch} (71%) rename debian/patches/features/all/rt/{resource-counters-use-localirq-nort.patch => 0086-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch} (86%) rename debian/patches/features/all/rt/{usb-hcd-use-local-irq-nort.patch => 0087-usb-Use-local_irq_-_nort-variants.patch} (63%) rename debian/patches/features/all/rt/{tty-use-local-irq-nort.patch => 0088-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch} (74%) rename debian/patches/features/all/rt/{mm-scatterlist-dont-disable-irqs-on-RT.patch => 0089-mm-scatterlist-dont-disable-irqs-on-RT.patch} (58%) rename debian/patches/features/all/rt/{signal-fix-up-rcu-wreckage.patch => 0090-signal-fix-up-rcu-wreckage.patch.patch} (66%) rename debian/patches/features/all/rt/{net-wireless-warn-nort.patch => 0091-net-wireless-warn-nort.patch.patch} (57%) rename debian/patches/features/all/rt/{mm-cgroup-page-bit-spinlock.patch => 0092-mm-Replace-cgroup_page-bit-spinlock.patch} (76%) rename debian/patches/features/all/rt/{fs-replace-bh_uptodate_lock-for-rt.patch => 0093-buffer_head-Replace-bh_uptodate_lock-for-rt.patch} (74%) rename debian/patches/features/all/rt/{fs-jbd-replace-bh_state-lock.patch => 0094-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch} (73%) rename debian/patches/features/all/rt/{genirq-nodebug-shirq.patch => 0095-genirq-Disable-DEBUG_SHIRQ-for-rt.patch} (63%) rename debian/patches/features/all/rt/{genirq-disable-random-call-on-preempt-rt.patch => 0096-genirq-Disable-random-call-on-preempt-rt.patch} (58%) rename debian/patches/features/all/rt/{genirq-disable-irqpoll-on-rt.patch => 0097-genirq-disable-irqpoll-on-rt.patch} (71%) rename debian/patches/features/all/rt/{genirq-force-threading.patch => 0098-genirq-force-threading.patch.patch} (57%) rename debian/patches/features/all/rt/{drivers-net-fix-livelock-issues.patch => 0099-drivers-net-fix-livelock-issues.patch} (58%) rename debian/patches/features/all/rt/{drivers-net-vortex-fix-locking-issues.patch => 0100-drivers-net-vortex-fix-locking-issues.patch} (72%) rename debian/patches/features/all/rt/{drivers-net-gianfar-make-rt-aware.patch => 0101-drivers-net-gianfar-Make-RT-aware.patch} (73%) rename debian/patches/features/all/rt/{usb-fix-mouse-problem-copying-large-data.patch => 0102-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch} (68%) rename debian/patches/features/all/rt/{local-var.patch => 0103-local-var.patch.patch} (67%) rename debian/patches/features/all/rt/{rt-local-irq-lock.patch => 0104-rt-local-irq-lock.patch.patch} (94%) rename debian/patches/features/all/rt/{cpu-rt-variants.patch => 0105-cpu-rt-variants.patch.patch} (63%) rename debian/patches/features/all/rt/{mm-slab-wrap-functions.patch => 0106-mm-slab-wrap-functions.patch.patch} (84%) rename debian/patches/features/all/rt/{rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch => 0107-slab-Fix-__do_drain-to-use-the-right-array-cache.patch} (85%) rename debian/patches/features/all/rt/{mm-slab-more-lock-breaks.patch => 0108-mm-More-lock-breaks-in-slab.c.patch} (81%) rename debian/patches/features/all/rt/{mm-page_alloc-rt-friendly-per-cpu-pages.patch => 0109-mm-page_alloc-rt-friendly-per-cpu-pages.patch} (86%) rename debian/patches/features/all/rt/{mm-page_alloc-reduce-lock-sections-further.patch => 0110-mm-page_alloc-reduce-lock-sections-further.patch} (85%) rename debian/patches/features/all/rt/{mm-page-alloc-fix.patch => 0111-mm-page-alloc-fix.patch.patch} (60%) rename debian/patches/features/all/rt/{mm-convert-swap-to-percpu-locked.patch => 0112-mm-convert-swap-to-percpu-locked.patch} (89%) rename debian/patches/features/all/rt/{mm-vmstat-fix-the-irq-lock-asymetry.patch => 0113-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch} (72%) rename debian/patches/features/all/rt/{mm-make-vmstat-rt-aware.patch => 0114-mm-make-vmstat-rt-aware.patch} (62%) rename debian/patches/features/all/rt/{mm-shrink-the-page-frame-to-rt-size.patch => 0115-mm-shrink-the-page-frame-to-rt-size.patch} (84%) rename debian/patches/features/all/rt/{re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch => 0116-ARM-Initialize-ptl-lock-for-vector-page.patch} (83%) rename debian/patches/features/all/rt/{mm-allow-slab-rt.patch => 0117-mm-Allow-only-slab-on-RT.patch} (75%) rename debian/patches/features/all/rt/{radix-tree-rt-aware.patch => 0118-radix-tree-rt-aware.patch.patch} (68%) rename debian/patches/features/all/rt/{panic-disable-random-on-rt.patch => 0119-panic-disable-random-on-rt.patch} (52%) rename debian/patches/features/all/rt/{ipc-make-rt-aware.patch => 0120-ipc-Make-the-ipc-code-rt-aware.patch} (71%) rename debian/patches/features/all/rt/{ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch => 0121-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch} (84%) rename debian/patches/features/all/rt/{relay-fix-timer-madness.patch => 0122-relay-fix-timer-madness.patch} (71%) rename debian/patches/features/all/rt/{net-ipv4-route-use-locks-on-up-rt.patch => 0123-net-ipv4-route-use-locks-on-up-rt.patch.patch} (68%) rename debian/patches/features/all/rt/{workqueue-avoid-the-lock-in-cpu-dying.patch => 0124-workqueue-avoid-the-lock-in-cpu-dying.patch.patch} (71%) rename debian/patches/features/all/rt/{timers-prepare-for-full-preemption.patch => 0125-timers-prepare-for-full-preemption.patch} (78%) rename debian/patches/features/all/rt/{timers-preempt-rt-support.patch => 0126-timers-preempt-rt-support.patch} (71%) rename debian/patches/features/all/rt/{timers-fix-timer-hotplug-on-rt.patch => 0127-timers-fix-timer-hotplug-on-rt.patch} (69%) rename debian/patches/features/all/rt/{timers-mov-printk_tick-to-soft-interrupt.patch => 0128-timers-mov-printk_tick-to-soft-interrupt.patch} (65%) rename debian/patches/features/all/rt/{timer-delay-waking-softirqs-from-the-jiffy-tick.patch => 0129-timer-delay-waking-softirqs-from-the-jiffy-tick.patch} (90%) rename debian/patches/features/all/rt/{timers-avoid-the-base-null-otptimization-on-rt.patch => 0130-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch} (79%) rename debian/patches/features/all/rt/{rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch => 0131-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch} (84%) rename debian/patches/features/all/rt/{hrtimers-prepare-full-preemption.patch => 0132-hrtimers-prepare-full-preemption.patch} (80%) rename debian/patches/features/all/rt/{hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch => 0133-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch} (83%) rename debian/patches/features/all/rt/{peter_zijlstra-frob-hrtimer.patch => 0134-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch} (86%) create mode 100644 debian/patches/features/all/rt/0135-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch rename debian/patches/features/all/rt/{hrtimer-fix-reprogram-madness.patch => 0136-hrtimer-fix-reprogram-madness.patch.patch} (64%) rename debian/patches/features/all/rt/{timer-fd-avoid-live-lock.patch => 0137-timer-fd-Prevent-live-lock.patch} (67%) rename debian/patches/features/all/rt/{posix-timers-thread-posix-cpu-timers-on-rt.patch => 0138-posix-timers-thread-posix-cpu-timers-on-rt.patch} (85%) rename debian/patches/features/all/rt/{posix-timers-shorten-cpu-timers-thread.patch => 0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch} (62%) rename debian/patches/features/all/rt/{posix-timers-avoid-wakeups-when-no-timers-are-active.patch => 0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch} (73%) rename debian/patches/features/all/rt/{sched-delay-put-task.patch => 0141-sched-delay-put-task.patch.patch} (75%) rename debian/patches/features/all/rt/{sched-limit-nr-migrate.patch => 0142-sched-limit-nr-migrate.patch.patch} (65%) rename debian/patches/features/all/rt/{sched-mmdrop-delayed.patch => 0143-sched-mmdrop-delayed.patch.patch} (75%) rename debian/patches/features/all/rt/{sched-rt-mutex-wakeup.patch => 0144-sched-rt-mutex-wakeup.patch.patch} (79%) rename debian/patches/features/all/rt/{sched-prevent-idle-boost.patch => 0145-sched-prevent-idle-boost.patch.patch} (76%) rename debian/patches/features/all/rt/{sched-might-sleep-do-not-account-rcu-depth.patch => 0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch} (67%) rename debian/patches/features/all/rt/{sched-load-balance-break-on-rq-contention.patch => 0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch} (65%) rename debian/patches/features/all/rt/{sched-cond-resched.patch => 0148-sched-cond-resched.patch.patch} (69%) rename debian/patches/features/all/rt/{cond-resched-softirq-rt.patch => 0149-cond-resched-softirq-fix.patch.patch} (68%) rename debian/patches/features/all/rt/{sched-no-work-when-pi-blocked.patch => 0150-sched-no-work-when-pi-blocked.patch.patch} (71%) rename debian/patches/features/all/rt/{cond-resched-lock-rt-tweak.patch => 0151-cond-resched-lock-rt-tweak.patch.patch} (64%) rename debian/patches/features/all/rt/{sched-disable-ttwu-queue.patch => 0152-sched-disable-ttwu-queue.patch.patch} (67%) rename debian/patches/features/all/rt/{sched-disable-rt-group-sched-on-rt.patch => 0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch} (74%) rename debian/patches/features/all/rt/{sched-ttwu-ensure-success-return-is-correct.patch => 0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch} (70%) rename debian/patches/features/all/rt/{stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch => 0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch} (76%) rename debian/patches/features/all/rt/{stomp-machine-mark-stomper-thread.patch => 0156-stomp-machine-mark-stomper-thread.patch.patch} (58%) rename debian/patches/features/all/rt/{stomp-machine-raw-lock.patch => 0157-stomp-machine-raw-lock.patch.patch} (80%) rename debian/patches/features/all/rt/{hotplug-light-get-online-cpus.patch => 0158-hotplug-Lightweight-get-online-cpus.patch} (85%) rename debian/patches/features/all/rt/{hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch => 0159-hotplug-sync_unplug-No.patch} (67%) rename debian/patches/features/all/rt/{re-migrate_disable-race-with-cpu-hotplug-3f.patch => 0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch} (72%) rename debian/patches/features/all/rt/{sched-migrate-disable.patch => 0161-sched-migrate-disable.patch.patch} (78%) rename debian/patches/features/all/rt/{hotplug-use-migrate-disable.patch => 0162-hotplug-use-migrate-disable.patch.patch} (66%) rename debian/patches/features/all/rt/{hotplug-call-cpu_unplug_begin-a-little-early.patch => 0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch} (84%) rename debian/patches/features/all/rt/{ftrace-migrate-disable-tracing.patch => 0164-ftrace-migrate-disable-tracing.patch.patch} (63%) rename debian/patches/features/all/rt/{rt-tracing-show-padding-as-unsigned-short.patch => 0165-tracing-Show-padding-as-unsigned-short.patch} (79%) rename debian/patches/features/all/rt/{migrate-disable-rt-variant.patch => 0166-migrate-disable-rt-variant.patch.patch} (74%) rename debian/patches/features/all/rt/{peter_zijlstra-frob-migrate_disable.patch => 0167-sched-Optimize-migrate_disable.patch} (86%) rename debian/patches/features/all/rt/{peter_zijlstra-frob-migrate_disable-2.patch => 0168-sched-Generic-migrate_disable.patch} (77%) rename debian/patches/features/all/rt/{sched-rt-fix-migrate_enable-thinko.patch => 0169-sched-rt-Fix-migrate_enable-thinko.patch} (72%) rename debian/patches/features/all/rt/{sched-teach-migrate_disable-about-atomic-contexts.patch => 0170-sched-teach-migrate_disable-about-atomic-contexts.patch} (77%) rename debian/patches/features/all/rt/{rt-sched-postpone-actual-migration-disalbe-to-schedule.patch => 0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch} (95%) rename debian/patches/features/all/rt/{rt-sched-do-not-compare-cpu-masks-in-scheduler.patch => 0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch} (79%) rename debian/patches/features/all/rt/{rt-sched-have-migrate_disable-ignore-bounded-threads.patch => 0173-sched-Have-migrate_disable-ignore-bounded-threads.patch} (87%) rename debian/patches/features/all/rt/{sched-clear-pf-thread-bound-on-fallback-rq.patch => 0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch} (55%) rename debian/patches/features/all/rt/{ftrace-crap.patch => 0175-ftrace-crap.patch.patch} (64%) rename debian/patches/features/all/rt/{rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch => 0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch} (84%) rename debian/patches/features/all/rt/{net-netif_rx_ni-migrate-disable.patch => 0177-net-netif_rx_ni-migrate-disable.patch.patch} (64%) rename debian/patches/features/all/rt/{softirq-sanitize-softirq-pending.patch => 0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch} (75%) rename debian/patches/features/all/rt/{lockdep-no-softirq-accounting-on-rt.patch => 0179-lockdep-rt.patch.patch} (75%) rename debian/patches/features/all/rt/{mutex-no-spin-on-rt.patch => 0180-mutex-no-spin-on-rt.patch.patch} (62%) rename debian/patches/features/all/rt/{softirq-local-lock.patch => 0181-softirq-local-lock.patch.patch} (85%) rename debian/patches/features/all/rt/{softirq-export-in-serving-softirq.patch => 0182-softirq-Export-in_serving_softirq.patch} (72%) rename debian/patches/features/all/rt/{harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch => 0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch} (76%) rename debian/patches/features/all/rt/{softirq-fix-unplug-deadlock.patch => 0184-softirq-Fix-unplug-deadlock.patch} (81%) rename debian/patches/features/all/rt/{softirq-disable-softirq-stacks-for-rt.patch => 0185-softirq-disable-softirq-stacks-for-rt.patch.patch} (62%) rename debian/patches/features/all/rt/{softirq-make-fifo.patch => 0186-softirq-make-fifo.patch.patch} (82%) rename debian/patches/features/all/rt/{tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch => 0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch} (91%) rename debian/patches/features/all/rt/{irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch => 0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch} (75%) rename debian/patches/features/all/rt/{local-vars-migrate-disable.patch => 0189-local-vars-migrate-disable.patch.patch} (80%) rename debian/patches/features/all/rt/{md-raid5-percpu-handling-rt-aware.patch => 0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch} (69%) rename debian/patches/features/all/rt/{rtmutex-lock-killable.patch => 0191-rtmutex-lock-killable.patch.patch} (79%) rename debian/patches/features/all/rt/{rtmutex-futex-prepare-rt.patch => 0192-rtmutex-futex-prepare-rt.patch.patch} (80%) rename debian/patches/features/all/rt/{futex-requeue-pi-fix.patch => 0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch} (81%) rename debian/patches/features/all/rt/{rt-mutex-add-sleeping-spinlocks-support.patch => 0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch} (88%) rename debian/patches/features/all/rt/{spinlock-types-separate-raw.patch => 0195-spinlock-types-separate-raw.patch.patch} (81%) rename debian/patches/features/all/rt/{rtmutex-avoid-include-hell.patch => 0196-rtmutex-avoid-include-hell.patch.patch} (58%) rename debian/patches/features/all/rt/{rt-add-rt-spinlock-to-headers.patch => 0197-rt-add-rt-spinlocks.patch.patch} (77%) rename debian/patches/features/all/rt/{rt-add-rt-to-mutex-headers.patch => 0198-rt-add-rt-to-mutex-headers.patch.patch} (87%) rename debian/patches/features/all/rt/{rwsem-add-rt-variant.patch => 0199-rwsem-add-rt-variant.patch.patch} (82%) rename debian/patches/features/all/rt/{rt-add-rt-locks.patch => 0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch} (89%) rename debian/patches/features/all/rt/{tasklist-lock-fix-section-conflict.patch => 0201-rwlocks-Fix-section-mismatch.patch} (70%) rename debian/patches/features/all/rt/{timer-handle-idle-trylock-in-get-next-timer-irq.patch => 0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch} (72%) rename debian/patches/features/all/rt/{rcu-force-preempt-rcu-for-rt.patch => 0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch} (73%) rename debian/patches/features/all/rt/{peter_zijlstra-frob-rcu.patch => 0204-rcu-Frob-softirq-test.patch} (92%) rename debian/patches/features/all/rt/{rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch => 0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch} (82%) rename debian/patches/features/all/rt/{rcu-fix-macro-substitution.patch => 0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch} (74%) rename debian/patches/features/all/rt/{rcu-tiny-merge-bh.patch => 0207-rcu-more-fallout.patch.patch} (50%) rename debian/patches/features/all/rt/{patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch => 0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch} (79%) rename debian/patches/features/all/rt/{rt-rcutree-warn-fix.patch => 0209-rt-rcutree-Move-misplaced-prototype.patch} (66%) rename debian/patches/features/all/rt/{lglocks-rt.patch => 0210-lglocks-rt.patch.patch} (92%) rename debian/patches/features/all/rt/{drivers-serial-cleanup-locking-for-rt.patch => 0211-serial-8250-Clean-up-the-locking-for-rt.patch} (69%) rename debian/patches/features/all/rt/{drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch => 0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch} (61%) rename debian/patches/features/all/rt/{drivers-tty-fix-omap-lock-crap.patch => 0213-drivers-tty-fix-omap-lock-crap.patch.patch} (61%) rename debian/patches/features/all/rt/{rt-serial-warn-fix.patch => 0214-rt-Improve-the-serial-console-PASS_LIMIT.patch} (68%) rename debian/patches/features/all/rt/{fs-namespace-preemption-fix.patch => 0215-fs-namespace-preemption-fix.patch} (81%) rename debian/patches/features/all/rt/{mm-protect-activate-switch-mm.patch => 0216-mm-protect-activate-switch-mm.patch.patch} (63%) rename debian/patches/features/all/rt/{fs-block-rt-support.patch => 0217-fs-block-rt-support.patch.patch} (68%) rename debian/patches/features/all/rt/{fs-ntfs-disable-interrupt-non-rt.patch => 0218-fs-ntfs-disable-interrupt-only-on-RT.patch} (86%) rename debian/patches/features/all/rt/{x86-mce-timer-hrtimer.patch => 0219-x86-Convert-mce-timer-to-hrtimer.patch} (87%) rename debian/patches/features/all/rt/{x86-stackprot-no-random-on-rt.patch => 0220-x86-stackprotector-Avoid-random-pool-on-rt.patch} (77%) rename debian/patches/features/all/rt/{x86-use-gen-rwsem-spinlocks-rt.patch => 0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch} (69%) rename debian/patches/features/all/rt/{x86-disable-debug-stack.patch => 0222-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch} (79%) rename debian/patches/features/all/rt/{workqueue-use-get-cpu-light.patch => 0223-workqueue-use-get-cpu-light.patch.patch} (50%) rename debian/patches/features/all/rt/{epoll-use-get-cpu-light.patch => 0224-epoll.patch.patch} (58%) rename debian/patches/features/all/rt/{mm-vmalloc-use-get-cpu-light.patch => 0225-mm-vmalloc.patch.patch} (69%) rename debian/patches/features/all/rt/{workqueue-sanity.patch => 0226-workqueue-Fix-cpuhotplug-trainwreck.patch} (93%) rename debian/patches/features/all/rt/{workqueue-fix-PF_THREAD_BOUND.patch => 0227-workqueue-Fix-PF_THREAD_BOUND-abuse.patch} (80%) rename debian/patches/features/all/rt/{workqueue-hotplug-fix.patch => 0228-workqueue-Use-get_cpu_light-in-flush_gcwq.patch} (88%) rename debian/patches/features/all/rt/{workqueue-more-hotplug-fallout.patch => 0229-hotplug-stuff.patch.patch} (55%) rename debian/patches/features/all/rt/{debugobjects-rt.patch => 0230-debugobjects-rt.patch.patch} (60%) rename debian/patches/features/all/rt/{jump-label-rt.patch => 0231-jump-label-rt.patch.patch} (63%) rename debian/patches/features/all/rt/{skbufhead-raw-lock.patch => 0232-skbufhead-raw-lock.patch.patch} (76%) rename debian/patches/features/all/rt/{perf-move-irq-work-to-softirq-in-rt.patch => 0233-x86-no-perf-irq-work-rt.patch.patch} (63%) rename debian/patches/features/all/rt/{console-make-rt-friendly.patch => 0234-console-make-rt-friendly.patch.patch} (77%) rename debian/patches/features/all/rt/{printk-disable-migration-instead-of-preemption.patch => 0235-printk-Disable-migration-instead-of-preemption.patch} (84%) rename debian/patches/features/all/rt/{power-use-generic-rwsem-on-rt.patch => 0236-power-use-generic-rwsem-on-rt.patch} (53%) rename debian/patches/features/all/rt/{power-disable-highmem-on-rt.patch => 0237-power-disable-highmem-on-rt.patch.patch} (59%) rename debian/patches/features/all/rt/{arm-disable-highmem-on-rt.patch => 0238-arm-disable-highmem-on-rt.patch.patch} (65%) rename debian/patches/features/all/rt/{arm-at91-tclib-default-to-tclib-timer-for-rt.patch => 0239-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch} (75%) rename debian/patches/features/all/rt/{mips-disable-highmem-on-rt.patch => 0240-mips-disable-highmem-on-rt.patch.patch} (65%) rename debian/patches/features/all/rt/{net-tx-action-avoid-livelock-on-rt.patch => 0241-net-Avoid-livelock-in-net_tx_action-on-RT.patch} (89%) rename debian/patches/features/all/rt/{ping-sysrq.patch => 0242-ping-sysrq.patch.patch} (78%) rename debian/patches/features/all/rt/{kgb-serial-hackaround.patch => 0243-kgdb-serial-Short-term-workaround.patch} (75%) rename debian/patches/features/all/rt/{sysfs-realtime-entry.patch => 0244-add-sys-kernel-realtime-entry.patch} (75%) rename debian/patches/features/all/rt/{peter_zijlstra-re-_3_0-rt4.patch => 0245-mm-rt-kmap_atomic-scheduling.patch} (79%) rename debian/patches/features/all/rt/{ipc-sem-rework-semaphore-wakeups.patch => 0246-ipc-sem-Rework-semaphore-wakeups.patch} (74%) rename debian/patches/features/all/rt/{preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch => 0247-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch} (76%) rename debian/patches/features/all/rt/{x86-kvm-require-const-tsc-for-rt.patch => 0248-x86-kvm-require-const-tsc-for-rt.patch.patch} (52%) rename debian/patches/features/all/rt/{scsi-fcoe-rt-aware.patch => 0249-scsi-fcoe-rt-aware.patch.patch} (68%) rename debian/patches/features/all/rt/{x86-crypto-reduce-preempt-disabled-regions.patch => 0250-x86-crypto-Reduce-preempt-disabled-regions.patch} (80%) rename debian/patches/features/all/rt/{dm-make-rt-aware.patch => 0251-dm-Make-rt-aware.patch} (76%) rename debian/patches/features/all/rt/{cpumask-disable-offstack-on-rt.patch => 0252-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch} (72%) rename debian/patches/features/all/rt/{seqlock-prevent-rt-starvation.patch => 0253-seqlock-Prevent-rt-starvation.patch} (81%) rename debian/patches/features/all/rt/{rfc-timer-fix-hotplug-for-rt.patch => 0254-timer-Fix-hotplug-for-rt.patch} (83%) rename debian/patches/features/all/rt/{rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch => 0255-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch} (78%) rename debian/patches/features/all/rt/{rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch => 0256-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch} (70%) rename debian/patches/features/all/rt/{rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch => 0257-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch} (82%) rename debian/patches/features/all/rt/{rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch => 0258-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch} (91%) rename debian/patches/features/all/rt/{cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch => 0259-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch} (91%) rename debian/patches/features/all/rt/{softirq-preempt-fix-3-re.txt => 0260-softirq-Check-preemption-after-reenabling-interrupts.patch} (69%) rename debian/patches/features/all/rt/{rt-introduce-cpu-chill.patch => 0261-rt-Introduce-cpu_chill.patch} (62%) rename debian/patches/features/all/rt/{fs-dcache-use-cpu-chill-in-trylock-loops.patch => 0262-fs-dcache-Use-cpu_chill-in-trylock-loops.patch} (70%) rename debian/patches/features/all/rt/{net-use-cpu-chill.patch => 0263-net-Use-cpu_chill-instead-of-cpu_relax.patch} (65%) rename debian/patches/features/all/rt/{kconfig-disable-a-few-options-rt.patch => 0264-kconfig-disable-a-few-options-rt.patch.patch} (67%) rename debian/patches/features/all/rt/{kconfig-preempt-rt-full.patch => 0265-kconfig-preempt-rt-full.patch.patch} (71%) create mode 100644 debian/patches/features/all/rt/0266-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch create mode 100644 debian/patches/features/all/rt/0267-Linux-3.2.16-rt27-REBASE.patch delete mode 100644 debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch delete mode 100644 debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch delete mode 100644 debian/patches/features/all/rt/localversion.patch diff --git a/debian/changelog b/debian/changelog index 4f9d18ae0..dccd18e28 100644 --- a/debian/changelog +++ b/debian/changelog @@ -35,6 +35,7 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low * 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) diff --git a/debian/patches/features/all/rt/x86_64-patch-for-idle-notifiers.patch b/debian/patches/features/all/rt/0001-x86-Call-idle-notifier-after-irq_enter.patch similarity index 68% rename from debian/patches/features/all/rt/x86_64-patch-for-idle-notifiers.patch rename to debian/patches/features/all/rt/0001-x86-Call-idle-notifier-after-irq_enter.patch index 999311bbe..8954ad54c 100644 --- a/debian/patches/features/all/rt/x86_64-patch-for-idle-notifiers.patch +++ b/debian/patches/features/all/rt/0001-x86-Call-idle-notifier-after-irq_enter.patch @@ -1,13 +1,14 @@ +From 76f41af7cc93591a2723d2c59918df003f90cb09 Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker -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] [] start_kernel+0x3d1/0x3dc [ 0.099991] [] x86_64_start_reservations+0x131/0x135 [ 0.099991] [] x86_64_start_kernel+0xed/0xf4 - + Signed-off-by: Frederic Weisbecker Link: http://lkml.kernel.org/r/20110929194047.GA10247@linux.vnet.ibm.com Cc: Ingo Molnar @@ -38,7 +39,6 @@ Cc: H. Peter Anvin Cc: Andy Henroid Signed-off-by: Paul E. McKenney Signed-off-by: Thomas Gleixner - --- arch/x86/kernel/apic/apic.c | 6 +++--- arch/x86/kernel/apic/io_apic.c | 2 +- @@ -47,11 +47,11 @@ Signed-off-by: Thomas Gleixner 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 + diff --git a/debian/patches/features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch b/debian/patches/features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch similarity index 85% rename from debian/patches/features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch rename to debian/patches/features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch index 9aca3e604..ba3929d8e 100644 --- a/debian/patches/features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch +++ b/debian/patches/features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch @@ -1,6 +1,7 @@ -Subject: slab, lockdep: Annotate all slab caches +From 788ce6c0f8d2db7e6e5bdf6568a80a52a016e000 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -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 + diff --git a/debian/patches/features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch b/debian/patches/features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch similarity index 58% rename from debian/patches/features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch rename to debian/patches/features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch index 56dded5e5..95543ac71 100644 --- a/debian/patches/features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch +++ b/debian/patches/features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch @@ -1,6 +1,7 @@ -Subject: x86: kprobes: Remove remove bogus preempt_enable +From 2c5f1cf75561b0a3137ec2bc5eb77c29d00af512 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch b/debian/patches/features/all/rt/0004-x86-hpet-Disable-MSI-on-Lenovo-W510.patch similarity index 77% rename from debian/patches/features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch rename to debian/patches/features/all/rt/0004-x86-hpet-Disable-MSI-on-Lenovo-W510.patch index a354d27b5..8f83df9d4 100644 --- a/debian/patches/features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch +++ b/debian/patches/features/all/rt/0004-x86-hpet-Disable-MSI-on-Lenovo-W510.patch @@ -1,6 +1,7 @@ -Subject: x86: hpet: Disable MSI on Lenovo W510 +From e13909c551bb27d491ac83994ca27ec691f070b5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 #include @@ -24,7 +25,7 @@ Index: linux-3.2/arch/x86/kernel/hpet.c #include #include #include -@@ -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 + diff --git a/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch b/debian/patches/features/all/rt/0005-block-Shorten-interrupt-disabled-regions.patch similarity index 80% rename from debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch rename to debian/patches/features/all/rt/0005-block-Shorten-interrupt-disabled-regions.patch index 82b187bbb..afa73d768 100644 --- a/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch +++ b/debian/patches/features/all/rt/0005-block-Shorten-interrupt-disabled-regions.patch @@ -1,6 +1,7 @@ -Subject: block: Shorten interrupt disabled regions +From e2c97e4d5da80e66340ea752cb33bf8802feaa53 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch b/debian/patches/features/all/rt/0006-sched-Distangle-worker-accounting-from-rq-3Elock.patch similarity index 86% rename from debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch rename to debian/patches/features/all/rt/0006-sched-Distangle-worker-accounting-from-rq-3Elock.patch index 982e8a7cb..149313ae9 100644 --- a/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch +++ b/debian/patches/features/all/rt/0006-sched-Distangle-worker-accounting-from-rq-3Elock.patch @@ -1,6 +1,7 @@ -Subject: sched: Distangle worker accounting from rq-%3Elock +From f88ad17a5ee292086822942fee103f09abb93bc4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de Signed-off-by: Thomas Gleixner --- - 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 + diff --git a/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch b/debian/patches/features/all/rt/0007-mips-enable-interrupts-in-signal.patch.patch similarity index 50% rename from debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch rename to debian/patches/features/all/rt/0007-mips-enable-interrupts-in-signal.patch.patch index 4512cbb0e..fec2afeac 100644 --- a/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch +++ b/debian/patches/features/all/rt/0007-mips-enable-interrupts-in-signal.patch.patch @@ -1,17 +1,18 @@ -Subject: mips-enable-interrupts-in-signal.patch +From 7a4fa0630cdf29e9fd81872ae02888121ffe3564 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 21:32:10 +0200 +Subject: [PATCH 007/267] mips-enable-interrupts-in-signal.patch Signed-off-by: Thomas Gleixner --- 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 = ¤t->saved_sigmask; else +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/0008-arm-enable-interrupts-in-signal-code.patch.patch b/debian/patches/features/all/rt/0008-arm-enable-interrupts-in-signal-code.patch.patch new file mode 100644 index 000000000..a61e49bba --- /dev/null +++ b/debian/patches/features/all/rt/0008-arm-enable-interrupts-in-signal-code.patch.patch @@ -0,0 +1,27 @@ +From 415c7e81f6b54e5f8e8cddf0f2ff1c1855eeade3 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner +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 +--- + 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 + diff --git a/debian/patches/features/all/rt/powerpc-85xx-mark-cascade-irq-no-thread.patch b/debian/patches/features/all/rt/0009-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch similarity index 52% rename from debian/patches/features/all/rt/powerpc-85xx-mark-cascade-irq-no-thread.patch rename to debian/patches/features/all/rt/0009-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch index c3c896e55..be1a1b15e 100644 --- a/debian/patches/features/all/rt/powerpc-85xx-mark-cascade-irq-no-thread.patch +++ b/debian/patches/features/all/rt/0009-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch @@ -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 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 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 + diff --git a/debian/patches/features/all/rt/powerpc-wsp-opb-mark-demux-handler-nothread.patch b/debian/patches/features/all/rt/0010-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch similarity index 59% rename from debian/patches/features/all/rt/powerpc-wsp-opb-mark-demux-handler-nothread.patch rename to debian/patches/features/all/rt/0010-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch index 56ec310b9..281cc142d 100644 --- a/debian/patches/features/all/rt/powerpc-wsp-opb-mark-demux-handler-nothread.patch +++ b/debian/patches/features/all/rt/0010-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch @@ -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 -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 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 + diff --git a/debian/patches/features/all/rt/powerpc-markipi-interrupts-nothread.patch b/debian/patches/features/all/rt/0011-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch similarity index 62% rename from debian/patches/features/all/rt/powerpc-markipi-interrupts-nothread.patch rename to debian/patches/features/all/rt/0011-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch index 25cb1413e..802c53cb6 100644 --- a/debian/patches/features/all/rt/powerpc-markipi-interrupts-nothread.patch +++ b/debian/patches/features/all/rt/0011-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch @@ -1,6 +1,7 @@ -Subject: powerpc: Mark IPI interrupts IRQF_NO_THREAD +From c5f5de2dcb79c63ab914f69b8d1a59ba211f8b15 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -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 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 + diff --git a/debian/patches/features/all/rt/power-allow-irq-threading.patch b/debian/patches/features/all/rt/0012-powerpc-Allow-irq-threading.patch similarity index 67% rename from debian/patches/features/all/rt/power-allow-irq-threading.patch rename to debian/patches/features/all/rt/0012-powerpc-Allow-irq-threading.patch index a8381a673..bbefa88dc 100644 --- a/debian/patches/features/all/rt/power-allow-irq-threading.patch +++ b/debian/patches/features/all/rt/0012-powerpc-Allow-irq-threading.patch @@ -1,6 +1,7 @@ -Subject: powerpc: Allow irq threading +From 2e574f68fff54d8c7398b3984f183fb80ec8ce3e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/sched-keep-period-timer-alive-when-throttled.patch b/debian/patches/features/all/rt/0013-sched-Keep-period-timer-ticking-when-throttling-acti.patch similarity index 73% rename from debian/patches/features/all/rt/sched-keep-period-timer-alive-when-throttled.patch rename to debian/patches/features/all/rt/0013-sched-Keep-period-timer-ticking-when-throttling-acti.patch index d2e7ba043..b02e64043 100644 --- a/debian/patches/features/all/rt/sched-keep-period-timer-alive-when-throttled.patch +++ b/debian/patches/features/all/rt/0013-sched-Keep-period-timer-ticking-when-throttling-acti.patch @@ -1,6 +1,8 @@ +From 9e1c03d11fdc2426a5d53a1d0e0b63b412924287 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra 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 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 + diff --git a/debian/patches/features/all/rt/sched-prevent-boosting-from-throttling.patch b/debian/patches/features/all/rt/0014-sched-Do-not-throttle-due-to-PI-boosting.patch similarity index 78% rename from debian/patches/features/all/rt/sched-prevent-boosting-from-throttling.patch rename to debian/patches/features/all/rt/0014-sched-Do-not-throttle-due-to-PI-boosting.patch index 4af3e4afd..108503d07 100644 --- a/debian/patches/features/all/rt/sched-prevent-boosting-from-throttling.patch +++ b/debian/patches/features/all/rt/0014-sched-Do-not-throttle-due-to-PI-boosting.patch @@ -1,6 +1,7 @@ +From ce43773df1fea5d063ac8d1aca4ff806bf899b5b Mon Sep 17 00:00:00 2001 From: Peter Zijlstra 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 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 + diff --git a/debian/patches/features/all/rt/time-remove-bogus-comments.patch b/debian/patches/features/all/rt/0015-time-Remove-bogus-comments.patch similarity index 60% rename from debian/patches/features/all/rt/time-remove-bogus-comments.patch rename to debian/patches/features/all/rt/0015-time-Remove-bogus-comments.patch index 1cc28ebf5..d75938a77 100644 --- a/debian/patches/features/all/rt/time-remove-bogus-comments.patch +++ b/debian/patches/features/all/rt/0015-time-Remove-bogus-comments.patch @@ -1,6 +1,7 @@ -Subject: time: Remove bogus comments +From f427d80501aa7fcdf695288aa8eb507dbd5c9369 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch b/debian/patches/features/all/rt/0016-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch similarity index 69% rename from debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch rename to debian/patches/features/all/rt/0016-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch index a1ffe6e12..c328ab0cb 100644 --- a/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch +++ b/debian/patches/features/all/rt/0016-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch @@ -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 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 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 + diff --git a/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch b/debian/patches/features/all/rt/0017-x86-vdso-Use-seqcount-instead-of-seqlock.patch similarity index 75% rename from debian/patches/features/all/rt/x86-vdso-use-seqcount.patch rename to debian/patches/features/all/rt/0017-x86-vdso-Use-seqcount-instead-of-seqlock.patch index 82e5e4071..d8401a70a 100644 --- a/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch +++ b/debian/patches/features/all/rt/0017-x86-vdso-Use-seqcount-instead-of-seqlock.patch @@ -1,6 +1,7 @@ -Subject: x86: vdso: Use seqcount instead of seqlock +From 11f9d4b70b2592b57dda3c33bdcd726ee98c9a71 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 @@ -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 + diff --git a/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch b/debian/patches/features/all/rt/0018-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch similarity index 70% rename from debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch rename to debian/patches/features/all/rt/0018-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch index dfa7e6b6e..b21fdbe5b 100644 --- a/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch +++ b/debian/patches/features/all/rt/0018-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch @@ -1,6 +1,7 @@ -Subject: ia64: vsyscall: Use seqcount instead of seqlock +From 0ad3596103ef2c8ecb6145c8a98ed7e38a9bc6ce Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch b/debian/patches/features/all/rt/0019-seqlock-Remove-unused-functions.patch similarity index 68% rename from debian/patches/features/all/rt/seqlock-remove-unused-functions.patch rename to debian/patches/features/all/rt/0019-seqlock-Remove-unused-functions.patch index 5bbffe1e4..d02843ae5 100644 --- a/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch +++ b/debian/patches/features/all/rt/0019-seqlock-Remove-unused-functions.patch @@ -1,17 +1,18 @@ -Subject: seqlock: Remove unused functions +From 5e0436d075a54bc63fa9e48a160ca9df12ff9b77 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 16 Jul 2011 18:38:22 +0200 +Subject: [PATCH 019/267] seqlock: Remove unused functions Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/seqlock-use-seqcount.patch b/debian/patches/features/all/rt/0020-seqlock-Use-seqcount.patch similarity index 91% rename from debian/patches/features/all/rt/seqlock-use-seqcount.patch rename to debian/patches/features/all/rt/0020-seqlock-Use-seqcount.patch index 35920c5fc..b6f53db21 100644 --- a/debian/patches/features/all/rt/seqlock-use-seqcount.patch +++ b/debian/patches/features/all/rt/0020-seqlock-Use-seqcount.patch @@ -1,18 +1,19 @@ -Subject: seqlock: Use seqcount +From cc961dbd2fbdd830c4ba4162c7116d354dfcb13f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 --- - 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 #include @@ -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 + diff --git a/debian/patches/features/all/rt/vfs-fstruct-move-code-out-of-seqcount-write-sections.patch b/debian/patches/features/all/rt/0021-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch similarity index 89% rename from debian/patches/features/all/rt/vfs-fstruct-move-code-out-of-seqcount-write-sections.patch rename to debian/patches/features/all/rt/0021-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch index e4660a845..c1f7d8794 100644 --- a/debian/patches/features/all/rt/vfs-fstruct-move-code-out-of-seqcount-write-sections.patch +++ b/debian/patches/features/all/rt/0021-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch @@ -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 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 +--- + 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 diff --git a/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch b/debian/patches/features/all/rt/0022-timekeeping-Split-xtime_lock.patch similarity index 81% rename from debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch rename to debian/patches/features/all/rt/0022-timekeeping-Split-xtime_lock.patch index 0884f1bd6..df406fb8e 100644 --- a/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch +++ b/debian/patches/features/all/rt/0022-timekeeping-Split-xtime_lock.patch @@ -1,6 +1,7 @@ -Subject: timekeeping: Split xtime_lock +From 575bc99dec3a6b5121859ec0dc56a400313c500b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -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 --- - 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 + diff --git a/debian/patches/features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch b/debian/patches/features/all/rt/0023-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch similarity index 78% rename from debian/patches/features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch rename to debian/patches/features/all/rt/0023-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch index 83e415e56..1c9579928 100644 --- a/debian/patches/features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch +++ b/debian/patches/features/all/rt/0023-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch @@ -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 -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 Cc: Steven Rostedt Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/mm-memcg-shorten-preempt-disabled-section-around-event-checks.patch b/debian/patches/features/all/rt/0024-mm-memcg-shorten-preempt-disabled-section-around-eve.patch similarity index 85% rename from debian/patches/features/all/rt/mm-memcg-shorten-preempt-disabled-section-around-event-checks.patch rename to debian/patches/features/all/rt/0024-mm-memcg-shorten-preempt-disabled-section-around-eve.patch index f0a3849a4..7f32f2d5b 100644 --- a/debian/patches/features/all/rt/mm-memcg-shorten-preempt-disabled-section-around-event-checks.patch +++ b/debian/patches/features/all/rt/0024-mm-memcg-shorten-preempt-disabled-section-around-eve.patch @@ -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 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 Cc: Peter Zijlstra Signed-off-by: Thomas Gleixner --- - 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 + diff --git a/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch b/debian/patches/features/all/rt/0025-tracing-Account-for-preempt-off-in-preempt_schedule.patch similarity index 81% rename from debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch rename to debian/patches/features/all/rt/0025-tracing-Account-for-preempt-off-in-preempt_schedule.patch index 7df462d0c..94cab3dae 100644 --- a/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch +++ b/debian/patches/features/all/rt/0025-tracing-Account-for-preempt-off-in-preempt_schedule.patch @@ -1,6 +1,8 @@ +From ee9d814d8872fc578eb31771307b2b6a8f5822f8 Mon Sep 17 00:00:00 2001 From: Steven Rostedt 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 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 + diff --git a/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch b/debian/patches/features/all/rt/0026-signal-revert-ptrace-preempt-magic.patch.patch similarity index 61% rename from debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch rename to debian/patches/features/all/rt/0026-signal-revert-ptrace-preempt-magic.patch.patch index 3cb814ec8..4fe436c01 100644 --- a/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch +++ b/debian/patches/features/all/rt/0026-signal-revert-ptrace-preempt-magic.patch.patch @@ -1,17 +1,18 @@ -Subject: signal-revert-ptrace-preempt-magic.patch +From f5252418489d88d27411fb576294a1e55dbb03b4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 21 Sep 2011 19:57:12 +0200 +Subject: [PATCH 026/267] signal-revert-ptrace-preempt-magic.patch Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch b/debian/patches/features/all/rt/0027-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch similarity index 60% rename from debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch rename to debian/patches/features/all/rt/0027-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch index bb7302043..325c25752 100644 --- a/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch +++ b/debian/patches/features/all/rt/0027-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch @@ -1,6 +1,7 @@ -Subject: arm: Mark pmu interupt IRQF_NO_THREAD +From 8aa76e7290f80f472b9aebdaf8ae7d627d579359 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/arm-allow-irq-threading.patch b/debian/patches/features/all/rt/0028-arm-Allow-forced-irq-threading.patch similarity index 68% rename from debian/patches/features/all/rt/arm-allow-irq-threading.patch rename to debian/patches/features/all/rt/0028-arm-Allow-forced-irq-threading.patch index 34d264c38..79fe56733 100644 --- a/debian/patches/features/all/rt/arm-allow-irq-threading.patch +++ b/debian/patches/features/all/rt/0028-arm-Allow-forced-irq-threading.patch @@ -1,6 +1,7 @@ -Subject: arm: Allow forced irq threading +From d24eb79d3953d59e4a232bb66d6182d00007c02d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch b/debian/patches/features/all/rt/0029-preempt-rt-Convert-arm-boot_lock-to-raw.patch similarity index 69% rename from debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch rename to debian/patches/features/all/rt/0029-preempt-rt-Convert-arm-boot_lock-to-raw.patch index 78be70a3a..92b11dd7f 100644 --- a/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch +++ b/debian/patches/features/all/rt/0029-preempt-rt-Convert-arm-boot_lock-to-raw.patch @@ -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 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 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 + diff --git a/debian/patches/features/all/rt/sched-create-schedule-preempt-disabled.patch b/debian/patches/features/all/rt/0030-sched-Create-schedule_preempt_disabled.patch similarity index 69% rename from debian/patches/features/all/rt/sched-create-schedule-preempt-disabled.patch rename to debian/patches/features/all/rt/0030-sched-Create-schedule_preempt_disabled.patch index 33ac30751..9e299d7f0 100644 --- a/debian/patches/features/all/rt/sched-create-schedule-preempt-disabled.patch +++ b/debian/patches/features/all/rt/0030-sched-Create-schedule_preempt_disabled.patch @@ -1,6 +1,7 @@ -Subject: sched: Create schedule_preempt_disabled() +From 64b759067a99f8482feb0c2f75f6ce0fde842166 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/sched-use-schedule-preempt-disabled.patch b/debian/patches/features/all/rt/0031-sched-Use-schedule_preempt_disabled.patch similarity index 58% rename from debian/patches/features/all/rt/sched-use-schedule-preempt-disabled.patch rename to debian/patches/features/all/rt/0031-sched-Use-schedule_preempt_disabled.patch index 9f97140de..ca9a8546c 100644 --- a/debian/patches/features/all/rt/sched-use-schedule-preempt-disabled.patch +++ b/debian/patches/features/all/rt/0031-sched-Use-schedule_preempt_disabled.patch @@ -1,6 +1,7 @@ -Subject: sched: Use schedule_preempt_disabled() +From 662df03fb70d4e277547eaa2adfd7e0d520bb35f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/signals-do-not-wake-self.patch b/debian/patches/features/all/rt/0032-signals-Do-not-wakeup-self.patch similarity index 61% rename from debian/patches/features/all/rt/signals-do-not-wake-self.patch rename to debian/patches/features/all/rt/0032-signals-Do-not-wakeup-self.patch index 0a8801dc0..7064e62f4 100644 --- a/debian/patches/features/all/rt/signals-do-not-wake-self.patch +++ b/debian/patches/features/all/rt/0032-signals-Do-not-wakeup-self.patch @@ -1,21 +1,21 @@ +From 244867f1bbbcc44274b4bf053f82e6de83b5e32d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- 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 + diff --git a/debian/patches/features/all/rt/posix-timers-no-broadcast.patch b/debian/patches/features/all/rt/0033-posix-timers-Prevent-broadcast-signals.patch similarity index 65% rename from debian/patches/features/all/rt/posix-timers-no-broadcast.patch rename to debian/patches/features/all/rt/0033-posix-timers-Prevent-broadcast-signals.patch index 54fedba9a..bb241c71f 100644 --- a/debian/patches/features/all/rt/posix-timers-no-broadcast.patch +++ b/debian/patches/features/all/rt/0033-posix-timers-Prevent-broadcast-signals.patch @@ -1,21 +1,21 @@ +From 224b94ef7444a37fa715a10779f3a758722c7598 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- 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 + diff --git a/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/debian/patches/features/all/rt/0034-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch similarity index 71% rename from debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch rename to debian/patches/features/all/rt/0034-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch index 510b16b5c..e05a5ae97 100644 --- a/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch +++ b/debian/patches/features/all/rt/0034-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch @@ -1,24 +1,24 @@ +From 4f199fd1218f10cf419d1c9f9a7ed6c57969320c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- - 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 + diff --git a/debian/patches/features/all/rt/oleg-signal-rt-fix.patch b/debian/patches/features/all/rt/0035-signal-x86-Delay-calling-signals-in-atomic.patch similarity index 80% rename from debian/patches/features/all/rt/oleg-signal-rt-fix.patch rename to debian/patches/features/all/rt/0035-signal-x86-Delay-calling-signals-in-atomic.patch index 6f9ce1298..594a7a475 100644 --- a/debian/patches/features/all/rt/oleg-signal-rt-fix.patch +++ b/debian/patches/features/all/rt/0035-signal-x86-Delay-calling-signals-in-atomic.patch @@ -1,5 +1,7 @@ -Subject: signal/x86: Delay calling signals in atomic +From 1c54a96e16e5e6f3e9978d231c9db374a68f968e Mon Sep 17 00:00:00 2001 From: Oleg Nesterov +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 Signed-off-by: Steven Rostedt Signed-off-by: Thomas Gleixner --- - 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 + diff --git a/debian/patches/features/all/rt/generic-cmpxchg-use-raw-local-irq.patch b/debian/patches/features/all/rt/0036-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch similarity index 57% rename from debian/patches/features/all/rt/generic-cmpxchg-use-raw-local-irq.patch rename to debian/patches/features/all/rt/0036-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch index c10270be7..f700f863d 100644 --- a/debian/patches/features/all/rt/generic-cmpxchg-use-raw-local-irq.patch +++ b/debian/patches/features/all/rt/0036-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch @@ -1,21 +1,22 @@ +From f105d10b4701b0b44c781bc0c37379f3468521a3 Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch b/debian/patches/features/all/rt/0037-drivers-random-Reduce-preempt-disabled-region.patch similarity index 64% rename from debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch rename to debian/patches/features/all/rt/0037-drivers-random-Reduce-preempt-disabled-region.patch index eb44a893f..220a9e8ec 100644 --- a/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch +++ b/debian/patches/features/all/rt/0037-drivers-random-Reduce-preempt-disabled-region.patch @@ -1,21 +1,21 @@ +From a908abba18460e32b36e6b183e77b6c7c1cceb94 Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch b/debian/patches/features/all/rt/0038-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch similarity index 64% rename from debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch rename to debian/patches/features/all/rt/0038-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch index b10ec0464..3faf4580c 100644 --- a/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch +++ b/debian/patches/features/all/rt/0038-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch @@ -1,6 +1,8 @@ +From 31e34bf84003d53073f3fa91d53cd6ac31bfbe58 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch b/debian/patches/features/all/rt/0039-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch similarity index 81% rename from debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch rename to debian/patches/features/all/rt/0039-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch index 5c85cc933..70a58a792 100644 --- a/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch +++ b/debian/patches/features/all/rt/0039-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch @@ -1,22 +1,23 @@ +From b4217e96b0c71c84b8edbca7b99813b5f0f72033 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger 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 Signed-off-by: Thomas Gleixner - --- - 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 + diff --git a/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch b/debian/patches/features/all/rt/0040-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch similarity index 50% rename from debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch rename to debian/patches/features/all/rt/0040-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch index 93c5796e0..550da0877 100644 --- a/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch +++ b/debian/patches/features/all/rt/0040-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch @@ -1,21 +1,22 @@ +From 32a59ec7007ad587e8523ea3628b364c434d4c54 Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch b/debian/patches/features/all/rt/0041-drivers-net-Use-disable_irq_nosync-in-8139too.patch similarity index 55% rename from debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch rename to debian/patches/features/all/rt/0041-drivers-net-Use-disable_irq_nosync-in-8139too.patch index 62f1a849e..e67863a8f 100644 --- a/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch +++ b/debian/patches/features/all/rt/0041-drivers-net-Use-disable_irq_nosync-in-8139too.patch @@ -1,22 +1,22 @@ +From 4d7e0a71990ab73749dfde4f4cd201cf1bdb0f45 Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch b/debian/patches/features/all/rt/0042-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch similarity index 80% rename from debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch rename to debian/patches/features/all/rt/0042-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch index 3b17b48ea..f54ae5161 100644 --- a/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch +++ b/debian/patches/features/all/rt/0042-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch @@ -1,6 +1,8 @@ +From 1c36d3306722a2042bd4dc26baf20393c42c5b22 Mon Sep 17 00:00:00 2001 From: Darren Hart 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 Cc: Doug Maxey LKML-Reference: <4BF30793.5070300@us.ibm.com> Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch b/debian/patches/features/all/rt/0043-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch similarity index 69% rename from debian/patches/features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch rename to debian/patches/features/all/rt/0043-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch index 66409f9e3..d1e7934e9 100644 --- a/debian/patches/features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch +++ b/debian/patches/features/all/rt/0043-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch @@ -1,6 +1,8 @@ +From 2989477b9c1c1f9aa82a8db158ab3a03a4b7b2f5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- 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 + diff --git a/debian/patches/features/all/rt/preempt-mark-legitimated-no-resched-sites.patch b/debian/patches/features/all/rt/0044-preempt-mark-legitimated-no-resched-sites.patch.patch similarity index 70% rename from debian/patches/features/all/rt/preempt-mark-legitimated-no-resched-sites.patch rename to debian/patches/features/all/rt/0044-preempt-mark-legitimated-no-resched-sites.patch.patch index 47aeea646..e1e0c3a0d 100644 --- a/debian/patches/features/all/rt/preempt-mark-legitimated-no-resched-sites.patch +++ b/debian/patches/features/all/rt/0044-preempt-mark-legitimated-no-resched-sites.patch.patch @@ -1,6 +1,7 @@ -Subject: preempt-mark-legitimated-no-resched-sites.patch +From a5f63f3c98dcea7b51fda0df14ecc187fb329eee Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 --- @@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner 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 + diff --git a/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch b/debian/patches/features/all/rt/0045-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch similarity index 75% rename from debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch rename to debian/patches/features/all/rt/0045-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch index b84cb66f7..1453ae53a 100644 --- a/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch +++ b/debian/patches/features/all/rt/0045-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch @@ -1,13 +1,14 @@ +From 53e45a133e1f67b90e680878517ce10dc5c0d04b Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- include/linux/sched.h | 1 + include/linux/uaccess.h | 33 +++------------------------------ @@ -15,10 +16,10 @@ Signed-off-by: Thomas Gleixner 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 + diff --git a/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch b/debian/patches/features/all/rt/0046-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch similarity index 55% rename from debian/patches/features/all/rt/arch-use-pagefault-disabled.patch rename to debian/patches/features/all/rt/0046-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch index 86def8241..a951e8db5 100644 --- a/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch +++ b/debian/patches/features/all/rt/0046-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch @@ -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 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 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 + diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch b/debian/patches/features/all/rt/0047-mm-pagefault_disabled.patch similarity index 59% rename from debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch rename to debian/patches/features/all/rt/0047-mm-pagefault_disabled.patch index dd0b3916d..42b378cdb 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch +++ b/debian/patches/features/all/rt/0047-mm-pagefault_disabled.patch @@ -1,6 +1,7 @@ -Subject: mm: pagefault_disabled() +From 2ee27c95145e16e1c9cff6bc19ae777e55269863 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -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 #include @@ -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 + diff --git a/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch b/debian/patches/features/all/rt/0048-mm-raw_pagefault_disable.patch similarity index 89% rename from debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch rename to debian/patches/features/all/rt/0048-mm-raw_pagefault_disable.patch index ad6a22d9a..36f9b461b 100644 --- a/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch +++ b/debian/patches/features/all/rt/0048-mm-raw_pagefault_disable.patch @@ -1,6 +1,7 @@ -Subject: mm: raw_pagefault_disable +From 48b2128f0cb2e9503cce884a100c636729eb6b23 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -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(). [] smp_apic_timer_interrupt+0x85/0x98 [] apic_timer_interrupt+0x13/0x20 - Signed-off-by: Peter Zijlstra 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 + diff --git a/debian/patches/features/all/rt/filemap-fix-up.patch b/debian/patches/features/all/rt/0049-filemap-fix-up.patch.patch similarity index 61% rename from debian/patches/features/all/rt/filemap-fix-up.patch rename to debian/patches/features/all/rt/0049-filemap-fix-up.patch.patch index 2b81e243f..8e903cde3 100644 --- a/debian/patches/features/all/rt/filemap-fix-up.patch +++ b/debian/patches/features/all/rt/0049-filemap-fix-up.patch.patch @@ -1,6 +1,7 @@ -Subject: filemap-fix-up.patch +From 90e4703e2535c334bf845c719179075440e4fdca Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 17 Jun 2011 18:56:24 +0200 +Subject: [PATCH 049/267] filemap-fix-up.patch Signed-off-by: Thomas Gleixner Wrecked-off-by: Peter Zijlstra @@ -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 + diff --git a/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch b/debian/patches/features/all/rt/0050-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch similarity index 65% rename from debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch rename to debian/patches/features/all/rt/0050-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch index c1a597510..3da34653e 100644 --- a/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch +++ b/debian/patches/features/all/rt/0050-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch @@ -1,6 +1,8 @@ +From d7f4a8b96d5578399fab50795bb26568d3a4a1dc Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/x86-highmem-warn.patch b/debian/patches/features/all/rt/0051-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch similarity index 63% rename from debian/patches/features/all/rt/x86-highmem-warn.patch rename to debian/patches/features/all/rt/0051-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch index 86d972095..69db08b41 100644 --- a/debian/patches/features/all/rt/x86-highmem-warn.patch +++ b/debian/patches/features/all/rt/0051-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch @@ -1,22 +1,22 @@ +From 7aa88c0924519e9f412b40d1b5fe72bd7d9afff0 Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch b/debian/patches/features/all/rt/0052-suspend-Prevent-might-sleep-splats.patch similarity index 66% rename from debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch rename to debian/patches/features/all/rt/0052-suspend-Prevent-might-sleep-splats.patch index 46d96a272..7a8de3bdd 100644 --- a/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch +++ b/debian/patches/features/all/rt/0052-suspend-Prevent-might-sleep-splats.patch @@ -1,6 +1,7 @@ +From f79388c83db88b6ef89497405df9c630964b512e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- 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 + diff --git a/debian/patches/features/all/rt/of-fixup-recursive-locking.patch b/debian/patches/features/all/rt/0053-OF-Fixup-resursive-locking-code-paths.patch similarity index 86% rename from debian/patches/features/all/rt/of-fixup-recursive-locking.patch rename to debian/patches/features/all/rt/0053-OF-Fixup-resursive-locking-code-paths.patch index f350956c6..de4a7415e 100644 --- a/debian/patches/features/all/rt/of-fixup-recursive-locking.patch +++ b/debian/patches/features/all/rt/0053-OF-Fixup-resursive-locking-code-paths.patch @@ -1,6 +1,7 @@ +From 417e0d7c3de36b87075e446b0920e480fb96a871 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- - 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 + diff --git a/debian/patches/features/all/rt/of-convert-devtree-lock.patch b/debian/patches/features/all/rt/0054-of-convert-devtree-lock.patch.patch similarity index 77% rename from debian/patches/features/all/rt/of-convert-devtree-lock.patch rename to debian/patches/features/all/rt/0054-of-convert-devtree-lock.patch.patch index 7172474fb..ca2214ad1 100644 --- a/debian/patches/features/all/rt/of-convert-devtree-lock.patch +++ b/debian/patches/features/all/rt/0054-of-convert-devtree-lock.patch.patch @@ -1,19 +1,20 @@ -Subject: of-convert-devtree-lock.patch +From 580a4dd59597f8d389ab340f87ebb0ad654db7e3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 21 Mar 2011 14:35:34 +0100 +Subject: [PATCH 054/267] of-convert-devtree-lock.patch Signed-off-by: Thomas Gleixner --- - 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 + diff --git a/debian/patches/features/all/rt/list-add-list-last-entry.patch b/debian/patches/features/all/rt/0055-list-add-list-last-entry.patch.patch similarity index 67% rename from debian/patches/features/all/rt/list-add-list-last-entry.patch rename to debian/patches/features/all/rt/0055-list-add-list-last-entry.patch.patch index 48cdd88d3..94eaaa88c 100644 --- a/debian/patches/features/all/rt/list-add-list-last-entry.patch +++ b/debian/patches/features/all/rt/0055-list-add-list-last-entry.patch.patch @@ -1,17 +1,18 @@ -Subject: list-add-list-last-entry.patch +From cbf1e12f91e468d580db7a5ecefa0bdab8021cdf Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Tue, 21 Jun 2011 11:22:36 +0200 +Subject: [PATCH 055/267] list-add-list-last-entry.patch Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch b/debian/patches/features/all/rt/0056-mm-page-alloc-use-list-last-entry.patch.patch similarity index 58% rename from debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch rename to debian/patches/features/all/rt/0056-mm-page-alloc-use-list-last-entry.patch.patch index be05aa516..b7d5ea9e0 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch +++ b/debian/patches/features/all/rt/0056-mm-page-alloc-use-list-last-entry.patch.patch @@ -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 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 --- 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 + diff --git a/debian/patches/features/all/rt/mm-slab-move-debug-out.patch b/debian/patches/features/all/rt/0057-mm-slab-move-debug-out.patch.patch similarity index 79% rename from debian/patches/features/all/rt/mm-slab-move-debug-out.patch rename to debian/patches/features/all/rt/0057-mm-slab-move-debug-out.patch.patch index 460e6847b..c00b4cec1 100644 --- a/debian/patches/features/all/rt/mm-slab-move-debug-out.patch +++ b/debian/patches/features/all/rt/0057-mm-slab-move-debug-out.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-slab-move-debug-out.patch +From a04f0b4dea8eaefdb1f1c10122a74aee2875b1f0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 20 Jun 2011 10:42:04 +0200 +Subject: [PATCH 057/267] mm-slab-move-debug-out.patch Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/pid-h-include-atomic-h.patch b/debian/patches/features/all/rt/0058-rwsem-inlcude-fix.patch.patch similarity index 54% rename from debian/patches/features/all/rt/pid-h-include-atomic-h.patch rename to debian/patches/features/all/rt/0058-rwsem-inlcude-fix.patch.patch index 05c1f2fea..f68f98ffa 100644 --- a/debian/patches/features/all/rt/pid-h-include-atomic-h.patch +++ b/debian/patches/features/all/rt/0058-rwsem-inlcude-fix.patch.patch @@ -1,16 +1,17 @@ -Subject: rwsem-inlcude-fix.patch +From dde840601c92b17bf87a3357ac64ad703ef3e7e2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 15 Jul 2011 21:24:27 +0200 +Subject: [PATCH 058/267] rwsem-inlcude-fix.patch Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/sysctl-include-atomic-h.patch b/debian/patches/features/all/rt/0059-sysctl-include-fix.patch.patch similarity index 57% rename from debian/patches/features/all/rt/sysctl-include-atomic-h.patch rename to debian/patches/features/all/rt/0059-sysctl-include-fix.patch.patch index 498d6d213..620b56a42 100644 --- a/debian/patches/features/all/rt/sysctl-include-atomic-h.patch +++ b/debian/patches/features/all/rt/0059-sysctl-include-fix.patch.patch @@ -1,16 +1,17 @@ -Subject: sysctl-include-fix.patch +From b44a025ed02cf7deb699ff642758cea3b6198cb7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 14 Nov 2011 10:52:34 +0100 +Subject: [PATCH 059/267] sysctl-include-fix.patch Signed-off-by: Thomas Gleixner --- 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 #include @@ -19,3 +20,6 @@ Index: linux-3.2/include/linux/sysctl.h /* For the /proc/sys support */ struct ctl_table; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch b/debian/patches/features/all/rt/0060-net-flip-lock-dep-thingy.patch.patch similarity index 93% rename from debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch rename to debian/patches/features/all/rt/0060-net-flip-lock-dep-thingy.patch.patch index 2e0d4efb4..02ce22c73 100644 --- a/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch +++ b/debian/patches/features/all/rt/0060-net-flip-lock-dep-thingy.patch.patch @@ -1,6 +1,7 @@ -Subject: net-flip-lock-dep-thingy.patch +From 7f2038cd9f9a170fb63f0ab16d1ff7a8b9ee92cf Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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: [] sys_close+0xf8/0x13d [] system_call_fastpath+0x16/0x1b - Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/softirq-thread-do-softirq.patch b/debian/patches/features/all/rt/0061-softirq-thread-do-softirq.patch.patch similarity index 66% rename from debian/patches/features/all/rt/softirq-thread-do-softirq.patch rename to debian/patches/features/all/rt/0061-softirq-thread-do-softirq.patch.patch index a82b4954c..bf812fec4 100644 --- a/debian/patches/features/all/rt/softirq-thread-do-softirq.patch +++ b/debian/patches/features/all/rt/0061-softirq-thread-do-softirq.patch.patch @@ -1,6 +1,7 @@ -Subject: softirq-thread-do-softirq.patch +From 96af58acea4b1f2d36ff57313a95c5cd6e8c0e9c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:44:15 +0200 +Subject: [PATCH 061/267] softirq-thread-do-softirq.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner 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 + diff --git a/debian/patches/features/all/rt/softirq-split-out-code.patch b/debian/patches/features/all/rt/0062-softirq-split-out-code.patch.patch similarity index 91% rename from debian/patches/features/all/rt/softirq-split-out-code.patch rename to debian/patches/features/all/rt/0062-softirq-split-out-code.patch.patch index 2266f6d80..e515d7b9f 100644 --- a/debian/patches/features/all/rt/softirq-split-out-code.patch +++ b/debian/patches/features/all/rt/0062-softirq-split-out-code.patch.patch @@ -1,16 +1,17 @@ -Subject: softirq-split-out-code.patch +From afd97d0727b378d48a20073ae838cb800ec0c7df Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:46:49 +0200 +Subject: [PATCH 062/267] softirq-split-out-code.patch Signed-off-by: Thomas Gleixner --- - 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 + diff --git a/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch b/debian/patches/features/all/rt/0063-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch similarity index 62% rename from debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch rename to debian/patches/features/all/rt/0063-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch index 429ebcba5..70e2b52ff 100644 --- a/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch +++ b/debian/patches/features/all/rt/0063-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch @@ -1,22 +1,23 @@ +From f6adc04c439c56acd6163820b2ac6251a138755f Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/x86-32-fix-signal-crap.patch b/debian/patches/features/all/rt/0064-x86-32-fix-signal-crap.patch.patch similarity index 61% rename from debian/patches/features/all/rt/x86-32-fix-signal-crap.patch rename to debian/patches/features/all/rt/0064-x86-32-fix-signal-crap.patch.patch index dd8a009f9..c0eccf01a 100644 --- a/debian/patches/features/all/rt/x86-32-fix-signal-crap.patch +++ b/debian/patches/features/all/rt/0064-x86-32-fix-signal-crap.patch.patch @@ -1,17 +1,18 @@ -Subject: x86-32-fix-signal-crap.patch +From 52c45c824d10baf0dd84cc56dc2fc35536d4fa49 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 15:59:38 +0200 +Subject: [PATCH 064/267] x86-32-fix-signal-crap.patch Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch b/debian/patches/features/all/rt/0065-x86-Do-not-disable-preemption-in-int3-on-32bit.patch similarity index 77% rename from debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch rename to debian/patches/features/all/rt/0065-x86-Do-not-disable-preemption-in-int3-on-32bit.patch index ac3311630..c1e0d296c 100644 --- a/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch +++ b/debian/patches/features/all/rt/0065-x86-Do-not-disable-preemption-in-int3-on-32bit.patch @@ -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 +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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/rcu-reduce-lock-section.patch b/debian/patches/features/all/rt/0066-rcu-Reduce-lock-section.patch similarity index 67% rename from debian/patches/features/all/rt/rcu-reduce-lock-section.patch rename to debian/patches/features/all/rt/0066-rcu-Reduce-lock-section.patch index f89797eb9..987ba1f22 100644 --- a/debian/patches/features/all/rt/rcu-reduce-lock-section.patch +++ b/debian/patches/features/all/rt/0066-rcu-Reduce-lock-section.patch @@ -1,6 +1,7 @@ -Subject: rcu: Reduce lock section +From e48b25d1e88f0066fc74583020ad764cd0d002f5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 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 + diff --git a/debian/patches/features/all/rt/locking-various-init-fixes.patch b/debian/patches/features/all/rt/0067-locking-various-init-fixes.patch.patch similarity index 65% rename from debian/patches/features/all/rt/locking-various-init-fixes.patch rename to debian/patches/features/all/rt/0067-locking-various-init-fixes.patch.patch index 7128da0f9..bc525b7ff 100644 --- a/debian/patches/features/all/rt/locking-various-init-fixes.patch +++ b/debian/patches/features/all/rt/0067-locking-various-init-fixes.patch.patch @@ -1,6 +1,7 @@ -Subject: locking-various-init-fixes.patch +From dc11bfa3d93805ee1ad47b3b449f2ca456b2abd0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:25:03 +0200 +Subject: [PATCH 067/267] locking-various-init-fixes.patch Signed-off-by: Thomas Gleixner --- @@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner 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 + diff --git a/debian/patches/features/all/rt/wait-provide-__wake_up_all_locked.patch b/debian/patches/features/all/rt/0068-wait-Provide-__wake_up_all_locked.patch similarity index 75% rename from debian/patches/features/all/rt/wait-provide-__wake_up_all_locked.patch rename to debian/patches/features/all/rt/0068-wait-Provide-__wake_up_all_locked.patch index c3c2c67fe..7b56a3b0e 100644 --- a/debian/patches/features/all/rt/wait-provide-__wake_up_all_locked.patch +++ b/debian/patches/features/all/rt/0068-wait-Provide-__wake_up_all_locked.patch @@ -1,6 +1,7 @@ -Subject: wait: Provide __wake_up_all_locked +From 90713b9e3f210d7ebb96dade4cc71b7397ce99d4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -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 + diff --git a/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch b/debian/patches/features/all/rt/0069-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch similarity index 59% rename from debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch rename to debian/patches/features/all/rt/0069-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch index ccf700534..0b964a8b0 100644 --- a/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch +++ b/debian/patches/features/all/rt/0069-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch @@ -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 -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 + diff --git a/debian/patches/features/all/rt/latency-hist.patch b/debian/patches/features/all/rt/0070-latency-hist.patch.patch similarity index 95% rename from debian/patches/features/all/rt/latency-hist.patch rename to debian/patches/features/all/rt/0070-latency-hist.patch.patch index 39abeadc5..ae37e5990 100644 --- a/debian/patches/features/all/rt/latency-hist.patch +++ b/debian/patches/features/all/rt/0070-latency-hist.patch.patch @@ -1,6 +1,7 @@ -Subject: latency-hist.patch +From e14a7c82d8bd43fbda64e57a9cae2a4fff5cb7fb Mon Sep 17 00:00:00 2001 From: Carsten Emde 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 Signed-off-by: Thomas Gleixner - --- - 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 -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 @@ -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 @@ -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 + diff --git a/debian/patches/features/all/rt/hwlatdetect.patch b/debian/patches/features/all/rt/0071-hwlatdetect.patch.patch similarity index 97% rename from debian/patches/features/all/rt/hwlatdetect.patch rename to debian/patches/features/all/rt/0071-hwlatdetect.patch.patch index 8feeb5e0d..f386bfdfe 100644 --- a/debian/patches/features/all/rt/hwlatdetect.patch +++ b/debian/patches/features/all/rt/0071-hwlatdetect.patch.patch @@ -1,25 +1,28 @@ -Subject: hwlatdetect.patch +From 64c6278c3b79d72e2992c767dca658f4c7f65739 Mon Sep 17 00:00:00 2001 From: Carsten Emde 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 - --- 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 M: Guenter Roeck -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 + diff --git a/debian/patches/features/all/rt/0072-localversion.patch.patch b/debian/patches/features/all/rt/0072-localversion.patch.patch new file mode 100644 index 000000000..f581c13d1 --- /dev/null +++ b/debian/patches/features/all/rt/0072-localversion.patch.patch @@ -0,0 +1,23 @@ +From dc3a0b29103cadebe8c40fd3ad80b18b7d1af27b Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner +Date: Fri, 8 Jul 2011 20:25:16 +0200 +Subject: [PATCH 072/267] localversion.patch + +Signed-off-by: Thomas Gleixner +Signed-off-by: Peter Zijlstra +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 + diff --git a/debian/patches/features/all/rt/early-printk-consolidate.patch b/debian/patches/features/all/rt/0073-early-printk-consolidate.patch.patch similarity index 72% rename from debian/patches/features/all/rt/early-printk-consolidate.patch rename to debian/patches/features/all/rt/0073-early-printk-consolidate.patch.patch index 903ce818c..554ef510e 100644 --- a/debian/patches/features/all/rt/early-printk-consolidate.patch +++ b/debian/patches/features/all/rt/0073-early-printk-consolidate.patch.patch @@ -1,6 +1,7 @@ -Subject: early-printk-consolidate.patch +From d6a466f7aef3ff53e864d1d0a8f5e93d61768714 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 23 Jul 2011 11:04:08 +0200 +Subject: [PATCH 073/267] early-printk-consolidate.patch Signed-off-by: Thomas Gleixner --- @@ -21,11 +22,11 @@ Signed-off-by: Thomas Gleixner 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 #include @@ -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 @@ -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 + diff --git a/debian/patches/features/all/rt/printk-kill.patch b/debian/patches/features/all/rt/0074-printk-kill.patch.patch similarity index 74% rename from debian/patches/features/all/rt/printk-kill.patch rename to debian/patches/features/all/rt/0074-printk-kill.patch.patch index d0a03a99f..2b5ac2d83 100644 --- a/debian/patches/features/all/rt/printk-kill.patch +++ b/debian/patches/features/all/rt/0074-printk-kill.patch.patch @@ -1,6 +1,7 @@ -Subject: printk-kill.patch +From 91869f3a1488dba10d311b5892e4555e94f67353 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 22 Jul 2011 17:58:40 +0200 +Subject: [PATCH 074/267] printk-kill.patch Signed-off-by: Thomas Gleixner --- @@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner 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 + diff --git a/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch b/debian/patches/features/all/rt/0075-printk-force_early_printk-boot-param-to-help-with-de.patch similarity index 58% rename from debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch rename to debian/patches/features/all/rt/0075-printk-force_early_printk-boot-param-to-help-with-de.patch index b5e294073..35f70cee5 100644 --- a/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch +++ b/debian/patches/features/all/rt/0075-printk-force_early_printk-boot-param-to-help-with-de.patch @@ -1,10 +1,8 @@ -Subject: printk: %27force_early_printk%27 boot param to help with debugging -From: Peter Zijlstra -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 -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 + diff --git a/debian/patches/features/all/rt/rt-preempt-base-config.patch b/debian/patches/features/all/rt/0076-rt-preempt-base-config.patch.patch similarity index 80% rename from debian/patches/features/all/rt/rt-preempt-base-config.patch rename to debian/patches/features/all/rt/0076-rt-preempt-base-config.patch.patch index 69d0b783b..e71b70d8d 100644 --- a/debian/patches/features/all/rt/rt-preempt-base-config.patch +++ b/debian/patches/features/all/rt/0076-rt-preempt-base-config.patch.patch @@ -1,16 +1,17 @@ -Subject: rt-preempt-base-config.patch +From fa80496475ea56404325811b11eb95bdb1519b13 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 17 Jun 2011 12:39:57 +0200 +Subject: [PATCH 076/267] rt-preempt-base-config.patch Signed-off-by: Thomas Gleixner --- 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 + diff --git a/debian/patches/features/all/rt/bug-rt-dependend-variants.patch b/debian/patches/features/all/rt/0077-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch similarity index 72% rename from debian/patches/features/all/rt/bug-rt-dependend-variants.patch rename to debian/patches/features/all/rt/0077-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch index c8715f4bf..45e44f247 100644 --- a/debian/patches/features/all/rt/bug-rt-dependend-variants.patch +++ b/debian/patches/features/all/rt/0077-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch @@ -1,18 +1,18 @@ +From 7258f0c5442a0dde07c06e12f431134e4b9bff47 Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 @@ -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 + diff --git a/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch b/debian/patches/features/all/rt/0078-rt-local_irq_-variants-depending-on-RT-RT.patch similarity index 73% rename from debian/patches/features/all/rt/local-irq-rt-depending-variants.patch rename to debian/patches/features/all/rt/0078-rt-local_irq_-variants-depending-on-RT-RT.patch index 24706ee6c..2ffd82674 100644 --- a/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch +++ b/debian/patches/features/all/rt/0078-rt-local_irq_-variants-depending-on-RT-RT.patch @@ -1,23 +1,23 @@ +From 7ff90eac6ba7e1e5fefaf931f42ec83ed6534a7c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- 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 + diff --git a/debian/patches/features/all/rt/preempt-nort-rt-variants.patch b/debian/patches/features/all/rt/0079-preempt-Provide-preempt_-_-no-rt-variants.patch similarity index 82% rename from debian/patches/features/all/rt/preempt-nort-rt-variants.patch rename to debian/patches/features/all/rt/0079-preempt-Provide-preempt_-_-no-rt-variants.patch index 34b0a36d9..e00ce4707 100644 --- a/debian/patches/features/all/rt/preempt-nort-rt-variants.patch +++ b/debian/patches/features/all/rt/0079-preempt-Provide-preempt_-_-no-rt-variants.patch @@ -1,20 +1,20 @@ +From b114ea4baca627525d85c109fefcb2ba3de55ffa Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- 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 + diff --git a/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch b/debian/patches/features/all/rt/0080-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch similarity index 72% rename from debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch rename to debian/patches/features/all/rt/0080-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch index 66290d58e..ffd8a2336 100644 --- a/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch +++ b/debian/patches/features/all/rt/0080-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch @@ -1,22 +1,23 @@ +From 8568db0e556b5159c9c7d85ce78f66d1df5d50ee Mon Sep 17 00:00:00 2001 From: Steven Rostedt 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 Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch b/debian/patches/features/all/rt/0081-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch similarity index 59% rename from debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch rename to debian/patches/features/all/rt/0081-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch index 58cfd0400..06f7334eb 100644 --- a/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch +++ b/debian/patches/features/all/rt/0081-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch @@ -1,12 +1,12 @@ +From 56ffc28ceb835c0eb0bff7fb3395cd66ba0860b0 Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- drivers/ide/alim15x3.c | 4 ++-- drivers/ide/hpt366.c | 4 ++-- @@ -17,11 +17,11 @@ Signed-off-by: Thomas Gleixner 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 + diff --git a/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch b/debian/patches/features/all/rt/0082-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch similarity index 64% rename from debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch rename to debian/patches/features/all/rt/0082-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch index 88e2cb1e2..de35bc6dd 100644 --- a/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch +++ b/debian/patches/features/all/rt/0082-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch @@ -1,6 +1,8 @@ +From cd9cb9fbaf1df154b72fa6be9a3665ba7ad81433 Mon Sep 17 00:00:00 2001 From: Sven-Thorsten Dietrich 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 Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch b/debian/patches/features/all/rt/0083-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch similarity index 64% rename from debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0083-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch index 0cc360330..f968ab24c 100644 --- a/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0083-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch @@ -1,21 +1,22 @@ +From 359b7e30fef466df9d38227b1f570e21fcb37b5e Mon Sep 17 00:00:00 2001 From: Ingo Molnar 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 Signed-off-by: Thomas Gleixner - --- 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 + diff --git a/debian/patches/features/all/rt/acpi-use-local-irq-nort.patch b/debian/patches/features/all/rt/0084-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch similarity index 66% rename from debian/patches/features/all/rt/acpi-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0084-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch index 6b6c57e10..e753eb468 100644 --- a/debian/patches/features/all/rt/acpi-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0084-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch @@ -1,19 +1,19 @@ +From 6bd3fc45f9c1bd877a0fd6776610ca5658dae3b1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner 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 - --- 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 + diff --git a/debian/patches/features/all/rt/user-use-local-irq-nort.patch b/debian/patches/features/all/rt/0085-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch similarity index 71% rename from debian/patches/features/all/rt/user-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0085-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch index 4331933c3..d4ea19366 100644 --- a/debian/patches/features/all/rt/user-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0085-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch @@ -1,20 +1,21 @@ +From 1e9f1cee0ada298f8ffa264a72156c25d9e1b5c1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 21 Jul 2009 23:06:05 +0200 -Subject: core: Do not disable interrupts on RT in kernel/users.c +Subject: [PATCH 085/267] core: Do not disable interrupts on RT in + kernel/users.c Use the local_irq_*_nort variants to reduce latencies in RT. The code is serialized by the locks. No need to disable interrupts. Signed-off-by: Thomas Gleixner - --- kernel/user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/kernel/user.c -=================================================================== ---- linux-3.2.orig/kernel/user.c -+++ linux-3.2/kernel/user.c +diff --git a/kernel/user.c b/kernel/user.c +index 71dd236..b831e51 100644 +--- a/kernel/user.c ++++ b/kernel/user.c @@ -129,11 +129,11 @@ void free_uid(struct user_struct *up) if (!up) return; @@ -29,3 +30,6 @@ Index: linux-3.2/kernel/user.c } struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch b/debian/patches/features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch similarity index 86% rename from debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch rename to debian/patches/features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch index aba5b16c7..ee99f7ba9 100644 --- a/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch +++ b/debian/patches/features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch @@ -1,6 +1,8 @@ +From fadf7cb3af643dd7aa4ad2322df4916621e09e03 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:33 -0500 -Subject: core: Do not disable interrupts on RT in res_counter.c +Subject: [PATCH 086/267] core: Do not disable interrupts on RT in + res_counter.c Frederic Weisbecker reported this warning: @@ -41,16 +43,15 @@ So replace it with _nort(). This code needs a second look. Reported-by: Frederic Weisbecker Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/res_counter.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.2/kernel/res_counter.c -=================================================================== ---- linux-3.2.orig/kernel/res_counter.c -+++ linux-3.2/kernel/res_counter.c -@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counte +diff --git a/kernel/res_counter.c b/kernel/res_counter.c +index 34683ef..21e9ec4 100644 +--- a/kernel/res_counter.c ++++ b/kernel/res_counter.c +@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counter *counter, unsigned long val, struct res_counter *c, *u; *limit_fail_at = NULL; @@ -68,7 +69,7 @@ Index: linux-3.2/kernel/res_counter.c return ret; } -@@ -79,13 +79,13 @@ void res_counter_uncharge(struct res_cou +@@ -79,13 +79,13 @@ void res_counter_uncharge(struct res_counter *counter, unsigned long val) unsigned long flags; struct res_counter *c; @@ -84,3 +85,6 @@ Index: linux-3.2/kernel/res_counter.c } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch b/debian/patches/features/all/rt/0087-usb-Use-local_irq_-_nort-variants.patch similarity index 63% rename from debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0087-usb-Use-local_irq_-_nort-variants.patch index 171e41c21..78fdcc770 100644 --- a/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0087-usb-Use-local_irq_-_nort-variants.patch @@ -1,22 +1,22 @@ +From aede9f913c631a8c15d7e4bc1898eb7021dc234c Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Fri, 3 Jul 2009 08:44:26 -0500 -Subject: usb: Use local_irq_*_nort() variants +Subject: [PATCH 087/267] usb: Use local_irq_*_nort() variants [ tglx: Now that irqf_disabled is dead we should kill that ] Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/usb/core/hcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/drivers/usb/core/hcd.c -=================================================================== ---- linux-3.2.orig/drivers/usb/core/hcd.c -+++ linux-3.2/drivers/usb/core/hcd.c -@@ -2145,7 +2145,7 @@ irqreturn_t usb_hcd_irq (int irq, void * +diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c +index 8cb9304..32dfd76 100644 +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c +@@ -2145,7 +2145,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd) * when the first handler doesn't use it. So let's just * assume it's never used. */ @@ -25,7 +25,7 @@ Index: linux-3.2/drivers/usb/core/hcd.c if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) { rc = IRQ_NONE; -@@ -2158,7 +2158,7 @@ irqreturn_t usb_hcd_irq (int irq, void * +@@ -2158,7 +2158,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd) rc = IRQ_HANDLED; } @@ -34,3 +34,6 @@ Index: linux-3.2/drivers/usb/core/hcd.c return rc; } EXPORT_SYMBOL_GPL(usb_hcd_irq); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/tty-use-local-irq-nort.patch b/debian/patches/features/all/rt/0088-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch similarity index 74% rename from debian/patches/features/all/rt/tty-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0088-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch index 46e53784f..d446deea0 100644 --- a/debian/patches/features/all/rt/tty-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0088-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch @@ -1,6 +1,7 @@ +From 6dabd1ea3f534ed222bd7fb1391308d5e5ffc844 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 17 Aug 2009 19:49:19 +0200 -Subject: tty: Do not disable interrupts in put_ldisc on -rt +Subject: [PATCH 088/267] tty: Do not disable interrupts in put_ldisc on -rt Fixes the following on PREEMPT_RT: @@ -20,16 +21,15 @@ Call Trace: .... Signed-off-by: Thomas Gleixner - --- drivers/tty/tty_ldisc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/drivers/tty/tty_ldisc.c -=================================================================== ---- linux-3.2.orig/drivers/tty/tty_ldisc.c -+++ linux-3.2/drivers/tty/tty_ldisc.c -@@ -71,7 +71,7 @@ static void put_ldisc(struct tty_ldisc * +diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c +index 8e0924f..820f7dc 100644 +--- a/drivers/tty/tty_ldisc.c ++++ b/drivers/tty/tty_ldisc.c +@@ -71,7 +71,7 @@ static void put_ldisc(struct tty_ldisc *ld) * We really want an "atomic_dec_and_lock_irqsave()", * but we don't have it, so this does it by hand. */ @@ -38,7 +38,7 @@ Index: linux-3.2/drivers/tty/tty_ldisc.c if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) { struct tty_ldisc_ops *ldo = ld->ops; -@@ -82,7 +82,7 @@ static void put_ldisc(struct tty_ldisc * +@@ -82,7 +82,7 @@ static void put_ldisc(struct tty_ldisc *ld) kfree(ld); return; } @@ -47,3 +47,6 @@ Index: linux-3.2/drivers/tty/tty_ldisc.c wake_up(&tty_ldisc_idle); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch b/debian/patches/features/all/rt/0089-mm-scatterlist-dont-disable-irqs-on-RT.patch similarity index 58% rename from debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch rename to debian/patches/features/all/rt/0089-mm-scatterlist-dont-disable-irqs-on-RT.patch index 0f6708634..417c0d479 100644 --- a/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch +++ b/debian/patches/features/all/rt/0089-mm-scatterlist-dont-disable-irqs-on-RT.patch @@ -1,17 +1,18 @@ +From 2d38de27401078dc4dce8c56993479d6e1dac21c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:34 -0500 -Subject: mm: scatterlist dont disable irqs on RT +Subject: [PATCH 089/267] mm: scatterlist dont disable irqs on RT Signed-off-by: Thomas Gleixner --- lib/scatterlist.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.2/lib/scatterlist.c -=================================================================== ---- linux-3.2.orig/lib/scatterlist.c -+++ linux-3.2/lib/scatterlist.c -@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_ite +diff --git a/lib/scatterlist.c b/lib/scatterlist.c +index 4ceb05d..181f364 100644 +--- a/lib/scatterlist.c ++++ b/lib/scatterlist.c +@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter) flush_kernel_dcache_page(miter->page); if (miter->__flags & SG_MITER_ATOMIC) { @@ -20,7 +21,7 @@ Index: linux-3.2/lib/scatterlist.c kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ); } else kunmap(miter->page); -@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scat +@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, sg_miter_start(&miter, sgl, nents, sg_flags); @@ -29,7 +30,7 @@ Index: linux-3.2/lib/scatterlist.c while (sg_miter_next(&miter) && offset < buflen) { unsigned int len; -@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scat +@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, sg_miter_stop(&miter); @@ -38,3 +39,6 @@ Index: linux-3.2/lib/scatterlist.c return offset; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch b/debian/patches/features/all/rt/0090-signal-fix-up-rcu-wreckage.patch.patch similarity index 66% rename from debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch rename to debian/patches/features/all/rt/0090-signal-fix-up-rcu-wreckage.patch.patch index e5602883d..f04a2dab5 100644 --- a/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch +++ b/debian/patches/features/all/rt/0090-signal-fix-up-rcu-wreckage.patch.patch @@ -1,17 +1,18 @@ -Subject: signal-fix-up-rcu-wreckage.patch +From 8dae1f2c7df48338f0aa39dc07d65ec2c2faabe6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 22 Jul 2011 08:07:08 +0200 +Subject: [PATCH 090/267] signal-fix-up-rcu-wreckage.patch Signed-off-by: Thomas Gleixner --- kernel/signal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.2/kernel/signal.c -=================================================================== ---- linux-3.2.orig/kernel/signal.c -+++ linux-3.2/kernel/signal.c -@@ -1362,12 +1362,12 @@ struct sighand_struct *__lock_task_sigha +diff --git a/kernel/signal.c b/kernel/signal.c +index c8b1bc1..739c2e4 100644 +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1362,12 +1362,12 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, struct sighand_struct *sighand; for (;;) { @@ -26,7 +27,7 @@ Index: linux-3.2/kernel/signal.c break; } -@@ -1378,7 +1378,7 @@ struct sighand_struct *__lock_task_sigha +@@ -1378,7 +1378,7 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, } spin_unlock(&sighand->siglock); rcu_read_unlock(); @@ -35,3 +36,6 @@ Index: linux-3.2/kernel/signal.c } return sighand; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/net-wireless-warn-nort.patch b/debian/patches/features/all/rt/0091-net-wireless-warn-nort.patch.patch similarity index 57% rename from debian/patches/features/all/rt/net-wireless-warn-nort.patch rename to debian/patches/features/all/rt/0091-net-wireless-warn-nort.patch.patch index dc5d0878c..a070c1021 100644 --- a/debian/patches/features/all/rt/net-wireless-warn-nort.patch +++ b/debian/patches/features/all/rt/0091-net-wireless-warn-nort.patch.patch @@ -1,17 +1,18 @@ -Subject: net-wireless-warn-nort.patch +From 384bc8236ecff10777676ea6f2e5cc5d03fbe2c4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 21:05:33 +0200 +Subject: [PATCH 091/267] net-wireless-warn-nort.patch Signed-off-by: Thomas Gleixner --- net/mac80211/rx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/net/mac80211/rx.c -=================================================================== ---- linux-3.2.orig/net/mac80211/rx.c -+++ linux-3.2/net/mac80211/rx.c -@@ -2958,7 +2958,7 @@ void ieee80211_rx(struct ieee80211_hw *h +diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c +index 064d20f..642d96c 100644 +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -2958,7 +2958,7 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb) struct ieee80211_supported_band *sband; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); @@ -20,3 +21,6 @@ Index: linux-3.2/net/mac80211/rx.c if (WARN_ON(status->band < 0 || status->band >= IEEE80211_NUM_BANDS)) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch b/debian/patches/features/all/rt/0092-mm-Replace-cgroup_page-bit-spinlock.patch similarity index 76% rename from debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch rename to debian/patches/features/all/rt/0092-mm-Replace-cgroup_page-bit-spinlock.patch index e075ed603..623d45ce3 100644 --- a/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch +++ b/debian/patches/features/all/rt/0092-mm-Replace-cgroup_page-bit-spinlock.patch @@ -1,20 +1,20 @@ +From d553f4dded23aedcf07184908178b715c78cc492 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 19 Aug 2009 09:56:42 +0200 -Subject: mm: Replace cgroup_page bit spinlock +Subject: [PATCH 092/267] mm: Replace cgroup_page bit spinlock Bit spinlocks are not working on RT. Replace them. Signed-off-by: Thomas Gleixner - --- include/linux/page_cgroup.h | 28 ++++++++++++++++++++++++++++ mm/page_cgroup.c | 1 + 2 files changed, 29 insertions(+) -Index: linux-3.2/include/linux/page_cgroup.h -=================================================================== ---- linux-3.2.orig/include/linux/page_cgroup.h -+++ linux-3.2/include/linux/page_cgroup.h +diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h +index 961ecc7..2927c08 100644 +--- a/include/linux/page_cgroup.h ++++ b/include/linux/page_cgroup.h @@ -30,6 +30,10 @@ enum { */ struct page_cgroup { @@ -26,7 +26,7 @@ Index: linux-3.2/include/linux/page_cgroup.h struct mem_cgroup *mem_cgroup; struct list_head lru; /* per cgroup LRU list */ }; -@@ -96,30 +100,54 @@ static inline void lock_page_cgroup(stru +@@ -96,30 +100,54 @@ static inline void lock_page_cgroup(struct page_cgroup *pc) * Don't take this lock in IRQ context. * This lock is for pc->mem_cgroup, USED, CACHE, MIGRATION */ @@ -81,11 +81,11 @@ Index: linux-3.2/include/linux/page_cgroup.h } #ifdef CONFIG_SPARSEMEM -Index: linux-3.2/mm/page_cgroup.c -=================================================================== ---- linux-3.2.orig/mm/page_cgroup.c -+++ linux-3.2/mm/page_cgroup.c -@@ -17,6 +17,7 @@ static void __meminit init_page_cgroup(s +diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c +index 2d123f9..2e0d18d 100644 +--- a/mm/page_cgroup.c ++++ b/mm/page_cgroup.c +@@ -17,6 +17,7 @@ static void __meminit init_page_cgroup(struct page_cgroup *pc, unsigned long id) set_page_cgroup_array_id(pc, id); pc->mem_cgroup = NULL; INIT_LIST_HEAD(&pc->lru); @@ -93,3 +93,6 @@ Index: linux-3.2/mm/page_cgroup.c } static unsigned long total_usage; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch b/debian/patches/features/all/rt/0093-buffer_head-Replace-bh_uptodate_lock-for-rt.patch similarity index 74% rename from debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch rename to debian/patches/features/all/rt/0093-buffer_head-Replace-bh_uptodate_lock-for-rt.patch index b22794de6..c3b2ce001 100644 --- a/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch +++ b/debian/patches/features/all/rt/0093-buffer_head-Replace-bh_uptodate_lock-for-rt.patch @@ -1,6 +1,7 @@ +From 0d6994d78eab6e6ebe324aa490ad10ddd2fc4e31 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 Mar 2011 09:18:52 +0100 -Subject: buffer_head: Replace bh_uptodate_lock for -rt +Subject: [PATCH 093/267] buffer_head: Replace bh_uptodate_lock for -rt Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. @@ -12,11 +13,11 @@ Signed-off-by: Thomas Gleixner include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 21 deletions(-) -Index: linux-3.2/fs/buffer.c -=================================================================== ---- linux-3.2.orig/fs/buffer.c -+++ linux-3.2/fs/buffer.c -@@ -331,8 +331,7 @@ static void end_buffer_async_read(struct +diff --git a/fs/buffer.c b/fs/buffer.c +index 19d8eb7..32c4680 100644 +--- a/fs/buffer.c ++++ b/fs/buffer.c +@@ -331,8 +331,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate) * decide that the page is now completely done. */ first = page_buffers(page); @@ -26,7 +27,7 @@ Index: linux-3.2/fs/buffer.c clear_buffer_async_read(bh); unlock_buffer(bh); tmp = bh; -@@ -345,8 +344,7 @@ static void end_buffer_async_read(struct +@@ -345,8 +344,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate) } tmp = tmp->b_this_page; } while (tmp != bh); @@ -36,7 +37,7 @@ Index: linux-3.2/fs/buffer.c /* * If none of the buffers had errors and they are all -@@ -358,9 +356,7 @@ static void end_buffer_async_read(struct +@@ -358,9 +356,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate) return; still_busy: @@ -47,7 +48,7 @@ Index: linux-3.2/fs/buffer.c } /* -@@ -394,8 +390,7 @@ void end_buffer_async_write(struct buffe +@@ -394,8 +390,7 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate) } first = page_buffers(page); @@ -57,7 +58,7 @@ Index: linux-3.2/fs/buffer.c clear_buffer_async_write(bh); unlock_buffer(bh); -@@ -407,15 +402,12 @@ void end_buffer_async_write(struct buffe +@@ -407,15 +402,12 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate) } tmp = tmp->b_this_page; } @@ -75,7 +76,7 @@ Index: linux-3.2/fs/buffer.c } EXPORT_SYMBOL(end_buffer_async_write); -@@ -3223,6 +3215,7 @@ struct buffer_head *alloc_buffer_head(gf +@@ -3223,6 +3215,7 @@ struct buffer_head *alloc_buffer_head(gfp_t gfp_flags) struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags); if (ret) { INIT_LIST_HEAD(&ret->b_assoc_buffers); @@ -83,11 +84,11 @@ Index: linux-3.2/fs/buffer.c preempt_disable(); __this_cpu_inc(bh_accounting.nr); recalc_bh_state(); -Index: linux-3.2/fs/ntfs/aops.c -=================================================================== ---- linux-3.2.orig/fs/ntfs/aops.c -+++ linux-3.2/fs/ntfs/aops.c -@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(s +diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c +index 0b1e885b..7fb7f1b 100644 +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c +@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) "0x%llx.", (unsigned long long)bh->b_blocknr); } first = page_buffers(page); @@ -97,7 +98,7 @@ Index: linux-3.2/fs/ntfs/aops.c clear_buffer_async_read(bh); unlock_buffer(bh); tmp = bh; -@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(s +@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) } tmp = tmp->b_this_page; } while (tmp != bh); @@ -107,7 +108,7 @@ Index: linux-3.2/fs/ntfs/aops.c /* * If none of the buffers had errors then we can set the page uptodate, * but we first have to perform the post read mst fixups, if the -@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(s +@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) unlock_page(page); return; still_busy: @@ -118,10 +119,10 @@ Index: linux-3.2/fs/ntfs/aops.c } /** -Index: linux-3.2/include/linux/buffer_head.h -=================================================================== ---- linux-3.2.orig/include/linux/buffer_head.h -+++ linux-3.2/include/linux/buffer_head.h +diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h +index 458f497..5c16cf1 100644 +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h @@ -72,8 +72,42 @@ struct buffer_head { struct address_space *b_assoc_map; /* mapping this buffer is associated with */ @@ -165,3 +166,6 @@ Index: linux-3.2/include/linux/buffer_head.h /* * macro tricks to expand the set_buffer_foo(), clear_buffer_foo() * and buffer_foo() functions. +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch b/debian/patches/features/all/rt/0094-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch similarity index 73% rename from debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch rename to debian/patches/features/all/rt/0094-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch index 505b70507..5e82859ff 100644 --- a/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch +++ b/debian/patches/features/all/rt/0094-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch @@ -1,6 +1,8 @@ +From c9293d9a9b626e39108b276a74a6d4794374a973 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 Mar 2011 10:11:25 +0100 -Subject: fs: jbd/jbd2: Make state lock and journal head lock rt safe +Subject: [PATCH 094/267] fs: jbd/jbd2: Make state lock and journal head lock + rt safe bit_spin_locks break under RT. @@ -12,11 +14,15 @@ Signed-off-by: Thomas Gleixner include/linux/buffer_head.h | 10 ++++++++++ include/linux/jbd_common.h | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) +--- + include/linux/buffer_head.h | 10 ++++++++++ + include/linux/jbd_common.h | 24 ++++++++++++++++++++++++ + 2 files changed, 34 insertions(+) -Index: linux-3.2/include/linux/buffer_head.h -=================================================================== ---- linux-3.2.orig/include/linux/buffer_head.h -+++ linux-3.2/include/linux/buffer_head.h +diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h +index 5c16cf1..3f8e27b 100644 +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h @@ -74,6 +74,11 @@ struct buffer_head { atomic_t b_count; /* users using this buffer_head */ #ifdef CONFIG_PREEMPT_RT_BASE @@ -29,7 +35,7 @@ Index: linux-3.2/include/linux/buffer_head.h #endif }; -@@ -105,6 +110,11 @@ static inline void buffer_head_init_lock +@@ -105,6 +110,11 @@ static inline void buffer_head_init_locks(struct buffer_head *bh) { #ifdef CONFIG_PREEMPT_RT_BASE spin_lock_init(&bh->b_uptodate_lock); @@ -41,11 +47,11 @@ Index: linux-3.2/include/linux/buffer_head.h #endif } -Index: linux-3.2/include/linux/jbd_common.h -=================================================================== ---- linux-3.2.orig/include/linux/jbd_common.h -+++ linux-3.2/include/linux/jbd_common.h -@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh +diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h +index 6230f85..11c313e 100644 +--- a/include/linux/jbd_common.h ++++ b/include/linux/jbd_common.h +@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh(struct buffer_head *bh) static inline void jbd_lock_bh_state(struct buffer_head *bh) { @@ -102,3 +108,6 @@ Index: linux-3.2/include/linux/jbd_common.h } #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch b/debian/patches/features/all/rt/0095-genirq-Disable-DEBUG_SHIRQ-for-rt.patch similarity index 63% rename from debian/patches/features/all/rt/genirq-nodebug-shirq.patch rename to debian/patches/features/all/rt/0095-genirq-Disable-DEBUG_SHIRQ-for-rt.patch index e95bb715c..b71cdf15d 100644 --- a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch +++ b/debian/patches/features/all/rt/0095-genirq-Disable-DEBUG_SHIRQ-for-rt.patch @@ -1,16 +1,17 @@ +From 5b808390bbd3ef32efd5d44116bd0e5a17860200 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 18 Mar 2011 10:22:04 +0100 -Subject: genirq: Disable DEBUG_SHIRQ for rt +Date: Fri, 18 Mar 2011 10:22:04 +0100 +Subject: [PATCH 095/267] genirq: Disable DEBUG_SHIRQ for rt Signed-off-by: Thomas Gleixner --- lib/Kconfig.debug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/lib/Kconfig.debug -=================================================================== ---- linux-3.2.orig/lib/Kconfig.debug -+++ linux-3.2/lib/Kconfig.debug +diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug +index 82928f5..c347db3 100644 +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug @@ -151,7 +151,7 @@ config DEBUG_KERNEL config DEBUG_SHIRQ @@ -20,3 +21,6 @@ Index: linux-3.2/lib/Kconfig.debug help Enable this to generate a spurious interrupt as soon as a shared interrupt handler is registered, and just before one is deregistered. +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/genirq-disable-random-call-on-preempt-rt.patch b/debian/patches/features/all/rt/0096-genirq-Disable-random-call-on-preempt-rt.patch similarity index 58% rename from debian/patches/features/all/rt/genirq-disable-random-call-on-preempt-rt.patch rename to debian/patches/features/all/rt/0096-genirq-Disable-random-call-on-preempt-rt.patch index 34d54c4a4..2906e1977 100644 --- a/debian/patches/features/all/rt/genirq-disable-random-call-on-preempt-rt.patch +++ b/debian/patches/features/all/rt/0096-genirq-Disable-random-call-on-preempt-rt.patch @@ -1,21 +1,21 @@ +From f190b6f8506745170cbb3754f21ab36267847483 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 21 Jul 2009 16:07:37 +0200 -Subject: genirq: Disable random call on preempt-rt +Subject: [PATCH 096/267] genirq: Disable random call on preempt-rt The random call introduces high latencies and is almost unused. Disable it for -rt. Signed-off-by: Thomas Gleixner - --- kernel/irq/handle.c | 3 +++ 1 file changed, 3 insertions(+) -Index: linux-3.2/kernel/irq/handle.c -=================================================================== ---- linux-3.2.orig/kernel/irq/handle.c -+++ linux-3.2/kernel/irq/handle.c -@@ -156,8 +156,11 @@ handle_irq_event_percpu(struct irq_desc +diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c +index 470d08c..634620c 100644 +--- a/kernel/irq/handle.c ++++ b/kernel/irq/handle.c +@@ -156,8 +156,11 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) action = action->next; } while (action); @@ -27,3 +27,6 @@ Index: linux-3.2/kernel/irq/handle.c if (!noirqdebug) note_interrupt(irq, desc, retval); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch b/debian/patches/features/all/rt/0097-genirq-disable-irqpoll-on-rt.patch similarity index 71% rename from debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch rename to debian/patches/features/all/rt/0097-genirq-disable-irqpoll-on-rt.patch index ec454ae3b..f32c398d9 100644 --- a/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch +++ b/debian/patches/features/all/rt/0097-genirq-disable-irqpoll-on-rt.patch @@ -1,21 +1,21 @@ +From c52440d3a3faff677bbba7d09e44222de48b6cf2 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:57 -0500 -Subject: genirq: disable irqpoll on -rt +Subject: [PATCH 097/267] genirq: disable irqpoll on -rt Creates long latencies for no value Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/irq/spurious.c | 10 ++++++++++ 1 file changed, 10 insertions(+) -Index: linux-3.2/kernel/irq/spurious.c -=================================================================== ---- linux-3.2.orig/kernel/irq/spurious.c -+++ linux-3.2/kernel/irq/spurious.c -@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir +diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c +index dc813a9..d09e0f5 100644 +--- a/kernel/irq/spurious.c ++++ b/kernel/irq/spurious.c +@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true"); static int __init irqfixup_setup(char *str) { @@ -39,3 +39,6 @@ Index: linux-3.2/kernel/irq/spurious.c irqfixup = 2; printk(KERN_WARNING "Misrouted IRQ fixup and polling support " "enabled\n"); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/genirq-force-threading.patch b/debian/patches/features/all/rt/0098-genirq-force-threading.patch.patch similarity index 57% rename from debian/patches/features/all/rt/genirq-force-threading.patch rename to debian/patches/features/all/rt/0098-genirq-force-threading.patch.patch index e8536fa79..e20db5b0f 100644 --- a/debian/patches/features/all/rt/genirq-force-threading.patch +++ b/debian/patches/features/all/rt/0098-genirq-force-threading.patch.patch @@ -1,6 +1,7 @@ -Subject: genirq-force-threading.patch +From 63d0b60e274fb76c5b8b1a2fd74a5d93eacc656a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 03 Apr 2011 11:57:29 +0200 +Date: Sun, 3 Apr 2011 11:57:29 +0200 +Subject: [PATCH 098/267] genirq-force-threading.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/irq/manage.c | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) -Index: linux-3.2/include/linux/interrupt.h -=================================================================== ---- linux-3.2.orig/include/linux/interrupt.h -+++ linux-3.2/include/linux/interrupt.h -@@ -396,9 +396,13 @@ static inline int disable_irq_wake(unsig +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index ddd6b2a..b9162dc 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -396,9 +396,13 @@ static inline int disable_irq_wake(unsigned int irq) #ifdef CONFIG_IRQ_FORCED_THREADING @@ -28,10 +29,10 @@ Index: linux-3.2/include/linux/interrupt.h #endif #ifndef __ARCH_SET_SOFTIRQ_PENDING -Index: linux-3.2/kernel/irq/manage.c -=================================================================== ---- linux-3.2.orig/kernel/irq/manage.c -+++ linux-3.2/kernel/irq/manage.c +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c +index 7600092..b3e6228 100644 +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c @@ -18,6 +18,7 @@ #include "internals.h" @@ -40,7 +41,7 @@ Index: linux-3.2/kernel/irq/manage.c __read_mostly bool force_irqthreads; static int __init setup_forced_irqthreads(char *arg) -@@ -26,6 +27,7 @@ static int __init setup_forced_irqthread +@@ -26,6 +27,7 @@ static int __init setup_forced_irqthreads(char *arg) return 0; } early_param("threadirqs", setup_forced_irqthreads); @@ -48,3 +49,6 @@ Index: linux-3.2/kernel/irq/manage.c #endif /** +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch b/debian/patches/features/all/rt/0099-drivers-net-fix-livelock-issues.patch similarity index 58% rename from debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch rename to debian/patches/features/all/rt/0099-drivers-net-fix-livelock-issues.patch index 0da18da3d..b334fc342 100644 --- a/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch +++ b/debian/patches/features/all/rt/0099-drivers-net-fix-livelock-issues.patch @@ -1,6 +1,7 @@ +From 91639026470adfb7ab98a86b62dfefedb485e3a4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 20 Jun 2009 11:36:54 +0200 -Subject: drivers/net: fix livelock issues +Subject: [PATCH 099/267] drivers/net: fix livelock issues Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro optimization. The reason is that the softirq thread is rescheduling @@ -10,7 +11,6 @@ monoplize the CPU and livelock on UP systems. Remove it. Signed-off-by: Thomas Gleixner - --- drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 6 +----- drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 +-- @@ -21,11 +21,11 @@ Signed-off-by: Thomas Gleixner drivers/net/rionet.c | 6 +----- 7 files changed, 10 insertions(+), 31 deletions(-) -Index: linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -=================================================================== ---- linux-3.2.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -+++ linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -@@ -2236,11 +2236,7 @@ static netdev_tx_t atl1c_xmit_frame(stru +diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +index eccdcff..ee8d8a2 100644 +--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c ++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +@@ -2236,11 +2236,7 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb, } tpd_req = atl1c_cal_tpd_req(skb); @@ -38,11 +38,11 @@ Index: linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c 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 -+++ linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -@@ -1819,8 +1819,7 @@ static netdev_tx_t atl1e_xmit_frame(stru +diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +index 95483bc..eaf84e9 100644 +--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c ++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +@@ -1819,8 +1819,7 @@ static netdev_tx_t atl1e_xmit_frame(struct sk_buff *skb, return NETDEV_TX_OK; } tpd_req = atl1e_cal_tdp_req(skb); @@ -52,11 +52,11 @@ Index: linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c if (atl1e_tpd_avail(adapter) < tpd_req) { /* no enough descriptor, just stop queue */ -Index: linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c -=================================================================== ---- linux-3.2.orig/drivers/net/ethernet/chelsio/cxgb/sge.c -+++ linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c -@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb +diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c +index f9b6023..6d7412a 100644 +--- a/drivers/net/ethernet/chelsio/cxgb/sge.c ++++ b/drivers/net/ethernet/chelsio/cxgb/sge.c +@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter, struct cmdQ *q = &sge->cmdQ[qid]; unsigned int credits, pidx, genbit, count, use_sched_skb = 0; @@ -66,11 +66,11 @@ Index: linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c reclaim_completed_tx(sge, q); -Index: linux-3.2/drivers/net/ethernet/neterion/s2io.c -=================================================================== ---- linux-3.2.orig/drivers/net/ethernet/neterion/s2io.c -+++ linux-3.2/drivers/net/ethernet/neterion/s2io.c -@@ -4090,12 +4090,7 @@ static netdev_tx_t s2io_xmit(struct sk_b +diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c +index c27fb3d..4624278 100644 +--- a/drivers/net/ethernet/neterion/s2io.c ++++ b/drivers/net/ethernet/neterion/s2io.c +@@ -4090,12 +4090,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev) [skb->priority & (MAX_TX_FIFOS - 1)]; fifo = &mac_control->fifos[queue]; @@ -84,11 +84,11 @@ Index: linux-3.2/drivers/net/ethernet/neterion/s2io.c if (sp->config.multiq) { if (__netif_subqueue_stopped(dev, fifo->fifo_no)) { -Index: linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -=================================================================== ---- linux-3.2.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -+++ linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -@@ -1931,10 +1931,9 @@ static int pch_gbe_xmit_frame(struct sk_ +diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +index 43c7b25..c084bea 100644 +--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c ++++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +@@ -1937,10 +1937,9 @@ static int pch_gbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev) adapter->stats.tx_length_errors++; return NETDEV_TX_OK; } @@ -102,11 +102,11 @@ Index: linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c if (unlikely(!PCH_GBE_DESC_UNUSED(tx_ring))) { netif_stop_queue(netdev); spin_unlock_irqrestore(&tx_ring->tx_lock, flags); -Index: linux-3.2/drivers/net/ethernet/tehuti/tehuti.c -=================================================================== ---- linux-3.2.orig/drivers/net/ethernet/tehuti/tehuti.c -+++ linux-3.2/drivers/net/ethernet/tehuti/tehuti.c -@@ -1605,13 +1605,8 @@ static netdev_tx_t bdx_tx_transmit(struc +diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c +index 3a90af6..e2e930e 100644 +--- a/drivers/net/ethernet/tehuti/tehuti.c ++++ b/drivers/net/ethernet/tehuti/tehuti.c +@@ -1605,13 +1605,8 @@ static netdev_tx_t bdx_tx_transmit(struct sk_buff *skb, unsigned long flags; ENTER; @@ -122,11 +122,11 @@ Index: linux-3.2/drivers/net/ethernet/tehuti/tehuti.c /* build tx descriptor */ BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */ -Index: linux-3.2/drivers/net/rionet.c -=================================================================== ---- linux-3.2.orig/drivers/net/rionet.c -+++ linux-3.2/drivers/net/rionet.c -@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_b +diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c +index 7145714..2a1ed18 100644 +--- a/drivers/net/rionet.c ++++ b/drivers/net/rionet.c +@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev) u16 destid; unsigned long flags; @@ -139,3 +139,6 @@ Index: linux-3.2/drivers/net/rionet.c if ((rnet->tx_cnt + 1) > RIONET_TX_RING_SIZE) { netif_stop_queue(ndev); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch b/debian/patches/features/all/rt/0100-drivers-net-vortex-fix-locking-issues.patch similarity index 72% rename from debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch rename to debian/patches/features/all/rt/0100-drivers-net-vortex-fix-locking-issues.patch index 49f17088c..77b6f1e9b 100644 --- a/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch +++ b/debian/patches/features/all/rt/0100-drivers-net-vortex-fix-locking-issues.patch @@ -1,6 +1,7 @@ +From c9c1db28cb2aece6eeda56b86a309b2d564751b8 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Fri, 3 Jul 2009 08:30:00 -0500 -Subject: drivers/net: vortex fix locking issues +Subject: [PATCH 100/267] drivers/net: vortex fix locking issues Argh, cut and paste wasn't enough... @@ -16,12 +17,15 @@ Signed-off-by: Thomas Gleixner 1 file changed, 4 insertions(+), 4 deletions(-) Signed-off-by: Ingo Molnar +--- + drivers/net/ethernet/3com/3c59x.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.2/drivers/net/ethernet/3com/3c59x.c -=================================================================== ---- linux-3.2.orig/drivers/net/ethernet/3com/3c59x.c -+++ linux-3.2/drivers/net/ethernet/3com/3c59x.c -@@ -843,9 +843,9 @@ static void poll_vortex(struct net_devic +diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c +index e0c5529..af31580 100644 +--- a/drivers/net/ethernet/3com/3c59x.c ++++ b/drivers/net/ethernet/3com/3c59x.c +@@ -843,9 +843,9 @@ static void poll_vortex(struct net_device *dev) { struct vortex_private *vp = netdev_priv(dev); unsigned long flags; @@ -33,7 +37,7 @@ Index: linux-3.2/drivers/net/ethernet/3com/3c59x.c } #endif -@@ -1921,12 +1921,12 @@ static void vortex_tx_timeout(struct net +@@ -1921,12 +1921,12 @@ static void vortex_tx_timeout(struct net_device *dev) * Block interrupts because vortex_interrupt does a bare spin_lock() */ unsigned long flags; @@ -48,3 +52,6 @@ Index: linux-3.2/drivers/net/ethernet/3com/3c59x.c } } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch b/debian/patches/features/all/rt/0101-drivers-net-gianfar-Make-RT-aware.patch similarity index 73% rename from debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch rename to debian/patches/features/all/rt/0101-drivers-net-gianfar-Make-RT-aware.patch index fc4714cb5..a4d61cc0e 100644 --- a/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch +++ b/debian/patches/features/all/rt/0101-drivers-net-gianfar-Make-RT-aware.patch @@ -1,6 +1,7 @@ +From f6a04ba9615eedce21fa38c8a9276c1c041f4535 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 1 Apr 2010 20:20:57 +0200 -Subject: drivers: net: gianfar: Make RT aware +Subject: [PATCH 101/267] drivers: net: gianfar: Make RT aware The adjust_link() disables interrupts before taking the queue locks. On RT those locks are converted to "sleeping" locks and @@ -10,15 +11,14 @@ local_irq_save/restore_nort. Reported-by: Xianghua Xiao Signed-off-by: Thomas Gleixner Tested-by: Xianghua Xiao - --- drivers/net/ethernet/freescale/gianfar.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.2/drivers/net/ethernet/freescale/gianfar.c -=================================================================== ---- linux-3.2.orig/drivers/net/ethernet/freescale/gianfar.c -+++ linux-3.2/drivers/net/ethernet/freescale/gianfar.c +diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c +index 83199fd..97d238c 100644 +--- a/drivers/net/ethernet/freescale/gianfar.c ++++ b/drivers/net/ethernet/freescale/gianfar.c @@ -1671,7 +1671,7 @@ void stop_gfar(struct net_device *dev) @@ -37,7 +37,7 @@ Index: linux-3.2/drivers/net/ethernet/freescale/gianfar.c /* Free the IRQs */ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) { -@@ -2949,7 +2949,7 @@ static void adjust_link(struct net_devic +@@ -2949,7 +2949,7 @@ static void adjust_link(struct net_device *dev) struct phy_device *phydev = priv->phydev; int new_state = 0; @@ -46,7 +46,7 @@ Index: linux-3.2/drivers/net/ethernet/freescale/gianfar.c lock_tx_qs(priv); if (phydev->link) { -@@ -3016,7 +3016,7 @@ static void adjust_link(struct net_devic +@@ -3016,7 +3016,7 @@ static void adjust_link(struct net_device *dev) if (new_state && netif_msg_link(priv)) phy_print_status(phydev); unlock_tx_qs(priv); @@ -55,3 +55,6 @@ Index: linux-3.2/drivers/net/ethernet/freescale/gianfar.c } /* Update the hash table based on the current list of multicast +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch b/debian/patches/features/all/rt/0102-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch similarity index 68% rename from debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch rename to debian/patches/features/all/rt/0102-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch index 36591d0d0..84cd2eb8f 100644 --- a/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch +++ b/debian/patches/features/all/rt/0102-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch @@ -1,6 +1,8 @@ +From 39b88ab341a16993ed1129097a40465312e18af8 Mon Sep 17 00:00:00 2001 From: Wu Zhangjin Date: Mon, 4 Jan 2010 11:33:02 +0800 -Subject: USB: Fix the mouse problem when copying large amounts of data +Subject: [PATCH 102/267] USB: Fix the mouse problem when copying large + amounts of data When copying large amounts of data between the USB storage devices and the hard disk, the USB mouse will not work, this patch fixes it. @@ -10,16 +12,15 @@ sure whether it is producible on other platforms] Signed-off-by: Hu Hongbing Signed-off-by: Wu Zhangjin - --- drivers/usb/host/ohci-hcd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) -Index: linux-3.2/drivers/usb/host/ohci-hcd.c -=================================================================== ---- linux-3.2.orig/drivers/usb/host/ohci-hcd.c -+++ linux-3.2/drivers/usb/host/ohci-hcd.c -@@ -830,9 +830,13 @@ static irqreturn_t ohci_irq (struct usb_ +diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c +index b263919..d4b05d1 100644 +--- a/drivers/usb/host/ohci-hcd.c ++++ b/drivers/usb/host/ohci-hcd.c +@@ -830,9 +830,13 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) } if (ints & OHCI_INTR_WDH) { @@ -36,3 +37,6 @@ Index: linux-3.2/drivers/usb/host/ohci-hcd.c } if (quirk_zfmicro(ohci) && (ints & OHCI_INTR_SF)) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/local-var.patch b/debian/patches/features/all/rt/0103-local-var.patch.patch similarity index 67% rename from debian/patches/features/all/rt/local-var.patch rename to debian/patches/features/all/rt/0103-local-var.patch.patch index 3214d3b39..884570a27 100644 --- a/debian/patches/features/all/rt/local-var.patch +++ b/debian/patches/features/all/rt/0103-local-var.patch.patch @@ -1,16 +1,17 @@ -Subject: local-var.patch +From 3793609307ab5253ec11f9dce682be647d12f927 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 24 Jun 2011 18:40:37 +0200 +Subject: [PATCH 103/267] local-var.patch Signed-off-by: Thomas Gleixner --- include/linux/percpu.h | 5 +++++ 1 file changed, 5 insertions(+) -Index: linux-3.2/include/linux/percpu.h -=================================================================== ---- linux-3.2.orig/include/linux/percpu.h -+++ linux-3.2/include/linux/percpu.h +diff --git a/include/linux/percpu.h b/include/linux/percpu.h +index 9ca008f..3941ea4 100644 +--- a/include/linux/percpu.h ++++ b/include/linux/percpu.h @@ -48,6 +48,11 @@ preempt_enable(); \ } while (0) @@ -23,3 +24,6 @@ Index: linux-3.2/include/linux/percpu.h /* minimum unit size, also is the maximum supported allocation size */ #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-local-irq-lock.patch b/debian/patches/features/all/rt/0104-rt-local-irq-lock.patch.patch similarity index 94% rename from debian/patches/features/all/rt/rt-local-irq-lock.patch rename to debian/patches/features/all/rt/0104-rt-local-irq-lock.patch.patch index 9bda6453c..c711fcaa5 100644 --- a/debian/patches/features/all/rt/rt-local-irq-lock.patch +++ b/debian/patches/features/all/rt/0104-rt-local-irq-lock.patch.patch @@ -1,16 +1,19 @@ -Subject: rt-local-irq-lock.patch +From d4347dd3d5bbee7c4098ae3eddf2c166dff769f4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 20 Jun 2011 09:03:47 +0200 +Subject: [PATCH 104/267] rt-local-irq-lock.patch Signed-off-by: Thomas Gleixner --- - include/linux/locallock.h | 230 ++++++++++++++++++++++++++++++++++++++++++++++ + include/linux/locallock.h | 230 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) + create mode 100644 include/linux/locallock.h -Index: linux-3.2/include/linux/locallock.h -=================================================================== +diff --git a/include/linux/locallock.h b/include/linux/locallock.h +new file mode 100644 +index 0000000..8fbc393 --- /dev/null -+++ linux-3.2/include/linux/locallock.h ++++ b/include/linux/locallock.h @@ -0,0 +1,230 @@ +#ifndef _LINUX_LOCALLOCK_H +#define _LINUX_LOCALLOCK_H @@ -242,3 +245,6 @@ Index: linux-3.2/include/linux/locallock.h +#endif + +#endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/cpu-rt-variants.patch b/debian/patches/features/all/rt/0105-cpu-rt-variants.patch.patch similarity index 63% rename from debian/patches/features/all/rt/cpu-rt-variants.patch rename to debian/patches/features/all/rt/0105-cpu-rt-variants.patch.patch index b2ab2fb12..d42cb13a9 100644 --- a/debian/patches/features/all/rt/cpu-rt-variants.patch +++ b/debian/patches/features/all/rt/0105-cpu-rt-variants.patch.patch @@ -1,17 +1,18 @@ -Subject: cpu-rt-variants.patch +From 4999ba9453b30762e55beaf253c8999c58266fc3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 17 Jun 2011 15:42:38 +0200 +Subject: [PATCH 105/267] cpu-rt-variants.patch Signed-off-by: Thomas Gleixner --- include/linux/smp.h | 8 ++++++++ 1 file changed, 8 insertions(+) -Index: linux-3.2/include/linux/smp.h -=================================================================== ---- linux-3.2.orig/include/linux/smp.h -+++ linux-3.2/include/linux/smp.h -@@ -173,6 +173,14 @@ smp_call_function_any(const struct cpuma +diff --git a/include/linux/smp.h b/include/linux/smp.h +index 8cc38d3..e6c58d8 100644 +--- a/include/linux/smp.h ++++ b/include/linux/smp.h +@@ -173,6 +173,14 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() @@ -26,3 +27,6 @@ Index: linux-3.2/include/linux/smp.h /* * Callback to arch code if there's nosmp or maxcpus=0 on the * boot command line: +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-slab-wrap-functions.patch b/debian/patches/features/all/rt/0106-mm-slab-wrap-functions.patch.patch similarity index 84% rename from debian/patches/features/all/rt/mm-slab-wrap-functions.patch rename to debian/patches/features/all/rt/0106-mm-slab-wrap-functions.patch.patch index 96b68008b..2547d7577 100644 --- a/debian/patches/features/all/rt/mm-slab-wrap-functions.patch +++ b/debian/patches/features/all/rt/0106-mm-slab-wrap-functions.patch.patch @@ -1,16 +1,17 @@ -Subject: mm-slab-wrap-functions.patch +From ef8087f5fb338634be3a34608166e3d61b664ff7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 18 Jun 2011 19:44:43 +0200 +Subject: [PATCH 106/267] mm-slab-wrap-functions.patch Signed-off-by: Thomas Gleixner --- - mm/slab.c | 152 ++++++++++++++++++++++++++++++++++++++++++-------------------- + mm/slab.c | 152 ++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 104 insertions(+), 48 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 1fd9983..38575a8 100644 +--- a/mm/slab.c ++++ b/mm/slab.c @@ -116,6 +116,7 @@ #include #include @@ -19,7 +20,7 @@ Index: linux-3.2/mm/slab.c #include #include -@@ -722,12 +723,40 @@ static void slab_set_debugobj_lock_class +@@ -722,12 +723,40 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep) #endif static DEFINE_PER_CPU(struct delayed_work, slab_reap_work); @@ -60,7 +61,7 @@ Index: linux-3.2/mm/slab.c static inline struct kmem_cache *__find_general_cachep(size_t size, gfp_t gfpflags) { -@@ -1065,9 +1094,10 @@ static void reap_alien(struct kmem_cache +@@ -1065,9 +1094,10 @@ static void reap_alien(struct kmem_cache *cachep, struct kmem_list3 *l3) if (l3->alien) { struct array_cache *ac = l3->alien[node]; @@ -73,7 +74,7 @@ Index: linux-3.2/mm/slab.c } } } -@@ -1082,9 +1112,9 @@ static void drain_alien_cache(struct kme +@@ -1082,9 +1112,9 @@ static void drain_alien_cache(struct kmem_cache *cachep, for_each_online_node(i) { ac = alien[i]; if (ac) { @@ -85,7 +86,7 @@ Index: linux-3.2/mm/slab.c } } } -@@ -1163,11 +1193,11 @@ static int init_cache_nodelists_node(int +@@ -1163,11 +1193,11 @@ static int init_cache_nodelists_node(int node) cachep->nodelists[node] = l3; } @@ -99,7 +100,7 @@ Index: linux-3.2/mm/slab.c } return 0; } -@@ -1192,7 +1222,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1192,7 +1222,7 @@ static void __cpuinit cpuup_canceled(long cpu) if (!l3) goto free_array_cache; @@ -108,7 +109,7 @@ Index: linux-3.2/mm/slab.c /* Free limit for this kmem_list3 */ l3->free_limit -= cachep->batchcount; -@@ -1200,7 +1230,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1200,7 +1230,7 @@ static void __cpuinit cpuup_canceled(long cpu) free_block(cachep, nc->entry, nc->avail, node); if (!cpumask_empty(mask)) { @@ -117,7 +118,7 @@ Index: linux-3.2/mm/slab.c goto free_array_cache; } -@@ -1214,7 +1244,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1214,7 +1244,7 @@ static void __cpuinit cpuup_canceled(long cpu) alien = l3->alien; l3->alien = NULL; @@ -126,7 +127,7 @@ Index: linux-3.2/mm/slab.c kfree(shared); if (alien) { -@@ -1288,7 +1318,7 @@ static int __cpuinit cpuup_prepare(long +@@ -1288,7 +1318,7 @@ static int __cpuinit cpuup_prepare(long cpu) l3 = cachep->nodelists[node]; BUG_ON(!l3); @@ -135,7 +136,7 @@ Index: linux-3.2/mm/slab.c if (!l3->shared) { /* * We are serialised from CPU_DEAD or -@@ -1303,7 +1333,7 @@ static int __cpuinit cpuup_prepare(long +@@ -1303,7 +1333,7 @@ static int __cpuinit cpuup_prepare(long cpu) alien = NULL; } #endif @@ -162,7 +163,7 @@ Index: linux-3.2/mm/slab.c } static void check_irq_on(void) -@@ -2535,13 +2567,12 @@ static void drain_array(struct kmem_cach +@@ -2535,13 +2567,12 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3, struct array_cache *ac, int force, int node); @@ -204,7 +205,7 @@ Index: linux-3.2/mm/slab.c check_irq_on(); for_each_online_node(node) { l3 = cachep->nodelists[node]; -@@ -2585,10 +2628,10 @@ static int drain_freelist(struct kmem_ca +@@ -2585,10 +2628,10 @@ static int drain_freelist(struct kmem_cache *cache, nr_freed = 0; while (nr_freed < tofree && !list_empty(&l3->slabs_free)) { @@ -217,7 +218,7 @@ Index: linux-3.2/mm/slab.c goto out; } -@@ -2602,7 +2645,7 @@ static int drain_freelist(struct kmem_ca +@@ -2602,7 +2645,7 @@ static int drain_freelist(struct kmem_cache *cache, * to the cache. */ l3->free_objects -= cache->num; @@ -226,7 +227,7 @@ Index: linux-3.2/mm/slab.c slab_destroy(cache, slabp); nr_freed++; } -@@ -2897,7 +2940,7 @@ static int cache_grow(struct kmem_cache +@@ -2897,7 +2940,7 @@ static int cache_grow(struct kmem_cache *cachep, offset *= cachep->colour_off; if (local_flags & __GFP_WAIT) @@ -235,7 +236,7 @@ Index: linux-3.2/mm/slab.c /* * The test for missing atomic flag is performed here, rather than -@@ -2927,7 +2970,7 @@ static int cache_grow(struct kmem_cache +@@ -2927,7 +2970,7 @@ static int cache_grow(struct kmem_cache *cachep, cache_init_objs(cachep, slabp); if (local_flags & __GFP_WAIT) @@ -267,7 +268,7 @@ Index: linux-3.2/mm/slab.c if (obj) { /* * Insert into the appropriate per node queues -@@ -3453,7 +3496,7 @@ __cache_alloc_node(struct kmem_cache *ca +@@ -3453,7 +3496,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, return NULL; cache_alloc_debugcheck_before(cachep, flags); @@ -276,7 +277,7 @@ Index: linux-3.2/mm/slab.c if (nodeid == NUMA_NO_NODE) nodeid = slab_node; -@@ -3478,7 +3521,7 @@ __cache_alloc_node(struct kmem_cache *ca +@@ -3478,7 +3521,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, /* ___cache_alloc_node can fall back to other nodes */ ptr = ____cache_alloc_node(cachep, flags, nodeid); out: @@ -285,7 +286,7 @@ Index: linux-3.2/mm/slab.c ptr = cache_alloc_debugcheck_after(cachep, flags, ptr, caller); kmemleak_alloc_recursive(ptr, obj_size(cachep), 1, cachep->flags, flags); -@@ -3538,9 +3581,9 @@ __cache_alloc(struct kmem_cache *cachep, +@@ -3538,9 +3581,9 @@ __cache_alloc(struct kmem_cache *cachep, gfp_t flags, void *caller) return NULL; cache_alloc_debugcheck_before(cachep, flags); @@ -297,7 +298,7 @@ Index: linux-3.2/mm/slab.c objp = cache_alloc_debugcheck_after(cachep, flags, objp, caller); kmemleak_alloc_recursive(objp, obj_size(cachep), 1, cachep->flags, flags); -@@ -3854,9 +3897,9 @@ void kmem_cache_free(struct kmem_cache * +@@ -3854,9 +3897,9 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp) debug_check_no_locks_freed(objp, obj_size(cachep)); if (!(cachep->flags & SLAB_DEBUG_OBJECTS)) debug_check_no_obj_freed(objp, obj_size(cachep)); @@ -321,7 +322,7 @@ Index: linux-3.2/mm/slab.c } EXPORT_SYMBOL(kfree); -@@ -3929,7 +3972,7 @@ static int alloc_kmemlist(struct kmem_ca +@@ -3929,7 +3972,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp) if (l3) { struct array_cache *shared = l3->shared; @@ -330,7 +331,7 @@ Index: linux-3.2/mm/slab.c if (shared) free_block(cachep, shared->entry, -@@ -3942,7 +3985,7 @@ static int alloc_kmemlist(struct kmem_ca +@@ -3942,7 +3985,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp) } l3->free_limit = (1 + nr_cpus_node(node)) * cachep->batchcount + cachep->num; @@ -373,7 +374,7 @@ Index: linux-3.2/mm/slab.c /* Always called with the cache_chain_mutex held */ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, -@@ -4025,7 +4079,7 @@ static int do_tune_cpucache(struct kmem_ +@@ -4025,7 +4079,7 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, } new->cachep = cachep; @@ -382,7 +383,7 @@ Index: linux-3.2/mm/slab.c check_irq_on(); cachep->batchcount = batchcount; -@@ -4036,9 +4090,11 @@ static int do_tune_cpucache(struct kmem_ +@@ -4036,9 +4090,11 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, struct array_cache *ccold = new->new[i]; if (!ccold) continue; @@ -396,7 +397,7 @@ Index: linux-3.2/mm/slab.c kfree(ccold); } kfree(new); -@@ -4114,7 +4170,7 @@ static void drain_array(struct kmem_cach +@@ -4114,7 +4170,7 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3, if (ac->touched && !force) { ac->touched = 0; } else { @@ -405,7 +406,7 @@ Index: linux-3.2/mm/slab.c if (ac->avail) { tofree = force ? ac->avail : (ac->limit + 4) / 5; if (tofree > ac->avail) -@@ -4124,7 +4180,7 @@ static void drain_array(struct kmem_cach +@@ -4124,7 +4180,7 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3, memmove(ac->entry, &(ac->entry[tofree]), sizeof(void *) * ac->avail); } @@ -414,7 +415,7 @@ Index: linux-3.2/mm/slab.c } } -@@ -4263,7 +4319,7 @@ static int s_show(struct seq_file *m, vo +@@ -4263,7 +4319,7 @@ static int s_show(struct seq_file *m, void *p) continue; check_irq_on(); @@ -423,7 +424,7 @@ Index: linux-3.2/mm/slab.c list_for_each_entry(slabp, &l3->slabs_full, list) { if (slabp->inuse != cachep->num && !error) -@@ -4288,7 +4344,7 @@ static int s_show(struct seq_file *m, vo +@@ -4288,7 +4344,7 @@ static int s_show(struct seq_file *m, void *p) if (l3->shared) shared_avail += l3->shared->avail; @@ -432,7 +433,7 @@ Index: linux-3.2/mm/slab.c } num_slabs += active_slabs; num_objs = num_slabs * cachep->num; -@@ -4517,13 +4573,13 @@ static int leaks_show(struct seq_file *m +@@ -4517,13 +4573,13 @@ static int leaks_show(struct seq_file *m, void *p) continue; check_irq_on(); @@ -448,3 +449,6 @@ Index: linux-3.2/mm/slab.c } name = cachep->name; if (n[0] == n[1]) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch b/debian/patches/features/all/rt/0107-slab-Fix-__do_drain-to-use-the-right-array-cache.patch similarity index 85% rename from debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch rename to debian/patches/features/all/rt/0107-slab-Fix-__do_drain-to-use-the-right-array-cache.patch index fe2efdd7e..9f5248337 100644 --- a/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch +++ b/debian/patches/features/all/rt/0107-slab-Fix-__do_drain-to-use-the-right-array-cache.patch @@ -1,6 +1,7 @@ -Subject: slab: Fix __do_drain to use the right array cache +From b9b052a0e38ea1b57bb61460b4eb38ccb9313ad2 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 11 Oct 2011 23:56:23 -0400 +Subject: [PATCH 107/267] slab: Fix __do_drain to use the right array cache The array cache in __do_drain() was using the cpu_cache_get() function which uses smp_processor_id() to get the proper array. On mainline, this @@ -33,16 +34,15 @@ Cc: Clark Williams Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/1318391783.13262.11.camel@gandalf.stny.rr.com Signed-off-by: Thomas Gleixner - --- mm/slab.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/mm/slab.c -=================================================================== ---- linux-3.2.orig/mm/slab.c -+++ linux-3.2/mm/slab.c -@@ -2573,7 +2573,7 @@ static void __do_drain(void *arg, unsign +diff --git a/mm/slab.c b/mm/slab.c +index 38575a8..5b63148 100644 +--- a/mm/slab.c ++++ b/mm/slab.c +@@ -2573,7 +2573,7 @@ static void __do_drain(void *arg, unsigned int cpu) struct array_cache *ac; int node = cpu_to_mem(cpu); @@ -51,3 +51,6 @@ Index: linux-3.2/mm/slab.c spin_lock(&cachep->nodelists[node]->list_lock); free_block(cachep, ac->entry, ac->avail, node); spin_unlock(&cachep->nodelists[node]->list_lock); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch b/debian/patches/features/all/rt/0108-mm-More-lock-breaks-in-slab.c.patch similarity index 81% rename from debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch rename to debian/patches/features/all/rt/0108-mm-More-lock-breaks-in-slab.c.patch index e3356f49c..fd62ce9b3 100644 --- a/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch +++ b/debian/patches/features/all/rt/0108-mm-More-lock-breaks-in-slab.c.patch @@ -1,22 +1,22 @@ +From 9ba3ab7f8fd636fe3e06efa974f9768b5804037f Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:43 -0500 -Subject: mm: More lock breaks in slab.c +Subject: [PATCH 108/267] mm: More lock breaks in slab.c Handle __free_pages outside of the locked regions. This reduces the lock contention on the percpu slab locks in -rt significantly. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner - --- - mm/slab.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++---------------- + mm/slab.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 68 insertions(+), 22 deletions(-) -Index: linux-3.2/mm/slab.c -=================================================================== ---- linux-3.2.orig/mm/slab.c -+++ linux-3.2/mm/slab.c -@@ -723,6 +723,7 @@ static void slab_set_debugobj_lock_class +diff --git a/mm/slab.c b/mm/slab.c +index 5b63148..5f0c5ef 100644 +--- a/mm/slab.c ++++ b/mm/slab.c +@@ -723,6 +723,7 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep) #endif static DEFINE_PER_CPU(struct delayed_work, slab_reap_work); @@ -24,7 +24,7 @@ Index: linux-3.2/mm/slab.c static DEFINE_LOCAL_IRQ_LOCK(slab_lock); #ifndef CONFIG_PREEMPT_RT_BASE -@@ -738,14 +739,39 @@ slab_on_each_cpu(void (*func)(void *arg, +@@ -738,14 +739,39 @@ slab_on_each_cpu(void (*func)(void *arg, int this_cpu), void *arg) { unsigned int i; @@ -68,7 +68,7 @@ Index: linux-3.2/mm/slab.c static inline struct array_cache *cpu_cache_get(struct kmem_cache *cachep) { return cachep->array[smp_processor_id()]; -@@ -1230,7 +1256,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1230,7 +1256,7 @@ static void __cpuinit cpuup_canceled(long cpu) free_block(cachep, nc->entry, nc->avail, node); if (!cpumask_empty(mask)) { @@ -77,7 +77,7 @@ Index: linux-3.2/mm/slab.c goto free_array_cache; } -@@ -1244,7 +1270,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1244,7 +1270,7 @@ static void __cpuinit cpuup_canceled(long cpu) alien = l3->alien; l3->alien = NULL; @@ -95,7 +95,7 @@ Index: linux-3.2/mm/slab.c for (i = 0; i < NUM_INIT_LISTS; i++) { kmem_list3_init(&initkmem_list3[i]); -@@ -1803,12 +1831,14 @@ static void *kmem_getpages(struct kmem_c +@@ -1803,12 +1831,14 @@ static void *kmem_getpages(struct kmem_cache *cachep, gfp_t flags, int nodeid) /* * Interface to system's page release. */ @@ -112,7 +112,7 @@ Index: linux-3.2/mm/slab.c kmemcheck_free_shadow(page, cachep->gfporder); if (cachep->flags & SLAB_RECLAIM_ACCOUNT) -@@ -1824,7 +1854,13 @@ static void kmem_freepages(struct kmem_c +@@ -1824,7 +1854,13 @@ static void kmem_freepages(struct kmem_cache *cachep, void *addr) } if (current->reclaim_state) current->reclaim_state->reclaimed_slab += nr_freed; @@ -127,7 +127,7 @@ Index: linux-3.2/mm/slab.c } static void kmem_rcu_free(struct rcu_head *head) -@@ -1832,7 +1868,7 @@ static void kmem_rcu_free(struct rcu_hea +@@ -1832,7 +1868,7 @@ static void kmem_rcu_free(struct rcu_head *head) struct slab_rcu *slab_rcu = (struct slab_rcu *)head; struct kmem_cache *cachep = slab_rcu->cachep; @@ -136,7 +136,7 @@ Index: linux-3.2/mm/slab.c if (OFF_SLAB(cachep)) kmem_cache_free(cachep->slabp_cache, slab_rcu); } -@@ -2051,7 +2087,8 @@ static void slab_destroy_debugcheck(stru +@@ -2051,7 +2087,8 @@ static void slab_destroy_debugcheck(struct kmem_cache *cachep, struct slab *slab * Before calling the slab must have been unlinked from the cache. The * cache-lock is not held/needed. */ @@ -146,7 +146,7 @@ Index: linux-3.2/mm/slab.c { void *addr = slabp->s_mem - slabp->colouroff; -@@ -2064,7 +2101,7 @@ static void slab_destroy(struct kmem_cac +@@ -2064,7 +2101,7 @@ static void slab_destroy(struct kmem_cache *cachep, struct slab *slabp) slab_rcu->addr = addr; call_rcu(&slab_rcu->head, kmem_rcu_free); } else { @@ -173,7 +173,7 @@ Index: linux-3.2/mm/slab.c } #endif -@@ -2646,7 +2689,7 @@ static int drain_freelist(struct kmem_ca +@@ -2646,7 +2689,7 @@ static int drain_freelist(struct kmem_cache *cache, */ l3->free_objects -= cache->num; local_spin_unlock_irq(slab_lock, &l3->list_lock); @@ -182,7 +182,7 @@ Index: linux-3.2/mm/slab.c nr_freed++; } out: -@@ -2981,7 +3024,7 @@ static int cache_grow(struct kmem_cache +@@ -2981,7 +3024,7 @@ static int cache_grow(struct kmem_cache *cachep, spin_unlock(&l3->list_lock); return 1; opps1: @@ -191,7 +191,7 @@ Index: linux-3.2/mm/slab.c failed: if (local_flags & __GFP_WAIT) local_lock_irq(slab_lock); -@@ -3631,7 +3674,7 @@ static void free_block(struct kmem_cache +@@ -3631,7 +3674,7 @@ static void free_block(struct kmem_cache *cachep, void **objpp, int nr_objects, * a different cache, refer to comments before * alloc_slabmgmt. */ @@ -200,7 +200,7 @@ Index: linux-3.2/mm/slab.c } else { list_add(&slabp->list, &l3->slabs_free); } -@@ -3899,7 +3942,7 @@ void kmem_cache_free(struct kmem_cache * +@@ -3899,7 +3942,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp) debug_check_no_obj_freed(objp, obj_size(cachep)); local_lock_irqsave(slab_lock, flags); __cache_free(cachep, objp, __builtin_return_address(0)); @@ -218,7 +218,7 @@ Index: linux-3.2/mm/slab.c } EXPORT_SYMBOL(kfree); -@@ -3985,7 +4028,8 @@ static int alloc_kmemlist(struct kmem_ca +@@ -3985,7 +4028,8 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp) } l3->free_limit = (1 + nr_cpus_node(node)) * cachep->batchcount + cachep->num; @@ -228,7 +228,7 @@ Index: linux-3.2/mm/slab.c kfree(shared); free_alien_cache(new_alien); continue; -@@ -4051,7 +4095,9 @@ static void do_ccupdate_local(void *info +@@ -4051,7 +4095,9 @@ static void do_ccupdate_local(void *info) #else static void do_ccupdate_local(void *info, int cpu) { @@ -238,7 +238,7 @@ Index: linux-3.2/mm/slab.c } #endif -@@ -4093,8 +4139,8 @@ static int do_tune_cpucache(struct kmem_ +@@ -4093,8 +4139,8 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, local_spin_lock_irq(slab_lock, &cachep->nodelists[cpu_to_mem(i)]->list_lock); free_block(cachep, ccold->entry, ccold->avail, cpu_to_mem(i)); @@ -249,3 +249,6 @@ Index: linux-3.2/mm/slab.c kfree(ccold); } kfree(new); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch b/debian/patches/features/all/rt/0109-mm-page_alloc-rt-friendly-per-cpu-pages.patch similarity index 86% rename from debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch rename to debian/patches/features/all/rt/0109-mm-page_alloc-rt-friendly-per-cpu-pages.patch index ffe799b1a..500c4e303 100644 --- a/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch +++ b/debian/patches/features/all/rt/0109-mm-page_alloc-rt-friendly-per-cpu-pages.patch @@ -1,6 +1,7 @@ +From 560edaa7b6a73cfc4d3c8241f072268a999ca3d4 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:37 -0500 -Subject: mm: page_alloc: rt-friendly per-cpu pages +Subject: [PATCH 109/267] mm: page_alloc: rt-friendly per-cpu pages rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. @@ -11,15 +12,14 @@ Contains fixes from: Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- mm/page_alloc.c | 55 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 16 deletions(-) -Index: linux-3.2/mm/page_alloc.c -=================================================================== ---- linux-3.2.orig/mm/page_alloc.c -+++ linux-3.2/mm/page_alloc.c +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index 3344154..27865c9 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c @@ -57,6 +57,7 @@ #include #include @@ -47,7 +47,7 @@ Index: linux-3.2/mm/page_alloc.c int page_group_by_mobility_disabled __read_mostly; static void set_pageblock_migratetype(struct page *page, int migratetype) -@@ -683,13 +696,13 @@ static void __free_pages_ok(struct page +@@ -683,13 +696,13 @@ static void __free_pages_ok(struct page *page, unsigned int order) if (!free_pages_prepare(page, order)) return; @@ -63,7 +63,7 @@ Index: linux-3.2/mm/page_alloc.c } /* -@@ -1067,14 +1080,14 @@ void drain_zone_pages(struct zone *zone, +@@ -1067,14 +1080,14 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) unsigned long flags; int to_drain; @@ -80,7 +80,7 @@ Index: linux-3.2/mm/page_alloc.c } #endif -@@ -1094,7 +1107,7 @@ static void drain_pages(unsigned int cpu +@@ -1094,7 +1107,7 @@ static void drain_pages(unsigned int cpu) struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -89,7 +89,7 @@ Index: linux-3.2/mm/page_alloc.c pset = per_cpu_ptr(zone->pageset, cpu); pcp = &pset->pcp; -@@ -1102,7 +1115,7 @@ static void drain_pages(unsigned int cpu +@@ -1102,7 +1115,7 @@ static void drain_pages(unsigned int cpu) free_pcppages_bulk(zone, pcp->count, pcp); pcp->count = 0; } @@ -113,7 +113,7 @@ Index: linux-3.2/mm/page_alloc.c } #ifdef CONFIG_HIBERNATION -@@ -1175,7 +1195,7 @@ void free_hot_cold_page(struct page *pag +@@ -1175,7 +1195,7 @@ void free_hot_cold_page(struct page *page, int cold) migratetype = get_pageblock_migratetype(page); set_page_private(page, migratetype); @@ -122,7 +122,7 @@ Index: linux-3.2/mm/page_alloc.c if (unlikely(wasMlocked)) free_page_mlock(page); __count_vm_event(PGFREE); -@@ -1207,7 +1227,7 @@ void free_hot_cold_page(struct page *pag +@@ -1207,7 +1227,7 @@ void free_hot_cold_page(struct page *page, int cold) } out: @@ -186,7 +186,7 @@ Index: linux-3.2/mm/page_alloc.c } return 0; } -@@ -5053,6 +5075,7 @@ static int page_alloc_cpu_notify(struct +@@ -5053,6 +5075,7 @@ static int page_alloc_cpu_notify(struct notifier_block *self, void __init page_alloc_init(void) { hotcpu_notifier(page_alloc_cpu_notify, 0); @@ -194,3 +194,6 @@ Index: linux-3.2/mm/page_alloc.c } /* +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch b/debian/patches/features/all/rt/0110-mm-page_alloc-reduce-lock-sections-further.patch similarity index 85% rename from debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch rename to debian/patches/features/all/rt/0110-mm-page_alloc-reduce-lock-sections-further.patch index ac62cbeaa..fe9937adc 100644 --- a/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch +++ b/debian/patches/features/all/rt/0110-mm-page_alloc-reduce-lock-sections-further.patch @@ -1,6 +1,7 @@ +From ad25d05c1f0d21df637fb891ca1c7afa3a35a822 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:37 -0500 -Subject: mm: page_alloc reduce lock sections further +Subject: [PATCH 110/267] mm: page_alloc reduce lock sections further Split out the pages which are to be freed into a separate list and call free_pages_bulk() outside of the percpu page allocator locks. @@ -8,14 +9,14 @@ call free_pages_bulk() outside of the percpu page allocator locks. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner --- - mm/page_alloc.c | 77 ++++++++++++++++++++++++++++++++++++++++++-------------- + mm/page_alloc.c | 77 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 19 deletions(-) -Index: linux-3.2/mm/page_alloc.c -=================================================================== ---- linux-3.2.orig/mm/page_alloc.c -+++ linux-3.2/mm/page_alloc.c -@@ -594,7 +594,7 @@ static inline int free_pages_check(struc +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index 27865c9..5124fb0 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -594,7 +594,7 @@ static inline int free_pages_check(struct page *page) } /* @@ -24,7 +25,7 @@ Index: linux-3.2/mm/page_alloc.c * Assumes all pages on list are in same zone, and of same order. * count is the number of pages to free. * -@@ -605,16 +605,42 @@ static inline int free_pages_check(struc +@@ -605,16 +605,42 @@ static inline int free_pages_check(struct page *page) * pinned" detection logic. */ static void free_pcppages_bulk(struct zone *zone, int count, @@ -71,7 +72,7 @@ Index: linux-3.2/mm/page_alloc.c while (to_free) { struct page *page; struct list_head *list; -@@ -630,7 +656,7 @@ static void free_pcppages_bulk(struct zo +@@ -630,7 +656,7 @@ static void free_pcppages_bulk(struct zone *zone, int count, batch_free++; if (++migratetype == MIGRATE_PCPTYPES) migratetype = 0; @@ -80,7 +81,7 @@ Index: linux-3.2/mm/page_alloc.c } while (list_empty(list)); /* This is the only non-empty list. Free them all. */ -@@ -639,27 +665,24 @@ static void free_pcppages_bulk(struct zo +@@ -639,27 +665,24 @@ static void free_pcppages_bulk(struct zone *zone, int count, do { page = list_last_entry(list, struct page, lru); @@ -113,7 +114,7 @@ Index: linux-3.2/mm/page_alloc.c } static bool free_pages_prepare(struct page *page, unsigned int order) -@@ -1078,6 +1101,7 @@ static int rmqueue_bulk(struct zone *zon +@@ -1078,6 +1101,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) { unsigned long flags; @@ -121,7 +122,7 @@ Index: linux-3.2/mm/page_alloc.c int to_drain; local_lock_irqsave(pa_lock, flags); -@@ -1085,9 +1109,10 @@ void drain_zone_pages(struct zone *zone, +@@ -1085,9 +1109,10 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) to_drain = pcp->batch; else to_drain = pcp->count; @@ -133,7 +134,7 @@ Index: linux-3.2/mm/page_alloc.c } #endif -@@ -1106,16 +1131,21 @@ static void drain_pages(unsigned int cpu +@@ -1106,16 +1131,21 @@ static void drain_pages(unsigned int cpu) for_each_populated_zone(zone) { struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -157,7 +158,7 @@ Index: linux-3.2/mm/page_alloc.c } } -@@ -1222,8 +1252,15 @@ void free_hot_cold_page(struct page *pag +@@ -1222,8 +1252,15 @@ void free_hot_cold_page(struct page *page, int cold) list_add(&page->lru, &pcp->lists[migratetype]); pcp->count++; if (pcp->count >= pcp->high) { @@ -190,3 +191,6 @@ Index: linux-3.2/mm/page_alloc.c setup_pageset(pset, batch); cpu_unlock_irqrestore(cpu, flags); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-page-alloc-fix.patch b/debian/patches/features/all/rt/0111-mm-page-alloc-fix.patch.patch similarity index 60% rename from debian/patches/features/all/rt/mm-page-alloc-fix.patch rename to debian/patches/features/all/rt/0111-mm-page-alloc-fix.patch.patch index c1b0e1fb0..45c29b37c 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-fix.patch +++ b/debian/patches/features/all/rt/0111-mm-page-alloc-fix.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-page-alloc-fix.patch +From 56dddacff93fc987ea0b6076d087388e5be72cf2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 16:47:49 +0200 +Subject: [PATCH 111/267] mm-page-alloc-fix.patch Signed-off-by: Thomas Gleixner --- mm/page_alloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/mm/page_alloc.c -=================================================================== ---- linux-3.2.orig/mm/page_alloc.c -+++ linux-3.2/mm/page_alloc.c -@@ -1960,8 +1960,8 @@ __alloc_pages_direct_compact(gfp_t gfp_m +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index 5124fb0..49675c7 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -1960,8 +1960,8 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order, if (*did_some_progress != COMPACT_SKIPPED) { /* Page migration frees to the PCP lists but we want merging */ @@ -22,3 +23,6 @@ Index: linux-3.2/mm/page_alloc.c page = get_page_from_freelist(gfp_mask, nodemask, order, zonelist, high_zoneidx, +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch b/debian/patches/features/all/rt/0112-mm-convert-swap-to-percpu-locked.patch similarity index 89% rename from debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch rename to debian/patches/features/all/rt/0112-mm-convert-swap-to-percpu-locked.patch index d337a8807..11ce3f132 100644 --- a/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch +++ b/debian/patches/features/all/rt/0112-mm-convert-swap-to-percpu-locked.patch @@ -1,18 +1,18 @@ +From 1331dc423f906395d863d3097374bcd042001d1b Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:51 -0500 -Subject: mm: convert swap to percpu locked +Subject: [PATCH 112/267] mm: convert swap to percpu locked Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- mm/swap.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) -Index: linux-3.2/mm/swap.c -=================================================================== ---- linux-3.2.orig/mm/swap.c -+++ linux-3.2/mm/swap.c +diff --git a/mm/swap.c b/mm/swap.c +index 55b266d..e3f7d6f 100644 +--- a/mm/swap.c ++++ b/mm/swap.c @@ -31,6 +31,7 @@ #include #include @@ -21,7 +21,7 @@ Index: linux-3.2/mm/swap.c #include "internal.h" -@@ -41,6 +42,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_ +@@ -41,6 +42,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_LRU_LISTS], lru_add_pvecs); static DEFINE_PER_CPU(struct pagevec, lru_rotate_pvecs); static DEFINE_PER_CPU(struct pagevec, lru_deactivate_pvecs); @@ -31,7 +31,7 @@ Index: linux-3.2/mm/swap.c /* * This path almost never happens for VM activity - pages are normally * freed via pagevecs. But it gets used by networking. -@@ -267,11 +271,11 @@ void rotate_reclaimable_page(struct page +@@ -267,11 +271,11 @@ void rotate_reclaimable_page(struct page *page) unsigned long flags; page_cache_get(page); @@ -122,3 +122,6 @@ Index: linux-3.2/mm/swap.c #ifdef CONFIG_SWAP bdi_init(swapper_space.backing_dev_info); #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-vmstat-fix-the-irq-lock-asymetry.patch b/debian/patches/features/all/rt/0113-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch similarity index 72% rename from debian/patches/features/all/rt/mm-vmstat-fix-the-irq-lock-asymetry.patch rename to debian/patches/features/all/rt/0113-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch index 60818df5b..8a4c677a0 100644 --- a/debian/patches/features/all/rt/mm-vmstat-fix-the-irq-lock-asymetry.patch +++ b/debian/patches/features/all/rt/0113-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-vmstat-fix-the-irq-lock-asymetry.patch +From d8ce6bcfe27b0b0649048b054827a7c6a64b5d0c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 22 Jun 2011 20:47:08 +0200 +Subject: [PATCH 113/267] mm-vmstat-fix-the-irq-lock-asymetry.patch Signed-off-by: Thomas Gleixner --- mm/vmscan.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) -Index: linux-3.2/mm/vmscan.c -=================================================================== ---- linux-3.2.orig/mm/vmscan.c -+++ linux-3.2/mm/vmscan.c -@@ -1344,8 +1344,8 @@ static int too_many_isolated(struct zone +diff --git a/mm/vmscan.c b/mm/vmscan.c +index cb33d9c..39f9629 100644 +--- a/mm/vmscan.c ++++ b/mm/vmscan.c +@@ -1344,8 +1344,8 @@ static int too_many_isolated(struct zone *zone, int file, */ static noinline_for_stack void putback_lru_pages(struct zone *zone, struct scan_control *sc, @@ -22,7 +23,7 @@ Index: linux-3.2/mm/vmscan.c { struct page *page; struct pagevec pvec; -@@ -1356,7 +1356,12 @@ putback_lru_pages(struct zone *zone, str +@@ -1356,7 +1356,12 @@ putback_lru_pages(struct zone *zone, struct scan_control *sc, /* * Put back any unfreeable pages. */ @@ -36,7 +37,7 @@ Index: linux-3.2/mm/vmscan.c while (!list_empty(page_list)) { int lru; page = lru_to_page(page_list); -@@ -1539,12 +1544,7 @@ shrink_inactive_list(unsigned long nr_to +@@ -1539,12 +1544,7 @@ shrink_inactive_list(unsigned long nr_to_scan, struct zone *zone, priority, &nr_dirty, &nr_writeback); } @@ -50,3 +51,6 @@ Index: linux-3.2/mm/vmscan.c /* * If reclaim is isolating dirty pages under writeback, it implies +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch b/debian/patches/features/all/rt/0114-mm-make-vmstat-rt-aware.patch similarity index 62% rename from debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch rename to debian/patches/features/all/rt/0114-mm-make-vmstat-rt-aware.patch index cb085dd85..80d36d411 100644 --- a/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch +++ b/debian/patches/features/all/rt/0114-mm-make-vmstat-rt-aware.patch @@ -1,20 +1,20 @@ +From 52ce12b4ef668a3ce5788ea1f3015d60b8f4dd24 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:13 -0500 -Subject: [PATCH] mm: make vmstat -rt aware +Subject: [PATCH 114/267] mm: make vmstat -rt aware Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/linux/vmstat.h | 4 ++++ mm/vmstat.c | 6 ++++++ 2 files changed, 10 insertions(+) -Index: linux-3.2/include/linux/vmstat.h -=================================================================== ---- linux-3.2.orig/include/linux/vmstat.h -+++ linux-3.2/include/linux/vmstat.h -@@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, v +diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h +index 65efb92..1b3f2ef 100644 +--- a/include/linux/vmstat.h ++++ b/include/linux/vmstat.h +@@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, vm_event_states); static inline void __count_vm_event(enum vm_event_item item) { @@ -24,7 +24,7 @@ Index: linux-3.2/include/linux/vmstat.h } static inline void count_vm_event(enum vm_event_item item) -@@ -39,7 +41,9 @@ static inline void count_vm_event(enum v +@@ -39,7 +41,9 @@ static inline void count_vm_event(enum vm_event_item item) static inline void __count_vm_events(enum vm_event_item item, long delta) { @@ -34,11 +34,11 @@ Index: linux-3.2/include/linux/vmstat.h } static inline void count_vm_events(enum vm_event_item item, long delta) -Index: linux-3.2/mm/vmstat.c -=================================================================== ---- linux-3.2.orig/mm/vmstat.c -+++ linux-3.2/mm/vmstat.c -@@ -216,6 +216,7 @@ void __mod_zone_page_state(struct zone * +diff --git a/mm/vmstat.c b/mm/vmstat.c +index 8fd603b..726f0b6 100644 +--- a/mm/vmstat.c ++++ b/mm/vmstat.c +@@ -216,6 +216,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item, long x; long t; @@ -46,7 +46,7 @@ Index: linux-3.2/mm/vmstat.c x = delta + __this_cpu_read(*p); t = __this_cpu_read(pcp->stat_threshold); -@@ -225,6 +226,7 @@ void __mod_zone_page_state(struct zone * +@@ -225,6 +226,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item, x = 0; } __this_cpu_write(*p, x); @@ -54,7 +54,7 @@ Index: linux-3.2/mm/vmstat.c } EXPORT_SYMBOL(__mod_zone_page_state); -@@ -257,6 +259,7 @@ void __inc_zone_state(struct zone *zone, +@@ -257,6 +259,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item) s8 __percpu *p = pcp->vm_stat_diff + item; s8 v, t; @@ -62,7 +62,7 @@ Index: linux-3.2/mm/vmstat.c v = __this_cpu_inc_return(*p); t = __this_cpu_read(pcp->stat_threshold); if (unlikely(v > t)) { -@@ -265,6 +268,7 @@ void __inc_zone_state(struct zone *zone, +@@ -265,6 +268,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item) zone_page_state_add(v + overstep, zone, item); __this_cpu_write(*p, -overstep); } @@ -70,7 +70,7 @@ Index: linux-3.2/mm/vmstat.c } void __inc_zone_page_state(struct page *page, enum zone_stat_item item) -@@ -279,6 +283,7 @@ void __dec_zone_state(struct zone *zone, +@@ -279,6 +283,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item) s8 __percpu *p = pcp->vm_stat_diff + item; s8 v, t; @@ -78,7 +78,7 @@ Index: linux-3.2/mm/vmstat.c v = __this_cpu_dec_return(*p); t = __this_cpu_read(pcp->stat_threshold); if (unlikely(v < - t)) { -@@ -287,6 +292,7 @@ void __dec_zone_state(struct zone *zone, +@@ -287,6 +292,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item) zone_page_state_add(v - overstep, zone, item); __this_cpu_write(*p, overstep); } @@ -86,3 +86,6 @@ Index: linux-3.2/mm/vmstat.c } void __dec_zone_page_state(struct page *page, enum zone_stat_item item) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch b/debian/patches/features/all/rt/0115-mm-shrink-the-page-frame-to-rt-size.patch similarity index 84% rename from debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch rename to debian/patches/features/all/rt/0115-mm-shrink-the-page-frame-to-rt-size.patch index 25530d898..7e705524d 100644 --- a/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch +++ b/debian/patches/features/all/rt/0115-mm-shrink-the-page-frame-to-rt-size.patch @@ -1,6 +1,7 @@ +From 0cff0b3fe59f78698ae5cd2e3efff5fb9e81d67f Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:54 -0500 -Subject: mm: shrink the page frame to !-rt size +Subject: [PATCH 115/267] mm: shrink the page frame to !-rt size He below is a boot-tested hack to shrink the page frame size back to normal. @@ -10,18 +11,17 @@ page-frames. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner - --- include/linux/mm.h | 46 +++++++++++++++++++++++++++++++++++++++------- include/linux/mm_types.h | 6 +++++- mm/memory.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 8 deletions(-) -Index: linux-3.2/include/linux/mm.h -=================================================================== ---- linux-3.2.orig/include/linux/mm.h -+++ linux-3.2/include/linux/mm.h -@@ -1195,27 +1195,59 @@ static inline pmd_t *pmd_alloc(struct mm +diff --git a/include/linux/mm.h b/include/linux/mm.h +index 4baadd1..c9e64e5 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -1195,27 +1195,59 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a * overflow into the next struct page (as it might with DEBUG_SPINLOCK). * When freeing, reset page->mapping so free_pages_check won't complain. */ @@ -88,10 +88,10 @@ Index: linux-3.2/include/linux/mm.h static inline void pgtable_page_dtor(struct page *page) { pte_lock_deinit(page); -Index: linux-3.2/include/linux/mm_types.h -=================================================================== ---- linux-3.2.orig/include/linux/mm_types.h -+++ linux-3.2/include/linux/mm_types.h +diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h +index 5b42f1b..1ec126f 100644 +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h @@ -118,7 +118,11 @@ struct page { * system if PG_buddy is set. */ @@ -105,11 +105,11 @@ Index: linux-3.2/include/linux/mm_types.h #endif struct kmem_cache *slab; /* SLUB: Pointer to slab */ struct page *first_page; /* Compound tail pages */ -Index: linux-3.2/mm/memory.c -=================================================================== ---- linux-3.2.orig/mm/memory.c -+++ linux-3.2/mm/memory.c -@@ -4008,3 +4008,35 @@ void copy_user_huge_page(struct page *ds +diff --git a/mm/memory.c b/mm/memory.c +index 7fa62d9..af0df1a 100644 +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -4016,3 +4016,35 @@ void copy_user_huge_page(struct page *dst, struct page *src, } } #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */ @@ -145,3 +145,6 @@ Index: linux-3.2/mm/memory.c +} + +#endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch b/debian/patches/features/all/rt/0116-ARM-Initialize-ptl-lock-for-vector-page.patch similarity index 83% rename from debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch rename to debian/patches/features/all/rt/0116-ARM-Initialize-ptl-lock-for-vector-page.patch index a6b0f3a87..2d956a60a 100644 --- a/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch +++ b/debian/patches/features/all/rt/0116-ARM-Initialize-ptl-lock-for-vector-page.patch @@ -1,6 +1,7 @@ -Subject: ARM: Initialize ptl->lock for vector page +From aef992f3068fa6705daaa030d035978ebd60978a Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Sat, 1 Oct 2011 18:58:13 -0700 +Subject: [PATCH 116/267] ARM: Initialize ptl->lock for vector page Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if PREEMPT_RT_FULL=y because vectors_user_mapping() creates a @@ -33,11 +34,11 @@ Signed-off-by: Thomas Gleixner arch/arm/kernel/process.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) -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 -@@ -489,6 +489,31 @@ unsigned long arch_randomize_brk(struct +diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c +index 54833ff..75227b3 100644 +--- a/arch/arm/kernel/process.c ++++ b/arch/arm/kernel/process.c +@@ -489,6 +489,31 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) } #ifdef CONFIG_MMU @@ -69,3 +70,6 @@ Index: linux-3.2/arch/arm/kernel/process.c /* * The vectors page is always readable from user space for the * atomic helpers and the signal restart code. Let's declare a mapping +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-allow-slab-rt.patch b/debian/patches/features/all/rt/0117-mm-Allow-only-slab-on-RT.patch similarity index 75% rename from debian/patches/features/all/rt/mm-allow-slab-rt.patch rename to debian/patches/features/all/rt/0117-mm-Allow-only-slab-on-RT.patch index f07f22ccc..1450694de 100644 --- a/debian/patches/features/all/rt/mm-allow-slab-rt.patch +++ b/debian/patches/features/all/rt/0117-mm-Allow-only-slab-on-RT.patch @@ -1,18 +1,18 @@ +From 6b31e9b35429b064973433ebd20b7e79b02cc5f8 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:03 -0500 -Subject: mm: Allow only slab on RT +Subject: [PATCH 117/267] mm: Allow only slab on RT Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- init/Kconfig | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-3.2/init/Kconfig -=================================================================== ---- linux-3.2.orig/init/Kconfig -+++ linux-3.2/init/Kconfig +diff --git a/init/Kconfig b/init/Kconfig +index 43298f9..dbc82d0 100644 +--- a/init/Kconfig ++++ b/init/Kconfig @@ -1239,6 +1239,7 @@ config SLAB config SLUB @@ -29,3 +29,6 @@ Index: linux-3.2/init/Kconfig help SLOB replaces the stock allocator with a drastically simpler allocator. SLOB is generally more space efficient but +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/radix-tree-rt-aware.patch b/debian/patches/features/all/rt/0118-radix-tree-rt-aware.patch.patch similarity index 68% rename from debian/patches/features/all/rt/radix-tree-rt-aware.patch rename to debian/patches/features/all/rt/0118-radix-tree-rt-aware.patch.patch index c4c7e9af7..48f15e78a 100644 --- a/debian/patches/features/all/rt/radix-tree-rt-aware.patch +++ b/debian/patches/features/all/rt/0118-radix-tree-rt-aware.patch.patch @@ -1,6 +1,7 @@ -Subject: radix-tree-rt-aware.patch +From 78aab28d7975d404d97310ab718dd56d0a682c3c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:33:18 +0200 +Subject: [PATCH 118/267] radix-tree-rt-aware.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner lib/radix-tree.c | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) -Index: linux-3.2/include/linux/radix-tree.h -=================================================================== ---- linux-3.2.orig/include/linux/radix-tree.h -+++ linux-3.2/include/linux/radix-tree.h -@@ -231,7 +231,13 @@ unsigned long radix_tree_next_hole(struc +diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h +index 9d4539c..6b4bdf2 100644 +--- a/include/linux/radix-tree.h ++++ b/include/linux/radix-tree.h +@@ -231,7 +231,13 @@ unsigned long radix_tree_next_hole(struct radix_tree_root *root, unsigned long index, unsigned long max_scan); unsigned long radix_tree_prev_hole(struct radix_tree_root *root, unsigned long index, unsigned long max_scan); @@ -26,7 +27,7 @@ Index: linux-3.2/include/linux/radix-tree.h void radix_tree_init(void); void *radix_tree_tag_set(struct radix_tree_root *root, unsigned long index, unsigned int tag); -@@ -256,7 +262,7 @@ unsigned long radix_tree_locate_item(str +@@ -256,7 +262,7 @@ unsigned long radix_tree_locate_item(struct radix_tree_root *root, void *item); static inline void radix_tree_preload_end(void) { @@ -35,11 +36,11 @@ Index: linux-3.2/include/linux/radix-tree.h } #endif /* _LINUX_RADIX_TREE_H */ -Index: linux-3.2/lib/radix-tree.c -=================================================================== ---- linux-3.2.orig/lib/radix-tree.c -+++ linux-3.2/lib/radix-tree.c -@@ -166,12 +166,13 @@ radix_tree_node_alloc(struct radix_tree_ +diff --git a/lib/radix-tree.c b/lib/radix-tree.c +index d9df745..770453a 100644 +--- a/lib/radix-tree.c ++++ b/lib/radix-tree.c +@@ -166,12 +166,13 @@ radix_tree_node_alloc(struct radix_tree_root *root) * succeed in getting a node here (and never reach * kmem_cache_alloc) */ @@ -54,7 +55,7 @@ Index: linux-3.2/lib/radix-tree.c } if (ret == NULL) ret = kmem_cache_alloc(radix_tree_node_cachep, gfp_mask); -@@ -206,6 +207,7 @@ radix_tree_node_free(struct radix_tree_n +@@ -206,6 +207,7 @@ radix_tree_node_free(struct radix_tree_node *node) call_rcu(&node->rcu_head, radix_tree_node_rcu_free); } @@ -70,3 +71,6 @@ Index: linux-3.2/lib/radix-tree.c /* * Return the maximum key which can be store into a +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/panic-disable-random-on-rt.patch b/debian/patches/features/all/rt/0119-panic-disable-random-on-rt.patch similarity index 52% rename from debian/patches/features/all/rt/panic-disable-random-on-rt.patch rename to debian/patches/features/all/rt/0119-panic-disable-random-on-rt.patch index 3102458c8..74c6b41ac 100644 --- a/debian/patches/features/all/rt/panic-disable-random-on-rt.patch +++ b/debian/patches/features/all/rt/0119-panic-disable-random-on-rt.patch @@ -1,13 +1,16 @@ +From f4c10a6646165be65152353cde34f57b80e14519 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner +Date: Tue, 10 Apr 2012 14:34:04 -0400 +Subject: [PATCH 119/267] panic-disable-random-on-rt --- kernel/panic.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-3.2/kernel/panic.c -=================================================================== ---- linux-3.2.orig/kernel/panic.c -+++ linux-3.2/kernel/panic.c +diff --git a/kernel/panic.c b/kernel/panic.c +index 3458469..50f4de5 100644 +--- a/kernel/panic.c ++++ b/kernel/panic.c @@ -343,9 +343,11 @@ static u64 oops_id; static int init_oops_id(void) @@ -20,3 +23,6 @@ Index: linux-3.2/kernel/panic.c oops_id++; return 0; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/ipc-make-rt-aware.patch b/debian/patches/features/all/rt/0120-ipc-Make-the-ipc-code-rt-aware.patch similarity index 71% rename from debian/patches/features/all/rt/ipc-make-rt-aware.patch rename to debian/patches/features/all/rt/0120-ipc-Make-the-ipc-code-rt-aware.patch index 5b06d9b5b..50a2b99b8 100644 --- a/debian/patches/features/all/rt/ipc-make-rt-aware.patch +++ b/debian/patches/features/all/rt/0120-ipc-Make-the-ipc-code-rt-aware.patch @@ -1,6 +1,7 @@ +From 378334b7268973bf4c06bdc47df4d640bb1185cc Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:12 -0500 -Subject: ipc: Make the ipc code -rt aware +Subject: [PATCH 120/267] ipc: Make the ipc code -rt aware RT serializes the code with the (rt)spinlock but keeps preemption enabled. Some parts of the code need to be atomic nevertheless. @@ -9,17 +10,16 @@ Protect it with preempt_disable/enable_rt pairts. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- ipc/mqueue.c | 5 +++++ ipc/msg.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) -Index: linux-3.2/ipc/mqueue.c -=================================================================== ---- linux-3.2.orig/ipc/mqueue.c -+++ linux-3.2/ipc/mqueue.c -@@ -820,12 +820,17 @@ static inline void pipelined_send(struct +diff --git a/ipc/mqueue.c b/ipc/mqueue.c +index 5b4293d..2d06b54 100644 +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -820,12 +820,17 @@ static inline void pipelined_send(struct mqueue_inode_info *info, struct msg_msg *message, struct ext_wait_queue *receiver) { @@ -37,11 +37,11 @@ Index: linux-3.2/ipc/mqueue.c } /* pipelined_receive() - if there is task waiting in sys_mq_timedsend() -Index: linux-3.2/ipc/msg.c -=================================================================== ---- linux-3.2.orig/ipc/msg.c -+++ linux-3.2/ipc/msg.c -@@ -259,12 +259,20 @@ static void expunge_all(struct msg_queue +diff --git a/ipc/msg.c b/ipc/msg.c +index 7385de2..06642ac 100644 +--- a/ipc/msg.c ++++ b/ipc/msg.c +@@ -259,12 +259,20 @@ static void expunge_all(struct msg_queue *msq, int res) while (tmp != &msq->q_receivers) { struct msg_receiver *msr; @@ -62,7 +62,7 @@ Index: linux-3.2/ipc/msg.c } } -@@ -611,6 +619,12 @@ static inline int pipelined_send(struct +@@ -611,6 +619,12 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg) !security_msg_queue_msgrcv(msq, msg, msr->r_tsk, msr->r_msgtype, msr->r_mode)) { @@ -75,7 +75,7 @@ Index: linux-3.2/ipc/msg.c list_del(&msr->r_list); if (msr->r_maxsize < msg->m_ts) { msr->r_msg = NULL; -@@ -624,9 +638,11 @@ static inline int pipelined_send(struct +@@ -624,9 +638,11 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg) wake_up_process(msr->r_tsk); smp_mb(); msr->r_msg = msg; @@ -87,3 +87,6 @@ Index: linux-3.2/ipc/msg.c } } return 0; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch b/debian/patches/features/all/rt/0121-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch similarity index 84% rename from debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch rename to debian/patches/features/all/rt/0121-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch index ee45018ba..235dee412 100644 --- a/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch +++ b/debian/patches/features/all/rt/0121-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch @@ -1,6 +1,8 @@ -Subject: ipc/mqueue: Add a critical section to avoid a deadlock +From f2eccdab1889ef7f58daa7e374866d437a78c761 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Yoshitake Date: Sat, 23 Jul 2011 11:57:36 +0900 +Subject: [PATCH 121/267] ipc/mqueue: Add a critical section to avoid a + deadlock (Repost for v3.0-rt1 and changed the distination addreses) I have tested the following patch on v3.0-rt1 with PREEMPT_RT_FULL. @@ -21,7 +23,6 @@ Description of the problem *. receiver will never wake up and cannot change sender's state to STATE_READY because sender has higher priority - Signed-off-by: Yoshitake Kobayashi Cc: viro@zeniv.linux.org.uk Cc: dchinner@redhat.com @@ -34,11 +35,11 @@ Signed-off-by: Thomas Gleixner ipc/mqueue.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -Index: linux-3.2/ipc/mqueue.c -=================================================================== ---- linux-3.2.orig/ipc/mqueue.c -+++ linux-3.2/ipc/mqueue.c -@@ -844,15 +844,19 @@ static inline void pipelined_receive(str +diff --git a/ipc/mqueue.c b/ipc/mqueue.c +index 2d06b54..eec1d99 100644 +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -844,15 +844,19 @@ static inline void pipelined_receive(struct mqueue_inode_info *info) wake_up_interruptible(&info->wait_q); return; } @@ -60,3 +61,6 @@ Index: linux-3.2/ipc/mqueue.c size_t, msg_len, unsigned int, msg_prio, const struct timespec __user *, u_abs_timeout) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/relay-fix-timer-madness.patch b/debian/patches/features/all/rt/0122-relay-fix-timer-madness.patch similarity index 71% rename from debian/patches/features/all/rt/relay-fix-timer-madness.patch rename to debian/patches/features/all/rt/0122-relay-fix-timer-madness.patch index 3a15b55cc..3dc7c5a77 100644 --- a/debian/patches/features/all/rt/relay-fix-timer-madness.patch +++ b/debian/patches/features/all/rt/0122-relay-fix-timer-madness.patch @@ -1,6 +1,7 @@ +From 008dd51b17a4d0e538e3ae60cee743fec6900b14 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:07 -0500 -Subject: relay: fix timer madness +Subject: [PATCH 122/267] relay: fix timer madness remove timer calls (!!!) from deep within the tracing infrastructure. This was totally bogus code that can cause lockups and worse. Poll @@ -8,16 +9,15 @@ the buffer every 2 jiffies for now. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/relay.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) -Index: linux-3.2/kernel/relay.c -=================================================================== ---- linux-3.2.orig/kernel/relay.c -+++ linux-3.2/kernel/relay.c -@@ -336,6 +336,10 @@ static void wakeup_readers(unsigned long +diff --git a/kernel/relay.c b/kernel/relay.c +index b6f803a..eae992d 100644 +--- a/kernel/relay.c ++++ b/kernel/relay.c +@@ -340,6 +340,10 @@ static void wakeup_readers(unsigned long data) { struct rchan_buf *buf = (struct rchan_buf *)data; wake_up_interruptible(&buf->read_wait); @@ -28,7 +28,7 @@ Index: linux-3.2/kernel/relay.c } /** -@@ -353,6 +357,7 @@ static void __relay_reset(struct rchan_b +@@ -357,6 +361,7 @@ static void __relay_reset(struct rchan_buf *buf, unsigned int init) init_waitqueue_head(&buf->read_wait); kref_init(&buf->kref); setup_timer(&buf->timer, wakeup_readers, (unsigned long)buf); @@ -36,7 +36,7 @@ Index: linux-3.2/kernel/relay.c } else del_timer_sync(&buf->timer); -@@ -733,15 +738,6 @@ size_t relay_switch_subbuf(struct rchan_ +@@ -739,15 +744,6 @@ size_t relay_switch_subbuf(struct rchan_buf *buf, size_t length) else buf->early_bytes += buf->chan->subbuf_size - buf->padding[old_subbuf]; @@ -52,3 +52,6 @@ Index: linux-3.2/kernel/relay.c } old = buf->data; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch b/debian/patches/features/all/rt/0123-net-ipv4-route-use-locks-on-up-rt.patch.patch similarity index 68% rename from debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch rename to debian/patches/features/all/rt/0123-net-ipv4-route-use-locks-on-up-rt.patch.patch index 7c1c4d260..4b56b6001 100644 --- a/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch +++ b/debian/patches/features/all/rt/0123-net-ipv4-route-use-locks-on-up-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: net-ipv4-route-use-locks-on-up-rt.patch +From d0061bd859e53b1ca699fb341a43f3911ab18c57 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 15 Jul 2011 16:24:45 +0200 +Subject: [PATCH 123/267] net-ipv4-route-use-locks-on-up-rt.patch Signed-off-by: Thomas Gleixner --- net/ipv4/route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/net/ipv4/route.c -=================================================================== ---- linux-3.2.orig/net/ipv4/route.c -+++ linux-3.2/net/ipv4/route.c +diff --git a/net/ipv4/route.c b/net/ipv4/route.c +index 94cdbc5..5cb9301 100644 +--- a/net/ipv4/route.c ++++ b/net/ipv4/route.c @@ -251,7 +251,7 @@ struct rt_hash_bucket { }; @@ -20,3 +21,6 @@ Index: linux-3.2/net/ipv4/route.c /* * Instead of using one spinlock for each rt_hash_bucket, we use a table of spinlocks * The size of this table is a power of two and depends on the number of CPUS. +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch b/debian/patches/features/all/rt/0124-workqueue-avoid-the-lock-in-cpu-dying.patch.patch similarity index 71% rename from debian/patches/features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch rename to debian/patches/features/all/rt/0124-workqueue-avoid-the-lock-in-cpu-dying.patch.patch index 411e51eaf..dc6c29b86 100644 --- a/debian/patches/features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch +++ b/debian/patches/features/all/rt/0124-workqueue-avoid-the-lock-in-cpu-dying.patch.patch @@ -1,17 +1,18 @@ -Subject: workqueue-avoid-the-lock-in-cpu-dying.patch +From 647b3063fcb524a25fe0159d2daee73fd5524f9c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 24 Jun 2011 20:39:24 +0200 +Subject: [PATCH 124/267] workqueue-avoid-the-lock-in-cpu-dying.patch Signed-off-by: Thomas Gleixner --- kernel/workqueue.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) -Index: linux-3.2/kernel/workqueue.c -=================================================================== ---- linux-3.2.orig/kernel/workqueue.c -+++ linux-3.2/kernel/workqueue.c -@@ -3507,6 +3507,25 @@ static int __devinit workqueue_cpu_callb +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 4b4421d..8bdc220 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3509,6 +3509,25 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, kthread_stop(new_trustee); return NOTIFY_BAD; } @@ -37,7 +38,7 @@ Index: linux-3.2/kernel/workqueue.c } /* some are called w/ irq disabled, don't disturb irq status */ -@@ -3526,16 +3545,6 @@ static int __devinit workqueue_cpu_callb +@@ -3528,16 +3547,6 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, gcwq->first_idle = new_worker; break; @@ -54,7 +55,7 @@ Index: linux-3.2/kernel/workqueue.c case CPU_POST_DEAD: gcwq->trustee_state = TRUSTEE_BUTCHER; /* fall through */ -@@ -3569,6 +3578,7 @@ static int __devinit workqueue_cpu_callb +@@ -3571,6 +3580,7 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, spin_unlock_irqrestore(&gcwq->lock, flags); @@ -62,3 +63,6 @@ Index: linux-3.2/kernel/workqueue.c return notifier_from_errno(0); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch b/debian/patches/features/all/rt/0125-timers-prepare-for-full-preemption.patch similarity index 78% rename from debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch rename to debian/patches/features/all/rt/0125-timers-prepare-for-full-preemption.patch index a60429c7f..7716473c8 100644 --- a/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch +++ b/debian/patches/features/all/rt/0125-timers-prepare-for-full-preemption.patch @@ -1,6 +1,7 @@ +From 7ebba5f37928b6e989b7b2a50fef92ec51e99147 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: timers: prepare for full preemption +Subject: [PATCH 125/267] timers: prepare for full preemption When softirqs can be preempted we need to make sure that cancelling the timer from the active thread can not deadlock vs. a running timer @@ -8,17 +9,16 @@ callback. Add a waitqueue to resolve that. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/linux/timer.h | 2 +- kernel/timer.c | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 4 deletions(-) -Index: linux-3.2/include/linux/timer.h -=================================================================== ---- linux-3.2.orig/include/linux/timer.h -+++ linux-3.2/include/linux/timer.h -@@ -276,7 +276,7 @@ extern void add_timer(struct timer_list +diff --git a/include/linux/timer.h b/include/linux/timer.h +index 6abd913..b703477 100644 +--- a/include/linux/timer.h ++++ b/include/linux/timer.h +@@ -276,7 +276,7 @@ extern void add_timer(struct timer_list *timer); extern int try_to_del_timer_sync(struct timer_list *timer); @@ -27,10 +27,10 @@ Index: linux-3.2/include/linux/timer.h extern int del_timer_sync(struct timer_list *timer); #else # define del_timer_sync(t) del_timer(t) -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index 9c3c62b..e4b2373 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -75,6 +75,7 @@ struct tvec_root { struct tvec_base { spinlock_t lock; @@ -39,7 +39,7 @@ Index: linux-3.2/kernel/timer.c unsigned long timer_jiffies; unsigned long next_timer; struct tvec_root tv1; -@@ -679,12 +680,15 @@ __mod_timer(struct timer_list *timer, un +@@ -679,12 +680,15 @@ __mod_timer(struct timer_list *timer, unsigned long expires, debug_activate(timer, expires); @@ -55,7 +55,7 @@ Index: linux-3.2/kernel/timer.c new_base = per_cpu(tvec_bases, cpu); if (base != new_base) { -@@ -885,6 +889,29 @@ void add_timer_on(struct timer_list *tim +@@ -885,6 +889,29 @@ void add_timer_on(struct timer_list *timer, int cpu) } EXPORT_SYMBOL_GPL(add_timer_on); @@ -94,7 +94,7 @@ Index: linux-3.2/kernel/timer.c /** * del_timer_sync - deactivate a timer and wait for the handler to finish. * @timer: the timer to be deactivated -@@ -1013,7 +1040,7 @@ int del_timer_sync(struct timer_list *ti +@@ -1013,7 +1040,7 @@ int del_timer_sync(struct timer_list *timer) int ret = try_to_del_timer_sync(timer); if (ret >= 0) return ret; @@ -103,7 +103,7 @@ Index: linux-3.2/kernel/timer.c } } EXPORT_SYMBOL(del_timer_sync); -@@ -1124,10 +1151,11 @@ static inline void __run_timers(struct t +@@ -1124,10 +1151,11 @@ static inline void __run_timers(struct tvec_base *base) spin_unlock_irq(&base->lock); call_timer_fn(timer, fn, data); @@ -116,7 +116,7 @@ Index: linux-3.2/kernel/timer.c spin_unlock_irq(&base->lock); } -@@ -1634,6 +1662,7 @@ static int __cpuinit init_timers_cpu(int +@@ -1634,6 +1662,7 @@ static int __cpuinit init_timers_cpu(int cpu) } spin_lock_init(&base->lock); @@ -124,3 +124,6 @@ Index: linux-3.2/kernel/timer.c for (j = 0; j < TVN_SIZE; j++) { INIT_LIST_HEAD(base->tv5.vec + j); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timers-preempt-rt-support.patch b/debian/patches/features/all/rt/0126-timers-preempt-rt-support.patch similarity index 71% rename from debian/patches/features/all/rt/timers-preempt-rt-support.patch rename to debian/patches/features/all/rt/0126-timers-preempt-rt-support.patch index cb451ad35..a9bde30b9 100644 --- a/debian/patches/features/all/rt/timers-preempt-rt-support.patch +++ b/debian/patches/features/all/rt/0126-timers-preempt-rt-support.patch @@ -1,6 +1,7 @@ +From d6af602c1a87abbfc8c7a01600f97ad75f358f10 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:20 -0500 -Subject: timers: preempt-rt support +Subject: [PATCH 126/267] timers: preempt-rt support Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c -@@ -1294,6 +1294,22 @@ unsigned long get_next_timer_interrupt(u +diff --git a/kernel/timer.c b/kernel/timer.c +index e4b2373..2aa1215 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1294,6 +1294,22 @@ unsigned long get_next_timer_interrupt(unsigned long now) */ if (cpu_is_offline(smp_processor_id())) return now + NEXT_TIMER_MAX_DELTA; @@ -35,7 +36,7 @@ Index: linux-3.2/kernel/timer.c spin_lock(&base->lock); if (time_before_eq(base->next_timer, base->timer_jiffies)) base->next_timer = __next_timer_interrupt(base); -@@ -1302,7 +1318,7 @@ unsigned long get_next_timer_interrupt(u +@@ -1302,7 +1318,7 @@ unsigned long get_next_timer_interrupt(unsigned long now) if (time_before_eq(expires, now)) return now; @@ -44,3 +45,6 @@ Index: linux-3.2/kernel/timer.c return cmp_next_hrtimer_event(now, expires); } #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timers-fix-timer-hotplug-on-rt.patch b/debian/patches/features/all/rt/0127-timers-fix-timer-hotplug-on-rt.patch similarity index 69% rename from debian/patches/features/all/rt/timers-fix-timer-hotplug-on-rt.patch rename to debian/patches/features/all/rt/0127-timers-fix-timer-hotplug-on-rt.patch index 6cf1da2a0..42350fa51 100644 --- a/debian/patches/features/all/rt/timers-fix-timer-hotplug-on-rt.patch +++ b/debian/patches/features/all/rt/0127-timers-fix-timer-hotplug-on-rt.patch @@ -1,22 +1,22 @@ +From 5328f8e827a189338556177e5fdf0eb4c325d998 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:32 -0500 -Subject: timers: fix timer hotplug on -rt +Subject: [PATCH 127/267] timers: fix timer hotplug on -rt Here we are in the CPU_DEAD notifier, and we must not sleep nor enable interrupts. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/timer.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c -@@ -1714,6 +1714,7 @@ static void __cpuinit migrate_timers(int +diff --git a/kernel/timer.c b/kernel/timer.c +index 2aa1215..e36b343 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1714,6 +1714,7 @@ static void __cpuinit migrate_timers(int cpu) { struct tvec_base *old_base; struct tvec_base *new_base; @@ -24,7 +24,7 @@ Index: linux-3.2/kernel/timer.c int i; BUG_ON(cpu_online(cpu)); -@@ -1723,8 +1724,11 @@ static void __cpuinit migrate_timers(int +@@ -1723,8 +1724,11 @@ static void __cpuinit migrate_timers(int cpu) * The caller is globally serialized and nobody else * takes two locks at once, deadlock is not possible. */ @@ -38,7 +38,7 @@ Index: linux-3.2/kernel/timer.c BUG_ON(old_base->running_timer); -@@ -1738,7 +1742,9 @@ static void __cpuinit migrate_timers(int +@@ -1738,7 +1742,9 @@ static void __cpuinit migrate_timers(int cpu) } spin_unlock(&old_base->lock); @@ -49,3 +49,6 @@ Index: linux-3.2/kernel/timer.c put_cpu_var(tvec_bases); } #endif /* CONFIG_HOTPLUG_CPU */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch b/debian/patches/features/all/rt/0128-timers-mov-printk_tick-to-soft-interrupt.patch similarity index 65% rename from debian/patches/features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch rename to debian/patches/features/all/rt/0128-timers-mov-printk_tick-to-soft-interrupt.patch index 8277bead8..fe71df260 100644 --- a/debian/patches/features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch +++ b/debian/patches/features/all/rt/0128-timers-mov-printk_tick-to-soft-interrupt.patch @@ -1,18 +1,18 @@ +From a62527dec2c2f0b464a7493246c6fb716c9c182d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:30 -0500 -Subject: timers: mov printk_tick to soft interrupt +Subject: [PATCH 128/267] timers: mov printk_tick to soft interrupt Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar - --- kernel/timer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index e36b343..7954334 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1336,7 +1336,6 @@ void update_process_times(int user_tick) account_process_tick(p, user_tick); run_local_timers(); @@ -21,7 +21,7 @@ Index: linux-3.2/kernel/timer.c #ifdef CONFIG_IRQ_WORK if (in_irq()) irq_work_run(); -@@ -1352,6 +1351,7 @@ static void run_timer_softirq(struct sof +@@ -1352,6 +1351,7 @@ static void run_timer_softirq(struct softirq_action *h) { struct tvec_base *base = __this_cpu_read(tvec_bases); @@ -29,3 +29,6 @@ Index: linux-3.2/kernel/timer.c hrtimer_run_pending(); if (time_after_eq(jiffies, base->timer_jiffies)) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch b/debian/patches/features/all/rt/0129-timer-delay-waking-softirqs-from-the-jiffy-tick.patch similarity index 90% rename from debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch rename to debian/patches/features/all/rt/0129-timer-delay-waking-softirqs-from-the-jiffy-tick.patch index 7919bce4d..f62cef6c4 100644 --- a/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch +++ b/debian/patches/features/all/rt/0129-timer-delay-waking-softirqs-from-the-jiffy-tick.patch @@ -1,6 +1,7 @@ +From bd101c10314f466f80841254637d9239e5f9c505 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 21 Aug 2009 11:56:45 +0200 -Subject: timer: delay waking softirqs from the jiffy tick +Subject: [PATCH 129/267] timer: delay waking softirqs from the jiffy tick People were complaining about broken balancing with the recent -rt series. @@ -51,15 +52,14 @@ behaviour. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner - --- kernel/timer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index 7954334..d1bc5a9 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1334,13 +1334,13 @@ void update_process_times(int user_tick) /* Note: this timer irq context must be accounted for as well. */ @@ -75,3 +75,6 @@ Index: linux-3.2/kernel/timer.c run_posix_cpu_timers(p); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch b/debian/patches/features/all/rt/0130-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch similarity index 79% rename from debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch rename to debian/patches/features/all/rt/0130-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch index 06d2dcb7b..db0c68609 100644 --- a/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch +++ b/debian/patches/features/all/rt/0130-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch @@ -1,6 +1,8 @@ -Subject: timers: Avoid the switch timers base set to NULL trick on RT +From 54346cdefc5b71e02622139705f1d055e1ffb388 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 15:23:39 +0200 +Subject: [PATCH 130/267] timers: Avoid the switch timers base set to NULL + trick on RT On RT that code is preemptible, so we cannot assign NULL to timers base as a preempter would spin forever in lock_timer_base(). @@ -10,11 +12,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c -@@ -654,6 +654,36 @@ static struct tvec_base *lock_timer_base +diff --git a/kernel/timer.c b/kernel/timer.c +index d1bc5a9..8a9ca7d 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -654,6 +654,36 @@ static struct tvec_base *lock_timer_base(struct timer_list *timer, } } @@ -51,7 +53,7 @@ Index: linux-3.2/kernel/timer.c static inline int __mod_timer(struct timer_list *timer, unsigned long expires, bool pending_only, int pinned) -@@ -699,14 +729,8 @@ __mod_timer(struct timer_list *timer, un +@@ -699,14 +729,8 @@ __mod_timer(struct timer_list *timer, unsigned long expires, * handler yet has not finished. This also guarantees that * the timer is serialized wrt itself. */ @@ -68,3 +70,6 @@ Index: linux-3.2/kernel/timer.c } timer->expires = expires; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch b/debian/patches/features/all/rt/0131-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch similarity index 84% rename from debian/patches/features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch rename to debian/patches/features/all/rt/0131-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch index 854e44d52..45a17b2fa 100644 --- a/debian/patches/features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch +++ b/debian/patches/features/all/rt/0131-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch @@ -1,6 +1,8 @@ -Subject: printk: Don't call printk_tick in printk_needs_cpu() on RT +From 1bfdc4700bc80161dfc1a6231316796362e0ff3c Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:45 +0800 +Subject: [PATCH 131/267] printk: Don't call printk_tick in printk_needs_cpu() + on RT printk_tick() can't be called in atomic context when RT is enabled, otherwise below warning will show: @@ -30,10 +32,10 @@ Signed-off-by: Thomas Gleixner kernel/printk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -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 1f06626..2b95bc0 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -1274,8 +1274,8 @@ void printk_tick(void) int printk_needs_cpu(int cpu) @@ -45,3 +47,6 @@ Index: linux-3.2/kernel/printk.c return __this_cpu_read(printk_pending); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch b/debian/patches/features/all/rt/0132-hrtimers-prepare-full-preemption.patch similarity index 80% rename from debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch rename to debian/patches/features/all/rt/0132-hrtimers-prepare-full-preemption.patch index 64c74a5af..afa1843eb 100644 --- a/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch +++ b/debian/patches/features/all/rt/0132-hrtimers-prepare-full-preemption.patch @@ -1,13 +1,13 @@ +From 2b00756cd02a0dc8ecd990749a92742f6b71e931 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: hrtimers: prepare full preemption +Subject: [PATCH 132/267] hrtimers: prepare full preemption Make cancellation of a running callback in softirq context safe against preemption. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/linux/hrtimer.h | 10 ++++++++++ kernel/hrtimer.c | 33 ++++++++++++++++++++++++++++++++- @@ -15,10 +15,10 @@ Signed-off-by: Thomas Gleixner kernel/posix-timers.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 1 deletion(-) -Index: linux-3.2/include/linux/hrtimer.h -=================================================================== ---- linux-3.2.orig/include/linux/hrtimer.h -+++ linux-3.2/include/linux/hrtimer.h +diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h +index fd0dc30..e8b395d 100644 +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h @@ -187,6 +187,9 @@ struct hrtimer_cpu_base { unsigned long nr_hangs; ktime_t max_hang_time; @@ -29,7 +29,7 @@ Index: linux-3.2/include/linux/hrtimer.h struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; }; -@@ -374,6 +377,13 @@ static inline int hrtimer_restart(struct +@@ -374,6 +377,13 @@ static inline int hrtimer_restart(struct hrtimer *timer) return hrtimer_start_expires(timer, HRTIMER_MODE_ABS); } @@ -43,11 +43,11 @@ Index: linux-3.2/include/linux/hrtimer.h /* Query timers: */ extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer); extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp); -Index: linux-3.2/kernel/hrtimer.c -=================================================================== ---- linux-3.2.orig/kernel/hrtimer.c -+++ linux-3.2/kernel/hrtimer.c -@@ -847,6 +847,32 @@ u64 hrtimer_forward(struct hrtimer *time +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 1a3695e..905e2cd 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -847,6 +847,32 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) } EXPORT_SYMBOL_GPL(hrtimer_forward); @@ -80,7 +80,7 @@ Index: linux-3.2/kernel/hrtimer.c /* * enqueue_hrtimer - internal function to (re)start a timer * -@@ -1073,7 +1099,7 @@ int hrtimer_cancel(struct hrtimer *timer +@@ -1073,7 +1099,7 @@ int hrtimer_cancel(struct hrtimer *timer) if (ret >= 0) return ret; @@ -98,7 +98,7 @@ Index: linux-3.2/kernel/hrtimer.c } /* -@@ -1638,6 +1666,9 @@ static void __cpuinit init_hrtimers_cpu( +@@ -1638,6 +1666,9 @@ static void __cpuinit init_hrtimers_cpu(int cpu) } hrtimer_init_hres(cpu_base); @@ -108,10 +108,10 @@ Index: linux-3.2/kernel/hrtimer.c } #ifdef CONFIG_HOTPLUG_CPU -Index: linux-3.2/kernel/itimer.c -=================================================================== ---- linux-3.2.orig/kernel/itimer.c -+++ linux-3.2/kernel/itimer.c +diff --git a/kernel/itimer.c b/kernel/itimer.c +index d802883..2c582fc 100644 +--- a/kernel/itimer.c ++++ b/kernel/itimer.c @@ -214,6 +214,7 @@ again: /* We are sharing ->siglock with it_real_fn() */ if (hrtimer_try_to_cancel(timer) < 0) { @@ -120,11 +120,11 @@ Index: linux-3.2/kernel/itimer.c goto again; } expires = timeval_to_ktime(value->it_value); -Index: linux-3.2/kernel/posix-timers.c -=================================================================== ---- linux-3.2.orig/kernel/posix-timers.c -+++ linux-3.2/kernel/posix-timers.c -@@ -766,6 +766,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_ +diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c +index 7b73c34..6a74800 100644 +--- a/kernel/posix-timers.c ++++ b/kernel/posix-timers.c +@@ -766,6 +766,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id) return overrun; } @@ -182,7 +182,7 @@ Index: linux-3.2/kernel/posix-timers.c spin_lock(¤t->sighand->siglock); list_del(&timer->list); -@@ -920,8 +943,18 @@ static void itimer_delete(struct k_itime +@@ -920,8 +943,18 @@ static void itimer_delete(struct k_itimer *timer) retry_delete: spin_lock_irqsave(&timer->it_lock, flags); @@ -201,3 +201,6 @@ Index: linux-3.2/kernel/posix-timers.c goto retry_delete; } list_del(&timer->list); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch b/debian/patches/features/all/rt/0133-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch similarity index 83% rename from debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch rename to debian/patches/features/all/rt/0133-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch index 5cdaa3170..ff511f987 100644 --- a/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch +++ b/debian/patches/features/all/rt/0133-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch @@ -1,6 +1,8 @@ +From 4236c5bb70d033897f15142395e80b3b8f76a83c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:31 -0500 -Subject: hrtimer: fixup hrtimer callback changes for preempt-rt +Subject: [PATCH 133/267] hrtimer: fixup hrtimer callback changes for + preempt-rt In preempt-rt we can not call the callbacks which take sleeping locks from the timer interrupt context. @@ -10,19 +12,18 @@ delivery problem for real. Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar - --- - include/linux/hrtimer.h | 3 - kernel/hrtimer.c | 190 ++++++++++++++++++++++++++++++++++++++++++----- - kernel/sched.c | 2 - kernel/time/tick-sched.c | 1 - kernel/watchdog.c | 1 + include/linux/hrtimer.h | 3 + + kernel/hrtimer.c | 190 +++++++++++++++++++++++++++++++++++++++++----- + kernel/sched.c | 2 + + kernel/time/tick-sched.c | 1 + + kernel/watchdog.c | 1 + 5 files changed, 179 insertions(+), 18 deletions(-) -Index: linux-3.2/include/linux/hrtimer.h -=================================================================== ---- linux-3.2.orig/include/linux/hrtimer.h -+++ linux-3.2/include/linux/hrtimer.h +diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h +index e8b395d..0e37086 100644 +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h @@ -111,6 +111,8 @@ struct hrtimer { enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; @@ -40,11 +41,11 @@ Index: linux-3.2/include/linux/hrtimer.h ktime_t resolution; ktime_t (*get_time)(void); ktime_t softirq_time; -Index: linux-3.2/kernel/hrtimer.c -=================================================================== ---- linux-3.2.orig/kernel/hrtimer.c -+++ linux-3.2/kernel/hrtimer.c -@@ -589,8 +589,7 @@ static int hrtimer_reprogram(struct hrti +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 905e2cd..1dd627b 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -589,8 +589,7 @@ static int hrtimer_reprogram(struct hrtimer *timer, * When the callback is running, we do not reprogram the clock event * device. The timer callback is either running on a different CPU or * the callback is executed in the hrtimer_interrupt context. The @@ -54,7 +55,7 @@ Index: linux-3.2/kernel/hrtimer.c */ if (hrtimer_callback_running(timer)) return 0; -@@ -625,6 +624,9 @@ static int hrtimer_reprogram(struct hrti +@@ -625,6 +624,9 @@ static int hrtimer_reprogram(struct hrtimer *timer, return res; } @@ -64,7 +65,7 @@ Index: linux-3.2/kernel/hrtimer.c /* * Initialize the high resolution related parts of cpu_base */ -@@ -644,7 +646,29 @@ static inline int hrtimer_enqueue_reprog +@@ -644,7 +646,29 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, struct hrtimer_clock_base *base, int wakeup) { @@ -94,7 +95,7 @@ Index: linux-3.2/kernel/hrtimer.c if (wakeup) { raw_spin_unlock(&base->cpu_base->lock); raise_softirq_irqoff(HRTIMER_SOFTIRQ); -@@ -733,6 +757,11 @@ static inline int hrtimer_enqueue_reprog +@@ -733,6 +757,11 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, } static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) { } static inline void retrigger_next_event(void *arg) { } @@ -106,7 +107,7 @@ Index: linux-3.2/kernel/hrtimer.c #endif /* CONFIG_HIGH_RES_TIMERS */ -@@ -864,9 +893,9 @@ void hrtimer_wait_for_timer(const struct +@@ -864,9 +893,9 @@ void hrtimer_wait_for_timer(const struct hrtimer *timer) { struct hrtimer_clock_base *base = timer->base; @@ -118,7 +119,7 @@ Index: linux-3.2/kernel/hrtimer.c } #else -@@ -916,6 +945,11 @@ static void __remove_hrtimer(struct hrti +@@ -916,6 +945,11 @@ static void __remove_hrtimer(struct hrtimer *timer, if (!(timer->state & HRTIMER_STATE_ENQUEUED)) goto out; @@ -130,7 +131,7 @@ Index: linux-3.2/kernel/hrtimer.c next_timer = timerqueue_getnext(&base->active); timerqueue_del(&base->active, &timer->node); if (&timer->node == next_timer) { -@@ -1178,6 +1212,7 @@ static void __hrtimer_init(struct hrtime +@@ -1178,6 +1212,7 @@ static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id, base = hrtimer_clockid_to_base(clock_id); timer->base = &cpu_base->clock_base[base]; @@ -138,7 +139,7 @@ Index: linux-3.2/kernel/hrtimer.c timerqueue_init(&timer->node); #ifdef CONFIG_TIMER_STATS -@@ -1261,10 +1296,118 @@ static void __run_hrtimer(struct hrtimer +@@ -1261,10 +1296,118 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now) timer->state &= ~HRTIMER_STATE_CALLBACK; } @@ -259,7 +260,7 @@ Index: linux-3.2/kernel/hrtimer.c /* * High resolution timer interrupt * Called with interrupts disabled -@@ -1273,7 +1416,7 @@ void hrtimer_interrupt(struct clock_even +@@ -1273,7 +1416,7 @@ void hrtimer_interrupt(struct clock_event_device *dev) { struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); ktime_t expires_next, now, entry_time, delta; @@ -342,7 +343,7 @@ Index: linux-3.2/kernel/hrtimer.c } /* -@@ -1525,6 +1679,7 @@ static enum hrtimer_restart hrtimer_wake +@@ -1525,6 +1679,7 @@ static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer) void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *task) { sl->timer.function = hrtimer_wakeup; @@ -350,7 +351,7 @@ Index: linux-3.2/kernel/hrtimer.c sl->task = task; } EXPORT_SYMBOL_GPL(hrtimer_init_sleeper); -@@ -1663,6 +1818,7 @@ static void __cpuinit init_hrtimers_cpu( +@@ -1663,6 +1818,7 @@ static void __cpuinit init_hrtimers_cpu(int cpu) for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { cpu_base->clock_base[i].cpu_base = cpu_base; timerqueue_init_head(&cpu_base->clock_base[i].active); @@ -368,11 +369,11 @@ Index: linux-3.2/kernel/hrtimer.c } /** -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -189,6 +189,7 @@ void init_rt_bandwidth(struct rt_bandwid +diff --git a/kernel/sched.c b/kernel/sched.c +index bb93b0b..c47e7a6 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -189,6 +189,7 @@ void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime) hrtimer_init(&rt_b->rt_period_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -380,7 +381,7 @@ Index: linux-3.2/kernel/sched.c rt_b->rt_period_timer.function = sched_rt_period_timer; } -@@ -1277,6 +1278,7 @@ static void init_rq_hrtick(struct rq *rq +@@ -1277,6 +1278,7 @@ static void init_rq_hrtick(struct rq *rq) hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); rq->hrtick_timer.function = hrtick; @@ -388,11 +389,11 @@ Index: linux-3.2/kernel/sched.c } #else /* CONFIG_SCHED_HRTICK */ static inline void hrtick_clear(struct rq *rq) -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 -@@ -798,6 +798,7 @@ void tick_setup_sched_timer(void) +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index d7abd2f..a2c2a64 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -802,6 +802,7 @@ void tick_setup_sched_timer(void) * Emulate tick processing via per-CPU hrtimers: */ hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); @@ -400,11 +401,11 @@ Index: linux-3.2/kernel/time/tick-sched.c ts->sched_timer.function = tick_sched_timer; /* Get the next period (per cpu) */ -Index: linux-3.2/kernel/watchdog.c -=================================================================== ---- linux-3.2.orig/kernel/watchdog.c -+++ linux-3.2/kernel/watchdog.c -@@ -436,6 +436,7 @@ static void watchdog_prepare_cpu(int cpu +diff --git a/kernel/watchdog.c b/kernel/watchdog.c +index c7e2a2f..c0c47d7 100644 +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c +@@ -436,6 +436,7 @@ static void watchdog_prepare_cpu(int cpu) WARN_ON(per_cpu(softlockup_watchdog, cpu)); hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); hrtimer->function = watchdog_timer_fn; @@ -412,3 +413,6 @@ Index: linux-3.2/kernel/watchdog.c } static int watchdog_enable(int cpu) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch b/debian/patches/features/all/rt/0134-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch similarity index 86% rename from debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch rename to debian/patches/features/all/rt/0134-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch index d18881644..712bd0feb 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch +++ b/debian/patches/features/all/rt/0134-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch @@ -1,6 +1,8 @@ -Subject: hrtimer: Don't call the timer handler from hrtimer_start +From 93372bd3d6ccc46305bf60c940da0a85f8c4674f Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Aug 12 17:39:54 CEST 2011 +Date: Fri, 12 Aug 2011 17:39:54 +0200 +Subject: [PATCH 134/267] hrtimer: Don't call the timer handler from + hrtimer_start [] __delay+0xf/0x11 [] do_raw_spin_lock+0xd2/0x13c @@ -30,11 +32,11 @@ Signed-off-by: Peter Zijlstra kernel/hrtimer.c | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) -Index: linux-3.2/kernel/hrtimer.c -=================================================================== ---- linux-3.2.orig/kernel/hrtimer.c -+++ linux-3.2/kernel/hrtimer.c -@@ -646,37 +646,24 @@ static inline int hrtimer_enqueue_reprog +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 1dd627b..358442b 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -646,37 +646,24 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, struct hrtimer_clock_base *base, int wakeup) { @@ -82,7 +84,7 @@ Index: linux-3.2/kernel/hrtimer.c } return 0; -@@ -1046,8 +1033,19 @@ int __hrtimer_start_range_ns(struct hrti +@@ -1046,8 +1033,19 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, * * XXX send_remote_softirq() ? */ @@ -104,3 +106,6 @@ Index: linux-3.2/kernel/hrtimer.c unlock_hrtimer_base(timer, &flags); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/0135-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch b/debian/patches/features/all/rt/0135-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch new file mode 100644 index 000000000..3a0dbd08d --- /dev/null +++ b/debian/patches/features/all/rt/0135-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch @@ -0,0 +1,41 @@ +From 6d0f369ac20fb888983eff59ce6cb1ec93e815c5 Mon Sep 17 00:00:00 2001 +From: Yong Zhang +Date: Thu, 13 Oct 2011 15:52:30 +0800 +Subject: [PATCH 135/267] hrtimer: Add missing debug_activate() aid [Was: Re: + [ANNOUNCE] 3.0.6-rt17] + +On Fri, Oct 07, 2011 at 10:25:25AM -0700, Fernando Lopez-Lezcano wrote: +> On 10/06/2011 06:15 PM, Thomas Gleixner wrote: +> >Dear RT Folks, +> > +> >I'm pleased to announce the 3.0.6-rt17 release. +> +> Hi and thanks again. So far this one is not hanging which is very +> good news. But I still see the hrtimer_fixup_activate warnings I +> reported for rt16... + +Hi Fernando, + +I think below patch will smooth your concern? + +Thanks, +Yong +--- + kernel/hrtimer.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 358442b..d363df8 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -1042,6 +1042,7 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, + * remove it again and report a failure. This avoids + * stale base->first entries. + */ ++ debug_deactivate(timer); + __remove_hrtimer(timer, new_base, + timer->state & HRTIMER_STATE_CALLBACK, 0); + } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch b/debian/patches/features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch similarity index 64% rename from debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch rename to debian/patches/features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch index 1fe2d31de..38990f174 100644 --- a/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch +++ b/debian/patches/features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch @@ -1,17 +1,18 @@ -Subject: hrtimer-fix-reprogram-madness.patch +From 11270c5af082cf02a5971fba8a5bb4bf6fe672e0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 14 Sep 2011 14:48:43 +0200 +Subject: [PATCH 136/267] hrtimer-fix-reprogram-madness.patch Signed-off-by: Thomas Gleixner --- kernel/hrtimer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) -Index: linux-3.2/kernel/hrtimer.c -=================================================================== ---- linux-3.2.orig/kernel/hrtimer.c -+++ linux-3.2/kernel/hrtimer.c -@@ -1317,7 +1317,11 @@ static void hrtimer_rt_reprogram(int res +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index d363df8..3991464 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -1317,7 +1317,11 @@ static void hrtimer_rt_reprogram(int restart, struct hrtimer *timer, if (!enqueue_hrtimer(timer, base)) return; @@ -24,7 +25,7 @@ Index: linux-3.2/kernel/hrtimer.c goto requeue; } else if (hrtimer_active(timer)) { -@@ -1326,6 +1330,7 @@ static void hrtimer_rt_reprogram(int res +@@ -1326,6 +1330,7 @@ static void hrtimer_rt_reprogram(int restart, struct hrtimer *timer, * the event device. */ if (&timer->node == base->active.next && @@ -40,3 +41,6 @@ Index: linux-3.2/kernel/hrtimer.c } /* +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch b/debian/patches/features/all/rt/0137-timer-fd-Prevent-live-lock.patch similarity index 67% rename from debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch rename to debian/patches/features/all/rt/0137-timer-fd-Prevent-live-lock.patch index e53edfa50..bdc1a75df 100644 --- a/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch +++ b/debian/patches/features/all/rt/0137-timer-fd-Prevent-live-lock.patch @@ -1,6 +1,7 @@ -Subject: timer-fd: Prevent live lock +From 321813f096f30c329dccf035a7c12dade475116f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 25 Jan 2012 11:08:40 +0100 +Subject: [PATCH 137/267] timer-fd: Prevent live lock If hrtimer_try_to_cancel() requires a retry, then depending on the priority setting te retry loop might prevent timer callback completion @@ -14,11 +15,11 @@ Cc: stable-rt@vger.kernel.org fs/timerfd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/fs/timerfd.c -=================================================================== ---- linux-3.2.orig/fs/timerfd.c -+++ linux-3.2/fs/timerfd.c -@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, uf +diff --git a/fs/timerfd.c b/fs/timerfd.c +index dffeb37..57f0e4e 100644 +--- a/fs/timerfd.c ++++ b/fs/timerfd.c +@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags, if (hrtimer_try_to_cancel(&ctx->tmr) >= 0) break; spin_unlock_irq(&ctx->wqh.lock); @@ -27,3 +28,6 @@ Index: linux-3.2/fs/timerfd.c } /* +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch b/debian/patches/features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch similarity index 85% rename from debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch rename to debian/patches/features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch index 68976f5df..ef8e7915f 100644 --- a/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch +++ b/debian/patches/features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch @@ -1,6 +1,7 @@ +From 2ae10b4578ddd05bec615c8b112521ece75f4dba Mon Sep 17 00:00:00 2001 From: John Stultz Date: Fri, 3 Jul 2009 08:29:58 -0500 -Subject: posix-timers: thread posix-cpu-timers on -rt +Subject: [PATCH 138/267] posix-timers: thread posix-cpu-timers on -rt posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. @@ -9,19 +10,18 @@ context. Move it to a thread. Signed-off-by: John Stultz Signed-off-by: Thomas Gleixner - --- - include/linux/init_task.h | 7 + - include/linux/sched.h | 3 - init/main.c | 1 - kernel/fork.c | 3 - kernel/posix-cpu-timers.c | 182 ++++++++++++++++++++++++++++++++++++++++++++-- + include/linux/init_task.h | 7 ++ + include/linux/sched.h | 3 + + init/main.c | 1 + + kernel/fork.c | 3 + + kernel/posix-cpu-timers.c | 182 +++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 190 insertions(+), 6 deletions(-) -Index: linux-3.2/include/linux/init_task.h -=================================================================== ---- linux-3.2.orig/include/linux/init_task.h -+++ linux-3.2/include/linux/init_task.h +diff --git a/include/linux/init_task.h b/include/linux/init_task.h +index 32574ee..cfd9f8d 100644 +--- a/include/linux/init_task.h ++++ b/include/linux/init_task.h @@ -126,6 +126,12 @@ extern struct cred init_cred; # define INIT_PERF_EVENTS(tsk) #endif @@ -43,10 +43,10 @@ Index: linux-3.2/include/linux/init_task.h .pids = { \ [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \ [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ -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 30ac0b5..9ff731d 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1355,6 +1355,9 @@ struct task_struct { struct task_cputime cputime_expires; @@ -57,10 +57,10 @@ Index: linux-3.2/include/linux/sched.h /* process credentials */ const struct cred __rcu *real_cred; /* objective and real subjective task -Index: linux-3.2/init/main.c -=================================================================== ---- linux-3.2.orig/init/main.c -+++ linux-3.2/init/main.c +diff --git a/init/main.c b/init/main.c +index 0e274f9..0c41665 100644 +--- a/init/main.c ++++ b/init/main.c @@ -68,6 +68,7 @@ #include #include @@ -69,11 +69,11 @@ Index: linux-3.2/init/main.c #include #include -Index: linux-3.2/kernel/fork.c -=================================================================== ---- linux-3.2.orig/kernel/fork.c -+++ linux-3.2/kernel/fork.c -@@ -1023,6 +1023,9 @@ void mm_init_owner(struct mm_struct *mm, +diff --git a/kernel/fork.c b/kernel/fork.c +index 7992f54..d8027e9 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1026,6 +1026,9 @@ void mm_init_owner(struct mm_struct *mm, struct task_struct *p) */ static void posix_cpu_timers_init(struct task_struct *tsk) { @@ -83,11 +83,11 @@ Index: linux-3.2/kernel/fork.c tsk->cputime_expires.prof_exp = cputime_zero; tsk->cputime_expires.virt_exp = cputime_zero; tsk->cputime_expires.sched_exp = 0; -Index: linux-3.2/kernel/posix-cpu-timers.c -=================================================================== ---- linux-3.2.orig/kernel/posix-cpu-timers.c -+++ linux-3.2/kernel/posix-cpu-timers.c -@@ -701,7 +701,7 @@ static int posix_cpu_timer_set(struct k_ +diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c +index e7cb76d..17336ab 100644 +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c +@@ -701,7 +701,7 @@ static int posix_cpu_timer_set(struct k_itimer *timer, int flags, /* * Disarm any old timer after extracting its expiry time. */ @@ -96,7 +96,7 @@ Index: linux-3.2/kernel/posix-cpu-timers.c ret = 0; old_incr = timer->it.cpu.incr; -@@ -1223,7 +1223,7 @@ void posix_cpu_timer_schedule(struct k_i +@@ -1223,7 +1223,7 @@ void posix_cpu_timer_schedule(struct k_itimer *timer) /* * Now re-arm for the new expiry time. */ @@ -105,7 +105,7 @@ Index: linux-3.2/kernel/posix-cpu-timers.c arm_timer(timer); spin_unlock(&p->sighand->siglock); -@@ -1290,10 +1290,11 @@ static inline int fastpath_timer_check(s +@@ -1290,10 +1290,11 @@ static inline int fastpath_timer_check(struct task_struct *tsk) sig = tsk->signal; if (sig->cputimer.running) { struct task_cputime group_sample; @@ -119,7 +119,7 @@ Index: linux-3.2/kernel/posix-cpu-timers.c if (task_cputime_expired(&group_sample, &sig->cputime_expires)) return 1; -@@ -1307,13 +1308,13 @@ static inline int fastpath_timer_check(s +@@ -1307,13 +1308,13 @@ static inline int fastpath_timer_check(struct task_struct *tsk) * already updated our counts. We need to check if any timers fire now. * Interrupts are disabled. */ @@ -135,7 +135,7 @@ Index: linux-3.2/kernel/posix-cpu-timers.c /* * The fast path checks that there are no expired thread or thread -@@ -1371,6 +1372,175 @@ void run_posix_cpu_timers(struct task_st +@@ -1371,6 +1372,175 @@ void run_posix_cpu_timers(struct task_struct *tsk) } } @@ -311,3 +311,6 @@ Index: linux-3.2/kernel/posix-cpu-timers.c /* * Set one of the process-wide special case CPU timers or RLIMIT_CPU. * The tsk->sighand->siglock must be held by the caller. +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch b/debian/patches/features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch similarity index 62% rename from debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch rename to debian/patches/features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch index e82289db4..132276e91 100644 --- a/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch +++ b/debian/patches/features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch @@ -1,6 +1,8 @@ +From 34fed7c7e788f6c7594b51c3d1bba4cf047d6c0a Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Fri, 3 Jul 2009 08:30:00 -0500 -Subject: posix-timers: Shorten posix_cpu_timers/ kernel thread names +Subject: [PATCH 139/267] posix-timers: Shorten posix_cpu_timers/ kernel + thread names Shorten the softirq kernel thread names because they always overflow the limited comm length, appearing as "posix_cpu_timer" CPU# times. @@ -8,16 +10,15 @@ limited comm length, appearing as "posix_cpu_timer" CPU# times. Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/posix-cpu-timers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/posix-cpu-timers.c -=================================================================== ---- linux-3.2.orig/kernel/posix-cpu-timers.c -+++ linux-3.2/kernel/posix-cpu-timers.c -@@ -1479,7 +1479,7 @@ static int posix_cpu_thread_call(struct +diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c +index 17336ab..fb350d7 100644 +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c +@@ -1479,7 +1479,7 @@ static int posix_cpu_thread_call(struct notifier_block *nfb, switch (action) { case CPU_UP_PREPARE: p = kthread_create(posix_cpu_timers_thread, hcpu, @@ -26,3 +27,6 @@ Index: linux-3.2/kernel/posix-cpu-timers.c if (IS_ERR(p)) return NOTIFY_BAD; p->flags |= PF_NOFREEZE; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch b/debian/patches/features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch similarity index 73% rename from debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch rename to debian/patches/features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch index 9ed6d77a3..eacd079a2 100644 --- a/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch +++ b/debian/patches/features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch @@ -1,19 +1,20 @@ +From 7953f114c1cf0bc5b923515b856c9098f7d91ce4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:44 -0500 -Subject: posix-timers: Avoid wakeups when no timers are active +Subject: [PATCH 140/267] posix-timers: Avoid wakeups when no timers are + active Waking the thread even when no timers are scheduled is useless. Signed-off-by: Thomas Gleixner - --- kernel/posix-cpu-timers.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) -Index: linux-3.2/kernel/posix-cpu-timers.c -=================================================================== ---- linux-3.2.orig/kernel/posix-cpu-timers.c -+++ linux-3.2/kernel/posix-cpu-timers.c +diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c +index fb350d7..1d4c609 100644 +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c @@ -1436,6 +1436,21 @@ wait_to_die: return 0; } @@ -36,7 +37,7 @@ Index: linux-3.2/kernel/posix-cpu-timers.c void run_posix_cpu_timers(struct task_struct *tsk) { unsigned long cpu = smp_processor_id(); -@@ -1448,7 +1463,7 @@ void run_posix_cpu_timers(struct task_st +@@ -1448,7 +1463,7 @@ void run_posix_cpu_timers(struct task_struct *tsk) tasklist = per_cpu(posix_timer_tasklist, cpu); /* check to see if we're already queued */ @@ -45,7 +46,7 @@ Index: linux-3.2/kernel/posix-cpu-timers.c get_task_struct(tsk); if (tasklist) { tsk->posix_timer_list = tasklist; -@@ -1460,9 +1475,9 @@ void run_posix_cpu_timers(struct task_st +@@ -1460,9 +1475,9 @@ void run_posix_cpu_timers(struct task_struct *tsk) tsk->posix_timer_list = tsk; } per_cpu(posix_timer_tasklist, cpu) = tsk; @@ -57,3 +58,6 @@ Index: linux-3.2/kernel/posix-cpu-timers.c } /* +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-delay-put-task.patch b/debian/patches/features/all/rt/0141-sched-delay-put-task.patch.patch similarity index 75% rename from debian/patches/features/all/rt/sched-delay-put-task.patch rename to debian/patches/features/all/rt/0141-sched-delay-put-task.patch.patch index 6aa1d927e..bff90a34c 100644 --- a/debian/patches/features/all/rt/sched-delay-put-task.patch +++ b/debian/patches/features/all/rt/0141-sched-delay-put-task.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-delay-put-task.patch +From bb265465ad0828b002fb95edbb8fdd92f5bd75e3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 31 May 2011 16:59:16 +0200 +Subject: [PATCH 141/267] sched-delay-put-task.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/fork.c | 11 +++++++++++ 2 files changed, 24 insertions(+) -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 9ff731d..fb5e51f 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1591,6 +1591,9 @@ struct task_struct { #ifdef CONFIG_HAVE_HW_BREAKPOINT atomic_t ptrace_bp_refcnt; @@ -38,7 +39,7 @@ Index: linux-3.2/include/linux/sched.h extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) -@@ -1782,6 +1794,7 @@ static inline void put_task_struct(struc +@@ -1782,6 +1794,7 @@ static inline void put_task_struct(struct task_struct *t) if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } @@ -46,11 +47,11 @@ Index: linux-3.2/include/linux/sched.h extern void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st); extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *st); -Index: linux-3.2/kernel/fork.c -=================================================================== ---- linux-3.2.orig/kernel/fork.c -+++ linux-3.2/kernel/fork.c -@@ -196,7 +196,18 @@ void __put_task_struct(struct task_struc +diff --git a/kernel/fork.c b/kernel/fork.c +index d8027e9..fe49c39 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -197,7 +197,18 @@ void __put_task_struct(struct task_struct *tsk) if (!profile_handoff_task(tsk)) free_task(tsk); } @@ -69,3 +70,6 @@ Index: linux-3.2/kernel/fork.c /* * macro override instead of weak attribute alias, to workaround +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-limit-nr-migrate.patch b/debian/patches/features/all/rt/0142-sched-limit-nr-migrate.patch.patch similarity index 65% rename from debian/patches/features/all/rt/sched-limit-nr-migrate.patch rename to debian/patches/features/all/rt/0142-sched-limit-nr-migrate.patch.patch index 4719bfd3f..19aa011c2 100644 --- a/debian/patches/features/all/rt/sched-limit-nr-migrate.patch +++ b/debian/patches/features/all/rt/0142-sched-limit-nr-migrate.patch.patch @@ -1,16 +1,17 @@ -Subject: sched-limit-nr-migrate.patch +From c9d7f9417dea7fcc17f2b73d1a75e4af21749523 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Mon, 06 Jun 2011 12:12:51 +0200 +Date: Mon, 6 Jun 2011 12:12:51 +0200 +Subject: [PATCH 142/267] sched-limit-nr-migrate.patch Signed-off-by: Thomas Gleixner --- kernel/sched.c | 4 ++++ 1 file changed, 4 insertions(+) -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 c47e7a6..6e2bf9e 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -942,7 +942,11 @@ late_initcall(sched_init_debug); * Number of tasks to iterate in a single balance run. * Limited because this is done with IRQs disabled. @@ -23,3 +24,6 @@ Index: linux-3.2/kernel/sched.c /* * period over which we average the RT time consumption, measured +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-mmdrop-delayed.patch b/debian/patches/features/all/rt/0143-sched-mmdrop-delayed.patch.patch similarity index 75% rename from debian/patches/features/all/rt/sched-mmdrop-delayed.patch rename to debian/patches/features/all/rt/0143-sched-mmdrop-delayed.patch.patch index 0ffb3e929..77c3d832f 100644 --- a/debian/patches/features/all/rt/sched-mmdrop-delayed.patch +++ b/debian/patches/features/all/rt/0143-sched-mmdrop-delayed.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-mmdrop-delayed.patch +From 1805ca21bb9a0b15cb8976b854d378ba78634575 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Mon, 06 Jun 2011 12:20:33 +0200 +Date: Mon, 6 Jun 2011 12:20:33 +0200 +Subject: [PATCH 143/267] sched-mmdrop-delayed.patch Needs thread context (pgd_lock) -> ifdeffed. workqueues wont work with RT @@ -13,10 +14,10 @@ Signed-off-by: Thomas Gleixner kernel/sched.c | 21 +++++++++++++++++++-- 4 files changed, 49 insertions(+), 3 deletions(-) -Index: linux-3.2/include/linux/mm_types.h -=================================================================== ---- linux-3.2.orig/include/linux/mm_types.h -+++ linux-3.2/include/linux/mm_types.h +diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h +index 1ec126f..c303a27 100644 +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h @@ -12,6 +12,7 @@ #include #include @@ -35,11 +36,11 @@ Index: linux-3.2/include/linux/mm_types.h }; static inline void mm_init_cpumask(struct mm_struct *mm) -Index: linux-3.2/include/linux/sched.h -=================================================================== ---- linux-3.2.orig/include/linux/sched.h -+++ linux-3.2/include/linux/sched.h -@@ -2268,12 +2268,24 @@ extern struct mm_struct * mm_alloc(void) +diff --git a/include/linux/sched.h b/include/linux/sched.h +index fb5e51f..e6f37ca 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2268,12 +2268,24 @@ extern struct mm_struct * mm_alloc(void); /* mmdrop drops the mm and the page tables */ extern void __mmdrop(struct mm_struct *); @@ -64,11 +65,11 @@ Index: linux-3.2/include/linux/sched.h /* mmput gets rid of the mappings and all user-space */ extern void mmput(struct mm_struct *); /* Grab a reference to a task's mm, if it is not already going away */ -Index: linux-3.2/kernel/fork.c -=================================================================== ---- linux-3.2.orig/kernel/fork.c -+++ linux-3.2/kernel/fork.c -@@ -201,7 +201,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct); +diff --git a/kernel/fork.c b/kernel/fork.c +index fe49c39..78e5e6a 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -202,7 +202,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct); #else void __put_task_struct_cb(struct rcu_head *rhp) { @@ -77,7 +78,7 @@ Index: linux-3.2/kernel/fork.c __put_task_struct(tsk); -@@ -552,6 +552,19 @@ void __mmdrop(struct mm_struct *mm) +@@ -553,6 +553,19 @@ void __mmdrop(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(__mmdrop); @@ -97,11 +98,11 @@ Index: linux-3.2/kernel/fork.c /* * Decrement the use count and release all resources for an mm. */ -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -3174,8 +3174,12 @@ static void finish_task_switch(struct rq +diff --git a/kernel/sched.c b/kernel/sched.c +index 6e2bf9e..3ff2d0f 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -3174,8 +3174,12 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev) finish_lock_switch(rq, prev); fire_sched_in_preempt_notifiers(current); @@ -115,7 +116,7 @@ Index: linux-3.2/kernel/sched.c if (unlikely(prev_state == TASK_DEAD)) { /* * Remove function-return probe instances associated with this -@@ -6303,6 +6307,8 @@ static int migration_cpu_stop(void *data +@@ -6303,6 +6307,8 @@ static int migration_cpu_stop(void *data) #ifdef CONFIG_HOTPLUG_CPU @@ -138,7 +139,7 @@ Index: linux-3.2/kernel/sched.c } /* -@@ -6660,6 +6671,12 @@ migration_call(struct notifier_block *nf +@@ -6660,6 +6671,12 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) migrate_nr_uninterruptible(rq); calc_global_load_remove(rq); break; @@ -151,3 +152,6 @@ Index: linux-3.2/kernel/sched.c #endif } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch b/debian/patches/features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch similarity index 79% rename from debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch rename to debian/patches/features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch index 7dcf79660..2e4e55397 100644 --- a/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch +++ b/debian/patches/features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-rt-mutex-wakeup.patch +From a0b8c6ebdaee8a3dd0a55d9df418aa28d0175d49 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 25 Jun 2011 09:21:04 +0200 +Subject: [PATCH 144/267] sched-rt-mutex-wakeup.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/sched.c | 31 ++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) -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 e6f37ca..6c20349 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1072,6 +1072,7 @@ struct sched_domain; #define WF_SYNC 0x01 /* waker goes to sleep after wakup */ #define WF_FORK 0x02 /* child wakeup after fork */ @@ -28,7 +29,7 @@ Index: linux-3.2/include/linux/sched.h void *stack; atomic_t usage; unsigned int flags; /* per process flags, defined below */ -@@ -2178,6 +2180,7 @@ extern void xtime_update(unsigned long t +@@ -2178,6 +2180,7 @@ extern void xtime_update(unsigned long ticks); extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); @@ -36,11 +37,11 @@ Index: linux-3.2/include/linux/sched.h extern void wake_up_new_task(struct task_struct *tsk); #ifdef CONFIG_SMP extern void kick_process(struct task_struct *tsk); -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -2827,8 +2827,25 @@ try_to_wake_up(struct task_struct *p, un +diff --git a/kernel/sched.c b/kernel/sched.c +index 3ff2d0f..f101d97 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -2827,8 +2827,25 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) smp_wmb(); raw_spin_lock_irqsave(&p->pi_lock, flags); @@ -67,7 +68,7 @@ Index: linux-3.2/kernel/sched.c success = 1; /* we're going to change ->state */ cpu = task_cpu(p); -@@ -2900,6 +2917,18 @@ int wake_up_process(struct task_struct * +@@ -2900,6 +2917,18 @@ int wake_up_process(struct task_struct *p) } EXPORT_SYMBOL(wake_up_process); @@ -86,3 +87,6 @@ Index: linux-3.2/kernel/sched.c int wake_up_state(struct task_struct *p, unsigned int state) { return try_to_wake_up(p, state, 0); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-prevent-idle-boost.patch b/debian/patches/features/all/rt/0145-sched-prevent-idle-boost.patch.patch similarity index 76% rename from debian/patches/features/all/rt/sched-prevent-idle-boost.patch rename to debian/patches/features/all/rt/0145-sched-prevent-idle-boost.patch.patch index 923c8244f..344d62030 100644 --- a/debian/patches/features/all/rt/sched-prevent-idle-boost.patch +++ b/debian/patches/features/all/rt/0145-sched-prevent-idle-boost.patch.patch @@ -1,17 +1,18 @@ -Subject: sched-prevent-idle-boost.patch +From 2cf8fbc8ec1ba087782bc59ae4e452bd42d6c9e2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Mon, 06 Jun 2011 20:07:38 +0200 +Date: Mon, 6 Jun 2011 20:07:38 +0200 +Subject: [PATCH 145/267] sched-prevent-idle-boost.patch Signed-off-by: Thomas Gleixner --- kernel/sched.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -5037,6 +5037,24 @@ void rt_mutex_setprio(struct task_struct +diff --git a/kernel/sched.c b/kernel/sched.c +index f101d97..b813946 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -5037,6 +5037,24 @@ void rt_mutex_setprio(struct task_struct *p, int prio) rq = __task_rq_lock(p); @@ -36,7 +37,7 @@ Index: linux-3.2/kernel/sched.c trace_sched_pi_setprio(p, prio); oldprio = p->prio; prev_class = p->sched_class; -@@ -5060,11 +5078,10 @@ void rt_mutex_setprio(struct task_struct +@@ -5060,11 +5078,10 @@ void rt_mutex_setprio(struct task_struct *p, int prio) enqueue_task(rq, p, oldprio < prio ? ENQUEUE_HEAD : 0); check_class_changed(rq, p, prev_class, oldprio); @@ -49,3 +50,6 @@ Index: linux-3.2/kernel/sched.c void set_user_nice(struct task_struct *p, long nice) { int old_prio, delta, on_rq; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch b/debian/patches/features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch similarity index 67% rename from debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch rename to debian/patches/features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch index b53032f7b..0402a2d1c 100644 --- a/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch +++ b/debian/patches/features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-might-sleep-do-not-account-rcu-depth.patch +From d6f44ae26c31cf3d826165f0013cfa21a7aaa079 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Tue, 07 Jun 2011 09:19:06 +0200 +Date: Tue, 7 Jun 2011 09:19:06 +0200 +Subject: [PATCH 146/267] sched-might-sleep-do-not-account-rcu-depth.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/sched.c | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) -Index: linux-3.2/include/linux/rcupdate.h -=================================================================== ---- linux-3.2.orig/include/linux/rcupdate.h -+++ linux-3.2/include/linux/rcupdate.h +diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h +index 2cf4226..a0082e2 100644 +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h @@ -147,6 +147,11 @@ void synchronize_rcu(void); * types of kernel builds, the rcu_read_lock() nesting depth is unknowable. */ @@ -24,7 +25,7 @@ Index: linux-3.2/include/linux/rcupdate.h #else /* #ifdef CONFIG_PREEMPT_RCU */ -@@ -170,6 +175,8 @@ static inline int rcu_preempt_depth(void +@@ -170,6 +175,8 @@ static inline int rcu_preempt_depth(void) return 0; } @@ -33,10 +34,10 @@ Index: linux-3.2/include/linux/rcupdate.h #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ /* Internal to kernel */ -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 b813946..aa3cc02 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -8429,7 +8429,8 @@ void __init sched_init(void) #ifdef CONFIG_DEBUG_ATOMIC_SLEEP static inline int preempt_count_equals(int preempt_offset) @@ -47,3 +48,6 @@ Index: linux-3.2/kernel/sched.c return (nested == preempt_offset); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-load-balance-break-on-rq-contention.patch b/debian/patches/features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch similarity index 65% rename from debian/patches/features/all/rt/sched-load-balance-break-on-rq-contention.patch rename to debian/patches/features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch index acc98897e..3367e88c2 100644 --- a/debian/patches/features/all/rt/sched-load-balance-break-on-rq-contention.patch +++ b/debian/patches/features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch @@ -1,21 +1,22 @@ +From 99413c8e97ac85b7f0d29603625302a76aa06e1e Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Tue, 16 Mar 2010 14:31:44 -0700 -Subject: sched: Break out from load_balancing on rq_lock contention +Subject: [PATCH 147/267] sched: Break out from load_balancing on rq_lock + contention Also limit NEW_IDLE pull Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner - --- kernel/sched_fair.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) -Index: linux-3.2/kernel/sched_fair.c -=================================================================== ---- linux-3.2.orig/kernel/sched_fair.c -+++ linux-3.2/kernel/sched_fair.c -@@ -2899,6 +2899,10 @@ balance_tasks(struct rq *this_rq, int th +diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c +index 8a39fa3..3747e53 100644 +--- a/kernel/sched_fair.c ++++ b/kernel/sched_fair.c +@@ -2899,6 +2899,10 @@ balance_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest, */ if (idle == CPU_NEWLY_IDLE) break; @@ -26,7 +27,7 @@ Index: linux-3.2/kernel/sched_fair.c #endif /* -@@ -3039,6 +3043,20 @@ load_balance_fair(struct rq *this_rq, in +@@ -3039,6 +3043,20 @@ load_balance_fair(struct rq *this_rq, int this_cpu, struct rq *busiest, rem_load_move -= moved_load; if (rem_load_move < 0) break; @@ -47,3 +48,6 @@ Index: linux-3.2/kernel/sched_fair.c } rcu_read_unlock(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-cond-resched.patch b/debian/patches/features/all/rt/0148-sched-cond-resched.patch.patch similarity index 69% rename from debian/patches/features/all/rt/sched-cond-resched.patch rename to debian/patches/features/all/rt/0148-sched-cond-resched.patch.patch index 71b55ac25..ba6c05a20 100644 --- a/debian/patches/features/all/rt/sched-cond-resched.patch +++ b/debian/patches/features/all/rt/0148-sched-cond-resched.patch.patch @@ -1,16 +1,17 @@ -Subject: sched-cond-resched.patch +From 74dde8bd22fa29f1dc21a3e2a6ed93fdbda04374 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Tue, 07 Jun 2011 11:25:03 +0200 +Date: Tue, 7 Jun 2011 11:25:03 +0200 +Subject: [PATCH 148/267] sched-cond-resched.patch Signed-off-by: Thomas Gleixner --- kernel/sched.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) -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 aa3cc02..42d0003 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -5775,9 +5775,17 @@ static inline int should_resched(void) static void __cond_resched(void) @@ -32,3 +33,6 @@ Index: linux-3.2/kernel/sched.c } int __sched _cond_resched(void) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/cond-resched-softirq-rt.patch b/debian/patches/features/all/rt/0149-cond-resched-softirq-fix.patch.patch similarity index 68% rename from debian/patches/features/all/rt/cond-resched-softirq-rt.patch rename to debian/patches/features/all/rt/0149-cond-resched-softirq-fix.patch.patch index 274dbedda..7f0d77200 100644 --- a/debian/patches/features/all/rt/cond-resched-softirq-rt.patch +++ b/debian/patches/features/all/rt/0149-cond-resched-softirq-fix.patch.patch @@ -1,6 +1,7 @@ -Subject: cond-resched-softirq-fix.patch +From 1a9f6b8b37a41e2b59c1989b461bf5b1fbecb50e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 14 Jul 2011 09:56:44 +0200 +Subject: [PATCH 149/267] cond-resched-softirq-fix.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/sched.c | 2 ++ 2 files changed, 6 insertions(+) -Index: linux-3.2/include/linux/sched.h -=================================================================== ---- linux-3.2.orig/include/linux/sched.h -+++ linux-3.2/include/linux/sched.h -@@ -2602,12 +2602,16 @@ extern int __cond_resched_lock(spinlock_ +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 6c20349..38d78dc 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2602,12 +2602,16 @@ extern int __cond_resched_lock(spinlock_t *lock); __cond_resched_lock(lock); \ }) @@ -29,11 +30,11 @@ Index: linux-3.2/include/linux/sched.h /* * Does a critical section need to be broken due to another -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -5826,6 +5826,7 @@ int __cond_resched_lock(spinlock_t *lock +diff --git a/kernel/sched.c b/kernel/sched.c +index 42d0003..af3883b 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -5826,6 +5826,7 @@ int __cond_resched_lock(spinlock_t *lock) } EXPORT_SYMBOL(__cond_resched_lock); @@ -49,3 +50,6 @@ Index: linux-3.2/kernel/sched.c /** * yield - yield the current processor to other threads. +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-no-work-when-pi-blocked.patch b/debian/patches/features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch similarity index 71% rename from debian/patches/features/all/rt/sched-no-work-when-pi-blocked.patch rename to debian/patches/features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch index 0c9363a0f..2374e3e12 100644 --- a/debian/patches/features/all/rt/sched-no-work-when-pi-blocked.patch +++ b/debian/patches/features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-no-work-when-pi-blocked.patch +From dd97a1f5ab811d126ed8fff8fd9dc43dbbb845ee Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 20:46:52 +0200 +Subject: [PATCH 150/267] sched-no-work-when-pi-blocked.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/sched.c | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) -Index: linux-3.2/include/linux/sched.h -=================================================================== ---- linux-3.2.orig/include/linux/sched.h -+++ linux-3.2/include/linux/sched.h -@@ -2095,12 +2095,20 @@ extern unsigned int sysctl_sched_cfs_ban +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 38d78dc..99e7f8b 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2095,12 +2095,20 @@ extern unsigned int sysctl_sched_cfs_bandwidth_slice; extern int rt_mutex_getprio(struct task_struct *p); extern void rt_mutex_setprio(struct task_struct *p, int prio); extern void rt_mutex_adjust_pi(struct task_struct *p); @@ -33,10 +34,10 @@ Index: linux-3.2/include/linux/sched.h #endif extern bool yield_to(struct task_struct *p, bool preempt); -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 af3883b..5b871cb 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -4461,7 +4461,7 @@ need_resched: static inline void sched_submit_work(struct task_struct *tsk) @@ -46,7 +47,7 @@ Index: linux-3.2/kernel/sched.c return; /* -@@ -4481,6 +4481,9 @@ static inline void sched_submit_work(str +@@ -4481,6 +4481,9 @@ static inline void sched_submit_work(struct task_struct *tsk) static inline void sched_update_worker(struct task_struct *tsk) { @@ -56,3 +57,6 @@ Index: linux-3.2/kernel/sched.c if (tsk->flags & PF_WQ_WORKER) wq_worker_running(tsk); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch b/debian/patches/features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch similarity index 64% rename from debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch rename to debian/patches/features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch index 89bd8c6a3..3815ab8f3 100644 --- a/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch +++ b/debian/patches/features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch @@ -1,16 +1,17 @@ -Subject: cond-resched-lock-rt-tweak.patch +From 5136313c61afded30a8da141ae60d4bca90b0cf2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:51:33 +0200 +Subject: [PATCH 151/267] cond-resched-lock-rt-tweak.patch Signed-off-by: Thomas Gleixner --- include/linux/sched.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -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 99e7f8b..175aaee 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -2599,7 +2599,7 @@ extern int _cond_resched(void); extern int __cond_resched_lock(spinlock_t *lock); @@ -20,3 +21,6 @@ Index: linux-3.2/include/linux/sched.h #define PREEMPT_LOCK_OFFSET PREEMPT_OFFSET #else #define PREEMPT_LOCK_OFFSET 0 +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch b/debian/patches/features/all/rt/0152-sched-disable-ttwu-queue.patch.patch similarity index 67% rename from debian/patches/features/all/rt/sched-disable-ttwu-queue.patch rename to debian/patches/features/all/rt/0152-sched-disable-ttwu-queue.patch.patch index d024e8bce..7b47d398b 100644 --- a/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch +++ b/debian/patches/features/all/rt/0152-sched-disable-ttwu-queue.patch.patch @@ -1,16 +1,17 @@ -Subject: sched-disable-ttwu-queue.patch +From 0366f3687cfda21ddb7b00c56165439afb0a2ffb Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 13 Sep 2011 16:42:35 +0200 +Subject: [PATCH 152/267] sched-disable-ttwu-queue.patch Signed-off-by: Thomas Gleixner --- kernel/sched_features.h | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-3.2/kernel/sched_features.h -=================================================================== ---- linux-3.2.orig/kernel/sched_features.h -+++ linux-3.2/kernel/sched_features.h +diff --git a/kernel/sched_features.h b/kernel/sched_features.h +index 8480224..0007001 100644 +--- a/kernel/sched_features.h ++++ b/kernel/sched_features.h @@ -60,11 +60,15 @@ SCHED_FEAT(OWNER_SPIN, 1) */ SCHED_FEAT(NONTASK_POWER, 1) @@ -27,3 +28,6 @@ Index: linux-3.2/kernel/sched_features.h SCHED_FEAT(FORCE_SD_OVERLAP, 0) SCHED_FEAT(RT_RUNTIME_SHARE, 1) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch b/debian/patches/features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch similarity index 74% rename from debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch rename to debian/patches/features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch index fe82cffd4..309c715e5 100644 --- a/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch +++ b/debian/patches/features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch @@ -1,6 +1,7 @@ -Subject: sched: Disable CONFIG_RT_GROUP_SCHED on RT +From 50f5bed3b9927c7527a3bace73e89af6da5a5812 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:03:52 +0200 +Subject: [PATCH 153/267] sched: Disable CONFIG_RT_GROUP_SCHED on RT Carsten reported problems when running: @@ -16,10 +17,10 @@ Signed-off-by: Thomas Gleixner init/Kconfig | 1 + 1 file changed, 1 insertion(+) -Index: linux-3.2/init/Kconfig -=================================================================== ---- linux-3.2.orig/init/Kconfig -+++ linux-3.2/init/Kconfig +diff --git a/init/Kconfig b/init/Kconfig +index dbc82d0..720c182 100644 +--- a/init/Kconfig ++++ b/init/Kconfig @@ -731,6 +731,7 @@ config RT_GROUP_SCHED bool "Group scheduling for SCHED_RR/FIFO" depends on EXPERIMENTAL @@ -28,3 +29,6 @@ Index: linux-3.2/init/Kconfig default n help This feature lets you explicitly allocate real CPU bandwidth +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch b/debian/patches/features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch similarity index 70% rename from debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch rename to debian/patches/features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch index ee320a6be..4307513ed 100644 --- a/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch +++ b/debian/patches/features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch @@ -1,6 +1,8 @@ -Subject: sched: ttwu: Return success when only changing the saved_state value +From d5d774d904f151d692b990315e6fb17cfcaedf01 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 13 Dec 2011 21:42:19 +0100 +Subject: [PATCH 154/267] sched: ttwu: Return success when only changing the + saved_state value When a task blocks on a rt lock, it saves the current state in p->saved_state, so a lock related wake up will not destroy the @@ -18,11 +20,11 @@ Cc: stable-rt@vger.kernel.org kernel/sched.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -2834,8 +2834,10 @@ try_to_wake_up(struct task_struct *p, un +diff --git a/kernel/sched.c b/kernel/sched.c +index 5b871cb..a5a4ddc 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -2834,8 +2834,10 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) * if the wakeup condition is true. */ if (!(wake_flags & WF_LOCK_SLEEPER)) { @@ -34,3 +36,6 @@ Index: linux-3.2/kernel/sched.c } goto out; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch b/debian/patches/features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch similarity index 76% rename from debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch rename to debian/patches/features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch index d80cff951..66d5fdcb6 100644 --- a/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch +++ b/debian/patches/features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch @@ -1,6 +1,8 @@ +From d85c5e002debb67bd3277d1d4308125158ca4860 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:27 -0500 -Subject: stop_machine: convert stop_machine_run() to PREEMPT_RT +Subject: [PATCH 155/267] stop_machine: convert stop_machine_run() to + PREEMPT_RT Instead of playing with non-preemption, introduce explicit startup serialization. This is more robust and cleaner as @@ -8,16 +10,15 @@ well. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/stop_machine.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) -Index: linux-3.2/kernel/stop_machine.c -=================================================================== ---- linux-3.2.orig/kernel/stop_machine.c -+++ linux-3.2/kernel/stop_machine.c -@@ -135,6 +135,7 @@ void stop_one_cpu_nowait(unsigned int cp +diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c +index 2f194e9..61779f8 100644 +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c +@@ -135,6 +135,7 @@ void stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fn, void *arg, /* static data for stop_cpus */ static DEFINE_MUTEX(stop_cpus_mutex); @@ -25,7 +26,7 @@ Index: linux-3.2/kernel/stop_machine.c static DEFINE_PER_CPU(struct cpu_stop_work, stop_cpus_work); static void queue_stop_cpus_work(const struct cpumask *cpumask, -@@ -153,15 +154,14 @@ static void queue_stop_cpus_work(const s +@@ -153,15 +154,14 @@ static void queue_stop_cpus_work(const struct cpumask *cpumask, } /* @@ -62,3 +63,6 @@ Index: linux-3.2/kernel/stop_machine.c /* cpu stop callbacks are not allowed to sleep */ preempt_disable(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch b/debian/patches/features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch similarity index 58% rename from debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch rename to debian/patches/features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch index bc8717a34..34d633823 100644 --- a/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch +++ b/debian/patches/features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch @@ -1,6 +1,7 @@ -Subject: stomp-machine-mark-stomper-thread.patch +From 1c767a07496d139da6d3e72977bd4e10b38eff84 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:53:19 +0200 +Subject: [PATCH 156/267] stomp-machine-mark-stomper-thread.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/stop_machine.c | 1 + 2 files changed, 2 insertions(+) -Index: linux-3.2/include/linux/sched.h -=================================================================== ---- linux-3.2.orig/include/linux/sched.h -+++ linux-3.2/include/linux/sched.h -@@ -1822,6 +1822,7 @@ extern void thread_group_times(struct ta +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 175aaee..6f10df5 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1822,6 +1822,7 @@ extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t * #define PF_FROZEN 0x00010000 /* frozen for system suspend */ #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ #define PF_KSWAPD 0x00040000 /* I am kswapd */ @@ -20,11 +21,11 @@ Index: linux-3.2/include/linux/sched.h #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ -Index: linux-3.2/kernel/stop_machine.c -=================================================================== ---- linux-3.2.orig/kernel/stop_machine.c -+++ linux-3.2/kernel/stop_machine.c -@@ -327,6 +327,7 @@ static int __cpuinit cpu_stop_cpu_callba +diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c +index 61779f8..484a335 100644 +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c +@@ -327,6 +327,7 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb, if (IS_ERR(p)) return notifier_from_errno(PTR_ERR(p)); get_task_struct(p); @@ -32,3 +33,6 @@ Index: linux-3.2/kernel/stop_machine.c kthread_bind(p, cpu); sched_set_stop_task(cpu, p); stopper->thread = p; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/stomp-machine-raw-lock.patch b/debian/patches/features/all/rt/0157-stomp-machine-raw-lock.patch.patch similarity index 80% rename from debian/patches/features/all/rt/stomp-machine-raw-lock.patch rename to debian/patches/features/all/rt/0157-stomp-machine-raw-lock.patch.patch index dce4325e0..070ad5b89 100644 --- a/debian/patches/features/all/rt/stomp-machine-raw-lock.patch +++ b/debian/patches/features/all/rt/0157-stomp-machine-raw-lock.patch.patch @@ -1,16 +1,17 @@ -Subject: stomp-machine-raw-lock.patch +From 3186fdbdb48a91d93b7fe5e0002969a731075380 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 11:01:51 +0200 +Subject: [PATCH 157/267] stomp-machine-raw-lock.patch Signed-off-by: Thomas Gleixner --- - kernel/stop_machine.c | 58 +++++++++++++++++++++++++++++++++++--------------- + kernel/stop_machine.c | 58 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 17 deletions(-) -Index: linux-3.2/kernel/stop_machine.c -=================================================================== ---- linux-3.2.orig/kernel/stop_machine.c -+++ linux-3.2/kernel/stop_machine.c +diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c +index 484a335..561ba3a 100644 +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c @@ -29,12 +29,12 @@ struct cpu_stop_done { atomic_t nr_todo; /* nr left to execute */ bool executed; /* actually executed? */ @@ -26,7 +27,7 @@ Index: linux-3.2/kernel/stop_machine.c bool enabled; /* is this stopper enabled? */ struct list_head works; /* list of pending works */ struct task_struct *thread; /* stopper thread */ -@@ -47,7 +47,7 @@ static void cpu_stop_init_done(struct cp +@@ -47,7 +47,7 @@ static void cpu_stop_init_done(struct cpu_stop_done *done, unsigned int nr_todo) { memset(done, 0, sizeof(*done)); atomic_set(&done->nr_todo, nr_todo); @@ -35,7 +36,7 @@ Index: linux-3.2/kernel/stop_machine.c } /* signal completion unless @done is NULL */ -@@ -56,8 +56,10 @@ static void cpu_stop_signal_done(struct +@@ -56,8 +56,10 @@ static void cpu_stop_signal_done(struct cpu_stop_done *done, bool executed) if (done) { if (executed) done->executed = true; @@ -48,7 +49,7 @@ Index: linux-3.2/kernel/stop_machine.c } } -@@ -67,7 +69,7 @@ static void cpu_stop_queue_work(struct c +@@ -67,7 +69,7 @@ static void cpu_stop_queue_work(struct cpu_stopper *stopper, { unsigned long flags; @@ -57,7 +58,7 @@ Index: linux-3.2/kernel/stop_machine.c if (stopper->enabled) { list_add_tail(&work->list, &stopper->works); -@@ -75,7 +77,23 @@ static void cpu_stop_queue_work(struct c +@@ -75,7 +77,23 @@ static void cpu_stop_queue_work(struct cpu_stopper *stopper, } else cpu_stop_signal_done(work->done, false); @@ -82,7 +83,7 @@ Index: linux-3.2/kernel/stop_machine.c } /** -@@ -109,7 +127,7 @@ int stop_one_cpu(unsigned int cpu, cpu_s +@@ -109,7 +127,7 @@ int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, void *arg) cpu_stop_init_done(&done, 1); cpu_stop_queue_work(&per_cpu(cpu_stopper, cpu), &work); @@ -91,7 +92,7 @@ Index: linux-3.2/kernel/stop_machine.c return done.executed ? done.ret : -ENOENT; } -@@ -171,7 +189,7 @@ static int __stop_cpus(const struct cpum +@@ -171,7 +189,7 @@ static int __stop_cpus(const struct cpumask *cpumask, cpu_stop_init_done(&done, cpumask_weight(cpumask)); queue_stop_cpus_work(cpumask, fn, arg, &done); @@ -130,7 +131,7 @@ Index: linux-3.2/kernel/stop_machine.c } else schedule(); -@@ -337,9 +361,9 @@ static int __cpuinit cpu_stop_cpu_callba +@@ -337,9 +361,9 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb, /* strictly unnecessary, as first user will wake it */ wake_up_process(stopper->thread); /* mark enabled */ @@ -142,7 +143,7 @@ Index: linux-3.2/kernel/stop_machine.c break; #ifdef CONFIG_HOTPLUG_CPU -@@ -352,11 +376,11 @@ static int __cpuinit cpu_stop_cpu_callba +@@ -352,11 +376,11 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb, /* kill the stopper */ kthread_stop(stopper->thread); /* drain remaining works */ @@ -165,7 +166,7 @@ Index: linux-3.2/kernel/stop_machine.c INIT_LIST_HEAD(&stopper->works); } -@@ -581,7 +605,7 @@ int stop_machine_from_inactive_cpu(int ( +@@ -581,7 +605,7 @@ int stop_machine_from_inactive_cpu(int (*fn)(void *), void *data, ret = stop_machine_cpu_stop(&smdata); /* Busy wait for completion. */ @@ -174,3 +175,6 @@ Index: linux-3.2/kernel/stop_machine.c cpu_relax(); mutex_unlock(&stop_cpus_mutex); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch b/debian/patches/features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch similarity index 85% rename from debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch rename to debian/patches/features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch index bb357098b..e5eb6de76 100644 --- a/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch +++ b/debian/patches/features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch @@ -1,6 +1,7 @@ -Subject: hotplug: Lightweight get online cpus +From b01967c3f8b507c25b7dd2df09e92f24e303c8b5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 15 Jun 2011 12:36:06 +0200 +Subject: [PATCH 158/267] hotplug: Lightweight get online cpus get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only @@ -12,15 +13,15 @@ tasks on the cpu which should be brought down. Signed-off-by: Thomas Gleixner --- - include/linux/cpu.h | 4 + - kernel/cpu.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++-- + include/linux/cpu.h | 4 ++ + kernel/cpu.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 128 insertions(+), 3 deletions(-) -Index: linux-3.2/include/linux/cpu.h -=================================================================== ---- linux-3.2.orig/include/linux/cpu.h -+++ linux-3.2/include/linux/cpu.h -@@ -167,6 +167,8 @@ extern struct sysdev_class cpu_sysdev_cl +diff --git a/include/linux/cpu.h b/include/linux/cpu.h +index 6cb60fd..c46ec3e 100644 +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h +@@ -167,6 +167,8 @@ extern struct sysdev_class cpu_sysdev_class; extern void get_online_cpus(void); extern void put_online_cpus(void); @@ -29,7 +30,7 @@ Index: linux-3.2/include/linux/cpu.h #define hotcpu_notifier(fn, pri) cpu_notifier(fn, pri) #define register_hotcpu_notifier(nb) register_cpu_notifier(nb) #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) -@@ -189,6 +191,8 @@ static inline void cpu_hotplug_driver_un +@@ -189,6 +191,8 @@ static inline void cpu_hotplug_driver_unlock(void) #define get_online_cpus() do { } while (0) #define put_online_cpus() do { } while (0) @@ -38,10 +39,10 @@ Index: linux-3.2/include/linux/cpu.h #define hotcpu_notifier(fn, pri) do { (void)(fn); } while (0) /* These aren't inline functions due to a GCC bug. */ #define register_hotcpu_notifier(nb) ({ (void)(nb); 0; }) -Index: linux-3.2/kernel/cpu.c -=================================================================== ---- linux-3.2.orig/kernel/cpu.c -+++ linux-3.2/kernel/cpu.c +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 563f136..df0a2fc 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -58,6 +58,102 @@ static struct { .refcount = 0, }; @@ -145,7 +146,7 @@ Index: linux-3.2/kernel/cpu.c void get_online_cpus(void) { might_sleep(); -@@ -211,13 +307,14 @@ static int __ref take_cpu_down(void *_pa +@@ -211,13 +307,14 @@ static int __ref take_cpu_down(void *_param) /* Requires cpu_add_remove_lock to be held */ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) { @@ -161,7 +162,7 @@ Index: linux-3.2/kernel/cpu.c if (num_online_cpus() == 1) return -EBUSY; -@@ -225,7 +322,20 @@ static int __ref _cpu_down(unsigned int +@@ -225,7 +322,20 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) if (!cpu_online(cpu)) return -EINVAL; @@ -183,7 +184,7 @@ Index: linux-3.2/kernel/cpu.c err = __cpu_notify(CPU_DOWN_PREPARE | mod, hcpu, -1, &nr_calls); if (err) { -@@ -233,7 +343,16 @@ static int __ref _cpu_down(unsigned int +@@ -233,7 +343,16 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) __cpu_notify(CPU_DOWN_FAILED | mod, hcpu, nr_calls, NULL); printk("%s: attempt to take down CPU %u failed\n", __func__, cpu); @@ -201,7 +202,7 @@ Index: linux-3.2/kernel/cpu.c } err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu)); -@@ -264,6 +383,8 @@ static int __ref _cpu_down(unsigned int +@@ -264,6 +383,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) check_for_tasks(cpu); out_release: @@ -210,3 +211,6 @@ Index: linux-3.2/kernel/cpu.c cpu_hotplug_done(); if (!err) cpu_notify_nofail(CPU_POST_DEAD | mod, hcpu); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch b/debian/patches/features/all/rt/0159-hotplug-sync_unplug-No.patch similarity index 67% rename from debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch rename to debian/patches/features/all/rt/0159-hotplug-sync_unplug-No.patch index c44c8f894..4c3ad1b2e 100644 --- a/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch +++ b/debian/patches/features/all/rt/0159-hotplug-sync_unplug-No.patch @@ -1,6 +1,7 @@ -Subject: hotplug: sync_unplug: No "\n" in task name +From 79cd77d112cf2d5886a420b0e3eb4b14a16715b8 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:43 +0800 +Subject: [PATCH 159/267] hotplug: sync_unplug: No " " in task name Otherwise the output will look a little odd. @@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/cpu.c -=================================================================== ---- linux-3.2.orig/kernel/cpu.c -+++ linux-3.2/kernel/cpu.c -@@ -138,7 +138,7 @@ static int cpu_unplug_begin(unsigned int +diff --git a/kernel/cpu.c b/kernel/cpu.c +index df0a2fc..171cb6c 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -138,7 +138,7 @@ static int cpu_unplug_begin(unsigned int cpu) struct task_struct *tsk; init_completion(&hp->synced); @@ -24,3 +25,6 @@ Index: linux-3.2/kernel/cpu.c if (IS_ERR(tsk)) return (PTR_ERR(tsk)); kthread_bind(tsk, cpu); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch b/debian/patches/features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch similarity index 72% rename from debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch rename to debian/patches/features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch index 6c28cdcf1..c2f49f20d 100644 --- a/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch +++ b/debian/patches/features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch @@ -1,6 +1,8 @@ +From 3ac376ea00518e9ef418830f784197c1daca8687 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Thu, 28 Jul 2011 11:16:00 +0800 -Subject: hotplug: Reread hotplug_pcp on pin_current_cpu() retry +Subject: [PATCH 160/267] hotplug: Reread hotplug_pcp on pin_current_cpu() + retry When retry happens, it's likely that the task has been migrated to another cpu (except unplug failed), but it still derefernces the @@ -17,11 +19,11 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-3.2/kernel/cpu.c -=================================================================== ---- linux-3.2.orig/kernel/cpu.c -+++ linux-3.2/kernel/cpu.c -@@ -76,9 +76,11 @@ static DEFINE_PER_CPU(struct hotplug_pcp +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 171cb6c..80c72da 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -76,9 +76,11 @@ static DEFINE_PER_CPU(struct hotplug_pcp, hotplug_pcp); */ void pin_current_cpu(void) { @@ -34,3 +36,6 @@ Index: linux-3.2/kernel/cpu.c if (!hp->unplug || hp->refcount || preempt_count() > 1 || hp->unplug == current || (current->flags & PF_STOMPER)) { hp->refcount++; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-migrate-disable.patch b/debian/patches/features/all/rt/0161-sched-migrate-disable.patch.patch similarity index 78% rename from debian/patches/features/all/rt/sched-migrate-disable.patch rename to debian/patches/features/all/rt/0161-sched-migrate-disable.patch.patch index 79fa28a0a..68c096074 100644 --- a/debian/patches/features/all/rt/sched-migrate-disable.patch +++ b/debian/patches/features/all/rt/0161-sched-migrate-disable.patch.patch @@ -1,20 +1,21 @@ -Subject: sched-migrate-disable.patch +From 8c27127e781fd1707beb16ac8af849c5c0564f35 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 16 Jun 2011 13:26:08 +0200 +Subject: [PATCH 161/267] sched-migrate-disable.patch Signed-off-by: Thomas Gleixner --- - include/linux/preempt.h | 8 ++++ + include/linux/preempt.h | 8 +++++ include/linux/sched.h | 13 +++++-- - include/linux/smp.h | 1 - kernel/sched.c | 88 +++++++++++++++++++++++++++++++++++++++++++++--- - lib/smp_processor_id.c | 6 +-- + include/linux/smp.h | 1 - + kernel/sched.c | 88 ++++++++++++++++++++++++++++++++++++++++++++--- + lib/smp_processor_id.c | 6 ++-- 5 files changed, 104 insertions(+), 12 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 29db25f..363e5e2 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -108,6 +108,14 @@ do { \ #endif /* CONFIG_PREEMPT_COUNT */ @@ -30,10 +31,10 @@ Index: linux-3.2/include/linux/preempt.h #ifdef CONFIG_PREEMPT_RT_FULL # define preempt_disable_rt() preempt_disable() # define preempt_enable_rt() preempt_enable() -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 6f10df5..712e991 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1259,6 +1259,7 @@ struct task_struct { #endif @@ -52,7 +53,7 @@ Index: linux-3.2/include/linux/sched.h #ifdef CONFIG_PREEMPT_RT_FULL static inline bool cur_pf_disabled(void) { return current->pagefault_disabled; } #else -@@ -2683,6 +2681,15 @@ static inline void set_task_cpu(struct t +@@ -2683,6 +2681,15 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu) #endif /* CONFIG_SMP */ @@ -68,11 +69,11 @@ Index: linux-3.2/include/linux/sched.h extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask); extern long sched_getaffinity(pid_t pid, struct cpumask *mask); -Index: linux-3.2/include/linux/smp.h -=================================================================== ---- linux-3.2.orig/include/linux/smp.h -+++ linux-3.2/include/linux/smp.h -@@ -80,7 +80,6 @@ void __smp_call_function_single(int cpui +diff --git a/include/linux/smp.h b/include/linux/smp.h +index e6c58d8..94c8430 100644 +--- a/include/linux/smp.h ++++ b/include/linux/smp.h +@@ -80,7 +80,6 @@ void __smp_call_function_single(int cpuid, struct call_single_data *data, int smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, void *info, int wait); @@ -80,11 +81,11 @@ Index: linux-3.2/include/linux/smp.h /* * Generic and arch helpers */ -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -6224,11 +6224,12 @@ static inline void sched_init_granularit +diff --git a/kernel/sched.c b/kernel/sched.c +index a5a4ddc..8ceb0af 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -6224,11 +6224,12 @@ static inline void sched_init_granularity(void) #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -101,7 +102,7 @@ Index: linux-3.2/kernel/sched.c } /* -@@ -6279,7 +6280,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -6279,7 +6280,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) do_set_cpus_allowed(p, new_mask); /* Can the task run on the task's current CPU? If so, we're done */ @@ -194,11 +195,11 @@ Index: linux-3.2/kernel/sched.c /* * Move (not current) task off this cpu, onto dest cpu. We're doing * this because either it can't run here any more (set_cpus_allowed() -Index: linux-3.2/lib/smp_processor_id.c -=================================================================== ---- linux-3.2.orig/lib/smp_processor_id.c -+++ linux-3.2/lib/smp_processor_id.c -@@ -39,9 +39,9 @@ notrace unsigned int debug_smp_processor +diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c +index 503f087..60a7569 100644 +--- a/lib/smp_processor_id.c ++++ b/lib/smp_processor_id.c +@@ -39,9 +39,9 @@ notrace unsigned int debug_smp_processor_id(void) if (!printk_ratelimit()) goto out_enable; @@ -211,3 +212,6 @@ Index: linux-3.2/lib/smp_processor_id.c print_symbol("caller is %s\n", (long)__builtin_return_address(0)); dump_stack(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch b/debian/patches/features/all/rt/0162-hotplug-use-migrate-disable.patch.patch similarity index 66% rename from debian/patches/features/all/rt/hotplug-use-migrate-disable.patch rename to debian/patches/features/all/rt/0162-hotplug-use-migrate-disable.patch.patch index 6a0902ef1..e6588de5d 100644 --- a/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch +++ b/debian/patches/features/all/rt/0162-hotplug-use-migrate-disable.patch.patch @@ -1,17 +1,18 @@ -Subject: hotplug-use-migrate-disable.patch +From 6fa1e82ad039567a6806728cb2c25e7070146962 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:35:29 +0200 +Subject: [PATCH 162/267] hotplug-use-migrate-disable.patch Signed-off-by: Thomas Gleixner --- kernel/cpu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.2/kernel/cpu.c -=================================================================== ---- linux-3.2.orig/kernel/cpu.c -+++ linux-3.2/kernel/cpu.c -@@ -330,14 +330,13 @@ static int __ref _cpu_down(unsigned int +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 80c72da..2179062 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -330,14 +330,13 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) cpumask_andnot(cpumask, cpu_online_mask, cpumask_of(cpu)); set_cpus_allowed_ptr(current, cpumask); free_cpumask_var(cpumask); @@ -28,7 +29,7 @@ Index: linux-3.2/kernel/cpu.c err = __cpu_notify(CPU_DOWN_PREPARE | mod, hcpu, -1, &nr_calls); if (err) { -@@ -387,6 +386,7 @@ static int __ref _cpu_down(unsigned int +@@ -387,6 +386,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) out_release: cpu_unplug_done(cpu); out_cancel: @@ -36,3 +37,6 @@ Index: linux-3.2/kernel/cpu.c cpu_hotplug_done(); if (!err) cpu_notify_nofail(CPU_POST_DEAD | mod, hcpu); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch b/debian/patches/features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch similarity index 84% rename from debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch rename to debian/patches/features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch index 3cfc6e9d1..8ee815f25 100644 --- a/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch +++ b/debian/patches/features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch @@ -1,6 +1,7 @@ -Subject: hotplug: Call cpu_unplug_begin() before DOWN_PREPARE +From 5ae4e8e90d2670164fa1450d8cdbf0067e6a608e Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:44 +0800 +Subject: [PATCH 163/267] hotplug: Call cpu_unplug_begin() before DOWN_PREPARE cpu_unplug_begin() should be called before CPU_DOWN_PREPARE, because at CPU_DOWN_PREPARE cpu_active is cleared and sched_domain is @@ -25,11 +26,11 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) -Index: linux-3.2/kernel/cpu.c -=================================================================== ---- linux-3.2.orig/kernel/cpu.c -+++ linux-3.2/kernel/cpu.c -@@ -338,22 +338,20 @@ static int __ref _cpu_down(unsigned int +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 2179062..fa40834 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -338,22 +338,20 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) return -EBUSY; } @@ -59,3 +60,6 @@ Index: linux-3.2/kernel/cpu.c } err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu)); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch b/debian/patches/features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch similarity index 63% rename from debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch rename to debian/patches/features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch index 98af88140..019a6c5bd 100644 --- a/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch +++ b/debian/patches/features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch @@ -1,6 +1,7 @@ -Subject: ftrace-migrate-disable-tracing.patch +From 14e283b0c6f5247b630dda78f0b4bb47c728dd7b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:56:42 +0200 +Subject: [PATCH 164/267] ftrace-migrate-disable-tracing.patch Signed-off-by: Thomas Gleixner --- @@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace_output.c | 5 +++++ 4 files changed, 14 insertions(+), 4 deletions(-) -Index: linux-3.2/include/linux/ftrace_event.h -=================================================================== ---- linux-3.2.orig/include/linux/ftrace_event.h -+++ linux-3.2/include/linux/ftrace_event.h +diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h +index c3da42d..7c5e176 100644 +--- a/include/linux/ftrace_event.h ++++ b/include/linux/ftrace_event.h @@ -49,7 +49,8 @@ struct trace_entry { unsigned char flags; unsigned char preempt_count; @@ -24,11 +25,11 @@ Index: linux-3.2/include/linux/ftrace_event.h }; #define FTRACE_MAX_EVENT \ -Index: linux-3.2/kernel/trace/trace.c -=================================================================== ---- linux-3.2.orig/kernel/trace/trace.c -+++ linux-3.2/kernel/trace/trace.c -@@ -1123,6 +1123,8 @@ tracing_generic_entry_update(struct trac +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index 697e49d..c44456b 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1123,6 +1123,8 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); @@ -37,7 +38,7 @@ Index: linux-3.2/kernel/trace/trace.c } EXPORT_SYMBOL_GPL(tracing_generic_entry_update); -@@ -1850,9 +1852,10 @@ static void print_lat_help_header(struct +@@ -1854,9 +1856,10 @@ static void print_lat_help_header(struct seq_file *m) seq_puts(m, "# | / _----=> need-resched \n"); seq_puts(m, "# || / _---=> hardirq/softirq \n"); seq_puts(m, "# ||| / _--=> preempt-depth \n"); @@ -51,11 +52,11 @@ Index: linux-3.2/kernel/trace/trace.c } static void print_func_help_header(struct seq_file *m) -Index: linux-3.2/kernel/trace/trace_events.c -=================================================================== ---- linux-3.2.orig/kernel/trace/trace_events.c -+++ linux-3.2/kernel/trace/trace_events.c -@@ -116,6 +116,7 @@ static int trace_define_common_fields(vo +diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c +index c212a7f..aca63cc 100644 +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -116,6 +116,7 @@ static int trace_define_common_fields(void) __common_field(unsigned char, flags); __common_field(unsigned char, preempt_count); __common_field(int, pid); @@ -63,11 +64,11 @@ Index: linux-3.2/kernel/trace/trace_events.c __common_field(int, padding); return ret; -Index: linux-3.2/kernel/trace/trace_output.c -=================================================================== ---- linux-3.2.orig/kernel/trace/trace_output.c -+++ linux-3.2/kernel/trace/trace_output.c -@@ -591,6 +591,11 @@ int trace_print_lat_fmt(struct trace_seq +diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c +index 5199930..c93de84 100644 +--- a/kernel/trace/trace_output.c ++++ b/kernel/trace/trace_output.c +@@ -591,6 +591,11 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) else ret = trace_seq_putc(s, '.'); @@ -79,3 +80,6 @@ Index: linux-3.2/kernel/trace/trace_output.c return ret; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch b/debian/patches/features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch similarity index 79% rename from debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch rename to debian/patches/features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch index 4aceb9e7c..348e3c25a 100644 --- a/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch +++ b/debian/patches/features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch @@ -1,6 +1,7 @@ -Subject: tracing: Show padding as unsigned short +From dd3770d74d14d22cd6c3942d94fdef417465f665 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Wed, 16 Nov 2011 13:19:35 -0500 +Subject: [PATCH 165/267] tracing: Show padding as unsigned short RT added two bytes to trace migrate disable counting to the trace events and used two bytes of the padding to make the change. The structures and @@ -19,7 +20,6 @@ format: field:unsigned short common_migrate_disable; offset:8; size:2; signed:0; field:int common_padding; offset:10; size:2; signed:0; - The field for common_padding has the correct size and offset, but the use of "int" might confuse some parsers (and people that are reading it). This needs to be changed to "unsigned short". @@ -28,16 +28,15 @@ Signed-off-by: Steven Rostedt Link: http://lkml.kernel.org/r/1321467575.4181.36.camel@frodo Cc: stable-rt@vger.kernel.org Signed-off-by: Thomas Gleixner - --- kernel/trace/trace_events.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/trace/trace_events.c -=================================================================== ---- linux-3.2.orig/kernel/trace/trace_events.c -+++ linux-3.2/kernel/trace/trace_events.c -@@ -117,7 +117,7 @@ static int trace_define_common_fields(vo +diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c +index aca63cc..69cc908 100644 +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -117,7 +117,7 @@ static int trace_define_common_fields(void) __common_field(unsigned char, preempt_count); __common_field(int, pid); __common_field(unsigned short, migrate_disable); @@ -46,3 +45,6 @@ Index: linux-3.2/kernel/trace/trace_events.c return ret; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/migrate-disable-rt-variant.patch b/debian/patches/features/all/rt/0166-migrate-disable-rt-variant.patch.patch similarity index 74% rename from debian/patches/features/all/rt/migrate-disable-rt-variant.patch rename to debian/patches/features/all/rt/0166-migrate-disable-rt-variant.patch.patch index 9ceb48b86..3e9604d86 100644 --- a/debian/patches/features/all/rt/migrate-disable-rt-variant.patch +++ b/debian/patches/features/all/rt/0166-migrate-disable-rt-variant.patch.patch @@ -1,16 +1,17 @@ -Subject: migrate-disable-rt-variant.patch +From 8a8ab8319933fe832517b715190e8b2f15059f43 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:48:20 +0200 +Subject: [PATCH 166/267] migrate-disable-rt-variant.patch Signed-off-by: Thomas Gleixner --- include/linux/preempt.h | 4 ++++ 1 file changed, 4 insertions(+) -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 363e5e2..5aa7916 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -121,11 +121,15 @@ extern void migrate_enable(void); # define preempt_enable_rt() preempt_enable() # define preempt_disable_nort() do { } while (0) @@ -27,3 +28,6 @@ Index: linux-3.2/include/linux/preempt.h #endif #ifdef CONFIG_PREEMPT_NOTIFIERS +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch b/debian/patches/features/all/rt/0167-sched-Optimize-migrate_disable.patch similarity index 86% rename from debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch rename to debian/patches/features/all/rt/0167-sched-Optimize-migrate_disable.patch index 18c5b7e78..726051346 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch +++ b/debian/patches/features/all/rt/0167-sched-Optimize-migrate_disable.patch @@ -1,6 +1,7 @@ -Subject: sched: Optimize migrate_disable +From 32f2af645de68529b86b266508f886996396a772 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Thu Aug 11 15:03:35 CEST 2011 +Date: Thu, 11 Aug 2011 15:03:35 +0200 +Subject: [PATCH 167/267] sched: Optimize migrate_disable Change from task_rq_lock() to raw_spin_lock(&rq->lock) to avoid a few atomic ops. See comment on why it should be safe. @@ -11,10 +12,10 @@ Link: http://lkml.kernel.org/n/tip-cbz6hkl5r5mvwtx5s3tor2y6@git.kernel.org kernel/sched.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) -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 8ceb0af..ebdf95d 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -6319,7 +6319,19 @@ void migrate_disable(void) preempt_enable(); return; @@ -67,3 +68,6 @@ Index: linux-3.2/kernel/sched.c unpin_current_cpu(); preempt_enable(); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch b/debian/patches/features/all/rt/0168-sched-Generic-migrate_disable.patch similarity index 77% rename from debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch rename to debian/patches/features/all/rt/0168-sched-Generic-migrate_disable.patch index a1b6e5388..0786057f4 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch +++ b/debian/patches/features/all/rt/0168-sched-Generic-migrate_disable.patch @@ -1,6 +1,7 @@ -Subject: sched: Generic migrate_disable +From 9d70554016b846bb8452972d05f111017dd45a4c Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Thu Aug 11 15:14:58 CEST 2011 +Date: Thu, 11 Aug 2011 15:14:58 +0200 +Subject: [PATCH 168/267] sched: Generic migrate_disable Make migrate_disable() be a preempt_disable() for !rt kernels. This allows generic code to use it but still enforces that these code @@ -21,10 +22,10 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org lib/smp_processor_id.c | 2 +- 6 files changed, 30 insertions(+), 23 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 5aa7916..6450c01 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -108,28 +108,25 @@ do { \ #endif /* CONFIG_PREEMPT_COUNT */ @@ -63,10 +64,10 @@ Index: linux-3.2/include/linux/preempt.h #endif #ifdef CONFIG_PREEMPT_NOTIFIERS -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 712e991..32e9e3f 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1259,7 +1259,9 @@ struct task_struct { #endif @@ -77,7 +78,7 @@ Index: linux-3.2/include/linux/sched.h cpumask_t cpus_allowed; #ifdef CONFIG_PREEMPT_RCU -@@ -2681,11 +2683,22 @@ static inline void set_task_cpu(struct t +@@ -2681,11 +2683,22 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu) #endif /* CONFIG_SMP */ @@ -100,11 +101,11 @@ Index: linux-3.2/include/linux/sched.h return &p->cpus_allowed; } -Index: linux-3.2/include/linux/smp.h -=================================================================== ---- linux-3.2.orig/include/linux/smp.h -+++ linux-3.2/include/linux/smp.h -@@ -172,13 +172,8 @@ smp_call_function_any(const struct cpuma +diff --git a/include/linux/smp.h b/include/linux/smp.h +index 94c8430..78fd0a2 100644 +--- a/include/linux/smp.h ++++ b/include/linux/smp.h +@@ -172,13 +172,8 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() @@ -120,11 +121,11 @@ Index: linux-3.2/include/linux/smp.h /* * Callback to arch code if there's nosmp or maxcpus=0 on the -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -6224,7 +6224,7 @@ static inline void sched_init_granularit +diff --git a/kernel/sched.c b/kernel/sched.c +index ebdf95d..eff6bbe2 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -6224,7 +6224,7 @@ static inline void sched_init_granularity(void) #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -133,7 +134,7 @@ Index: linux-3.2/kernel/sched.c if (p->sched_class && p->sched_class->set_cpus_allowed) p->sched_class->set_cpus_allowed(p, new_mask); p->rt.nr_cpus_allowed = cpumask_weight(new_mask); -@@ -6280,7 +6280,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -6280,7 +6280,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) do_set_cpus_allowed(p, new_mask); /* Can the task run on the task's current CPU? If so, we're done */ @@ -158,11 +159,11 @@ Index: linux-3.2/kernel/sched.c /* * Move (not current) task off this cpu, onto dest cpu. We're doing -Index: linux-3.2/kernel/trace/trace.c -=================================================================== ---- linux-3.2.orig/kernel/trace/trace.c -+++ linux-3.2/kernel/trace/trace.c -@@ -1124,7 +1124,7 @@ tracing_generic_entry_update(struct trac +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index c44456b..ff03353 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1124,7 +1124,7 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); @@ -171,11 +172,11 @@ Index: linux-3.2/kernel/trace/trace.c } EXPORT_SYMBOL_GPL(tracing_generic_entry_update); -Index: linux-3.2/lib/smp_processor_id.c -=================================================================== ---- linux-3.2.orig/lib/smp_processor_id.c -+++ linux-3.2/lib/smp_processor_id.c -@@ -41,7 +41,7 @@ notrace unsigned int debug_smp_processor +diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c +index 60a7569..b5e9241 100644 +--- a/lib/smp_processor_id.c ++++ b/lib/smp_processor_id.c +@@ -41,7 +41,7 @@ notrace unsigned int debug_smp_processor_id(void) printk(KERN_ERR "BUG: using smp_processor_id() in preemptible [%08x %08x] " "code: %s/%d\n", preempt_count() - 1, @@ -184,3 +185,6 @@ Index: linux-3.2/lib/smp_processor_id.c print_symbol("caller is %s\n", (long)__builtin_return_address(0)); dump_stack(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch b/debian/patches/features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch similarity index 72% rename from debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch rename to debian/patches/features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch index 1f46b5822..1a2aff775 100644 --- a/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch +++ b/debian/patches/features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch @@ -1,6 +1,7 @@ -Subject: sched, rt: Fix migrate_enable() thinko +From 7c7aa857c372f9d95c5493ecf3660c4819710371 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Tue, 23 Aug 2011 16:12:43 +0200 +Subject: [PATCH 169/267] sched, rt: Fix migrate_enable() thinko Assigning mask = tsk_cpus_allowed(p) after p->migrate_disable = 0 ensures that we won't see a mask change.. no push/pull, we stack tasks on one CPU. @@ -14,16 +15,15 @@ Cc: Paul E. McKenney Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/1314108763.6689.4.camel@marge.simson.net Signed-off-by: Thomas Gleixner - --- kernel/sched.c | 4 +++- kernel/sched_debug.c | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) -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 eff6bbe2..3baf3de 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -6376,12 +6376,14 @@ void migrate_enable(void) */ rq = this_rq(); @@ -40,11 +40,11 @@ Index: linux-3.2/kernel/sched.c if (p->sched_class->set_cpus_allowed) p->sched_class->set_cpus_allowed(p, mask); p->rt.nr_cpus_allowed = cpumask_weight(mask); -Index: linux-3.2/kernel/sched_debug.c -=================================================================== ---- linux-3.2.orig/kernel/sched_debug.c -+++ linux-3.2/kernel/sched_debug.c -@@ -235,6 +235,9 @@ void print_rt_rq(struct seq_file *m, int +diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c +index a6710a1..528032b 100644 +--- a/kernel/sched_debug.c ++++ b/kernel/sched_debug.c +@@ -235,6 +235,9 @@ void print_rt_rq(struct seq_file *m, int cpu, struct rt_rq *rt_rq) P(rt_throttled); PN(rt_time); PN(rt_runtime); @@ -54,7 +54,7 @@ Index: linux-3.2/kernel/sched_debug.c #undef PN #undef P -@@ -484,6 +487,10 @@ void proc_sched_show_task(struct task_st +@@ -484,6 +487,10 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m) P(se.load.weight); P(policy); P(prio); @@ -65,3 +65,6 @@ Index: linux-3.2/kernel/sched_debug.c #undef PN #undef __PN #undef P +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch b/debian/patches/features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch similarity index 77% rename from debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch rename to debian/patches/features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch index c996add89..8e1df1168 100644 --- a/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch +++ b/debian/patches/features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch @@ -1,10 +1,7 @@ -Subject: sched: Teach migrate_disable about atomic contexts -From: Peter Zijlstra -Date: Fri, 02 Sep 2011 14:41:37 +0200 - -Subject: sched: teach migrate_disable about atomic contexts +From 21b6c47d72b590a11b244f08804acb63ff44f1ee Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Sep 02 14:29:27 CEST 2011 +Date: Fri, 2 Sep 2011 14:29:27 +0200 +Subject: [PATCH 170/267] sched: teach migrate_disable about atomic contexts [] spin_bug+0x94/0xa8 [] do_raw_spin_lock+0x43/0xea @@ -37,10 +34,10 @@ Link: http://lkml.kernel.org/n/tip-wbot4vsmwhi8vmbf83hsclk6@git.kernel.org kernel/sched.c | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) -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 32e9e3f..af6cb0c 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1261,6 +1261,9 @@ struct task_struct { unsigned int policy; #ifdef CONFIG_PREEMPT_RT_FULL @@ -51,10 +48,10 @@ Index: linux-3.2/include/linux/sched.h #endif cpumask_t cpus_allowed; -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 3baf3de..c26b1ba 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -6307,6 +6307,17 @@ void migrate_disable(void) unsigned long flags; struct rq *rq; @@ -90,3 +87,6 @@ Index: linux-3.2/kernel/sched.c WARN_ON_ONCE(p->migrate_disable <= 0); preempt_disable(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch b/debian/patches/features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch similarity index 95% rename from debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch rename to debian/patches/features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch index 0a1639795..f94add2e1 100644 --- a/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch +++ b/debian/patches/features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch @@ -1,6 +1,7 @@ -Subject: sched: Postpone actual migration disalbe to schedule +From 5af39adfc38297dee471eea03f81c9894c473238 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 27 Sep 2011 08:40:23 -0400 +Subject: [PATCH 171/267] sched: Postpone actual migration disalbe to schedule The migrate_disable() can cause a bit of a overhead to the RT kernel, as changing the affinity is expensive to do at every lock encountered. @@ -17,16 +18,15 @@ Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/20110927124422.779693167@goodmis.org Signed-off-by: Thomas Gleixner - --- - kernel/sched.c | 251 +++++++++++++++++++++++++++++---------------------------- + kernel/sched.c | 251 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 132 insertions(+), 119 deletions(-) -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -4357,6 +4357,135 @@ static inline void schedule_debug(struct +diff --git a/kernel/sched.c b/kernel/sched.c +index c26b1ba..579724d 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -4357,6 +4357,135 @@ static inline void schedule_debug(struct task_struct *prev) schedstat_inc(this_rq(), sched_count); } @@ -171,7 +171,7 @@ Index: linux-3.2/kernel/sched.c switch_count = &prev->nivcsw; if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { if (unlikely(signal_pending_state(prev->state, prev))) { -@@ -6224,7 +6355,7 @@ static inline void sched_init_granularit +@@ -6224,7 +6355,7 @@ static inline void sched_init_granularity(void) #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -305,3 +305,6 @@ Index: linux-3.2/kernel/sched.c /* * Move (not current) task off this cpu, onto dest cpu. We're doing * this because either it can't run here any more (set_cpus_allowed() +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch b/debian/patches/features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch similarity index 79% rename from debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch rename to debian/patches/features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch index abeceb6e4..524f43805 100644 --- a/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch +++ b/debian/patches/features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch @@ -1,22 +1,22 @@ -Subject: sched: Do not compare cpu masks in scheduler -Date: Tue, 27 Sep 2011 08:40:24 -0400 +From c48eb84f8fe2773f74592fdebc3e48a247d96b7f Mon Sep 17 00:00:00 2001 From: Peter Zijlstra +Date: Tue, 27 Sep 2011 08:40:24 -0400 +Subject: [PATCH 172/267] sched: Do not compare cpu masks in scheduler Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/20110927124423.128129033@goodmis.org Signed-off-by: Thomas Gleixner - --- kernel/sched.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -4385,16 +4385,12 @@ static inline void update_migrate_disabl +diff --git a/kernel/sched.c b/kernel/sched.c +index 579724d..1d07891 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -4385,16 +4385,12 @@ static inline void update_migrate_disable(struct task_struct *p) */ mask = tsk_cpus_allowed(p); @@ -38,3 +38,6 @@ Index: linux-3.2/kernel/sched.c } void migrate_disable(void) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch b/debian/patches/features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch similarity index 87% rename from debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch rename to debian/patches/features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch index fc924b81b..b0604332d 100644 --- a/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch +++ b/debian/patches/features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch @@ -1,21 +1,21 @@ -Subject: sched: Have migrate_disable ignore bounded threads -Date: Tue, 27 Sep 2011 08:40:25 -0400 +From 88db6db5d3ea0b26f57e3fe507dbb70332006d6f Mon Sep 17 00:00:00 2001 From: Peter Zijlstra +Date: Tue, 27 Sep 2011 08:40:25 -0400 +Subject: [PATCH 173/267] sched: Have migrate_disable ignore bounded threads Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/20110927124423.567944215@goodmis.org Signed-off-by: Thomas Gleixner - --- kernel/sched.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) -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 1d07891..51c0ad6 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c @@ -4397,7 +4397,7 @@ void migrate_disable(void) { struct task_struct *p = current; @@ -68,3 +68,6 @@ Index: linux-3.2/kernel/sched.c raw_spin_unlock_irqrestore(&rq->lock, flags); } else p->migrate_disable = 0; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch b/debian/patches/features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch similarity index 55% rename from debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch rename to debian/patches/features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch index 5c4b58256..751a78457 100644 --- a/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch +++ b/debian/patches/features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch @@ -1,17 +1,18 @@ -Subject: sched-clear-pf-thread-bound-on-fallback-rq.patch +From 15761075fe95848ac4cfa95a0b2e860eb2e3b82a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 04 Nov 2011 20:48:36 +0100 +Date: Fri, 4 Nov 2011 20:48:36 +0100 +Subject: [PATCH 174/267] sched-clear-pf-thread-bound-on-fallback-rq.patch Signed-off-by: Thomas Gleixner --- kernel/sched.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) -Index: linux-3.2/kernel/sched.c -=================================================================== ---- linux-3.2.orig/kernel/sched.c -+++ linux-3.2/kernel/sched.c -@@ -2570,7 +2570,12 @@ static int select_fallback_rq(int cpu, s +diff --git a/kernel/sched.c b/kernel/sched.c +index 51c0ad6..81b340d 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -2570,7 +2570,12 @@ static int select_fallback_rq(int cpu, struct task_struct *p) printk(KERN_INFO "process %d (%s) no longer affine to cpu%d\n", task_pid_nr(p), p->comm, cpu); } @@ -25,3 +26,6 @@ Index: linux-3.2/kernel/sched.c return dest_cpu; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/ftrace-crap.patch b/debian/patches/features/all/rt/0175-ftrace-crap.patch.patch similarity index 64% rename from debian/patches/features/all/rt/ftrace-crap.patch rename to debian/patches/features/all/rt/0175-ftrace-crap.patch.patch index 2a0db758e..a99f7ba14 100644 --- a/debian/patches/features/all/rt/ftrace-crap.patch +++ b/debian/patches/features/all/rt/0175-ftrace-crap.patch.patch @@ -1,6 +1,7 @@ -Subject: ftrace-crap.patch +From 5af317e8a8abd8e488ee2a318229efc3177c81fc Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 09 Sep 2011 16:55:53 +0200 +Date: Fri, 9 Sep 2011 16:55:53 +0200 +Subject: [PATCH 175/267] ftrace-crap.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace.h | 1 - 2 files changed, 24 insertions(+), 3 deletions(-) -Index: linux-3.2/kernel/trace/trace.c -=================================================================== ---- linux-3.2.orig/kernel/trace/trace.c -+++ linux-3.2/kernel/trace/trace.c -@@ -359,11 +359,13 @@ static DECLARE_DELAYED_WORK(wakeup_work, +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index ff03353..f4de7ab 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -359,11 +359,13 @@ static DECLARE_DELAYED_WORK(wakeup_work, wakeup_work_handler); */ void trace_wake_up(void) { @@ -26,7 +27,7 @@ Index: linux-3.2/kernel/trace/trace.c } static int __init set_buf_size(char *str) -@@ -719,6 +721,12 @@ update_max_tr_single(struct trace_array +@@ -719,6 +721,12 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu) } #endif /* CONFIG_TRACER_MAX_TRACE */ @@ -39,7 +40,7 @@ Index: linux-3.2/kernel/trace/trace.c /** * register_tracer - register a tracer with the ftrace system. * @type - the plugin for the tracer -@@ -3192,6 +3200,7 @@ static int tracing_release_pipe(struct i +@@ -3196,6 +3204,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file) return 0; } @@ -47,7 +48,7 @@ Index: linux-3.2/kernel/trace/trace.c static unsigned int tracing_poll_pipe(struct file *filp, poll_table *poll_table) { -@@ -3213,8 +3222,7 @@ tracing_poll_pipe(struct file *filp, pol +@@ -3217,8 +3226,7 @@ tracing_poll_pipe(struct file *filp, poll_table *poll_table) } } @@ -57,7 +58,7 @@ Index: linux-3.2/kernel/trace/trace.c { DEFINE_WAIT(wait); -@@ -3225,6 +3233,20 @@ void default_wait_pipe(struct trace_iter +@@ -3229,6 +3237,20 @@ void default_wait_pipe(struct trace_iterator *iter) finish_wait(&trace_wait, &wait); } @@ -78,11 +79,11 @@ Index: linux-3.2/kernel/trace/trace.c /* * This is a make-shift waitqueue. -Index: linux-3.2/kernel/trace/trace.h -=================================================================== ---- linux-3.2.orig/kernel/trace/trace.h -+++ linux-3.2/kernel/trace/trace.h -@@ -345,7 +345,6 @@ void trace_init_global_iter(struct trace +diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h +index 092e1f8..69b8700 100644 +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -345,7 +345,6 @@ void trace_init_global_iter(struct trace_iterator *iter); void tracing_iter_reset(struct trace_iterator *iter, int cpu); @@ -90,3 +91,6 @@ Index: linux-3.2/kernel/trace/trace.h void poll_wait_pipe(struct trace_iterator *iter); void ftrace(struct trace_array *tr, +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch b/debian/patches/features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch similarity index 84% rename from debian/patches/features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch rename to debian/patches/features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch index e7803674c..8d8387961 100644 --- a/debian/patches/features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch +++ b/debian/patches/features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch @@ -1,6 +1,8 @@ -Subject: ring-buffer: Convert reader_lock from raw_spin_lock into spin_lock +From 128036c3653638bba3b9e4fc68dfa0a6b3d48517 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 27 Sep 2011 13:56:50 -0400 +Subject: [PATCH 176/267] ring-buffer: Convert reader_lock from raw_spin_lock + into spin_lock The reader_lock is mostly taken in normal context with interrupts enabled. But because ftrace_dump() can happen anywhere, it is used as a spin lock @@ -37,17 +39,14 @@ Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/1317146210.26514.33.camel@gandalf.stny.rr.com Signed-off-by: Thomas Gleixner - - - --- - kernel/trace/ring_buffer.c | 151 ++++++++++++++++++++++++--------------------- + kernel/trace/ring_buffer.c | 151 ++++++++++++++++++++++++-------------------- 1 file changed, 81 insertions(+), 70 deletions(-) -Index: linux-3.2/kernel/trace/ring_buffer.c -=================================================================== ---- linux-3.2.orig/kernel/trace/ring_buffer.c -+++ linux-3.2/kernel/trace/ring_buffer.c +diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c +index f5b7b5c..354017f 100644 +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c @@ -478,7 +478,7 @@ struct ring_buffer_per_cpu { int cpu; atomic_t record_disabled; @@ -57,7 +56,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c arch_spinlock_t lock; struct lock_class_key lock_key; struct list_head *pages; -@@ -1049,6 +1049,44 @@ static int rb_allocate_pages(struct ring +@@ -1049,6 +1049,44 @@ static int rb_allocate_pages(struct ring_buffer_per_cpu *cpu_buffer, return -ENOMEM; } @@ -102,7 +101,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c static struct ring_buffer_per_cpu * rb_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu) { -@@ -1064,7 +1102,7 @@ rb_allocate_cpu_buffer(struct ring_buffe +@@ -1064,7 +1102,7 @@ rb_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu) cpu_buffer->cpu = cpu; cpu_buffer->buffer = buffer; @@ -111,7 +110,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c lockdep_set_class(&cpu_buffer->reader_lock, buffer->reader_lock_key); cpu_buffer->lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED; -@@ -1259,9 +1297,11 @@ rb_remove_pages(struct ring_buffer_per_c +@@ -1259,9 +1297,11 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) { struct buffer_page *bpage; struct list_head *p; @@ -124,7 +123,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c rb_head_page_deactivate(cpu_buffer); for (i = 0; i < nr_pages; i++) { -@@ -1279,7 +1319,7 @@ rb_remove_pages(struct ring_buffer_per_c +@@ -1279,7 +1319,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) rb_check_pages(cpu_buffer); out: @@ -133,7 +132,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c } static void -@@ -1288,9 +1328,11 @@ rb_insert_pages(struct ring_buffer_per_c +@@ -1288,9 +1328,11 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer, { struct buffer_page *bpage; struct list_head *p; @@ -146,7 +145,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c rb_head_page_deactivate(cpu_buffer); for (i = 0; i < nr_pages; i++) { -@@ -1305,7 +1347,7 @@ rb_insert_pages(struct ring_buffer_per_c +@@ -1305,7 +1347,7 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer, rb_check_pages(cpu_buffer); out: @@ -155,7 +154,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c } /** -@@ -2689,7 +2731,7 @@ unsigned long ring_buffer_oldest_event_t +@@ -2689,7 +2731,7 @@ unsigned long ring_buffer_oldest_event_ts(struct ring_buffer *buffer, int cpu) return 0; cpu_buffer = buffer->buffers[cpu]; @@ -164,7 +163,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c /* * if the tail is on reader_page, oldest time stamp is on the reader * page -@@ -2699,7 +2741,7 @@ unsigned long ring_buffer_oldest_event_t +@@ -2699,7 +2741,7 @@ unsigned long ring_buffer_oldest_event_ts(struct ring_buffer *buffer, int cpu) else bpage = rb_set_head_page(cpu_buffer); ret = bpage->page->time_stamp; @@ -173,7 +172,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c return ret; } -@@ -2863,15 +2905,16 @@ void ring_buffer_iter_reset(struct ring_ +@@ -2863,15 +2905,16 @@ void ring_buffer_iter_reset(struct ring_buffer_iter *iter) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -192,7 +191,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c } EXPORT_SYMBOL_GPL(ring_buffer_iter_reset); -@@ -3289,21 +3332,6 @@ rb_iter_peek(struct ring_buffer_iter *it +@@ -3289,21 +3332,6 @@ rb_iter_peek(struct ring_buffer_iter *iter, u64 *ts) } EXPORT_SYMBOL_GPL(ring_buffer_iter_peek); @@ -214,7 +213,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c /** * ring_buffer_peek - peek at the next event to be read * @buffer: The ring buffer to read -@@ -3321,22 +3349,17 @@ ring_buffer_peek(struct ring_buffer *buf +@@ -3321,22 +3349,17 @@ ring_buffer_peek(struct ring_buffer *buffer, int cpu, u64 *ts, struct ring_buffer_per_cpu *cpu_buffer = buffer->buffers[cpu]; struct ring_buffer_event *event; unsigned long flags; @@ -240,7 +239,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c if (event && event->type_len == RINGBUF_TYPE_PADDING) goto again; -@@ -3358,11 +3381,12 @@ ring_buffer_iter_peek(struct ring_buffer +@@ -3358,11 +3381,12 @@ ring_buffer_iter_peek(struct ring_buffer_iter *iter, u64 *ts) struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer; struct ring_buffer_event *event; unsigned long flags; @@ -255,7 +254,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c if (event && event->type_len == RINGBUF_TYPE_PADDING) goto again; -@@ -3388,9 +3412,7 @@ ring_buffer_consume(struct ring_buffer * +@@ -3388,9 +3412,7 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts, struct ring_buffer_per_cpu *cpu_buffer; struct ring_buffer_event *event = NULL; unsigned long flags; @@ -266,7 +265,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c again: /* might be called in atomic */ -@@ -3400,9 +3422,7 @@ ring_buffer_consume(struct ring_buffer * +@@ -3400,9 +3422,7 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts, goto out; cpu_buffer = buffer->buffers[cpu]; @@ -277,7 +276,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c event = rb_buffer_peek(cpu_buffer, ts, lost_events); if (event) { -@@ -3410,9 +3430,8 @@ ring_buffer_consume(struct ring_buffer * +@@ -3410,9 +3430,8 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts, rb_advance_reader(cpu_buffer); } @@ -289,7 +288,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c out: preempt_enable(); -@@ -3497,17 +3516,18 @@ ring_buffer_read_start(struct ring_buffe +@@ -3497,17 +3516,18 @@ ring_buffer_read_start(struct ring_buffer_iter *iter) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -310,7 +309,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c } EXPORT_SYMBOL_GPL(ring_buffer_read_start); -@@ -3541,8 +3561,9 @@ ring_buffer_read(struct ring_buffer_iter +@@ -3541,8 +3561,9 @@ ring_buffer_read(struct ring_buffer_iter *iter, u64 *ts) struct ring_buffer_event *event; struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer; unsigned long flags; @@ -321,7 +320,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c again: event = rb_iter_peek(iter, ts); if (!event) -@@ -3553,7 +3574,7 @@ ring_buffer_read(struct ring_buffer_iter +@@ -3553,7 +3574,7 @@ ring_buffer_read(struct ring_buffer_iter *iter, u64 *ts) rb_advance_iter(iter); out: @@ -330,7 +329,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c return event; } -@@ -3618,13 +3639,14 @@ void ring_buffer_reset_cpu(struct ring_b +@@ -3618,13 +3639,14 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu) { struct ring_buffer_per_cpu *cpu_buffer = buffer->buffers[cpu]; unsigned long flags; @@ -346,7 +345,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c if (RB_WARN_ON(cpu_buffer, local_read(&cpu_buffer->committing))) goto out; -@@ -3636,7 +3658,7 @@ void ring_buffer_reset_cpu(struct ring_b +@@ -3636,7 +3658,7 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu) arch_spin_unlock(&cpu_buffer->lock); out: @@ -355,7 +354,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c atomic_dec(&cpu_buffer->record_disabled); } -@@ -3663,22 +3685,16 @@ int ring_buffer_empty(struct ring_buffer +@@ -3663,22 +3685,16 @@ int ring_buffer_empty(struct ring_buffer *buffer) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -381,7 +380,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c if (!ret) return 0; -@@ -3697,22 +3713,16 @@ int ring_buffer_empty_cpu(struct ring_bu +@@ -3697,22 +3713,16 @@ int ring_buffer_empty_cpu(struct ring_buffer *buffer, int cpu) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -407,7 +406,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c return ret; } -@@ -3887,6 +3897,7 @@ int ring_buffer_read_page(struct ring_bu +@@ -3887,6 +3897,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer, unsigned int commit; unsigned int read; u64 save_timestamp; @@ -415,7 +414,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c int ret = -1; if (!cpumask_test_cpu(cpu, buffer->cpumask)) -@@ -3908,7 +3919,7 @@ int ring_buffer_read_page(struct ring_bu +@@ -3908,7 +3919,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer, if (!bpage) goto out; @@ -424,7 +423,7 @@ Index: linux-3.2/kernel/trace/ring_buffer.c reader = rb_get_reader_page(cpu_buffer); if (!reader) -@@ -4032,7 +4043,7 @@ int ring_buffer_read_page(struct ring_bu +@@ -4032,7 +4043,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer, memset(&bpage->data[commit], 0, BUF_PAGE_SIZE - commit); out_unlock: @@ -433,3 +432,6 @@ Index: linux-3.2/kernel/trace/ring_buffer.c out: return ret; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch b/debian/patches/features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch similarity index 64% rename from debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch rename to debian/patches/features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch index b0e77c08b..8d45ec1de 100644 --- a/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch +++ b/debian/patches/features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch @@ -1,16 +1,17 @@ -Subject: net-netif_rx_ni-migrate-disable.patch +From da9e78fe5c96c817502207c8345edc939ed193e7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 16:29:27 +0200 +Subject: [PATCH 177/267] net-netif_rx_ni-migrate-disable.patch Signed-off-by: Thomas Gleixner --- net/core/dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -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 c28987a..517b488 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -3034,11 +3034,11 @@ int netif_rx_ni(struct sk_buff *skb) { int err; @@ -25,3 +26,6 @@ Index: linux-3.2/net/core/dev.c return err; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch b/debian/patches/features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch similarity index 75% rename from debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch rename to debian/patches/features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch index 7e89ad44f..f233419e9 100644 --- a/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch +++ b/debian/patches/features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch @@ -1,20 +1,20 @@ +From 2cad2f524d6ee31a2b4d1eafd2535bfaf51bc697 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 13:16:38 -0500 -Subject: softirq: Sanitize softirq pending for NOHZ/RT +Subject: [PATCH 178/267] softirq: Sanitize softirq pending for NOHZ/RT Signed-off-by: Thomas Gleixner - --- - include/linux/interrupt.h | 2 + - kernel/softirq.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++ - kernel/time/tick-sched.c | 8 ------ + include/linux/interrupt.h | 2 ++ + kernel/softirq.c | 61 +++++++++++++++++++++++++++++++++++++++++++++ + kernel/time/tick-sched.c | 8 +----- 3 files changed, 64 insertions(+), 7 deletions(-) -Index: linux-3.2/include/linux/interrupt.h -=================================================================== ---- linux-3.2.orig/include/linux/interrupt.h -+++ linux-3.2/include/linux/interrupt.h -@@ -471,6 +471,8 @@ static inline void __raise_softirq_irqof +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index b9162dc..74e28d9 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -471,6 +471,8 @@ static inline void __raise_softirq_irqoff(unsigned int nr) extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq(unsigned int nr); @@ -23,10 +23,10 @@ Index: linux-3.2/include/linux/interrupt.h /* This is the worklist that queues up per-cpu softirq work. * * send_remote_sendirq() adds work to these lists, and -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 c6c5824..8332622 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -61,6 +61,67 @@ char *softirq_to_name[NR_SOFTIRQS] = { "TASKLET", "SCHED", "HRTIMER", "RCU" }; @@ -95,11 +95,11 @@ Index: linux-3.2/kernel/softirq.c /* * we cannot loop indefinitely here to avoid userspace starvation, * but we also don't want to introduce a worst case 1/HZ latency -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 -@@ -332,13 +332,7 @@ void tick_nohz_stop_sched_tick(int inidl +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index a2c2a64..a6b26d2 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -336,13 +336,7 @@ void tick_nohz_stop_sched_tick(int inidle) goto end; if (unlikely(local_softirq_pending() && cpu_online(cpu))) { @@ -114,3 +114,6 @@ Index: linux-3.2/kernel/time/tick-sched.c goto end; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch b/debian/patches/features/all/rt/0179-lockdep-rt.patch.patch similarity index 75% rename from debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch rename to debian/patches/features/all/rt/0179-lockdep-rt.patch.patch index 9430a0d20..f209d6be9 100644 --- a/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch +++ b/debian/patches/features/all/rt/0179-lockdep-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: lockdep-rt.patch +From 712a75e468585397a31981e506a5525decc70e49 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 18:51:23 +0200 +Subject: [PATCH 179/267] lockdep-rt.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/lockdep.c | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) -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 37b13c4..a52b35d 100644 +--- a/include/linux/irqflags.h ++++ b/include/linux/irqflags.h @@ -25,8 +25,6 @@ # define trace_softirqs_enabled(p) ((p)->softirqs_enabled) # define trace_hardirq_enter() do { current->hardirq_context++; } while (0) @@ -38,11 +39,11 @@ Index: linux-3.2/include/linux/irqflags.h #endif #if defined(CONFIG_IRQSOFF_TRACER) || \ -Index: linux-3.2/kernel/lockdep.c -=================================================================== ---- linux-3.2.orig/kernel/lockdep.c -+++ linux-3.2/kernel/lockdep.c -@@ -3494,6 +3494,7 @@ static void check_flags(unsigned long fl +diff --git a/kernel/lockdep.c b/kernel/lockdep.c +index b2e08c9..334d3c0 100644 +--- a/kernel/lockdep.c ++++ b/kernel/lockdep.c +@@ -3494,6 +3494,7 @@ static void check_flags(unsigned long flags) } } @@ -50,7 +51,7 @@ Index: linux-3.2/kernel/lockdep.c /* * We dont accurately track softirq state in e.g. * hardirq contexts (such as on 4KSTACKS), so only -@@ -3508,6 +3509,7 @@ static void check_flags(unsigned long fl +@@ -3508,6 +3509,7 @@ static void check_flags(unsigned long flags) DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled); } } @@ -58,3 +59,6 @@ Index: linux-3.2/kernel/lockdep.c if (!debug_locks) print_irqtrace_events(current); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch b/debian/patches/features/all/rt/0180-mutex-no-spin-on-rt.patch.patch similarity index 62% rename from debian/patches/features/all/rt/mutex-no-spin-on-rt.patch rename to debian/patches/features/all/rt/0180-mutex-no-spin-on-rt.patch.patch index 4c8f45225..f39745419 100644 --- a/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch +++ b/debian/patches/features/all/rt/0180-mutex-no-spin-on-rt.patch.patch @@ -1,19 +1,23 @@ -Subject: mutex-no-spin-on-rt.patch +From 5607758a2f07ffc4d0ee4c90d4a53a4090e38905 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:51:45 +0200 +Subject: [PATCH 180/267] mutex-no-spin-on-rt.patch Signed-off-by: Thomas Gleixner --- kernel/Kconfig.locks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/Kconfig.locks -=================================================================== ---- linux-3.2.orig/kernel/Kconfig.locks -+++ linux-3.2/kernel/Kconfig.locks +diff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks +index 5068e2a..7bd0598 100644 +--- a/kernel/Kconfig.locks ++++ b/kernel/Kconfig.locks @@ -199,4 +199,4 @@ config INLINE_WRITE_UNLOCK_IRQRESTORE def_bool !DEBUG_SPINLOCK && ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE config MUTEX_SPIN_ON_OWNER - def_bool SMP && !DEBUG_MUTEXES + def_bool SMP && !DEBUG_MUTEXES && !PREEMPT_RT_FULL +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/softirq-local-lock.patch b/debian/patches/features/all/rt/0181-softirq-local-lock.patch.patch similarity index 85% rename from debian/patches/features/all/rt/softirq-local-lock.patch rename to debian/patches/features/all/rt/0181-softirq-local-lock.patch.patch index 18b371e4c..459f5f19c 100644 --- a/debian/patches/features/all/rt/softirq-local-lock.patch +++ b/debian/patches/features/all/rt/0181-softirq-local-lock.patch.patch @@ -1,20 +1,21 @@ -Subject: softirq-local-lock.patch +From 4263da6524d1b2eb07d0f07930c53ed4682db0df Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:57:18 +0200 +Subject: [PATCH 181/267] softirq-local-lock.patch Signed-off-by: Thomas Gleixner --- - include/linux/hardirq.h | 16 +++- - include/linux/interrupt.h | 11 ++ - include/linux/sched.h | 1 - init/main.c | 1 - kernel/softirq.c | 170 +++++++++++++++++++++++++++++++++++++++++++++- + include/linux/hardirq.h | 16 ++++- + include/linux/interrupt.h | 11 +++ + include/linux/sched.h | 1 + + init/main.c | 1 + + kernel/softirq.c | 170 ++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 194 insertions(+), 5 deletions(-) -Index: linux-3.2/include/linux/hardirq.h -=================================================================== ---- linux-3.2.orig/include/linux/hardirq.h -+++ linux-3.2/include/linux/hardirq.h +diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h +index f743883..2f5d318 100644 +--- a/include/linux/hardirq.h ++++ b/include/linux/hardirq.h @@ -60,7 +60,11 @@ #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) #define NMI_OFFSET (1UL << NMI_SHIFT) @@ -55,10 +56,10 @@ Index: linux-3.2/include/linux/hardirq.h /* * Are we in NMI context? -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 74e28d9..20d8dcc 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -458,7 +458,12 @@ struct softirq_action asmlinkage void do_softirq(void); @@ -72,7 +73,7 @@ Index: linux-3.2/include/linux/interrupt.h extern void open_softirq(int nr, void (*action)(struct softirq_action *)); extern void softirq_init(void); -@@ -650,6 +655,12 @@ void tasklet_hrtimer_cancel(struct taskl +@@ -650,6 +655,12 @@ void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) tasklet_kill(&ttimer->tasklet); } @@ -85,10 +86,10 @@ Index: linux-3.2/include/linux/interrupt.h /* * Autoprobing for irqs: * -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 af6cb0c..a84a901 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1601,6 +1601,7 @@ struct task_struct { #endif #ifdef CONFIG_PREEMPT_RT_BASE @@ -97,11 +98,11 @@ Index: linux-3.2/include/linux/sched.h #endif }; -Index: linux-3.2/init/main.c -=================================================================== ---- linux-3.2.orig/init/main.c -+++ linux-3.2/init/main.c -@@ -490,6 +490,7 @@ asmlinkage void __init start_kernel(void +diff --git a/init/main.c b/init/main.c +index 0c41665..1c0a673 100644 +--- a/init/main.c ++++ b/init/main.c +@@ -490,6 +490,7 @@ asmlinkage void __init start_kernel(void) * Interrupts are still disabled. Do necessary setups, then * enable them */ @@ -109,10 +110,10 @@ Index: linux-3.2/init/main.c tick_init(); boot_cpu_init(); page_address_init(); -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 8332622..2c10a79 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -24,6 +24,7 @@ #include #include @@ -121,7 +122,7 @@ Index: linux-3.2/kernel/softirq.c #define CREATE_TRACE_POINTS #include -@@ -165,6 +166,7 @@ static void handle_pending_softirqs(u32 +@@ -165,6 +166,7 @@ static void handle_pending_softirqs(u32 pending, int cpu) local_irq_disable(); } @@ -337,3 +338,6 @@ Index: linux-3.2/kernel/softirq.c } #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch b/debian/patches/features/all/rt/0182-softirq-Export-in_serving_softirq.patch similarity index 72% rename from debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch rename to debian/patches/features/all/rt/0182-softirq-Export-in_serving_softirq.patch index 2f0048002..aca8f5665 100644 --- a/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch +++ b/debian/patches/features/all/rt/0182-softirq-Export-in_serving_softirq.patch @@ -1,6 +1,7 @@ -Subject: softirq: Export in_serving_softirq() +From cf6595696f15aae904914b61061b88d721b4487b Mon Sep 17 00:00:00 2001 From: John Kacur Date: Mon, 14 Nov 2011 02:44:43 +0100 +Subject: [PATCH 182/267] softirq: Export in_serving_softirq() ERROR: "in_serving_softirq" [net/sched/cls_cgroup.ko] undefined! @@ -11,15 +12,14 @@ Cc: Paul McKenney Cc: stable-rt@vger.kernel.org Link: http://lkml.kernel.org/r/1321235083-21756-2-git-send-email-jkacur@redhat.com Signed-off-by: Thomas Gleixner - --- kernel/softirq.c | 1 + 1 file changed, 1 insertion(+) -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 2c10a79..f107c07 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -439,6 +439,7 @@ int in_serving_softirq(void) preempt_enable(); return res; @@ -28,3 +28,6 @@ Index: linux-3.2/kernel/softirq.c /* * Called with bh and local interrupts disabled. For full RT cpu must +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch b/debian/patches/features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch similarity index 76% rename from debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch rename to debian/patches/features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch index 4b431d3b5..b3515e37d 100644 --- a/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch +++ b/debian/patches/features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch @@ -1,6 +1,11 @@ -Subject: hardirq.h: Define softirq_count() as OUL to kill build warning +From ac220f3571639b8a16d5df2a4fd438938d82afc6 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Thu, 13 Oct 2011 17:19:09 +0800 +Subject: [PATCH 183/267] hardirq.h: Define softirq_count() as OUL to kill + build warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit kernel/lockdep.c: In function ‘print_bad_irq_dependency’: kernel/lockdep.c:1476:3: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 7 has type ‘unsigned int’ @@ -22,10 +27,10 @@ Signed-off-by: Thomas Gleixner include/linux/hardirq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/include/linux/hardirq.h -=================================================================== ---- linux-3.2.orig/include/linux/hardirq.h -+++ linux-3.2/include/linux/hardirq.h +diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h +index 2f5d318..7059ce2 100644 +--- a/include/linux/hardirq.h ++++ b/include/linux/hardirq.h @@ -84,7 +84,7 @@ # define softirq_count() (preempt_count() & SOFTIRQ_MASK) # define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET) @@ -35,3 +40,6 @@ Index: linux-3.2/include/linux/hardirq.h extern int in_serving_softirq(void); #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch b/debian/patches/features/all/rt/0184-softirq-Fix-unplug-deadlock.patch similarity index 81% rename from debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch rename to debian/patches/features/all/rt/0184-softirq-Fix-unplug-deadlock.patch index 986a5605b..dd6bfd4af 100644 --- a/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch +++ b/debian/patches/features/all/rt/0184-softirq-Fix-unplug-deadlock.patch @@ -1,10 +1,7 @@ -Subject: softirq: Fix unplug deadlock -From: Peter Zijlstra -Date: Fri, 30 Sep 2011 15:59:16 +0200 - -Subject: [RT] softirq: Fix unplug deadlock +From 6e7719ff9fce1d2b04f2d5d30f16f78514843650 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Sep 30 15:52:14 CEST 2011 +Date: Fri, 30 Sep 2011 15:52:14 +0200 +Subject: [PATCH 184/267] softirq: Fix unplug deadlock If ksoftirqd gets woken during hot-unplug, __thread_do_softirq() will call pin_current_cpu() which will block on the held cpu_hotplug.lock. @@ -30,11 +27,11 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) -Index: linux-3.2/kernel/softirq.c -=================================================================== ---- linux-3.2.orig/kernel/softirq.c -+++ linux-3.2/kernel/softirq.c -@@ -1086,9 +1086,8 @@ static int __cpuinit cpu_callback(struct +diff --git a/kernel/softirq.c b/kernel/softirq.c +index f107c07..56de566 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -1086,9 +1086,8 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, int hotcpu = (unsigned long)hcpu; struct task_struct *p; @@ -45,7 +42,7 @@ Index: linux-3.2/kernel/softirq.c p = kthread_create_on_node(run_ksoftirqd, hcpu, cpu_to_node(hotcpu), -@@ -1101,19 +1100,16 @@ static int __cpuinit cpu_callback(struct +@@ -1101,19 +1100,16 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, per_cpu(ksoftirqd, hotcpu) = p; break; case CPU_ONLINE: @@ -66,3 +63,6 @@ Index: linux-3.2/kernel/softirq.c static const struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 }; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch b/debian/patches/features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch similarity index 62% rename from debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch rename to debian/patches/features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch index c8c267480..5d291e6fe 100644 --- a/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch +++ b/debian/patches/features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: softirq-disable-softirq-stacks-for-rt.patch +From effbceee022e5c4f987c009c06d18e3c6f5edd80 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 13:59:17 +0200 +Subject: [PATCH 185/267] softirq-disable-softirq-stacks-for-rt.patch Signed-off-by: Thomas Gleixner --- @@ -15,10 +16,10 @@ Signed-off-by: Thomas Gleixner include/linux/interrupt.h | 3 +-- 9 files changed, 17 insertions(+), 4 deletions(-) -Index: linux-3.2/arch/powerpc/kernel/irq.c -=================================================================== ---- linux-3.2.orig/arch/powerpc/kernel/irq.c -+++ linux-3.2/arch/powerpc/kernel/irq.c +diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c +index 745c1e7..e0ee531 100644 +--- a/arch/powerpc/kernel/irq.c ++++ b/arch/powerpc/kernel/irq.c @@ -440,6 +440,7 @@ void irq_ctx_init(void) } } @@ -36,10 +37,10 @@ Index: linux-3.2/arch/powerpc/kernel/irq.c /* * IRQ controller and virtual interrupts -Index: linux-3.2/arch/powerpc/kernel/misc_32.S -=================================================================== ---- linux-3.2.orig/arch/powerpc/kernel/misc_32.S -+++ linux-3.2/arch/powerpc/kernel/misc_32.S +diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S +index 7cd07b4..46c6073 100644 +--- a/arch/powerpc/kernel/misc_32.S ++++ b/arch/powerpc/kernel/misc_32.S @@ -36,6 +36,7 @@ .text @@ -56,10 +57,10 @@ Index: linux-3.2/arch/powerpc/kernel/misc_32.S _GLOBAL(call_handle_irq) mflr r0 -Index: linux-3.2/arch/powerpc/kernel/misc_64.S -=================================================================== ---- linux-3.2.orig/arch/powerpc/kernel/misc_64.S -+++ linux-3.2/arch/powerpc/kernel/misc_64.S +diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S +index 616921e..2961d75 100644 +--- a/arch/powerpc/kernel/misc_64.S ++++ b/arch/powerpc/kernel/misc_64.S @@ -29,6 +29,7 @@ .text @@ -76,10 +77,10 @@ Index: linux-3.2/arch/powerpc/kernel/misc_64.S _GLOBAL(call_handle_irq) ld r8,0(r6) -Index: linux-3.2/arch/sh/kernel/irq.c -=================================================================== ---- linux-3.2.orig/arch/sh/kernel/irq.c -+++ linux-3.2/arch/sh/kernel/irq.c +diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c +index a3ee919..9127bc0 100644 +--- a/arch/sh/kernel/irq.c ++++ b/arch/sh/kernel/irq.c @@ -149,6 +149,7 @@ void irq_ctx_exit(int cpu) hardirq_ctx[cpu] = NULL; } @@ -96,11 +97,11 @@ Index: linux-3.2/arch/sh/kernel/irq.c #else static inline void handle_one_irq(unsigned int irq) { -Index: linux-3.2/arch/sparc/kernel/irq_64.c -=================================================================== ---- linux-3.2.orig/arch/sparc/kernel/irq_64.c -+++ linux-3.2/arch/sparc/kernel/irq_64.c -@@ -699,6 +699,7 @@ void __irq_entry handler_irq(int pil, st +diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c +index d45b710..c3a3737 100644 +--- a/arch/sparc/kernel/irq_64.c ++++ b/arch/sparc/kernel/irq_64.c +@@ -699,6 +699,7 @@ void __irq_entry handler_irq(int pil, struct pt_regs *regs) set_irq_regs(old_regs); } @@ -116,10 +117,10 @@ Index: linux-3.2/arch/sparc/kernel/irq_64.c #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) -Index: linux-3.2/arch/x86/kernel/entry_64.S -=================================================================== ---- linux-3.2.orig/arch/x86/kernel/entry_64.S -+++ linux-3.2/arch/x86/kernel/entry_64.S +diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S +index faf8d5e..fb0f578 100644 +--- a/arch/x86/kernel/entry_64.S ++++ b/arch/x86/kernel/entry_64.S @@ -1192,6 +1192,7 @@ ENTRY(kernel_execve) CFI_ENDPROC END(kernel_execve) @@ -136,10 +137,10 @@ Index: linux-3.2/arch/x86/kernel/entry_64.S #ifdef CONFIG_XEN zeroentry xen_hypervisor_callback xen_do_hypervisor_callback -Index: linux-3.2/arch/x86/kernel/irq_32.c -=================================================================== ---- linux-3.2.orig/arch/x86/kernel/irq_32.c -+++ linux-3.2/arch/x86/kernel/irq_32.c +diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c +index 7209070..84417a2 100644 +--- a/arch/x86/kernel/irq_32.c ++++ b/arch/x86/kernel/irq_32.c @@ -149,6 +149,7 @@ void __cpuinit irq_ctx_init(int cpu) cpu, per_cpu(hardirq_ctx, cpu), per_cpu(softirq_ctx, cpu)); } @@ -156,11 +157,11 @@ Index: linux-3.2/arch/x86/kernel/irq_32.c bool handle_irq(unsigned irq, struct pt_regs *regs) { -Index: linux-3.2/arch/x86/kernel/irq_64.c -=================================================================== ---- linux-3.2.orig/arch/x86/kernel/irq_64.c -+++ linux-3.2/arch/x86/kernel/irq_64.c -@@ -65,7 +65,7 @@ bool handle_irq(unsigned irq, struct pt_ +diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c +index 69bca46..3fbc07d 100644 +--- a/arch/x86/kernel/irq_64.c ++++ b/arch/x86/kernel/irq_64.c +@@ -65,7 +65,7 @@ bool handle_irq(unsigned irq, struct pt_regs *regs) return true; } @@ -174,10 +175,10 @@ Index: linux-3.2/arch/x86/kernel/irq_64.c local_irq_restore(flags); } +#endif -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 20d8dcc..1a74cf7 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -456,10 +456,9 @@ struct softirq_action void (*action)(struct softirq_action *); }; @@ -190,3 +191,6 @@ Index: linux-3.2/include/linux/interrupt.h static inline void thread_do_softirq(void) { do_softirq(); } #else extern void thread_do_softirq(void); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/softirq-make-fifo.patch b/debian/patches/features/all/rt/0186-softirq-make-fifo.patch.patch similarity index 82% rename from debian/patches/features/all/rt/softirq-make-fifo.patch rename to debian/patches/features/all/rt/0186-softirq-make-fifo.patch.patch index a11cb407a..73fc54990 100644 --- a/debian/patches/features/all/rt/softirq-make-fifo.patch +++ b/debian/patches/features/all/rt/0186-softirq-make-fifo.patch.patch @@ -1,16 +1,17 @@ -Subject: softirq-make-fifo.patch +From 38fc4611892b365946ff2d9b340dcdab3d8ac761 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 21:06:43 +0200 +Subject: [PATCH 186/267] softirq-make-fifo.patch Signed-off-by: Thomas Gleixner --- kernel/softirq.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) -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 56de566..dd80cb4 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -372,6 +372,8 @@ asmlinkage void do_softirq(void) static inline void local_bh_disable_nort(void) { local_bh_disable(); } @@ -50,7 +51,7 @@ Index: linux-3.2/kernel/softirq.c set_current_state(TASK_INTERRUPTIBLE); while (!kthread_should_stop()) { -@@ -1010,6 +1028,7 @@ static int run_ksoftirqd(void * __bind_c +@@ -1010,6 +1028,7 @@ static int run_ksoftirqd(void * __bind_cpu) wait_to_die: preempt_enable(); @@ -58,3 +59,6 @@ Index: linux-3.2/kernel/softirq.c /* Wait for kthread_stop */ set_current_state(TASK_INTERRUPTIBLE); while (!kthread_should_stop()) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch b/debian/patches/features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch similarity index 91% rename from debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch rename to debian/patches/features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch index 475ef02b0..9df0409e8 100644 --- a/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch +++ b/debian/patches/features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch @@ -1,6 +1,8 @@ -Subject: tasklet: Prevent tasklets from going into infinite spin in RT +From 0186c7f6a5827da6ac440b1d79ca105f6d41ff1f Mon Sep 17 00:00:00 2001 From: Ingo Molnar -Date: Tue Nov 29 20:18:22 2011 -0500 +Date: Tue, 29 Nov 2011 20:18:22 -0500 +Subject: [PATCH 187/267] tasklet: Prevent tasklets from going into infinite + spin in RT When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads, and spinlocks turn are mutexes. But this can cause issues with @@ -9,21 +11,21 @@ if a tasklets are disabled with tasklet_disable(), the tasklet count is increased. When a tasklet runs, it checks this counter and if it is set, it adds itself back on the softirq queue and returns. - + The problem arises in RT because ksoftirq will see that a softirq is ready to run (the tasklet softirq just re-armed itself), and will not sleep, but instead run the softirqs again. The tasklet softirq will still see that the count is non-zero and will not execute the tasklet and requeue itself on the softirq again, which will cause ksoftirqd to run it again and again and again. - + It gets worse because ksoftirqd runs as a real-time thread. If it preempted the task that disabled tasklets, and that task has migration disabled, or can't run for other reasons, the tasklet softirq will never run because the count will never be zero, and ksoftirqd will go into an infinite loop. As an RT task, it this becomes a big problem. - + This is a hack solution to have tasklet_disable stop tasklets, and when a tasklet runs, instead of requeueing the tasklet softirqd it delays it. When tasklet_enable() is called, and tasklets are @@ -31,21 +33,20 @@ waiting, then the tasklet_enable() will kick the tasklets to continue. This prevents the lock up from ksoftirq going into an infinite loop. [ rostedt@goodmis.org: ported to 3.0-rt ] - + Signed-off-by: Ingo Molnar Signed-off-by: Steven Rostedt Signed-off-by: Thomas Gleixner - --- - include/linux/interrupt.h | 39 ++++---- - kernel/softirq.c | 208 +++++++++++++++++++++++++++++++++------------- + include/linux/interrupt.h | 39 ++++----- + kernel/softirq.c | 208 ++++++++++++++++++++++++++++++++------------- 2 files changed, 170 insertions(+), 77 deletions(-) -Index: linux-3.2/include/linux/interrupt.h -=================================================================== ---- linux-3.2.orig/include/linux/interrupt.h -+++ linux-3.2/include/linux/interrupt.h -@@ -517,8 +517,9 @@ extern void __send_remote_softirq(struct +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 1a74cf7..bb4b441 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -517,8 +517,9 @@ extern void __send_remote_softirq(struct call_single_data *cp, int cpu, to be executed on some cpu at least once after this. * If the tasklet is already scheduled, but its execution is still not started, it will be executed only once. @@ -57,7 +58,7 @@ Index: linux-3.2/include/linux/interrupt.h * Tasklet is strictly serialized wrt itself, but not wrt another tasklets. If client needs some intertask synchronization, he makes it with spinlocks. -@@ -543,27 +544,36 @@ struct tasklet_struct name = { NULL, 0, +@@ -543,27 +544,36 @@ struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data } enum { TASKLET_STATE_SCHED, /* Tasklet is scheduled for execution */ @@ -100,7 +101,7 @@ Index: linux-3.2/include/linux/interrupt.h #define tasklet_unlock_wait(t) do { } while (0) #define tasklet_unlock(t) do { } while (0) #endif -@@ -612,17 +622,8 @@ static inline void tasklet_disable(struc +@@ -612,17 +622,8 @@ static inline void tasklet_disable(struct tasklet_struct *t) smp_mb(); } @@ -120,10 +121,10 @@ Index: linux-3.2/include/linux/interrupt.h extern void tasklet_kill(struct tasklet_struct *t); extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu); -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 dd80cb4..92b4ca3 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -21,6 +21,7 @@ #include #include @@ -182,7 +183,7 @@ Index: linux-3.2/kernel/softirq.c local_irq_restore(flags); } -@@ -683,10 +714,7 @@ void __tasklet_hi_schedule(struct taskle +@@ -683,10 +714,7 @@ void __tasklet_hi_schedule(struct tasklet_struct *t) unsigned long flags; local_irq_save(flags); @@ -340,7 +341,7 @@ Index: linux-3.2/kernel/softirq.c static void tasklet_hi_action(struct softirq_action *a) { struct tasklet_struct *list; -@@ -748,29 +845,7 @@ static void tasklet_hi_action(struct sof +@@ -748,29 +845,7 @@ static void tasklet_hi_action(struct softirq_action *a) __this_cpu_write(tasklet_hi_vec.tail, &__get_cpu_var(tasklet_hi_vec).head); local_irq_enable(); @@ -371,7 +372,7 @@ Index: linux-3.2/kernel/softirq.c } -@@ -793,7 +868,7 @@ void tasklet_kill(struct tasklet_struct +@@ -793,7 +868,7 @@ void tasklet_kill(struct tasklet_struct *t) while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) { do { @@ -404,3 +405,6 @@ Index: linux-3.2/kernel/softirq.c static int run_ksoftirqd(void * __bind_cpu) { ksoftirqd_set_sched_params(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch b/debian/patches/features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch similarity index 75% rename from debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch rename to debian/patches/features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch index a23a1b00b..07de292ea 100644 --- a/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch +++ b/debian/patches/features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch @@ -1,6 +1,8 @@ -Subject: genirq: Allow disabling of softirq processing in irq thread context +From 921c2222f2e604f5e5ac0953d21b0db3d92b1eae Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 31 Jan 2012 13:01:27 +0100 +Subject: [PATCH 188/267] genirq: Allow disabling of softirq processing in irq + thread context The processing of softirqs in irq thread context is a performance gain for the non-rt workloads of a system, but it's counterproductive for @@ -18,10 +20,10 @@ Cc: stable-rt@vger.kernel.org kernel/softirq.c | 7 +++++++ 5 files changed, 37 insertions(+), 2 deletions(-) -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 bb4b441..f70a65b 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -61,6 +61,7 @@ * IRQF_NO_THREAD - Interrupt cannot be threaded * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device @@ -38,11 +40,11 @@ Index: linux-3.2/include/linux/interrupt.h #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) -Index: linux-3.2/include/linux/irq.h -=================================================================== ---- linux-3.2.orig/include/linux/irq.h -+++ linux-3.2/include/linux/irq.h -@@ -67,6 +67,7 @@ typedef void (*irq_preflow_handler_t)(st +diff --git a/include/linux/irq.h b/include/linux/irq.h +index bff29c5..3838b53 100644 +--- a/include/linux/irq.h ++++ b/include/linux/irq.h +@@ -67,6 +67,7 @@ typedef void (*irq_preflow_handler_t)(struct irq_data *data); * IRQ_MOVE_PCNTXT - Interrupt can be migrated from process context * IRQ_NESTED_TRHEAD - Interrupt nests into another thread * IRQ_PER_CPU_DEVID - Dev_id is a per-cpu variable @@ -66,11 +68,11 @@ Index: linux-3.2/include/linux/irq.h #define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) -Index: linux-3.2/kernel/irq/manage.c -=================================================================== ---- linux-3.2.orig/kernel/irq/manage.c -+++ linux-3.2/kernel/irq/manage.c -@@ -742,7 +742,15 @@ irq_forced_thread_fn(struct irq_desc *de +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c +index b3e6228..87dc053 100644 +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -742,7 +742,15 @@ irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) local_bh_disable(); ret = action->thread_fn(action->irq, action->dev_id); irq_finalize_oneshot(desc, action, false); @@ -87,7 +89,7 @@ Index: linux-3.2/kernel/irq/manage.c return ret; } -@@ -1040,6 +1048,9 @@ __setup_irq(unsigned int irq, struct irq +@@ -1072,6 +1080,9 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) irqd_set(&desc->irq_data, IRQD_NO_BALANCING); } @@ -97,10 +99,10 @@ Index: linux-3.2/kernel/irq/manage.c /* Set default affinity mask once everything is setup */ setup_affinity(irq, desc, mask); -Index: linux-3.2/kernel/irq/settings.h -=================================================================== ---- linux-3.2.orig/kernel/irq/settings.h -+++ linux-3.2/kernel/irq/settings.h +diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h +index 1162f10..0d2c381 100644 +--- a/kernel/irq/settings.h ++++ b/kernel/irq/settings.h @@ -14,6 +14,7 @@ enum { _IRQ_NO_BALANCING = IRQ_NO_BALANCING, _IRQ_NESTED_THREAD = IRQ_NESTED_THREAD, @@ -117,7 +119,7 @@ Index: linux-3.2/kernel/irq/settings.h #undef IRQF_MODIFY_MASK #define IRQF_MODIFY_MASK GOT_YOU_MORON -@@ -36,6 +38,16 @@ irq_settings_clr_and_set(struct irq_desc +@@ -36,6 +38,16 @@ irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set) desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK); } @@ -134,11 +136,11 @@ Index: linux-3.2/kernel/irq/settings.h static inline bool irq_settings_is_per_cpu(struct irq_desc *desc) { return desc->status_use_accessors & _IRQ_PER_CPU; -Index: linux-3.2/kernel/softirq.c -=================================================================== ---- linux-3.2.orig/kernel/softirq.c -+++ linux-3.2/kernel/softirq.c -@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 92b4ca3..bef08f3 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip) } EXPORT_SYMBOL(local_bh_enable_ip); @@ -152,3 +154,6 @@ Index: linux-3.2/kernel/softirq.c /* For tracing */ int notrace __in_softirq(void) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/local-vars-migrate-disable.patch b/debian/patches/features/all/rt/0189-local-vars-migrate-disable.patch.patch similarity index 80% rename from debian/patches/features/all/rt/local-vars-migrate-disable.patch rename to debian/patches/features/all/rt/0189-local-vars-migrate-disable.patch.patch index 31cfe7bff..5f7a69f49 100644 --- a/debian/patches/features/all/rt/local-vars-migrate-disable.patch +++ b/debian/patches/features/all/rt/0189-local-vars-migrate-disable.patch.patch @@ -1,16 +1,17 @@ -Subject: local-vars-migrate-disable.patch +From 8ec660e9168d77128ee8ed90fb0812b696e77a1f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 20:42:16 +0200 +Subject: [PATCH 189/267] local-vars-migrate-disable.patch Signed-off-by: Thomas Gleixner --- include/linux/percpu.h | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) -Index: linux-3.2/include/linux/percpu.h -=================================================================== ---- linux-3.2.orig/include/linux/percpu.h -+++ linux-3.2/include/linux/percpu.h +diff --git a/include/linux/percpu.h b/include/linux/percpu.h +index 3941ea4..58163cd 100644 +--- a/include/linux/percpu.h ++++ b/include/linux/percpu.h @@ -48,10 +48,30 @@ preempt_enable(); \ } while (0) @@ -46,3 +47,6 @@ Index: linux-3.2/include/linux/percpu.h /* minimum unit size, also is the maximum supported allocation size */ #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch b/debian/patches/features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch similarity index 69% rename from debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch rename to debian/patches/features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch index d4f2998e0..9378d7734 100644 --- a/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch +++ b/debian/patches/features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch @@ -1,6 +1,7 @@ +From a925e22d397c9740d9ba558b622b7b4904d19932 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 6 Apr 2010 16:51:31 +0200 -Subject: md: raid5: Make raid5_percpu handling RT aware +Subject: [PATCH 190/267] md: raid5: Make raid5_percpu handling RT aware __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic @@ -12,17 +13,16 @@ preemptible. Reported-by: Udo van den Heuvel Signed-off-by: Thomas Gleixner Tested-by: Udo van den Heuvel - --- drivers/md/raid5.c | 7 +++++-- drivers/md/raid5.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) -Index: linux-3.2/drivers/md/raid5.c -=================================================================== ---- linux-3.2.orig/drivers/md/raid5.c -+++ linux-3.2/drivers/md/raid5.c -@@ -1245,8 +1245,9 @@ static void __raid_run_ops(struct stripe +diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c +index 858fdbb..c2401e8 100644 +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c +@@ -1245,8 +1245,9 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request) struct raid5_percpu *percpu; unsigned long cpu; @@ -33,7 +33,7 @@ Index: linux-3.2/drivers/md/raid5.c if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) { ops_run_biofill(sh); overlap_clear++; -@@ -1298,7 +1299,8 @@ static void __raid_run_ops(struct stripe +@@ -1298,7 +1299,8 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request) if (test_and_clear_bit(R5_Overlap, &dev->flags)) wake_up(&sh->raid_conf->wait_for_overlap); } @@ -43,7 +43,7 @@ Index: linux-3.2/drivers/md/raid5.c } #ifdef CONFIG_MULTICORE_RAID456 -@@ -4539,6 +4541,7 @@ static int raid5_alloc_percpu(struct r5c +@@ -4539,6 +4541,7 @@ static int raid5_alloc_percpu(struct r5conf *conf) break; } per_cpu_ptr(conf->percpu, cpu)->scribble = scribble; @@ -51,10 +51,10 @@ Index: linux-3.2/drivers/md/raid5.c } #ifdef CONFIG_HOTPLUG_CPU conf->cpu_notify.notifier_call = raid456_cpu_notify; -Index: linux-3.2/drivers/md/raid5.h -=================================================================== ---- linux-3.2.orig/drivers/md/raid5.h -+++ linux-3.2/drivers/md/raid5.h +diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h +index e10c553..010a969 100644 +--- a/drivers/md/raid5.h ++++ b/drivers/md/raid5.h @@ -405,6 +405,7 @@ struct r5conf { int recovery_disabled; /* per cpu variables */ @@ -63,3 +63,6 @@ Index: linux-3.2/drivers/md/raid5.h struct page *spare_page; /* Used when checking P/Q in raid6 */ void *scribble; /* space for constructing buffer * lists and performing address +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rtmutex-lock-killable.patch b/debian/patches/features/all/rt/0191-rtmutex-lock-killable.patch.patch similarity index 79% rename from debian/patches/features/all/rt/rtmutex-lock-killable.patch rename to debian/patches/features/all/rt/0191-rtmutex-lock-killable.patch.patch index 949c6de47..d24ae383c 100644 --- a/debian/patches/features/all/rt/rtmutex-lock-killable.patch +++ b/debian/patches/features/all/rt/0191-rtmutex-lock-killable.patch.patch @@ -1,6 +1,7 @@ -Subject: rtmutex-lock-killable.patch +From 4a983053b2d60a6f87eac812ee805671bdc1f9f0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Thu, 09 Jun 2011 11:43:52 +0200 +Date: Thu, 9 Jun 2011 11:43:52 +0200 +Subject: [PATCH 191/267] rtmutex-lock-killable.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/rtmutex.c | 33 +++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) -Index: linux-3.2/include/linux/rtmutex.h -=================================================================== ---- linux-3.2.orig/include/linux/rtmutex.h -+++ linux-3.2/include/linux/rtmutex.h -@@ -90,6 +90,7 @@ extern void rt_mutex_destroy(struct rt_m +diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h +index de17134..3561eb2 100644 +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h +@@ -90,6 +90,7 @@ extern void rt_mutex_destroy(struct rt_mutex *lock); extern void rt_mutex_lock(struct rt_mutex *lock); extern int rt_mutex_lock_interruptible(struct rt_mutex *lock, int detect_deadlock); @@ -20,10 +21,10 @@ Index: linux-3.2/include/linux/rtmutex.h extern int rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout, int detect_deadlock); -Index: linux-3.2/kernel/rtmutex.c -=================================================================== ---- linux-3.2.orig/kernel/rtmutex.c -+++ linux-3.2/kernel/rtmutex.c +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index f9d8482..723fd3a 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -799,12 +799,12 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock); /** * rt_mutex_lock_interruptible - lock a rt_mutex interruptible @@ -40,7 +41,7 @@ Index: linux-3.2/kernel/rtmutex.c * -EDEADLK when the lock would deadlock (when deadlock detection is on) */ int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock, -@@ -818,17 +818,38 @@ int __sched rt_mutex_lock_interruptible( +@@ -818,17 +818,38 @@ int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock, EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible); /** @@ -82,3 +83,6 @@ Index: linux-3.2/kernel/rtmutex.c * -ETIMEDOUT when the timeout expired * -EDEADLK when the lock would deadlock (when deadlock detection is on) */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch b/debian/patches/features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch similarity index 80% rename from debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch rename to debian/patches/features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch index bef9a87fc..55c14da2b 100644 --- a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch +++ b/debian/patches/features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch @@ -1,19 +1,20 @@ -Subject: rtmutex-futex-prepare-rt.patch +From 7f683c2c7663bb1db3d91fa8cf280960ce9f571c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 10 Jun 2011 11:04:15 +0200 +Subject: [PATCH 192/267] rtmutex-futex-prepare-rt.patch Signed-off-by: Thomas Gleixner --- - kernel/futex.c | 77 ++++++++++++++++++++++++++++++++++++++---------- + kernel/futex.c | 77 ++++++++++++++++++++++++++++++++++++++--------- kernel/rtmutex.c | 31 ++++++++++++++++--- - kernel/rtmutex_common.h | 2 + + kernel/rtmutex_common.h | 2 ++ 3 files changed, 91 insertions(+), 19 deletions(-) -Index: linux-3.2/kernel/futex.c -=================================================================== ---- linux-3.2.orig/kernel/futex.c -+++ linux-3.2/kernel/futex.c -@@ -1422,6 +1422,16 @@ retry_private: +diff --git a/kernel/futex.c b/kernel/futex.c +index 866c9d5..840fcea 100644 +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -1423,6 +1423,16 @@ retry_private: requeue_pi_wake_futex(this, &key2, hb2); drop_count++; continue; @@ -30,7 +31,7 @@ Index: linux-3.2/kernel/futex.c } else if (ret) { /* -EDEADLK */ this->pi_state = NULL; -@@ -2266,7 +2276,7 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2267,7 +2277,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, struct hrtimer_sleeper timeout, *to = NULL; struct rt_mutex_waiter rt_waiter; struct rt_mutex *pi_mutex = NULL; @@ -39,7 +40,7 @@ Index: linux-3.2/kernel/futex.c union futex_key key2 = FUTEX_KEY_INIT; struct futex_q q = futex_q_init; int res, ret; -@@ -2310,20 +2320,55 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2311,20 +2321,55 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -106,7 +107,7 @@ Index: linux-3.2/kernel/futex.c /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -2332,9 +2377,10 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2333,9 +2378,10 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -119,7 +120,7 @@ Index: linux-3.2/kernel/futex.c } } else { /* -@@ -2347,7 +2393,8 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2348,7 +2394,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1); debug_rt_mutex_free_waiter(&rt_waiter); @@ -129,11 +130,11 @@ Index: linux-3.2/kernel/futex.c /* * Fixup the pi_state owner and possibly acquire the lock if we * haven't already. -Index: linux-3.2/kernel/rtmutex.c -=================================================================== ---- linux-3.2.orig/kernel/rtmutex.c -+++ linux-3.2/kernel/rtmutex.c -@@ -67,6 +67,11 @@ static void fixup_rt_mutex_waiters(struc +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index 723fd3a..13b3c92 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -67,6 +67,11 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock) clear_rt_mutex_waiters(lock); } @@ -145,7 +146,7 @@ Index: linux-3.2/kernel/rtmutex.c /* * We can speed up the acquire/release, if the architecture * supports cmpxchg and if there's no debugging state to be set up -@@ -196,7 +201,7 @@ static int rt_mutex_adjust_prio_chain(st +@@ -196,7 +201,7 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, * reached or the state of the chain has changed while we * dropped the locks. */ @@ -154,7 +155,7 @@ Index: linux-3.2/kernel/rtmutex.c goto out_unlock_pi; /* -@@ -399,6 +404,23 @@ static int task_blocks_on_rt_mutex(struc +@@ -399,6 +404,23 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock, int chain_walk = 0, res; raw_spin_lock_irqsave(&task->pi_lock, flags); @@ -178,7 +179,7 @@ Index: linux-3.2/kernel/rtmutex.c __rt_mutex_adjust_prio(task); waiter->task = task; waiter->lock = lock; -@@ -423,7 +445,7 @@ static int task_blocks_on_rt_mutex(struc +@@ -423,7 +445,7 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock, plist_add(&waiter->pi_list_entry, &owner->pi_waiters); __rt_mutex_adjust_prio(owner); @@ -187,7 +188,7 @@ Index: linux-3.2/kernel/rtmutex.c chain_walk = 1; raw_spin_unlock_irqrestore(&owner->pi_lock, flags); } -@@ -517,7 +539,7 @@ static void remove_waiter(struct rt_mute +@@ -517,7 +539,7 @@ static void remove_waiter(struct rt_mutex *lock, } __rt_mutex_adjust_prio(owner); @@ -196,7 +197,7 @@ Index: linux-3.2/kernel/rtmutex.c chain_walk = 1; raw_spin_unlock_irqrestore(&owner->pi_lock, flags); -@@ -551,7 +573,8 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -551,7 +573,8 @@ void rt_mutex_adjust_pi(struct task_struct *task) raw_spin_lock_irqsave(&task->pi_lock, flags); waiter = task->pi_blocked_on; @@ -206,11 +207,11 @@ Index: linux-3.2/kernel/rtmutex.c raw_spin_unlock_irqrestore(&task->pi_lock, flags); return; } -Index: linux-3.2/kernel/rtmutex_common.h -=================================================================== ---- linux-3.2.orig/kernel/rtmutex_common.h -+++ linux-3.2/kernel/rtmutex_common.h -@@ -103,6 +103,8 @@ static inline struct task_struct *rt_mut +diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h +index 53a66c8..b43d832 100644 +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h +@@ -103,6 +103,8 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock) /* * PI-futex support (proxy locking functions, etc.): */ @@ -219,3 +220,6 @@ Index: linux-3.2/kernel/rtmutex_common.h extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, struct task_struct *proxy_owner); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/futex-requeue-pi-fix.patch b/debian/patches/features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch similarity index 81% rename from debian/patches/features/all/rt/futex-requeue-pi-fix.patch rename to debian/patches/features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch index 9a0cf9336..f59357fff 100644 --- a/debian/patches/features/all/rt/futex-requeue-pi-fix.patch +++ b/debian/patches/features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch @@ -1,11 +1,12 @@ -Subject: futex: Fix bug on when a requeued RT task times out +From 3e18d19f9ef2d8e08827a5710c402485b169004c Mon Sep 17 00:00:00 2001 From: Steven Rostedt +Date: Tue, 10 Apr 2012 14:34:13 -0400 +Subject: [PATCH 193/267] futex: Fix bug on when a requeued RT task times out Requeue with timeout causes a bug with PREEMPT_RT_FULL. The bug comes from a timed out condition. - TASK 1 TASK 2 ------ ------ futex_wait_requeue_pi() @@ -15,13 +16,12 @@ The bug comes from a timed out condition. double_lock_hb(); raw_spin_lock(pi_lock); - if (current->pi_blocked_on) { + if (current->pi_blocked_on) { } else { current->pi_blocked_on = PI_WAKE_INPROGRESS; run_spin_unlock(pi_lock); spin_lock(hb->lock); <-- blocked! - plist_for_each_entry_safe(this) { rt_mutex_start_proxy_lock(); task_blocks_on_rt_mutex(); @@ -47,18 +47,16 @@ appropriately. Cc: stable-rt@vger.kernel.org Signed-off-by: Steven Rostedt Signed-off-by: Thomas Gleixner - - --- kernel/rtmutex.c | 32 +++++++++++++++++++++++++++++++- kernel/rtmutex_common.h | 1 + 2 files changed, 32 insertions(+), 1 deletion(-) -Index: linux-3.2/kernel/rtmutex.c -=================================================================== ---- linux-3.2.orig/kernel/rtmutex.c -+++ linux-3.2/kernel/rtmutex.c -@@ -69,7 +69,8 @@ static void fixup_rt_mutex_waiters(struc +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index 13b3c92..f8dcb7b 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -69,7 +69,8 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock) static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter) { @@ -68,7 +66,7 @@ Index: linux-3.2/kernel/rtmutex.c } /* -@@ -1010,6 +1011,35 @@ int rt_mutex_start_proxy_lock(struct rt_ +@@ -1010,6 +1011,35 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock, return 1; } @@ -104,11 +102,11 @@ Index: linux-3.2/kernel/rtmutex.c ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock); if (ret && !rt_mutex_owner(lock)) { -Index: linux-3.2/kernel/rtmutex_common.h -=================================================================== ---- linux-3.2.orig/kernel/rtmutex_common.h -+++ linux-3.2/kernel/rtmutex_common.h -@@ -104,6 +104,7 @@ static inline struct task_struct *rt_mut +diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h +index b43d832..47290ec 100644 +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h +@@ -104,6 +104,7 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock) * PI-futex support (proxy locking functions, etc.): */ #define PI_WAKEUP_INPROGRESS ((struct rt_mutex_waiter *) 1) @@ -116,3 +114,6 @@ Index: linux-3.2/kernel/rtmutex_common.h extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch b/debian/patches/features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch similarity index 88% rename from debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch rename to debian/patches/features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch index 18380005a..3ada99886 100644 --- a/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch +++ b/debian/patches/features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch @@ -1,19 +1,20 @@ -Subject: rt-mutex-add-sleeping-spinlocks-support.patch +From 2b86a7f0c11f3f308ab29cce9ac43397cc243f50 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 10 Jun 2011 11:21:25 +0200 +Subject: [PATCH 194/267] rt-mutex-add-sleeping-spinlocks-support.patch Signed-off-by: Thomas Gleixner --- - include/linux/rtmutex.h | 35 +++- - kernel/futex.c | 3 - kernel/rtmutex.c | 382 +++++++++++++++++++++++++++++++++++++++++++++--- - kernel/rtmutex_common.h | 9 + + include/linux/rtmutex.h | 35 ++++- + kernel/futex.c | 3 +- + kernel/rtmutex.c | 382 ++++++++++++++++++++++++++++++++++++++++++++--- + kernel/rtmutex_common.h | 9 ++ 4 files changed, 403 insertions(+), 26 deletions(-) -Index: linux-3.2/include/linux/rtmutex.h -=================================================================== ---- linux-3.2.orig/include/linux/rtmutex.h -+++ linux-3.2/include/linux/rtmutex.h +diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h +index 3561eb2..928d93e 100644 +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h @@ -29,9 +29,10 @@ struct rt_mutex { raw_spinlock_t wait_lock; struct plist_head wait_list; @@ -72,11 +73,11 @@ Index: linux-3.2/include/linux/rtmutex.h #define DEFINE_RT_MUTEX(mutexname) \ struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname) -Index: linux-3.2/kernel/futex.c -=================================================================== ---- linux-3.2.orig/kernel/futex.c -+++ linux-3.2/kernel/futex.c -@@ -2298,8 +2298,7 @@ static int futex_wait_requeue_pi(u32 __u +diff --git a/kernel/futex.c b/kernel/futex.c +index 840fcea..2771a63 100644 +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2299,8 +2299,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * The waiter is allocated on our stack, manipulated by the requeue * code while we sleep on uaddr. */ @@ -86,10 +87,10 @@ Index: linux-3.2/kernel/futex.c ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE); if (unlikely(ret != 0)) -Index: linux-3.2/kernel/rtmutex.c -=================================================================== ---- linux-3.2.orig/kernel/rtmutex.c -+++ linux-3.2/kernel/rtmutex.c +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index f8dcb7b..a7723d2 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -8,6 +8,12 @@ * Copyright (C) 2005 Kihon Technologies Inc., Steven Rostedt * Copyright (C) 2006 Esben Nielsen @@ -103,7 +104,7 @@ Index: linux-3.2/kernel/rtmutex.c * See Documentation/rt-mutex-design.txt for details. */ #include -@@ -96,6 +102,12 @@ static inline void mark_rt_mutex_waiters +@@ -96,6 +102,12 @@ static inline void mark_rt_mutex_waiters(struct rt_mutex *lock) } #endif @@ -116,7 +117,7 @@ Index: linux-3.2/kernel/rtmutex.c /* * Calculate task priority from the waiter list priority * -@@ -142,6 +154,14 @@ static void rt_mutex_adjust_prio(struct +@@ -142,6 +154,14 @@ static void rt_mutex_adjust_prio(struct task_struct *task) raw_spin_unlock_irqrestore(&task->pi_lock, flags); } @@ -131,7 +132,7 @@ Index: linux-3.2/kernel/rtmutex.c /* * Max number of times we'll walk the boosting chain: */ -@@ -253,13 +273,15 @@ static int rt_mutex_adjust_prio_chain(st +@@ -253,13 +273,15 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, /* Release the task */ raw_spin_unlock_irqrestore(&task->pi_lock, flags); if (!rt_mutex_owner(lock)) { @@ -150,7 +151,7 @@ Index: linux-3.2/kernel/rtmutex.c raw_spin_unlock(&lock->wait_lock); goto out_put_task; } -@@ -304,6 +326,25 @@ static int rt_mutex_adjust_prio_chain(st +@@ -304,6 +326,25 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, return ret; } @@ -176,7 +177,7 @@ Index: linux-3.2/kernel/rtmutex.c /* * Try to take an rt-mutex * -@@ -313,8 +354,9 @@ static int rt_mutex_adjust_prio_chain(st +@@ -313,8 +354,9 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, * @task: the task which wants to acquire the lock * @waiter: the waiter that is queued to the lock's wait list. (could be NULL) */ @@ -188,7 +189,7 @@ Index: linux-3.2/kernel/rtmutex.c { /* * We have to be careful here if the atomic speedups are -@@ -347,12 +389,14 @@ static int try_to_take_rt_mutex(struct r +@@ -347,12 +389,14 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, * 3) it is top waiter */ if (rt_mutex_has_waiters(lock)) { @@ -207,7 +208,7 @@ Index: linux-3.2/kernel/rtmutex.c if (waiter || rt_mutex_has_waiters(lock)) { unsigned long flags; struct rt_mutex_waiter *top; -@@ -377,7 +421,6 @@ static int try_to_take_rt_mutex(struct r +@@ -377,7 +421,6 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, raw_spin_unlock_irqrestore(&task->pi_lock, flags); } @@ -215,7 +216,7 @@ Index: linux-3.2/kernel/rtmutex.c debug_rt_mutex_lock(lock); rt_mutex_set_owner(lock, task); -@@ -387,6 +430,13 @@ static int try_to_take_rt_mutex(struct r +@@ -387,6 +430,13 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, return 1; } @@ -229,7 +230,7 @@ Index: linux-3.2/kernel/rtmutex.c /* * Task blocks on lock. * -@@ -501,7 +551,7 @@ static void wakeup_next_waiter(struct rt +@@ -501,7 +551,7 @@ static void wakeup_next_waiter(struct rt_mutex *lock) raw_spin_unlock_irqrestore(¤t->pi_lock, flags); @@ -238,7 +239,7 @@ Index: linux-3.2/kernel/rtmutex.c } /* -@@ -580,18 +630,315 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -580,18 +630,315 @@ void rt_mutex_adjust_pi(struct task_struct *task) return; } @@ -557,7 +558,7 @@ Index: linux-3.2/kernel/rtmutex.c * @timeout: the pre-initialized and started timer, or NULL for none * @waiter: the pre-initialized rt_mutex_waiter * -@@ -655,9 +1002,10 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -655,9 +1002,10 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state, struct rt_mutex_waiter waiter; int ret = 0; @@ -569,7 +570,7 @@ Index: linux-3.2/kernel/rtmutex.c /* Try to acquire the lock again: */ if (try_to_take_rt_mutex(lock, current, NULL)) { -@@ -710,6 +1058,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lo +@@ -710,6 +1058,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lock) int ret = 0; raw_spin_lock(&lock->wait_lock); @@ -594,10 +595,10 @@ Index: linux-3.2/kernel/rtmutex.c debug_rt_mutex_proxy_lock(lock, proxy_owner); rt_mutex_set_owner(lock, proxy_owner); rt_mutex_deadlock_account_lock(lock, proxy_owner); -Index: linux-3.2/kernel/rtmutex_common.h -=================================================================== ---- linux-3.2.orig/kernel/rtmutex_common.h -+++ linux-3.2/kernel/rtmutex_common.h +diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h +index 47290ec..6ec3dc1 100644 +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h @@ -49,6 +49,7 @@ struct rt_mutex_waiter { struct plist_node pi_list_entry; struct task_struct *task; @@ -606,7 +607,7 @@ Index: linux-3.2/kernel/rtmutex_common.h #ifdef CONFIG_DEBUG_RT_MUTEXES unsigned long ip; struct pid *deadlock_task_pid; -@@ -126,4 +127,12 @@ extern int rt_mutex_finish_proxy_lock(st +@@ -126,4 +127,12 @@ extern int rt_mutex_finish_proxy_lock(struct rt_mutex *lock, # include "rtmutex.h" #endif @@ -619,3 +620,6 @@ Index: linux-3.2/kernel/rtmutex_common.h +} + #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/spinlock-types-separate-raw.patch b/debian/patches/features/all/rt/0195-spinlock-types-separate-raw.patch.patch similarity index 81% rename from debian/patches/features/all/rt/spinlock-types-separate-raw.patch rename to debian/patches/features/all/rt/0195-spinlock-types-separate-raw.patch.patch index 6e259fc54..56c5e409e 100644 --- a/debian/patches/features/all/rt/spinlock-types-separate-raw.patch +++ b/debian/patches/features/all/rt/0195-spinlock-types-separate-raw.patch.patch @@ -1,19 +1,22 @@ -Subject: spinlock-types-separate-raw.patch +From edc23764a4d960d988c6f0edc219a6bdece3813f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 19:34:01 +0200 +Subject: [PATCH 195/267] spinlock-types-separate-raw.patch Signed-off-by: Thomas Gleixner --- - include/linux/rwlock_types.h | 4 + - include/linux/spinlock_types.h | 74 ------------------------------------ + include/linux/rwlock_types.h | 4 ++ + include/linux/spinlock_types.h | 74 +---------------------------------- include/linux/spinlock_types_nort.h | 33 ++++++++++++++++ - include/linux/spinlock_types_raw.h | 56 +++++++++++++++++++++++++++ + include/linux/spinlock_types_raw.h | 56 ++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 72 deletions(-) + create mode 100644 include/linux/spinlock_types_nort.h + create mode 100644 include/linux/spinlock_types_raw.h -Index: linux-3.2/include/linux/rwlock_types.h -=================================================================== ---- linux-3.2.orig/include/linux/rwlock_types.h -+++ linux-3.2/include/linux/rwlock_types.h +diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h +index cc0072e..5317cd9 100644 +--- a/include/linux/rwlock_types.h ++++ b/include/linux/rwlock_types.h @@ -1,6 +1,10 @@ #ifndef __LINUX_RWLOCK_TYPES_H #define __LINUX_RWLOCK_TYPES_H @@ -25,10 +28,10 @@ Index: linux-3.2/include/linux/rwlock_types.h /* * include/linux/rwlock_types.h - generic rwlock type definitions * and initializers -Index: linux-3.2/include/linux/spinlock_types.h -=================================================================== ---- linux-3.2.orig/include/linux/spinlock_types.h -+++ linux-3.2/include/linux/spinlock_types.h +diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h +index 73548eb..5c8664d 100644 +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h @@ -9,79 +9,9 @@ * Released under the General Public License (GPL). */ @@ -111,10 +114,11 @@ Index: linux-3.2/include/linux/spinlock_types.h #include -Index: linux-3.2/include/linux/spinlock_types_nort.h -=================================================================== +diff --git a/include/linux/spinlock_types_nort.h b/include/linux/spinlock_types_nort.h +new file mode 100644 +index 0000000..f1dac1f --- /dev/null -+++ linux-3.2/include/linux/spinlock_types_nort.h ++++ b/include/linux/spinlock_types_nort.h @@ -0,0 +1,33 @@ +#ifndef __LINUX_SPINLOCK_TYPES_NORT_H +#define __LINUX_SPINLOCK_TYPES_NORT_H @@ -149,10 +153,11 @@ Index: linux-3.2/include/linux/spinlock_types_nort.h +#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) + +#endif -Index: linux-3.2/include/linux/spinlock_types_raw.h -=================================================================== +diff --git a/include/linux/spinlock_types_raw.h b/include/linux/spinlock_types_raw.h +new file mode 100644 +index 0000000..edffc4d --- /dev/null -+++ linux-3.2/include/linux/spinlock_types_raw.h ++++ b/include/linux/spinlock_types_raw.h @@ -0,0 +1,56 @@ +#ifndef __LINUX_SPINLOCK_TYPES_RAW_H +#define __LINUX_SPINLOCK_TYPES_RAW_H @@ -210,3 +215,6 @@ Index: linux-3.2/include/linux/spinlock_types_raw.h +#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) + +#endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch b/debian/patches/features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch similarity index 58% rename from debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch rename to debian/patches/features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch index 063acf007..c8b55c890 100644 --- a/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch +++ b/debian/patches/features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch @@ -1,16 +1,17 @@ -Subject: rtmutex-avoid-include-hell.patch +From 930f138fdda5b6523bcfdeb836d23454d36dd93e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 20:06:39 +0200 +Subject: [PATCH 196/267] rtmutex-avoid-include-hell.patch Signed-off-by: Thomas Gleixner --- include/linux/rtmutex.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/include/linux/rtmutex.h -=================================================================== ---- linux-3.2.orig/include/linux/rtmutex.h -+++ linux-3.2/include/linux/rtmutex.h +diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h +index 928d93e..5ebd0bb 100644 +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h @@ -14,7 +14,7 @@ #include @@ -20,3 +21,6 @@ Index: linux-3.2/include/linux/rtmutex.h extern int max_lock_depth; /* for sysctl */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch b/debian/patches/features/all/rt/0197-rt-add-rt-spinlocks.patch.patch similarity index 77% rename from debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch rename to debian/patches/features/all/rt/0197-rt-add-rt-spinlocks.patch.patch index 0f7d311b7..5c0f4be96 100644 --- a/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch +++ b/debian/patches/features/all/rt/0197-rt-add-rt-spinlocks.patch.patch @@ -1,18 +1,22 @@ -Subject: rt-add-rt-spinlocks.patch +From 553d24b2d8ed1a9be9bbccac50af86e71f700d21 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 19:43:35 +0200 +Subject: [PATCH 197/267] rt-add-rt-spinlocks.patch Signed-off-by: Thomas Gleixner --- include/linux/rwlock_types_rt.h | 33 +++++++++++++++++++++++++ - include/linux/spinlock_types.h | 11 ++++++-- - include/linux/spinlock_types_rt.h | 49 ++++++++++++++++++++++++++++++++++++++ + include/linux/spinlock_types.h | 11 ++++++--- + include/linux/spinlock_types_rt.h | 49 +++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 3 deletions(-) + create mode 100644 include/linux/rwlock_types_rt.h + create mode 100644 include/linux/spinlock_types_rt.h -Index: linux-3.2/include/linux/rwlock_types_rt.h -=================================================================== +diff --git a/include/linux/rwlock_types_rt.h b/include/linux/rwlock_types_rt.h +new file mode 100644 +index 0000000..b138321 --- /dev/null -+++ linux-3.2/include/linux/rwlock_types_rt.h ++++ b/include/linux/rwlock_types_rt.h @@ -0,0 +1,33 @@ +#ifndef __LINUX_RWLOCK_TYPES_RT_H +#define __LINUX_RWLOCK_TYPES_RT_H @@ -47,10 +51,10 @@ Index: linux-3.2/include/linux/rwlock_types_rt.h + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) + +#endif -Index: linux-3.2/include/linux/spinlock_types.h -=================================================================== ---- linux-3.2.orig/include/linux/spinlock_types.h -+++ linux-3.2/include/linux/spinlock_types.h +diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h +index 5c8664d..10bac71 100644 +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h @@ -11,8 +11,13 @@ #include @@ -68,10 +72,11 @@ Index: linux-3.2/include/linux/spinlock_types.h +#endif #endif /* __LINUX_SPINLOCK_TYPES_H */ -Index: linux-3.2/include/linux/spinlock_types_rt.h -=================================================================== +diff --git a/include/linux/spinlock_types_rt.h b/include/linux/spinlock_types_rt.h +new file mode 100644 +index 0000000..1fe8fc0 --- /dev/null -+++ linux-3.2/include/linux/spinlock_types_rt.h ++++ b/include/linux/spinlock_types_rt.h @@ -0,0 +1,49 @@ +#ifndef __LINUX_SPINLOCK_TYPES_RT_H +#define __LINUX_SPINLOCK_TYPES_RT_H @@ -122,3 +127,6 @@ Index: linux-3.2/include/linux/spinlock_types_rt.h + spinlock_t name __cacheline_aligned_in_smp = __SPIN_LOCK_UNLOCKED(name) + +#endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch b/debian/patches/features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch similarity index 87% rename from debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch rename to debian/patches/features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch index 808b9c3af..1ac100681 100644 --- a/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch +++ b/debian/patches/features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch @@ -1,17 +1,19 @@ -Subject: rt-add-rt-to-mutex-headers.patch +From 9d9363b19e5c6bfac8e6cbe4c4a91098820086c4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 20:56:22 +0200 +Subject: [PATCH 198/267] rt-add-rt-to-mutex-headers.patch Signed-off-by: Thomas Gleixner --- - include/linux/mutex.h | 21 +++++++---- - include/linux/mutex_rt.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++ + include/linux/mutex.h | 21 ++++++++---- + include/linux/mutex_rt.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 7 deletions(-) + create mode 100644 include/linux/mutex_rt.h -Index: linux-3.2/include/linux/mutex.h -=================================================================== ---- linux-3.2.orig/include/linux/mutex.h -+++ linux-3.2/include/linux/mutex.h +diff --git a/include/linux/mutex.h b/include/linux/mutex.h +index 9121595..bdf1da2 100644 +--- a/include/linux/mutex.h ++++ b/include/linux/mutex.h @@ -17,6 +17,17 @@ #include @@ -44,7 +46,7 @@ Index: linux-3.2/include/linux/mutex.h #define __MUTEX_INITIALIZER(lockname) \ { .count = ATOMIC_INIT(1) \ , .wait_lock = __SPIN_LOCK_UNLOCKED(lockname.wait_lock) \ -@@ -167,6 +171,9 @@ extern int __must_check mutex_lock_killa +@@ -167,6 +171,9 @@ extern int __must_check mutex_lock_killable(struct mutex *lock); */ extern int mutex_trylock(struct mutex *lock); extern void mutex_unlock(struct mutex *lock); @@ -54,10 +56,11 @@ Index: linux-3.2/include/linux/mutex.h extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock); #ifndef CONFIG_HAVE_ARCH_MUTEX_CPU_RELAX -Index: linux-3.2/include/linux/mutex_rt.h -=================================================================== +diff --git a/include/linux/mutex_rt.h b/include/linux/mutex_rt.h +new file mode 100644 +index 0000000..c38a44b --- /dev/null -+++ linux-3.2/include/linux/mutex_rt.h ++++ b/include/linux/mutex_rt.h @@ -0,0 +1,84 @@ +#ifndef __LINUX_MUTEX_RT_H +#define __LINUX_MUTEX_RT_H @@ -143,3 +146,6 @@ Index: linux-3.2/include/linux/mutex_rt.h +} while (0) + +#endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rwsem-add-rt-variant.patch b/debian/patches/features/all/rt/0199-rwsem-add-rt-variant.patch.patch similarity index 82% rename from debian/patches/features/all/rt/rwsem-add-rt-variant.patch rename to debian/patches/features/all/rt/0199-rwsem-add-rt-variant.patch.patch index 66a1c1afc..a82374870 100644 --- a/debian/patches/features/all/rt/rwsem-add-rt-variant.patch +++ b/debian/patches/features/all/rt/0199-rwsem-add-rt-variant.patch.patch @@ -1,18 +1,20 @@ -Subject: rwsem-add-rt-variant.patch +From ceee8a9d6deb269345ae0ae0949770809036443a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 21:02:53 +0200 +Subject: [PATCH 199/267] rwsem-add-rt-variant.patch Signed-off-by: Thomas Gleixner --- - include/linux/rwsem.h | 6 ++ - include/linux/rwsem_rt.h | 105 +++++++++++++++++++++++++++++++++++++++++++++++ - lib/Makefile | 3 + + include/linux/rwsem.h | 6 +++ + include/linux/rwsem_rt.h | 105 ++++++++++++++++++++++++++++++++++++++++++++++ + lib/Makefile | 3 ++ 3 files changed, 114 insertions(+) + create mode 100644 include/linux/rwsem_rt.h -Index: linux-3.2/include/linux/rwsem.h -=================================================================== ---- linux-3.2.orig/include/linux/rwsem.h -+++ linux-3.2/include/linux/rwsem.h +diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h +index 63d4065..209be4b 100644 +--- a/include/linux/rwsem.h ++++ b/include/linux/rwsem.h @@ -17,6 +17,10 @@ #include #include @@ -24,17 +26,18 @@ Index: linux-3.2/include/linux/rwsem.h struct rw_semaphore; #ifdef CONFIG_RWSEM_GENERIC_SPINLOCK -@@ -131,4 +135,6 @@ extern void down_write_nested(struct rw_ +@@ -131,4 +135,6 @@ extern void down_write_nested(struct rw_semaphore *sem, int subclass); # define down_write_nested(sem, subclass) down_write(sem) #endif +#endif /* !PREEMPT_RT_FULL */ + #endif /* _LINUX_RWSEM_H */ -Index: linux-3.2/include/linux/rwsem_rt.h -=================================================================== +diff --git a/include/linux/rwsem_rt.h b/include/linux/rwsem_rt.h +new file mode 100644 +index 0000000..802c690 --- /dev/null -+++ linux-3.2/include/linux/rwsem_rt.h ++++ b/include/linux/rwsem_rt.h @@ -0,0 +1,105 @@ +#ifndef _LINUX_RWSEM_RT_H +#define _LINUX_RWSEM_RT_H @@ -141,11 +144,11 @@ Index: linux-3.2/include/linux/rwsem_rt.h +} + +#endif -Index: linux-3.2/lib/Makefile -=================================================================== ---- linux-3.2.orig/lib/Makefile -+++ linux-3.2/lib/Makefile -@@ -37,8 +37,11 @@ obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o +diff --git a/lib/Makefile b/lib/Makefile +index a4da283..5026c91 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -37,8 +37,11 @@ obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o @@ -157,3 +160,6 @@ Index: linux-3.2/lib/Makefile CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS)) obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-add-rt-locks.patch b/debian/patches/features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch similarity index 89% rename from debian/patches/features/all/rt/rt-add-rt-locks.patch rename to debian/patches/features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch index b179d0f53..342d9650e 100644 --- a/debian/patches/features/all/rt/rt-add-rt-locks.patch +++ b/debian/patches/features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch @@ -1,27 +1,31 @@ +From caca4d3e5e340a8dc341f6bc64d3f5dfc829dc46 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 26 Jul 2009 19:39:56 +0200 -Subject: rt: Add the preempt-rt lock replacement APIs +Subject: [PATCH 200/267] rt: Add the preempt-rt lock replacement APIs Map spinlocks, rwlocks, rw_semaphores and semaphores to the rt_mutex based locking functions for preempt-rt. Signed-off-by: Thomas Gleixner - --- - include/linux/rwlock_rt.h | 123 ++++++++++ - include/linux/spinlock.h | 12 - - include/linux/spinlock_api_smp.h | 4 - include/linux/spinlock_rt.h | 156 +++++++++++++ - kernel/Makefile | 9 - kernel/rt.c | 442 +++++++++++++++++++++++++++++++++++++++ - kernel/spinlock.c | 7 - lib/spinlock_debug.c | 5 + include/linux/rwlock_rt.h | 123 +++++++++++ + include/linux/spinlock.h | 12 +- + include/linux/spinlock_api_smp.h | 4 +- + include/linux/spinlock_rt.h | 156 ++++++++++++++ + kernel/Makefile | 9 +- + kernel/rt.c | 442 ++++++++++++++++++++++++++++++++++++++ + kernel/spinlock.c | 7 + + lib/spinlock_debug.c | 5 + 8 files changed, 754 insertions(+), 4 deletions(-) + create mode 100644 include/linux/rwlock_rt.h + create mode 100644 include/linux/spinlock_rt.h + create mode 100644 kernel/rt.c -Index: linux-3.2/include/linux/rwlock_rt.h -=================================================================== +diff --git a/include/linux/rwlock_rt.h b/include/linux/rwlock_rt.h +new file mode 100644 +index 0000000..853ee36 --- /dev/null -+++ linux-3.2/include/linux/rwlock_rt.h ++++ b/include/linux/rwlock_rt.h @@ -0,0 +1,123 @@ +#ifndef __LINUX_RWLOCK_RT_H +#define __LINUX_RWLOCK_RT_H @@ -146,11 +150,11 @@ Index: linux-3.2/include/linux/rwlock_rt.h + } while (0) + +#endif -Index: linux-3.2/include/linux/spinlock.h -=================================================================== ---- linux-3.2.orig/include/linux/spinlock.h -+++ linux-3.2/include/linux/spinlock.h -@@ -254,7 +254,11 @@ static inline void do_raw_spin_unlock(ra +diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h +index 7df6c17..5fe7e40 100644 +--- a/include/linux/spinlock.h ++++ b/include/linux/spinlock.h +@@ -254,7 +254,11 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock) #define raw_spin_can_lock(lock) (!raw_spin_is_locked(lock)) /* Include rwlock functions */ @@ -163,7 +167,7 @@ Index: linux-3.2/include/linux/spinlock.h /* * Pull the _spin_*()/_read_*()/_write_*() functions/declarations: -@@ -265,6 +269,10 @@ static inline void do_raw_spin_unlock(ra +@@ -265,6 +269,10 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock) # include #endif @@ -174,18 +178,18 @@ Index: linux-3.2/include/linux/spinlock.h /* * Map the spin_lock functions to the raw variants for PREEMPT_RT=n */ -@@ -397,4 +405,6 @@ extern int _atomic_dec_and_lock(atomic_t +@@ -397,4 +405,6 @@ extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); #define atomic_dec_and_lock(atomic, lock) \ __cond_lock(lock, _atomic_dec_and_lock(atomic, lock)) +#endif /* !PREEMPT_RT_FULL */ + #endif /* __LINUX_SPINLOCK_H */ -Index: linux-3.2/include/linux/spinlock_api_smp.h -=================================================================== ---- linux-3.2.orig/include/linux/spinlock_api_smp.h -+++ linux-3.2/include/linux/spinlock_api_smp.h -@@ -191,6 +191,8 @@ static inline int __raw_spin_trylock_bh( +diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h +index e253ccd..2a5ba05 100644 +--- a/include/linux/spinlock_api_smp.h ++++ b/include/linux/spinlock_api_smp.h +@@ -191,6 +191,8 @@ static inline int __raw_spin_trylock_bh(raw_spinlock_t *lock) return 0; } @@ -195,10 +199,11 @@ Index: linux-3.2/include/linux/spinlock_api_smp.h +#endif #endif /* __LINUX_SPINLOCK_API_SMP_H */ -Index: linux-3.2/include/linux/spinlock_rt.h -=================================================================== +diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h +new file mode 100644 +index 0000000..205ca95 --- /dev/null -+++ linux-3.2/include/linux/spinlock_rt.h ++++ b/include/linux/spinlock_rt.h @@ -0,0 +1,156 @@ +#ifndef __LINUX_SPINLOCK_RT_H +#define __LINUX_SPINLOCK_RT_H @@ -356,11 +361,11 @@ Index: linux-3.2/include/linux/spinlock_rt.h + atomic_dec_and_spin_lock(atomic, lock) + +#endif -Index: linux-3.2/kernel/Makefile -=================================================================== ---- linux-3.2.orig/kernel/Makefile -+++ linux-3.2/kernel/Makefile -@@ -7,8 +7,8 @@ obj-y = sched.o fork.o exec_domain.o +diff --git a/kernel/Makefile b/kernel/Makefile +index e898c5b..c961d3a 100644 +--- a/kernel/Makefile ++++ b/kernel/Makefile +@@ -7,8 +7,8 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o \ sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \ signal.o sys.o kmod.o workqueue.o pid.o \ rcupdate.o extable.o params.o posix-timers.o \ @@ -391,10 +396,11 @@ Index: linux-3.2/kernel/Makefile obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o obj-$(CONFIG_SMP) += smp.o ifneq ($(CONFIG_SMP),y) -Index: linux-3.2/kernel/rt.c -=================================================================== +diff --git a/kernel/rt.c b/kernel/rt.c +new file mode 100644 +index 0000000..092d6b3 --- /dev/null -+++ linux-3.2/kernel/rt.c ++++ b/kernel/rt.c @@ -0,0 +1,442 @@ +/* + * kernel/rt.c @@ -838,11 +844,11 @@ Index: linux-3.2/kernel/rt.c + return 1; +} +EXPORT_SYMBOL(atomic_dec_and_mutex_lock); -Index: linux-3.2/kernel/spinlock.c -=================================================================== ---- linux-3.2.orig/kernel/spinlock.c -+++ linux-3.2/kernel/spinlock.c -@@ -110,8 +110,11 @@ void __lockfunc __raw_##op##_lock_bh(loc +diff --git a/kernel/spinlock.c b/kernel/spinlock.c +index 84c7d96..47fd3cf 100644 +--- a/kernel/spinlock.c ++++ b/kernel/spinlock.c +@@ -110,8 +110,11 @@ void __lockfunc __raw_##op##_lock_bh(locktype##_t *lock) \ * __[spin|read|write]_lock_bh() */ BUILD_LOCK_OPS(spin, raw_spinlock); @@ -854,7 +860,7 @@ Index: linux-3.2/kernel/spinlock.c #endif -@@ -195,6 +198,8 @@ void __lockfunc _raw_spin_unlock_bh(raw_ +@@ -195,6 +198,8 @@ void __lockfunc _raw_spin_unlock_bh(raw_spinlock_t *lock) EXPORT_SYMBOL(_raw_spin_unlock_bh); #endif @@ -863,7 +869,7 @@ Index: linux-3.2/kernel/spinlock.c #ifndef CONFIG_INLINE_READ_TRYLOCK int __lockfunc _raw_read_trylock(rwlock_t *lock) { -@@ -339,6 +344,8 @@ void __lockfunc _raw_write_unlock_bh(rwl +@@ -339,6 +344,8 @@ void __lockfunc _raw_write_unlock_bh(rwlock_t *lock) EXPORT_SYMBOL(_raw_write_unlock_bh); #endif @@ -872,11 +878,11 @@ Index: linux-3.2/kernel/spinlock.c #ifdef CONFIG_DEBUG_LOCK_ALLOC void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) -Index: linux-3.2/lib/spinlock_debug.c -=================================================================== ---- linux-3.2.orig/lib/spinlock_debug.c -+++ linux-3.2/lib/spinlock_debug.c -@@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t +diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c +index 5f3eacd..f824704 100644 +--- a/lib/spinlock_debug.c ++++ b/lib/spinlock_debug.c +@@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name, EXPORT_SYMBOL(__raw_spin_lock_init); @@ -884,7 +890,7 @@ Index: linux-3.2/lib/spinlock_debug.c void __rwlock_init(rwlock_t *lock, const char *name, struct lock_class_key *key) { -@@ -48,6 +49,7 @@ void __rwlock_init(rwlock_t *lock, const +@@ -48,6 +49,7 @@ void __rwlock_init(rwlock_t *lock, const char *name, } EXPORT_SYMBOL(__rwlock_init); @@ -892,7 +898,7 @@ Index: linux-3.2/lib/spinlock_debug.c static void spin_dump(raw_spinlock_t *lock, const char *msg) { -@@ -155,6 +157,7 @@ void do_raw_spin_unlock(raw_spinlock_t * +@@ -155,6 +157,7 @@ void do_raw_spin_unlock(raw_spinlock_t *lock) arch_spin_unlock(&lock->raw_lock); } @@ -906,3 +912,6 @@ Index: linux-3.2/lib/spinlock_debug.c } + +#endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch b/debian/patches/features/all/rt/0201-rwlocks-Fix-section-mismatch.patch similarity index 70% rename from debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch rename to debian/patches/features/all/rt/0201-rwlocks-Fix-section-mismatch.patch index 440f1d8dc..0a209abdf 100644 --- a/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch +++ b/debian/patches/features/all/rt/0201-rwlocks-Fix-section-mismatch.patch @@ -1,12 +1,16 @@ -Subject: rwlocks: Fix section mismatch +From 09214fcc3def96da1686b6cb616d744138b121a8 Mon Sep 17 00:00:00 2001 From: John Kacur -Date: Mon, 19 Sep 2011 11:09:27 +0200 (CEST) +Date: Mon, 19 Sep 2011 11:09:27 +0200 +Subject: [PATCH 201/267] rwlocks: Fix section mismatch +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit This fixes the following build error for the preempt-rt kernel. make kernel/fork.o CC kernel/fork.o -kernel/fork.c:90: error: section of ¡tasklist_lock¢ conflicts with previous declaration +kernel/fork.c:90: error: section of ¡tasklist_lock¢ conflicts with previous declaration make[2]: *** [kernel/fork.o] Error 1 make[1]: *** [kernel/fork.o] Error 2 @@ -33,10 +37,10 @@ Signed-off-by: Thomas Gleixner kernel/fork.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) -Index: linux-3.2/include/linux/rwlock_types.h -=================================================================== ---- linux-3.2.orig/include/linux/rwlock_types.h -+++ linux-3.2/include/linux/rwlock_types.h +diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h +index 5317cd9..d0da966 100644 +--- a/include/linux/rwlock_types.h ++++ b/include/linux/rwlock_types.h @@ -47,6 +47,7 @@ typedef struct { RW_DEP_MAP_INIT(lockname) } #endif @@ -46,11 +50,11 @@ Index: linux-3.2/include/linux/rwlock_types.h + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) #endif /* __LINUX_RWLOCK_TYPES_H */ -Index: linux-3.2/kernel/fork.c -=================================================================== ---- linux-3.2.orig/kernel/fork.c -+++ linux-3.2/kernel/fork.c -@@ -86,7 +86,7 @@ int max_threads; /* tunable limit on nr +diff --git a/kernel/fork.c b/kernel/fork.c +index 78e5e6a..e3db0cb 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -87,7 +87,7 @@ int max_threads; /* tunable limit on nr_threads */ DEFINE_PER_CPU(unsigned long, process_counts) = 0; @@ -59,3 +63,6 @@ Index: linux-3.2/kernel/fork.c #ifdef CONFIG_PROVE_RCU int lockdep_tasklist_lock_is_held(void) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch b/debian/patches/features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch similarity index 72% rename from debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch rename to debian/patches/features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch index 402ed9c5c..2cf0e451d 100644 --- a/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch +++ b/debian/patches/features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch @@ -1,6 +1,7 @@ -Subject: timer-handle-idle-trylock-in-get-next-timer-irq.patch +From 8b7f200b841e795352c05886feded37731a67557 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:08:38 +0200 +Subject: [PATCH 202/267] timer-handle-idle-trylock-in-get-next-timer-irq.patch Signed-off-by: Thomas Gleixner --- @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 7 ++++--- 3 files changed, 16 insertions(+), 10 deletions(-) -Index: linux-3.2/include/linux/spinlock_rt.h -=================================================================== ---- linux-3.2.orig/include/linux/spinlock_rt.h -+++ linux-3.2/include/linux/spinlock_rt.h -@@ -51,7 +51,17 @@ extern void __lockfunc __rt_spin_unlock( +diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h +index 205ca95..3b555b4 100644 +--- a/include/linux/spinlock_rt.h ++++ b/include/linux/spinlock_rt.h +@@ -51,7 +51,17 @@ extern void __lockfunc __rt_spin_unlock(struct rt_mutex *lock); #define spin_lock_irq(lock) spin_lock(lock) @@ -32,10 +33,10 @@ Index: linux-3.2/include/linux/spinlock_rt.h #ifdef CONFIG_LOCKDEP # define spin_lock_nested(lock, subclass) \ -Index: linux-3.2/kernel/rtmutex.c -=================================================================== ---- linux-3.2.orig/kernel/rtmutex.c -+++ linux-3.2/kernel/rtmutex.c +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index a7723d2..9850dc0 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -861,15 +861,10 @@ EXPORT_SYMBOL(rt_spin_unlock_wait); int __lockfunc rt_spin_trylock(spinlock_t *lock) @@ -53,11 +54,11 @@ Index: linux-3.2/kernel/rtmutex.c return ret; } EXPORT_SYMBOL(rt_spin_trylock); -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c -@@ -1323,13 +1323,14 @@ unsigned long get_next_timer_interrupt(u +diff --git a/kernel/timer.c b/kernel/timer.c +index 8a9ca7d..7ea787b 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1323,13 +1323,14 @@ unsigned long get_next_timer_interrupt(unsigned long now) /* * On PREEMPT_RT we cannot sleep here. If the trylock does not * succeed then we return the worst-case 'expires in 1 tick' @@ -75,3 +76,6 @@ Index: linux-3.2/kernel/timer.c } else { expires = now + 1; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rcu-force-preempt-rcu-for-rt.patch b/debian/patches/features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch similarity index 73% rename from debian/patches/features/all/rt/rcu-force-preempt-rcu-for-rt.patch rename to debian/patches/features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch index eb5695044..1ac58e5a8 100644 --- a/debian/patches/features/all/rt/rcu-force-preempt-rcu-for-rt.patch +++ b/debian/patches/features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch @@ -1,6 +1,7 @@ -Subject: RCU: Force PREEMPT_RCU for PREEMPT-RT +From fc2773a086cefeb3e342f8007021fa008fb01f59 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:30 -0500 +Subject: [PATCH 203/267] RCU: Force PREEMPT_RCU for PREEMPT-RT PREEMPT_RT relies on PREEMPT_RCU - only allow RCU to be configured interactively in the !PREEMPT_RT case. @@ -14,10 +15,10 @@ Link: http://lkml.kernel.org/n/tip-j1y0phicu6s6pu8guku2vca0@git.kernel.org init/Kconfig | 1 - 1 file changed, 1 deletion(-) -Index: linux-3.2/init/Kconfig -=================================================================== ---- linux-3.2.orig/init/Kconfig -+++ linux-3.2/init/Kconfig +diff --git a/init/Kconfig b/init/Kconfig +index 720c182..dbc82d0 100644 +--- a/init/Kconfig ++++ b/init/Kconfig @@ -731,7 +731,6 @@ config RT_GROUP_SCHED bool "Group scheduling for SCHED_RR/FIFO" depends on EXPERIMENTAL @@ -26,3 +27,6 @@ Index: linux-3.2/init/Kconfig default n help This feature lets you explicitly allocate real CPU bandwidth +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch b/debian/patches/features/all/rt/0204-rcu-Frob-softirq-test.patch similarity index 92% rename from debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch rename to debian/patches/features/all/rt/0204-rcu-Frob-softirq-test.patch index c6d7718fe..f766fbb8e 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch +++ b/debian/patches/features/all/rt/0204-rcu-Frob-softirq-test.patch @@ -1,6 +1,7 @@ -Subject: rcu: Frob softirq test +From 8c6a476b1515046c8e5fef4ed3a9da5ad3addad7 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Sat Aug 13 00:23:17 CEST 2011 +Date: Sat, 13 Aug 2011 00:23:17 +0200 +Subject: [PATCH 204/267] rcu: Frob softirq test With RT_FULL we get the below wreckage: @@ -10,15 +11,15 @@ With RT_FULL we get the below wreckage: [ 126.060490] ------------------------------------------------------- [ 126.060492] irq/24-eth0/1235 is trying to acquire lock: [ 126.060495] (&(lock)->wait_lock#2){+.+...}, at: [] rt_mutex_slowunlock+0x16/0x55 -[ 126.060503] +[ 126.060503] [ 126.060504] but task is already holding lock: [ 126.060506] (&p->pi_lock){-...-.}, at: [] try_to_wake_up+0x35/0x429 -[ 126.060511] +[ 126.060511] [ 126.060511] which lock already depends on the new lock. -[ 126.060513] -[ 126.060514] +[ 126.060513] +[ 126.060514] [ 126.060514] the existing dependency chain (in reverse order) is: -[ 126.060516] +[ 126.060516] [ 126.060516] -> #1 (&p->pi_lock){-...-.}: [ 126.060519] [] lock_acquire+0x145/0x18a [ 126.060524] [] _raw_spin_lock_irqsave+0x4b/0x85 @@ -29,7 +30,7 @@ With RT_FULL we get the below wreckage: [ 126.060541] [] rcu_boost_kthread+0x7d/0x9b [ 126.060544] [] kthread+0x99/0xa1 [ 126.060547] [] kernel_thread_helper+0x4/0x10 -[ 126.060551] +[ 126.060551] [ 126.060552] -> #0 (&(lock)->wait_lock#2){+.+...}: [ 126.060555] [] __lock_acquire+0x1157/0x1816 [ 126.060558] [] lock_acquire+0x145/0x18a @@ -49,23 +50,23 @@ With RT_FULL we get the below wreckage: [ 126.060603] [] irq_thread+0xde/0x1af [ 126.060606] [] kthread+0x99/0xa1 [ 126.060608] [] kernel_thread_helper+0x4/0x10 -[ 126.060611] +[ 126.060611] [ 126.060612] other info that might help us debug this: -[ 126.060614] +[ 126.060614] [ 126.060615] Possible unsafe locking scenario: -[ 126.060616] +[ 126.060616] [ 126.060617] CPU0 CPU1 [ 126.060619] ---- ---- [ 126.060620] lock(&p->pi_lock); [ 126.060623] lock(&(lock)->wait_lock); [ 126.060625] lock(&p->pi_lock); [ 126.060627] lock(&(lock)->wait_lock); -[ 126.060629] +[ 126.060629] [ 126.060629] *** DEADLOCK *** -[ 126.060630] +[ 126.060630] [ 126.060632] 1 lock held by irq/24-eth0/1235: [ 126.060633] #0: (&p->pi_lock){-...-.}, at: [] try_to_wake_up+0x35/0x429 -[ 126.060638] +[ 126.060638] [ 126.060638] stack backtrace: [ 126.060641] Pid: 1235, comm: irq/24-eth0 Not tainted 3.0.1-rt10+ #30 [ 126.060643] Call Trace: @@ -153,11 +154,11 @@ Signed-off-by: Peter Zijlstra kernel/rcutree_plugin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/rcutree_plugin.h -=================================================================== ---- linux-3.2.orig/kernel/rcutree_plugin.h -+++ linux-3.2/kernel/rcutree_plugin.h -@@ -336,7 +336,7 @@ static noinline void rcu_read_unlock_spe +diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h +index 73cab33..2e63942 100644 +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h +@@ -336,7 +336,7 @@ static noinline void rcu_read_unlock_special(struct task_struct *t) } /* Hardware IRQ handlers cannot block. */ @@ -166,3 +167,6 @@ Index: linux-3.2/kernel/rcutree_plugin.h local_irq_restore(flags); return; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch b/debian/patches/features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch similarity index 82% rename from debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch rename to debian/patches/features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch index 16f86b105..4286a6bdf 100644 --- a/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch +++ b/debian/patches/features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch @@ -1,6 +1,7 @@ -Subject: rcu: Merge RCU-bh into RCU-preempt -Date: Wed, 5 Oct 2011 11:59:38 -0700 +From ba74bc264c160ce00ea6c51598a3bf721c27f8fd Mon Sep 17 00:00:00 2001 From: Thomas Gleixner +Date: Wed, 5 Oct 2011 11:59:38 -0700 +Subject: [PATCH 205/267] rcu: Merge RCU-bh into RCU-preempt The Linux kernel has long RCU-bh read-side critical sections that intolerably increase scheduling latency under mainline's RCU-bh rules, @@ -22,7 +23,6 @@ Signed-off-by: Thomas Gleixner Signed-off-by: Paul E. McKenney Link: http://lkml.kernel.org/r/20111005185938.GA20403@linux.vnet.ibm.com Signed-off-by: Thomas Gleixner - --- include/linux/rcupdate.h | 25 +++++++++++++++++++++++++ include/linux/rcutree.h | 18 ++++++++++++++++-- @@ -30,11 +30,11 @@ Signed-off-by: Thomas Gleixner kernel/rcutree.c | 10 ++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) -Index: linux-3.2/include/linux/rcupdate.h -=================================================================== ---- linux-3.2.orig/include/linux/rcupdate.h -+++ linux-3.2/include/linux/rcupdate.h -@@ -92,6 +92,9 @@ extern void call_rcu(struct rcu_head *he +diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h +index a0082e2..7c31d86 100644 +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -92,6 +92,9 @@ extern void call_rcu(struct rcu_head *head, #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ @@ -44,7 +44,7 @@ Index: linux-3.2/include/linux/rcupdate.h /** * call_rcu_bh() - Queue an RCU for invocation after a quicker grace period. * @head: structure to be used for queueing the RCU updates. -@@ -112,6 +115,7 @@ extern void call_rcu(struct rcu_head *he +@@ -112,6 +115,7 @@ extern void call_rcu(struct rcu_head *head, */ extern void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *head)); @@ -52,7 +52,7 @@ Index: linux-3.2/include/linux/rcupdate.h /** * call_rcu_sched() - Queue an RCU for invocation after sched grace period. -@@ -181,7 +185,13 @@ static inline int rcu_preempt_depth(void +@@ -181,7 +185,13 @@ static inline int rcu_preempt_depth(void) /* Internal to kernel */ extern void rcu_sched_qs(int cpu); @@ -66,7 +66,7 @@ Index: linux-3.2/include/linux/rcupdate.h extern void rcu_check_callbacks(int cpu, int user); struct notifier_block; -@@ -281,7 +291,14 @@ static inline int rcu_read_lock_held(voi +@@ -281,7 +291,14 @@ static inline int rcu_read_lock_held(void) * rcu_read_lock_bh_held() is defined out of line to avoid #include-file * hell. */ @@ -94,7 +94,7 @@ Index: linux-3.2/include/linux/rcupdate.h } /* -@@ -695,8 +716,12 @@ static inline void rcu_read_lock_bh(void +@@ -695,8 +716,12 @@ static inline void rcu_read_lock_bh(void) */ static inline void rcu_read_unlock_bh(void) { @@ -107,10 +107,10 @@ Index: linux-3.2/include/linux/rcupdate.h local_bh_enable(); } -Index: linux-3.2/include/linux/rcutree.h -=================================================================== ---- linux-3.2.orig/include/linux/rcutree.h -+++ linux-3.2/include/linux/rcutree.h +diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h +index 6745846..800b840 100644 +--- a/include/linux/rcutree.h ++++ b/include/linux/rcutree.h @@ -57,7 +57,11 @@ static inline void exit_rcu(void) #endif /* #else #ifdef CONFIG_TREE_PREEMPT_RCU */ @@ -123,7 +123,7 @@ Index: linux-3.2/include/linux/rcutree.h extern void synchronize_sched_expedited(void); extern void synchronize_rcu_expedited(void); -@@ -67,19 +71,29 @@ static inline void synchronize_rcu_bh_ex +@@ -67,19 +71,29 @@ static inline void synchronize_rcu_bh_expedited(void) } extern void rcu_barrier(void); @@ -155,10 +155,10 @@ Index: linux-3.2/include/linux/rcutree.h /* A context switch is a grace period for RCU-sched and RCU-bh. */ static inline int rcu_blocking_is_gp(void) { -Index: linux-3.2/kernel/rcupdate.c -=================================================================== ---- linux-3.2.orig/kernel/rcupdate.c -+++ linux-3.2/kernel/rcupdate.c +diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c +index c5b98e5..24dcc71 100644 +--- a/kernel/rcupdate.c ++++ b/kernel/rcupdate.c @@ -77,6 +77,7 @@ int debug_lockdep_rcu_enabled(void) } EXPORT_SYMBOL_GPL(debug_lockdep_rcu_enabled); @@ -175,10 +175,10 @@ Index: linux-3.2/kernel/rcupdate.c #endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ -Index: linux-3.2/kernel/rcutree.c -=================================================================== ---- linux-3.2.orig/kernel/rcutree.c -+++ linux-3.2/kernel/rcutree.c +diff --git a/kernel/rcutree.c b/kernel/rcutree.c +index 8ef8675..3afb0fd 100644 +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -170,6 +170,7 @@ void rcu_sched_qs(int cpu) rdp->passed_quiesce = 1; } @@ -211,7 +211,7 @@ Index: linux-3.2/kernel/rcutree.c /* * Record the number of times rcutorture tests have been initiated and -@@ -1667,6 +1671,7 @@ void call_rcu_sched(struct rcu_head *hea +@@ -1667,6 +1671,7 @@ void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) } EXPORT_SYMBOL_GPL(call_rcu_sched); @@ -219,7 +219,7 @@ Index: linux-3.2/kernel/rcutree.c /* * Queue an RCU for invocation after a quicker grace period. */ -@@ -1675,6 +1680,7 @@ void call_rcu_bh(struct rcu_head *head, +@@ -1675,6 +1680,7 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) __call_rcu(head, func, &rcu_bh_state); } EXPORT_SYMBOL_GPL(call_rcu_bh); @@ -243,7 +243,7 @@ Index: linux-3.2/kernel/rcutree.c /* * Check to see if there is any immediate RCU-related work to be done -@@ -1877,6 +1885,7 @@ static void _rcu_barrier(struct rcu_stat +@@ -1877,6 +1885,7 @@ static void _rcu_barrier(struct rcu_state *rsp, mutex_unlock(&rcu_barrier_mutex); } @@ -259,3 +259,6 @@ Index: linux-3.2/kernel/rcutree.c /** * rcu_barrier_sched - Wait for in-flight call_rcu_sched() callbacks. +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rcu-fix-macro-substitution.patch b/debian/patches/features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch similarity index 74% rename from debian/patches/features/all/rt/rcu-fix-macro-substitution.patch rename to debian/patches/features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch index 9714893bd..f662a0f3f 100644 --- a/debian/patches/features/all/rt/rcu-fix-macro-substitution.patch +++ b/debian/patches/features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch @@ -1,6 +1,11 @@ -Subject: rcu: Fix macro substitution for synchronize_rcu_bh() on RT +From b2b741ee43489c44dcac9894ea0c15cdf45ccc8d Mon Sep 17 00:00:00 2001 From: John Kacur Date: Mon, 14 Nov 2011 02:44:42 +0100 +Subject: [PATCH 206/267] rcu: Fix macro substitution for synchronize_rcu_bh() + on RT +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit kernel/rcutorture.c:492: error: ‘synchronize_rcu_bh’ undeclared here (not in a function) @@ -20,10 +25,10 @@ Signed-off-by: Thomas Gleixner include/linux/rcutree.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/include/linux/rcutree.h -=================================================================== ---- linux-3.2.orig/include/linux/rcutree.h -+++ linux-3.2/include/linux/rcutree.h +diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h +index 800b840..6e503a3 100644 +--- a/include/linux/rcutree.h ++++ b/include/linux/rcutree.h @@ -60,7 +60,7 @@ static inline void exit_rcu(void) #ifndef CONFIG_PREEMPT_RT_FULL extern void synchronize_rcu_bh(void); @@ -33,3 +38,6 @@ Index: linux-3.2/include/linux/rcutree.h #endif extern void synchronize_sched_expedited(void); extern void synchronize_rcu_expedited(void); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch b/debian/patches/features/all/rt/0207-rcu-more-fallout.patch.patch similarity index 50% rename from debian/patches/features/all/rt/rcu-tiny-merge-bh.patch rename to debian/patches/features/all/rt/0207-rcu-more-fallout.patch.patch index f3d8634cb..1884c7f8e 100644 --- a/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch +++ b/debian/patches/features/all/rt/0207-rcu-more-fallout.patch.patch @@ -1,17 +1,18 @@ -Subject: rcu-more-fallout.patch +From a9654417fcb37bfadb38035c19cbb20f0e5b0c9c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 14 Nov 2011 10:57:54 +0100 +Subject: [PATCH 207/267] rcu-more-fallout.patch Signed-off-by: Thomas Gleixner --- kernel/rcutiny.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-3.2/kernel/rcutiny.c -=================================================================== ---- linux-3.2.orig/kernel/rcutiny.c -+++ linux-3.2/kernel/rcutiny.c -@@ -243,6 +243,7 @@ void call_rcu_sched(struct rcu_head *hea +diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c +index 636af6d..6689097 100644 +--- a/kernel/rcutiny.c ++++ b/kernel/rcutiny.c +@@ -243,6 +243,7 @@ void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) } EXPORT_SYMBOL_GPL(call_rcu_sched); @@ -19,8 +20,11 @@ Index: linux-3.2/kernel/rcutiny.c /* * Post an RCU bottom-half callback to be invoked after any subsequent * quiescent state. -@@ -252,3 +253,4 @@ void call_rcu_bh(struct rcu_head *head, +@@ -252,3 +253,4 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) __call_rcu(head, func, &rcu_bh_ctrlblk); } EXPORT_SYMBOL_GPL(call_rcu_bh); +#endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch b/debian/patches/features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch similarity index 79% rename from debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch rename to debian/patches/features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch index 4cd600141..cf2a98f93 100644 --- a/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch +++ b/debian/patches/features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch @@ -1,6 +1,7 @@ -Subject: rcu: Make ksoftirqd do RCU quiescent states +From da57a08d2eecd5624429f11ee27b91fb12fc345b Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Wed, 5 Oct 2011 11:45:18 -0700 +Subject: [PATCH 208/267] rcu: Make ksoftirqd do RCU quiescent states Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable to network-based denial-of-service attacks. This patch therefore @@ -21,7 +22,6 @@ in cases where __do_softirq() is invoked directly from ksoftirqd. Signed-off-by: Paul E. McKenney Link: http://lkml.kernel.org/r/20111005184518.GA21601@linux.vnet.ibm.com Signed-off-by: Thomas Gleixner - --- include/linux/rcupdate.h | 6 ------ kernel/rcutree.c | 7 ++++++- @@ -30,11 +30,11 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 20 +++++++++++++------- 5 files changed, 21 insertions(+), 15 deletions(-) -Index: linux-3.2/include/linux/rcupdate.h -=================================================================== ---- linux-3.2.orig/include/linux/rcupdate.h -+++ linux-3.2/include/linux/rcupdate.h -@@ -185,13 +185,7 @@ static inline int rcu_preempt_depth(void +diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h +index 7c31d86..0e6fb5c 100644 +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -185,13 +185,7 @@ static inline int rcu_preempt_depth(void) /* Internal to kernel */ extern void rcu_sched_qs(int cpu); @@ -48,10 +48,10 @@ Index: linux-3.2/include/linux/rcupdate.h extern void rcu_check_callbacks(int cpu, int user); struct notifier_block; -Index: linux-3.2/kernel/rcutree.c -=================================================================== ---- linux-3.2.orig/kernel/rcutree.c -+++ linux-3.2/kernel/rcutree.c +diff --git a/kernel/rcutree.c b/kernel/rcutree.c +index 3afb0fd..3118218 100644 +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -170,7 +170,12 @@ void rcu_sched_qs(int cpu) rdp->passed_quiesce = 1; } @@ -66,10 +66,10 @@ Index: linux-3.2/kernel/rcutree.c void rcu_bh_qs(int cpu) { struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); -Index: linux-3.2/kernel/rcutree.h -=================================================================== ---- linux-3.2.orig/kernel/rcutree.h -+++ linux-3.2/kernel/rcutree.h +diff --git a/kernel/rcutree.h b/kernel/rcutree.h +index dca495d..b522273 100644 +--- a/kernel/rcutree.h ++++ b/kernel/rcutree.h @@ -430,6 +430,7 @@ DECLARE_PER_CPU(char, rcu_cpu_has_work); /* Forward declarations for rcutree_plugin.h */ static void rcu_bootup_announce(void); @@ -78,11 +78,11 @@ Index: linux-3.2/kernel/rcutree.h static void rcu_preempt_note_context_switch(int cpu); static int rcu_preempt_blocked_readers_cgp(struct rcu_node *rnp); #ifdef CONFIG_HOTPLUG_CPU -Index: linux-3.2/kernel/rcutree_plugin.h -=================================================================== ---- linux-3.2.orig/kernel/rcutree_plugin.h -+++ linux-3.2/kernel/rcutree_plugin.h -@@ -1933,7 +1933,7 @@ EXPORT_SYMBOL_GPL(synchronize_sched_expe +diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h +index 2e63942..936441d 100644 +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h +@@ -1933,7 +1933,7 @@ EXPORT_SYMBOL_GPL(synchronize_sched_expedited); #endif /* #else #ifndef CONFIG_SMP */ @@ -91,10 +91,10 @@ Index: linux-3.2/kernel/rcutree_plugin.h /* * Check to see if any future RCU-related work will need to be done -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 bef08f3..ca00a68 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -139,7 +139,7 @@ static void wakeup_softirqd(void) wake_up_process(tsk); } @@ -104,7 +104,7 @@ Index: linux-3.2/kernel/softirq.c { struct softirq_action *h = softirq_vec; unsigned int prev_count = preempt_count(); -@@ -162,7 +162,8 @@ static void handle_pending_softirqs(u32 +@@ -162,7 +162,8 @@ static void handle_pending_softirqs(u32 pending, int cpu) prev_count, (unsigned int) preempt_count()); preempt_count() = prev_count; } @@ -123,7 +123,7 @@ Index: linux-3.2/kernel/softirq.c pending = local_softirq_pending(); if (pending && --max_restart) -@@ -384,7 +385,12 @@ static inline void ksoftirqd_clr_sched_p +@@ -384,7 +385,12 @@ static inline void ksoftirqd_clr_sched_params(void) { } static DEFINE_LOCAL_IRQ_LOCK(local_softirq_lock); static DEFINE_PER_CPU(struct task_struct *, local_softirq_runner); @@ -164,3 +164,6 @@ Index: linux-3.2/kernel/softirq.c local_unlock(local_softirq_lock); unpin_current_cpu(); preempt_disable(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch b/debian/patches/features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch similarity index 66% rename from debian/patches/features/all/rt/rt-rcutree-warn-fix.patch rename to debian/patches/features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch index bbdec5299..62678cc6b 100644 --- a/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch +++ b/debian/patches/features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch @@ -1,6 +1,10 @@ -Subject: rt/rcutree: Move misplaced prototype +From db23d49ad9b8225da4d9930cdac61ccfe155a3b6 Mon Sep 17 00:00:00 2001 From: Ingo Molnar -Date: Wed Dec 14 12:51:28 CET 2011 +Date: Wed, 14 Dec 2011 12:51:28 +0100 +Subject: [PATCH 209/267] rt/rcutree: Move misplaced prototype +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit Fix this warning on x86 defconfig: @@ -11,16 +15,15 @@ usage site that needs it. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner ---- --- kernel/rcutree.c | 2 ++ kernel/rcutree.h | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.2/kernel/rcutree.c -=================================================================== ---- linux-3.2.orig/kernel/rcutree.c -+++ linux-3.2/kernel/rcutree.c +diff --git a/kernel/rcutree.c b/kernel/rcutree.c +index 3118218..8c26a49 100644 +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -171,6 +171,8 @@ void rcu_sched_qs(int cpu) } @@ -30,10 +33,10 @@ Index: linux-3.2/kernel/rcutree.c void rcu_bh_qs(int cpu) { rcu_preempt_qs(cpu); -Index: linux-3.2/kernel/rcutree.h -=================================================================== ---- linux-3.2.orig/kernel/rcutree.h -+++ linux-3.2/kernel/rcutree.h +diff --git a/kernel/rcutree.h b/kernel/rcutree.h +index b522273..dca495d 100644 +--- a/kernel/rcutree.h ++++ b/kernel/rcutree.h @@ -430,7 +430,6 @@ DECLARE_PER_CPU(char, rcu_cpu_has_work); /* Forward declarations for rcutree_plugin.h */ static void rcu_bootup_announce(void); @@ -42,3 +45,6 @@ Index: linux-3.2/kernel/rcutree.h static void rcu_preempt_note_context_switch(int cpu); static int rcu_preempt_blocked_readers_cgp(struct rcu_node *rnp); #ifdef CONFIG_HOTPLUG_CPU +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/lglocks-rt.patch b/debian/patches/features/all/rt/0210-lglocks-rt.patch.patch similarity index 92% rename from debian/patches/features/all/rt/lglocks-rt.patch rename to debian/patches/features/all/rt/0210-lglocks-rt.patch.patch index 41e885985..829ca2358 100644 --- a/debian/patches/features/all/rt/lglocks-rt.patch +++ b/debian/patches/features/all/rt/0210-lglocks-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: lglocks-rt.patch +From 679164e5bf04233a02450afb26640259b300763d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 15 Jun 2011 11:02:21 +0200 +Subject: [PATCH 210/267] lglocks-rt.patch Signed-off-by: Thomas Gleixner --- - include/linux/lglock.h | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ + include/linux/lglock.h | 99 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) -Index: linux-3.2/include/linux/lglock.h -=================================================================== ---- linux-3.2.orig/include/linux/lglock.h -+++ linux-3.2/include/linux/lglock.h +diff --git a/include/linux/lglock.h b/include/linux/lglock.h +index 87f402c..52b289f 100644 +--- a/include/linux/lglock.h ++++ b/include/linux/lglock.h @@ -71,6 +71,8 @@ extern void name##_global_lock_online(void); \ extern void name##_global_unlock_online(void); \ @@ -122,3 +123,6 @@ Index: linux-3.2/include/linux/lglock.h +#endif /* PRREMPT_RT_FULL */ + #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch b/debian/patches/features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch similarity index 69% rename from debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch rename to debian/patches/features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch index e189b6d6f..5e945e588 100644 --- a/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch +++ b/debian/patches/features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch @@ -1,19 +1,19 @@ +From 40ebaf9abcb5b1d219eba80ba6648c0142b9fa12 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:01 -0500 -Subject: serial: 8250: Clean up the locking for -rt +Subject: [PATCH 211/267] serial: 8250: Clean up the locking for -rt Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/tty/serial/8250.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) -Index: linux-3.2/drivers/tty/serial/8250.c -=================================================================== ---- linux-3.2.orig/drivers/tty/serial/8250.c -+++ linux-3.2/drivers/tty/serial/8250.c -@@ -2846,14 +2846,10 @@ serial8250_console_write(struct console +diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c +index eeadf1b..43f7f46 100644 +--- a/drivers/tty/serial/8250.c ++++ b/drivers/tty/serial/8250.c +@@ -2846,14 +2846,10 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) touch_nmi_watchdog(); @@ -32,7 +32,7 @@ Index: linux-3.2/drivers/tty/serial/8250.c /* * First save the IER then disable the interrupts -@@ -2885,8 +2881,7 @@ serial8250_console_write(struct console +@@ -2885,8 +2881,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) check_modem_status(up); if (locked) @@ -42,3 +42,6 @@ Index: linux-3.2/drivers/tty/serial/8250.c } static int __init serial8250_console_setup(struct console *co, char *options) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch b/debian/patches/features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch similarity index 61% rename from debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch rename to debian/patches/features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch index f4bdede97..c18db4dbf 100644 --- a/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch +++ b/debian/patches/features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch @@ -1,19 +1,20 @@ +From 4e5bbac0b9e6295553e4e4ddc234f1ccdb54f20d Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:01 -0500 -Subject: serial: 8250: Call flush_to_ldisc when the irq is threaded +Subject: [PATCH 212/267] serial: 8250: Call flush_to_ldisc when the irq is + threaded Signed-off-by: Ingo Molnar - --- drivers/tty/serial/8250.c | 2 ++ drivers/tty/tty_buffer.c | 4 ++++ 2 files changed, 6 insertions(+) -Index: linux-3.2/drivers/tty/serial/8250.c -=================================================================== ---- linux-3.2.orig/drivers/tty/serial/8250.c -+++ linux-3.2/drivers/tty/serial/8250.c -@@ -1631,12 +1631,14 @@ static irqreturn_t serial8250_interrupt( +diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c +index 43f7f46..687b1ad 100644 +--- a/drivers/tty/serial/8250.c ++++ b/drivers/tty/serial/8250.c +@@ -1631,12 +1631,14 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) l = l->next; @@ -28,11 +29,11 @@ Index: linux-3.2/drivers/tty/serial/8250.c } while (l != end); spin_unlock(&i->lock); -Index: linux-3.2/drivers/tty/tty_buffer.c -=================================================================== ---- linux-3.2.orig/drivers/tty/tty_buffer.c -+++ linux-3.2/drivers/tty/tty_buffer.c -@@ -493,10 +493,14 @@ void tty_flip_buffer_push(struct tty_str +diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c +index 6c9b7cd..a56c223 100644 +--- a/drivers/tty/tty_buffer.c ++++ b/drivers/tty/tty_buffer.c +@@ -493,10 +493,14 @@ void tty_flip_buffer_push(struct tty_struct *tty) tty->buf.tail->commit = tty->buf.tail->used; spin_unlock_irqrestore(&tty->buf.lock, flags); @@ -47,3 +48,6 @@ Index: linux-3.2/drivers/tty/tty_buffer.c } EXPORT_SYMBOL(tty_flip_buffer_push); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch b/debian/patches/features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch similarity index 61% rename from debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch rename to debian/patches/features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch index 9dde88c12..0d60a371e 100644 --- a/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch +++ b/debian/patches/features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch @@ -1,17 +1,18 @@ -Subject: drivers-tty-fix-omap-lock-crap.patch +From 81272c044fe3dd9a13be10c4aca5a0d6d6d428e2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 28 Jul 2011 13:32:57 +0200 +Subject: [PATCH 213/267] drivers-tty-fix-omap-lock-crap.patch Signed-off-by: Thomas Gleixner --- drivers/tty/serial/omap-serial.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) -Index: linux-3.2/drivers/tty/serial/omap-serial.c -=================================================================== ---- linux-3.2.orig/drivers/tty/serial/omap-serial.c -+++ linux-3.2/drivers/tty/serial/omap-serial.c -@@ -946,13 +946,12 @@ serial_omap_console_write(struct console +diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c +index 5e713d3..93cdb92 100644 +--- a/drivers/tty/serial/omap-serial.c ++++ b/drivers/tty/serial/omap-serial.c +@@ -946,13 +946,12 @@ serial_omap_console_write(struct console *co, const char *s, unsigned int ier; int locked = 1; @@ -27,7 +28,7 @@ Index: linux-3.2/drivers/tty/serial/omap-serial.c /* * First save the IER then disable the interrupts -@@ -979,8 +978,7 @@ serial_omap_console_write(struct console +@@ -979,8 +978,7 @@ serial_omap_console_write(struct console *co, const char *s, check_modem_status(up); if (locked) @@ -37,3 +38,6 @@ Index: linux-3.2/drivers/tty/serial/omap-serial.c } static int __init +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-serial-warn-fix.patch b/debian/patches/features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch similarity index 68% rename from debian/patches/features/all/rt/rt-serial-warn-fix.patch rename to debian/patches/features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch index 38b8d4005..9f9210e85 100644 --- a/debian/patches/features/all/rt/rt-serial-warn-fix.patch +++ b/debian/patches/features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch @@ -1,6 +1,10 @@ -Subject: rt: Improve the serial console PASS_LIMIT +From fc2844bf8a953a213b9b179947031651eca5980a Mon Sep 17 00:00:00 2001 From: Ingo Molnar -Date: Wed Dec 14 13:05:54 CET 2011 +Date: Wed, 14 Dec 2011 13:05:54 +0100 +Subject: [PATCH 214/267] rt: Improve the serial console PASS_LIMIT +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit Beyond the warning: @@ -15,11 +19,11 @@ Signed-off-by: Thomas Gleixner drivers/tty/serial/8250.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) -Index: linux-3.2/drivers/tty/serial/8250.c -=================================================================== ---- linux-3.2.orig/drivers/tty/serial/8250.c -+++ linux-3.2/drivers/tty/serial/8250.c -@@ -81,7 +81,16 @@ static unsigned int skip_txen_test; /* f +diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c +index 687b1ad..3bf482c 100644 +--- a/drivers/tty/serial/8250.c ++++ b/drivers/tty/serial/8250.c +@@ -81,7 +81,16 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */ #define DEBUG_INTR(fmt...) do { } while (0) #endif @@ -37,7 +41,7 @@ Index: linux-3.2/drivers/tty/serial/8250.c #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) -@@ -1631,14 +1640,12 @@ static irqreturn_t serial8250_interrupt( +@@ -1631,14 +1640,12 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) l = l->next; @@ -52,3 +56,6 @@ Index: linux-3.2/drivers/tty/serial/8250.c } while (l != end); spin_unlock(&i->lock); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch b/debian/patches/features/all/rt/0215-fs-namespace-preemption-fix.patch similarity index 81% rename from debian/patches/features/all/rt/fs-namespace-preemption-fix.patch rename to debian/patches/features/all/rt/0215-fs-namespace-preemption-fix.patch index 92e4c7a74..dea3a1afb 100644 --- a/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch +++ b/debian/patches/features/all/rt/0215-fs-namespace-preemption-fix.patch @@ -1,6 +1,7 @@ +From d9e6aef724ad0444ca59f536062b3ce3755ab8ff Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 19 Jul 2009 08:44:27 -0500 -Subject: fs: namespace preemption fix +Subject: [PATCH 215/267] fs: namespace preemption fix On RT we cannot loop with preemption disabled here as mnt_make_readonly() might have been preempted. We can safely enable @@ -8,15 +9,14 @@ preemption while waiting for MNT_WRITE_HOLD to be cleared. Safe on !RT as well. Signed-off-by: Thomas Gleixner - --- fs/namespace.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) -Index: linux-3.2/fs/namespace.c -=================================================================== ---- linux-3.2.orig/fs/namespace.c -+++ linux-3.2/fs/namespace.c +diff --git a/fs/namespace.c b/fs/namespace.c +index cfc6d44..63fd6d7 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c @@ -341,8 +341,14 @@ int mnt_want_write(struct vfsmount *mnt) * incremented count after it has set MNT_WRITE_HOLD. */ @@ -43,3 +43,6 @@ Index: linux-3.2/fs/namespace.c preempt_enable(); return ret; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch b/debian/patches/features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch similarity index 63% rename from debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch rename to debian/patches/features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch index c56ee0d10..8944fa84f 100644 --- a/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch +++ b/debian/patches/features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch @@ -1,6 +1,7 @@ -Subject: mm-protect-activate-switch-mm.patch +From d487b5d66ab6a586d14e072a12cb2e61f9ec5716 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Mon, 04 Jul 2011 09:48:40 +0200 +Date: Mon, 4 Jul 2011 09:48:40 +0200 +Subject: [PATCH 216/267] mm-protect-activate-switch-mm.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner mm/mmu_context.c | 2 ++ 2 files changed, 4 insertions(+) -Index: linux-3.2/fs/exec.c -=================================================================== ---- linux-3.2.orig/fs/exec.c -+++ linux-3.2/fs/exec.c -@@ -837,10 +837,12 @@ static int exec_mmap(struct mm_struct *m +diff --git a/fs/exec.c b/fs/exec.c +index 3625464..aabd97d 100644 +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -837,10 +837,12 @@ static int exec_mmap(struct mm_struct *mm) } } task_lock(tsk); @@ -25,10 +26,10 @@ Index: linux-3.2/fs/exec.c task_unlock(tsk); arch_pick_mmap_layout(mm); if (old_mm) { -Index: linux-3.2/mm/mmu_context.c -=================================================================== ---- linux-3.2.orig/mm/mmu_context.c -+++ linux-3.2/mm/mmu_context.c +diff --git a/mm/mmu_context.c b/mm/mmu_context.c +index cf332bc..64ce279 100644 +--- a/mm/mmu_context.c ++++ b/mm/mmu_context.c @@ -26,6 +26,7 @@ void use_mm(struct mm_struct *mm) struct task_struct *tsk = current; @@ -45,3 +46,6 @@ Index: linux-3.2/mm/mmu_context.c task_unlock(tsk); if (active_mm != mm) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/fs-block-rt-support.patch b/debian/patches/features/all/rt/0217-fs-block-rt-support.patch.patch similarity index 68% rename from debian/patches/features/all/rt/fs-block-rt-support.patch rename to debian/patches/features/all/rt/0217-fs-block-rt-support.patch.patch index 0e2747f9e..1874594d0 100644 --- a/debian/patches/features/all/rt/fs-block-rt-support.patch +++ b/debian/patches/features/all/rt/0217-fs-block-rt-support.patch.patch @@ -1,6 +1,7 @@ -Subject: fs-block-rt-support.patch +From cfc9b78fd05098f317db725a3054e58d16e0da5e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 14 Jun 2011 17:05:09 +0200 +Subject: [PATCH 217/267] fs-block-rt-support.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner fs/file.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.2/block/blk-core.c -=================================================================== ---- linux-3.2.orig/block/blk-core.c -+++ linux-3.2/block/blk-core.c +diff --git a/block/blk-core.c b/block/blk-core.c +index 7366ad4..ca732c0 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c @@ -235,7 +235,7 @@ EXPORT_SYMBOL(blk_delay_queue); **/ void blk_start_queue(struct request_queue *q) @@ -21,11 +22,11 @@ Index: linux-3.2/block/blk-core.c queue_flag_clear(QUEUE_FLAG_STOPPED, q); __blk_run_queue(q); -Index: linux-3.2/fs/file.c -=================================================================== ---- linux-3.2.orig/fs/file.c -+++ linux-3.2/fs/file.c -@@ -105,14 +105,14 @@ void free_fdtable_rcu(struct rcu_head *r +diff --git a/fs/file.c b/fs/file.c +index 375472d..fd03258 100644 +--- a/fs/file.c ++++ b/fs/file.c +@@ -105,14 +105,14 @@ void free_fdtable_rcu(struct rcu_head *rcu) kfree(fdt->open_fds); kfree(fdt); } else { @@ -42,3 +43,6 @@ Index: linux-3.2/fs/file.c } } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch b/debian/patches/features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch similarity index 86% rename from debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch rename to debian/patches/features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch index 51e51f129..f18212071 100644 --- a/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch +++ b/debian/patches/features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch @@ -1,6 +1,7 @@ +From 9091cea711af39936f8b1378fdb38f616e1dd15d Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Fri, 3 Jul 2009 08:44:12 -0500 -Subject: fs: ntfs: disable interrupt only on !RT +Subject: [PATCH 218/267] fs: ntfs: disable interrupt only on !RT On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote: > * Nick Piggin wrote: @@ -34,16 +35,15 @@ instead? Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- fs/ntfs/aops.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/fs/ntfs/aops.c -=================================================================== ---- linux-3.2.orig/fs/ntfs/aops.c -+++ linux-3.2/fs/ntfs/aops.c -@@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(s +diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c +index 7fb7f1b..4c8095c 100644 +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c +@@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) recs = PAGE_CACHE_SIZE / rec_size; /* Should have been verified before we got here... */ BUG_ON(!recs); @@ -59,3 +59,6 @@ Index: linux-3.2/fs/ntfs/aops.c flush_dcache_page(page); if (likely(page_uptodate && !PageError(page))) SetPageUptodate(page); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch b/debian/patches/features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch similarity index 87% rename from debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch rename to debian/patches/features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch index bc772acd4..027710b48 100644 --- a/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch +++ b/debian/patches/features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch @@ -1,21 +1,21 @@ +From 837ae04a2a8c4ed94b58b795ecca50e6abaaf920 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 13 Dec 2010 16:33:39 +0100 -Subject: x86: Convert mce timer to hrtimer +Subject: [PATCH 219/267] x86: Convert mce timer to hrtimer mce_timer is started in atomic contexts of cpu bringup. This results in might_sleep() warnings on RT. Convert mce_timer to a hrtimer to avoid this. Signed-off-by: Thomas Gleixner - --- - arch/x86/kernel/cpu/mcheck/mce.c | 49 ++++++++++++++++++--------------------- + arch/x86/kernel/cpu/mcheck/mce.c | 49 ++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 26 deletions(-) -Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c -=================================================================== ---- linux-3.2.orig/arch/x86/kernel/cpu/mcheck/mce.c -+++ linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c +diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c +index 2af127d..f1f1cb1 100644 +--- a/arch/x86/kernel/cpu/mcheck/mce.c ++++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -38,6 +38,7 @@ #include #include @@ -24,7 +24,7 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c #include #include -@@ -1106,17 +1107,14 @@ void mce_log_therm_throt_event(__u64 sta +@@ -1106,17 +1107,14 @@ void mce_log_therm_throt_event(__u64 status) * poller finds an MCE, poll 2x faster. When the poller finds no more * errors, poll 2x slower (up to check_interval seconds). */ @@ -47,7 +47,7 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c if (mce_available(__this_cpu_ptr(&cpu_info))) { machine_check_poll(MCP_TIMESTAMP, -@@ -1129,21 +1127,22 @@ static void mce_start_timer(unsigned lon +@@ -1129,21 +1127,22 @@ static void mce_start_timer(unsigned long data) */ n = &__get_cpu_var(mce_next_interval); if (mce_notify_irq()) @@ -76,7 +76,7 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c } static void mce_do_trigger(struct work_struct *work) -@@ -1375,10 +1374,11 @@ static void __mcheck_cpu_init_vendor(str +@@ -1375,10 +1374,11 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c) static void __mcheck_cpu_init_timer(void) { @@ -91,7 +91,7 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c if (mce_ignore_ce) return; -@@ -1386,8 +1386,9 @@ static void __mcheck_cpu_init_timer(void +@@ -1386,8 +1386,9 @@ static void __mcheck_cpu_init_timer(void) *n = check_interval * HZ; if (!*n) return; @@ -103,7 +103,7 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c } /* Handle unconfigured int18 (should never happen) */ -@@ -2023,6 +2024,8 @@ static void __cpuinit mce_disable_cpu(vo +@@ -2023,6 +2024,8 @@ static void __cpuinit mce_disable_cpu(void *h) if (!mce_available(__this_cpu_ptr(&cpu_info))) return; @@ -112,7 +112,7 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c if (!(action & CPU_TASKS_FROZEN)) cmci_clear(); for (i = 0; i < banks; i++) { -@@ -2049,6 +2052,7 @@ static void __cpuinit mce_reenable_cpu(v +@@ -2049,6 +2052,7 @@ static void __cpuinit mce_reenable_cpu(void *h) if (b->init) wrmsrl(MSR_IA32_MCx_CTL(i), b->ctl); } @@ -128,7 +128,7 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c switch (action) { case CPU_ONLINE: -@@ -2073,16 +2076,10 @@ mce_cpu_callback(struct notifier_block * +@@ -2073,16 +2076,10 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) break; case CPU_DOWN_PREPARE: case CPU_DOWN_PREPARE_FROZEN: @@ -145,3 +145,6 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/mce.c smp_call_function_single(cpu, mce_reenable_cpu, &action, 1); break; case CPU_POST_DEAD: +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch b/debian/patches/features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch similarity index 77% rename from debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch rename to debian/patches/features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch index 3ce078e0a..4b1d52437 100644 --- a/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch +++ b/debian/patches/features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch @@ -1,6 +1,7 @@ +From 633e50151dbfbf9582969693e31afa2b9f3b1536 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 16 Dec 2010 14:25:18 +0100 -Subject: x86: stackprotector: Avoid random pool on rt +Subject: [PATCH 220/267] x86: stackprotector: Avoid random pool on rt CPU bringup calls into the random pool to initialize the stack canary. During boot that works nicely even on RT as the might sleep @@ -12,15 +13,14 @@ entropy and we rely on the TSC randomnness. Reported-by: Carsten Emde Signed-off-by: Thomas Gleixner - --- arch/x86/include/asm/stackprotector.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) -Index: linux-3.2/arch/x86/include/asm/stackprotector.h -=================================================================== ---- linux-3.2.orig/arch/x86/include/asm/stackprotector.h -+++ linux-3.2/arch/x86/include/asm/stackprotector.h +diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h +index 1575177..ac0703b 100644 +--- a/arch/x86/include/asm/stackprotector.h ++++ b/arch/x86/include/asm/stackprotector.h @@ -58,7 +58,7 @@ */ static __always_inline void boot_init_stack_canary(void) @@ -30,7 +30,7 @@ Index: linux-3.2/arch/x86/include/asm/stackprotector.h u64 tsc; #ifdef CONFIG_X86_64 -@@ -69,8 +69,16 @@ static __always_inline void boot_init_st +@@ -69,8 +69,16 @@ static __always_inline void boot_init_stack_canary(void) * of randomness. The TSC only matters for very early init, * there it already has some randomness on most systems. Later * on during the bootup the random pool has true entropy too. @@ -47,3 +47,6 @@ Index: linux-3.2/arch/x86/include/asm/stackprotector.h tsc = __native_read_tsc(); canary += tsc + (tsc << 32UL); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch b/debian/patches/features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch similarity index 69% rename from debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch rename to debian/patches/features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch index f77eebd41..170ca58c0 100644 --- a/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch +++ b/debian/patches/features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch @@ -1,20 +1,20 @@ +From 2b1041543f3283dfa53caa33a8606eeaf4f68210 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 26 Jul 2009 02:21:32 +0200 -Subject: x86: Use generic rwsem_spinlocks on -rt +Subject: [PATCH 221/267] x86: Use generic rwsem_spinlocks on -rt Simplifies the separation of anon_rw_semaphores and rw_semaphores for -rt. Signed-off-by: Thomas Gleixner - --- arch/x86/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/arch/x86/Kconfig -=================================================================== ---- linux-3.2.orig/arch/x86/Kconfig -+++ linux-3.2/arch/x86/Kconfig +diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig +index efb4294..e084a73 100644 +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig @@ -161,10 +161,10 @@ config ARCH_MAY_HAVE_PC_FDC def_bool ISA_DMA_API @@ -28,3 +28,6 @@ Index: linux-3.2/arch/x86/Kconfig config ARCH_HAS_CPU_IDLE_WAIT def_bool y +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/x86-disable-debug-stack.patch b/debian/patches/features/all/rt/0222-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch similarity index 79% rename from debian/patches/features/all/rt/x86-disable-debug-stack.patch rename to debian/patches/features/all/rt/0222-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch index 03ef21a9b..227b0754f 100644 --- a/debian/patches/features/all/rt/x86-disable-debug-stack.patch +++ b/debian/patches/features/all/rt/0222-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch @@ -1,6 +1,8 @@ +From 4ae54337b19a7fbc398ceeca6df1c8cd79bff26a Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Fri, 3 Jul 2009 08:44:10 -0500 -Subject: x86: Disable IST stacks for debug/int 3/stack fault for PREEMPT_RT +Subject: [PATCH 222/267] x86: Disable IST stacks for debug/int 3/stack fault + for PREEMPT_RT Normally the x86-64 trap handlers for debug/int 3/stack fault run on a special interrupt stack to make them more robust @@ -41,10 +43,10 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/dumpstack_64.c | 4 ++++ 3 files changed, 21 insertions(+), 6 deletions(-) -Index: linux-3.2/arch/x86/include/asm/page_64_types.h -=================================================================== ---- linux-3.2.orig/arch/x86/include/asm/page_64_types.h -+++ linux-3.2/arch/x86/include/asm/page_64_types.h +diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h +index 7639dbf..0883ecd 100644 +--- a/arch/x86/include/asm/page_64_types.h ++++ b/arch/x86/include/asm/page_64_types.h @@ -14,12 +14,21 @@ #define IRQ_STACK_ORDER 2 #define IRQ_STACK_SIZE (PAGE_SIZE << IRQ_STACK_ORDER) @@ -73,11 +75,11 @@ Index: linux-3.2/arch/x86/include/asm/page_64_types.h #define PUD_PAGE_SIZE (_AC(1, UL) << PUD_SHIFT) #define PUD_PAGE_MASK (~(PUD_PAGE_SIZE-1)) -Index: linux-3.2/arch/x86/kernel/cpu/common.c -=================================================================== ---- linux-3.2.orig/arch/x86/kernel/cpu/common.c -+++ linux-3.2/arch/x86/kernel/cpu/common.c -@@ -1055,7 +1055,9 @@ DEFINE_PER_CPU(unsigned int, irq_count) +diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c +index aa003b1..d39b525 100644 +--- a/arch/x86/kernel/cpu/common.c ++++ b/arch/x86/kernel/cpu/common.c +@@ -1055,7 +1055,9 @@ DEFINE_PER_CPU(unsigned int, irq_count) = -1; */ static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = { [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ, @@ -87,10 +89,10 @@ Index: linux-3.2/arch/x86/kernel/cpu/common.c }; static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks -Index: linux-3.2/arch/x86/kernel/dumpstack_64.c -=================================================================== ---- linux-3.2.orig/arch/x86/kernel/dumpstack_64.c -+++ linux-3.2/arch/x86/kernel/dumpstack_64.c +diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c +index 6d728d9..352beb7 100644 +--- a/arch/x86/kernel/dumpstack_64.c ++++ b/arch/x86/kernel/dumpstack_64.c @@ -21,10 +21,14 @@ (N_EXCEPTION_STACKS + DEBUG_STKSZ/EXCEPTION_STKSZ - 2) @@ -106,3 +108,6 @@ Index: linux-3.2/arch/x86/kernel/dumpstack_64.c [ MCE_STACK-1 ] = "#MC", #if DEBUG_STKSZ > EXCEPTION_STKSZ [ N_EXCEPTION_STACKS ... +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/workqueue-use-get-cpu-light.patch b/debian/patches/features/all/rt/0223-workqueue-use-get-cpu-light.patch.patch similarity index 50% rename from debian/patches/features/all/rt/workqueue-use-get-cpu-light.patch rename to debian/patches/features/all/rt/0223-workqueue-use-get-cpu-light.patch.patch index 91298f2e7..e0722c20f 100644 --- a/debian/patches/features/all/rt/workqueue-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/0223-workqueue-use-get-cpu-light.patch.patch @@ -1,17 +1,18 @@ -Subject: workqueue-use-get-cpu-light.patch +From bcf0a865cfa7154f046323f68362fbe03f53df9b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:42:26 +0200 +Subject: [PATCH 223/267] workqueue-use-get-cpu-light.patch Signed-off-by: Thomas Gleixner --- kernel/workqueue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/kernel/workqueue.c -=================================================================== ---- linux-3.2.orig/kernel/workqueue.c -+++ linux-3.2/kernel/workqueue.c -@@ -1061,8 +1061,8 @@ int queue_work(struct workqueue_struct * +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 8bdc220..5d23c05b 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -1063,8 +1063,8 @@ int queue_work(struct workqueue_struct *wq, struct work_struct *work) { int ret; @@ -22,3 +23,6 @@ Index: linux-3.2/kernel/workqueue.c return ret; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch b/debian/patches/features/all/rt/0224-epoll.patch.patch similarity index 58% rename from debian/patches/features/all/rt/epoll-use-get-cpu-light.patch rename to debian/patches/features/all/rt/0224-epoll.patch.patch index 201973fd5..25d768edd 100644 --- a/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/0224-epoll.patch.patch @@ -1,17 +1,18 @@ -Subject: epoll.patch +From b567a9a48741b5c6a271e478cc11149308ecd9b2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 08 Jul 2011 16:35:35 +0200 +Date: Fri, 8 Jul 2011 16:35:35 +0200 +Subject: [PATCH 224/267] epoll.patch Signed-off-by: Thomas Gleixner --- fs/eventpoll.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/fs/eventpoll.c -=================================================================== ---- linux-3.2.orig/fs/eventpoll.c -+++ linux-3.2/fs/eventpoll.c -@@ -464,12 +464,12 @@ static int ep_poll_wakeup_proc(void *pri +diff --git a/fs/eventpoll.c b/fs/eventpoll.c +index ea54cde..34294b9 100644 +--- a/fs/eventpoll.c ++++ b/fs/eventpoll.c +@@ -464,12 +464,12 @@ static int ep_poll_wakeup_proc(void *priv, void *cookie, int call_nests) */ static void ep_poll_safewake(wait_queue_head_t *wq) { @@ -26,3 +27,6 @@ Index: linux-3.2/fs/eventpoll.c } static void ep_remove_wait_queue(struct eppoll_entry *pwq) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch b/debian/patches/features/all/rt/0225-mm-vmalloc.patch.patch similarity index 69% rename from debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch rename to debian/patches/features/all/rt/0225-mm-vmalloc.patch.patch index 0912bd980..2608068e3 100644 --- a/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/0225-mm-vmalloc.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-vmalloc.patch +From c3c1151199a7fdb1daf2a026f16684bee49ec26d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 12 Jul 2011 11:39:36 +0200 +Subject: [PATCH 225/267] mm-vmalloc.patch Signed-off-by: Thomas Gleixner --- mm/vmalloc.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) -Index: linux-3.2/mm/vmalloc.c -=================================================================== ---- linux-3.2.orig/mm/vmalloc.c -+++ linux-3.2/mm/vmalloc.c -@@ -782,7 +782,7 @@ static struct vmap_block *new_vmap_block +diff --git a/mm/vmalloc.c b/mm/vmalloc.c +index 27be2f0..071155a 100644 +--- a/mm/vmalloc.c ++++ b/mm/vmalloc.c +@@ -782,7 +782,7 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask) struct vmap_block *vb; struct vmap_area *va; unsigned long vb_idx; @@ -20,7 +21,7 @@ Index: linux-3.2/mm/vmalloc.c node = numa_node_id(); -@@ -821,12 +821,13 @@ static struct vmap_block *new_vmap_block +@@ -821,12 +821,13 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask) BUG_ON(err); radix_tree_preload_end(); @@ -36,7 +37,7 @@ Index: linux-3.2/mm/vmalloc.c return vb; } -@@ -900,7 +901,7 @@ static void *vb_alloc(unsigned long size +@@ -900,7 +901,7 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask) struct vmap_block *vb; unsigned long addr = 0; unsigned int order; @@ -45,7 +46,7 @@ Index: linux-3.2/mm/vmalloc.c BUG_ON(size & ~PAGE_MASK); BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC); -@@ -908,7 +909,8 @@ static void *vb_alloc(unsigned long size +@@ -908,7 +909,8 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask) again: rcu_read_lock(); @@ -64,3 +65,6 @@ Index: linux-3.2/mm/vmalloc.c rcu_read_unlock(); if (!addr) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/workqueue-sanity.patch b/debian/patches/features/all/rt/0226-workqueue-Fix-cpuhotplug-trainwreck.patch similarity index 93% rename from debian/patches/features/all/rt/workqueue-sanity.patch rename to debian/patches/features/all/rt/0226-workqueue-Fix-cpuhotplug-trainwreck.patch index c3b207012..8ee8f967e 100644 --- a/debian/patches/features/all/rt/workqueue-sanity.patch +++ b/debian/patches/features/all/rt/0226-workqueue-Fix-cpuhotplug-trainwreck.patch @@ -1,6 +1,7 @@ -Subject: workqueue: Fix cpuhotplug trainwreck +From 9d750b53be954a1e37bd4d626ba68cd308a1cd25 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Sep 30 11:57:58 CEST 2011 +Date: Fri, 30 Sep 2011 11:57:58 +0200 +Subject: [PATCH 226/267] workqueue: Fix cpuhotplug trainwreck The current workqueue code does crazy stuff on cpu unplug, it relies on forced affine breakage, thereby violating per-cpu expectations. Worse, @@ -27,15 +28,15 @@ this and loose ~250 lines of code. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner --- - include/linux/cpu.h | 6 - include/linux/workqueue.h | 5 - kernel/workqueue.c | 560 ++++++++++++---------------------------------- - 3 files changed, 154 insertions(+), 417 deletions(-) + include/linux/cpu.h | 6 +- + include/linux/workqueue.h | 5 +- + kernel/workqueue.c | 556 ++++++++++++--------------------------------- + 3 files changed, 152 insertions(+), 415 deletions(-) -Index: linux-3.2/include/linux/cpu.h -=================================================================== ---- linux-3.2.orig/include/linux/cpu.h -+++ linux-3.2/include/linux/cpu.h +diff --git a/include/linux/cpu.h b/include/linux/cpu.h +index c46ec3e..72e90bb 100644 +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h @@ -66,8 +66,10 @@ enum { /* migration should happen before other stuff but after perf */ CPU_PRI_PERF = 20, @@ -49,10 +50,10 @@ Index: linux-3.2/include/linux/cpu.h }; #define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */ -Index: linux-3.2/include/linux/workqueue.h -=================================================================== ---- linux-3.2.orig/include/linux/workqueue.h -+++ linux-3.2/include/linux/workqueue.h +diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h +index e228ca9..3d8ac9d 100644 +--- a/include/linux/workqueue.h ++++ b/include/linux/workqueue.h @@ -254,9 +254,10 @@ enum { WQ_MEM_RECLAIM = 1 << 3, /* may be used for memory reclaim */ WQ_HIGHPRI = 1 << 4, /* high priority */ @@ -66,10 +67,10 @@ Index: linux-3.2/include/linux/workqueue.h WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */ WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */ -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 5d23c05b..8daede8 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -41,6 +41,7 @@ #include #include @@ -86,7 +87,9 @@ Index: linux-3.2/kernel/workqueue.c - WORKER_REBIND = 1 << 5, /* mom is home, come back */ - WORKER_CPU_INTENSIVE = 1 << 6, /* cpu intensive */ - WORKER_UNBOUND = 1 << 7, /* worker is unbound */ -- ++ WORKER_CPU_INTENSIVE = 1 << 4, /* cpu intensive */ ++ WORKER_UNBOUND = 1 << 5, /* worker is unbound */ + - WORKER_NOT_RUNNING = WORKER_PREP | WORKER_ROGUE | WORKER_REBIND | - WORKER_CPU_INTENSIVE | WORKER_UNBOUND, - @@ -96,9 +99,6 @@ Index: linux-3.2/kernel/workqueue.c - TRUSTEE_BUTCHER = 2, /* butcher workers */ - TRUSTEE_RELEASE = 3, /* release workers */ - TRUSTEE_DONE = 4, /* trustee is done */ -+ WORKER_CPU_INTENSIVE = 1 << 4, /* cpu intensive */ -+ WORKER_UNBOUND = 1 << 5, /* worker is unbound */ -+ + WORKER_NOT_RUNNING = WORKER_PREP | WORKER_CPU_INTENSIVE | WORKER_UNBOUND, BUSY_WORKER_HASH_ORDER = 6, /* 64 pointers */ @@ -131,7 +131,7 @@ Index: linux-3.2/kernel/workqueue.c } ____cacheline_aligned_in_smp; /* -@@ -972,13 +959,38 @@ static bool is_chained_work(struct workq +@@ -974,13 +961,38 @@ static bool is_chained_work(struct workqueue_struct *wq) return false; } @@ -173,7 +173,7 @@ Index: linux-3.2/kernel/workqueue.c unsigned long flags; debug_work_activate(work); -@@ -1024,27 +1036,32 @@ static void __queue_work(unsigned int cp +@@ -1026,27 +1038,32 @@ static void __queue_work(unsigned int cpu, struct workqueue_struct *wq, spin_lock_irqsave(&gcwq->lock, flags); } @@ -223,7 +223,7 @@ Index: linux-3.2/kernel/workqueue.c } /** -@@ -1061,34 +1078,19 @@ int queue_work(struct workqueue_struct * +@@ -1063,34 +1080,19 @@ int queue_work(struct workqueue_struct *wq, struct work_struct *work) { int ret; @@ -261,7 +261,7 @@ Index: linux-3.2/kernel/workqueue.c } EXPORT_SYMBOL_GPL(queue_work_on); -@@ -1134,6 +1136,8 @@ int queue_delayed_work_on(int cpu, struc +@@ -1136,6 +1138,8 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq, struct timer_list *timer = &dwork->timer; struct work_struct *work = &dwork->work; @@ -270,7 +270,7 @@ Index: linux-3.2/kernel/workqueue.c if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) { unsigned int lcpu; -@@ -1199,12 +1203,13 @@ static void worker_enter_idle(struct wor +@@ -1201,12 +1205,13 @@ static void worker_enter_idle(struct worker *worker) /* idle_list is LIFO */ list_add(&worker->entry, &gcwq->idle_list); @@ -290,7 +290,7 @@ Index: linux-3.2/kernel/workqueue.c /* sanity check nr_running */ WARN_ON_ONCE(gcwq->nr_workers == gcwq->nr_idle && -@@ -1296,23 +1301,6 @@ __acquires(&gcwq->lock) +@@ -1298,23 +1303,6 @@ __acquires(&gcwq->lock) } } @@ -314,7 +314,7 @@ Index: linux-3.2/kernel/workqueue.c static struct worker *alloc_worker(void) { struct worker *worker; -@@ -1321,7 +1309,6 @@ static struct worker *alloc_worker(void) +@@ -1323,7 +1311,6 @@ static struct worker *alloc_worker(void) if (worker) { INIT_LIST_HEAD(&worker->entry); INIT_LIST_HEAD(&worker->scheduled); @@ -322,7 +322,7 @@ Index: linux-3.2/kernel/workqueue.c /* on creation a worker is in !idle && prep state */ worker->flags = WORKER_PREP; } -@@ -1661,13 +1648,6 @@ static bool manage_workers(struct worker +@@ -1663,13 +1650,6 @@ static bool manage_workers(struct worker *worker) gcwq->flags &= ~GCWQ_MANAGING_WORKERS; @@ -336,7 +336,7 @@ Index: linux-3.2/kernel/workqueue.c return ret; } -@@ -3207,171 +3187,71 @@ EXPORT_SYMBOL_GPL(work_busy); +@@ -3209,171 +3189,71 @@ EXPORT_SYMBOL_GPL(work_busy); * gcwqs serve mix of short, long and very long running works making * blocked draining impractical. * @@ -537,7 +537,10 @@ Index: linux-3.2/kernel/workqueue.c - */ - gcwq->trustee_state = TRUSTEE_IN_CHARGE; - wake_up_all(&gcwq->trustee_wait); -- ++ if (wq->flags & WQ_NON_AFFINE) ++ list_move(&work->entry, &non_affine_works); ++ } + - /* - * The original cpu is in the process of dying and may go away - * anytime now. When that happens, we and all workers would @@ -551,15 +554,11 @@ Index: linux-3.2/kernel/workqueue.c - while (gcwq->nr_workers != gcwq->nr_idle || - gcwq->flags & GCWQ_FREEZING || - gcwq->trustee_state == TRUSTEE_IN_CHARGE) { -+ if (wq->flags & WQ_NON_AFFINE) -+ list_move(&work->entry, &non_affine_works); -+ } -+ + while (!list_empty(&gcwq->worklist)) { int nr_works = 0; list_for_each_entry(work, &gcwq->worklist, entry) { -@@ -3385,200 +3265,55 @@ static int __cpuinit trustee_thread(void +@@ -3387,200 +3267,55 @@ static int __cpuinit trustee_thread(void *__gcwq) wake_up_process(worker->task); } @@ -607,7 +606,9 @@ Index: linux-3.2/kernel/workqueue.c - for_each_busy_worker(worker, i, pos, gcwq) { - struct work_struct *rebind_work = &worker->rebind_work; -- ++ spin_lock_irq(&gcwq->lock); ++ } + - /* - * Rebind_work may race with future cpu hotplug - * operations. Use a separate flag to mark that @@ -615,27 +616,25 @@ Index: linux-3.2/kernel/workqueue.c - */ - worker->flags |= WORKER_REBIND; - worker->flags &= ~WORKER_ROGUE; -+ spin_lock_irq(&gcwq->lock); -+ } ++ WARN_ON(gcwq->nr_workers != gcwq->nr_idle); - /* queue rebind_work, wq doesn't matter, use the default one */ - if (test_and_set_bit(WORK_STRUCT_PENDING_BIT, - work_data_bits(rebind_work))) - continue; -+ WARN_ON(gcwq->nr_workers != gcwq->nr_idle); ++ list_for_each_entry_safe(worker, n, &gcwq->idle_list, entry) ++ destroy_worker(worker); - debug_work_activate(rebind_work); - insert_work(get_cwq(gcwq->cpu, system_wq), rebind_work, - worker->scheduled.next, - work_color_to_flags(WORK_NO_COLOR)); - } -+ list_for_each_entry_safe(worker, n, &gcwq->idle_list, entry) -+ destroy_worker(worker); ++ WARN_ON(gcwq->nr_workers || gcwq->nr_idle); - /* relinquish manager role */ - gcwq->flags &= ~GCWQ_MANAGING_WORKERS; -+ WARN_ON(gcwq->nr_workers || gcwq->nr_idle); - +- - /* notify completion */ - gcwq->trustee = NULL; - gcwq->trustee_state = TRUSTEE_DONE; @@ -785,7 +784,7 @@ Index: linux-3.2/kernel/workqueue.c return notifier_from_errno(0); } -@@ -3775,7 +3510,8 @@ static int __init init_workqueues(void) +@@ -3777,7 +3512,8 @@ static int __init init_workqueues(void) unsigned int cpu; int i; @@ -795,7 +794,7 @@ Index: linux-3.2/kernel/workqueue.c /* initialize gcwqs */ for_each_gcwq_cpu(cpu) { -@@ -3798,9 +3534,7 @@ static int __init init_workqueues(void) +@@ -3800,9 +3536,7 @@ static int __init init_workqueues(void) (unsigned long)gcwq); ida_init(&gcwq->worker_ida); @@ -806,3 +805,6 @@ Index: linux-3.2/kernel/workqueue.c } /* create the initial worker */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch b/debian/patches/features/all/rt/0227-workqueue-Fix-PF_THREAD_BOUND-abuse.patch similarity index 80% rename from debian/patches/features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch rename to debian/patches/features/all/rt/0227-workqueue-Fix-PF_THREAD_BOUND-abuse.patch index 57f9c9729..0b00d1408 100644 --- a/debian/patches/features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch +++ b/debian/patches/features/all/rt/0227-workqueue-Fix-PF_THREAD_BOUND-abuse.patch @@ -1,6 +1,7 @@ -Subject: workqueue: Fix PF_THREAD_BOUND abuse +From 9185f2468627b760334cdf1f18ee1e80efab80ac Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Mon Oct 03 12:43:25 CEST 2011 +Date: Mon, 3 Oct 2011 12:43:25 +0200 +Subject: [PATCH 227/267] workqueue: Fix PF_THREAD_BOUND abuse PF_THREAD_BOUND is set by kthread_bind() and means the thread is bound to a particular cpu for correctness. The workqueue code abuses this @@ -28,11 +29,11 @@ Signed-off-by: Thomas Gleixner kernel/workqueue.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) -Index: linux-3.2/kernel/workqueue.c -=================================================================== ---- linux-3.2.orig/kernel/workqueue.c -+++ linux-3.2/kernel/workqueue.c -@@ -1286,8 +1286,14 @@ __acquires(&gcwq->lock) +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 8daede8..02ce5cc 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -1288,8 +1288,14 @@ __acquires(&gcwq->lock) return false; if (task_cpu(task) == gcwq->cpu && cpumask_equal(¤t->cpus_allowed, @@ -48,7 +49,7 @@ Index: linux-3.2/kernel/workqueue.c spin_unlock_irq(&gcwq->lock); /* -@@ -1301,6 +1307,18 @@ __acquires(&gcwq->lock) +@@ -1303,6 +1309,18 @@ __acquires(&gcwq->lock) } } @@ -67,7 +68,7 @@ Index: linux-3.2/kernel/workqueue.c static struct worker *alloc_worker(void) { struct worker *worker; -@@ -1363,15 +1381,9 @@ static struct worker *create_worker(stru +@@ -1365,15 +1383,9 @@ static struct worker *create_worker(struct global_cwq *gcwq, bool bind) if (IS_ERR(worker->task)) goto fail; @@ -83,7 +84,7 @@ Index: linux-3.2/kernel/workqueue.c if (on_unbound_cpu) worker->flags |= WORKER_UNBOUND; } -@@ -2048,7 +2060,7 @@ repeat: +@@ -2050,7 +2062,7 @@ repeat: if (keep_working(gcwq)) wake_up_worker(gcwq); @@ -92,7 +93,7 @@ Index: linux-3.2/kernel/workqueue.c } schedule(); -@@ -2997,7 +3009,6 @@ struct workqueue_struct *__alloc_workque +@@ -2999,7 +3011,6 @@ struct workqueue_struct *__alloc_workqueue_key(const char *name, if (IS_ERR(rescuer->task)) goto err; @@ -100,3 +101,6 @@ Index: linux-3.2/kernel/workqueue.c wake_up_process(rescuer->task); } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/workqueue-hotplug-fix.patch b/debian/patches/features/all/rt/0228-workqueue-Use-get_cpu_light-in-flush_gcwq.patch similarity index 88% rename from debian/patches/features/all/rt/workqueue-hotplug-fix.patch rename to debian/patches/features/all/rt/0228-workqueue-Use-get_cpu_light-in-flush_gcwq.patch index 3b4b54faf..702d3ab4c 100644 --- a/debian/patches/features/all/rt/workqueue-hotplug-fix.patch +++ b/debian/patches/features/all/rt/0228-workqueue-Use-get_cpu_light-in-flush_gcwq.patch @@ -1,6 +1,7 @@ -Subject: workqueue: Use get_cpu_light() in flush_gcwq() +From f7562a5bc09a9e5e40565d3ced429908de02bc08 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:46 +0800 +Subject: [PATCH 228/267] workqueue: Use get_cpu_light() in flush_gcwq() BUG: sleeping function called from invalid context at kernel/rtmutex.c:645 in_atomic(): 1, irqs_disabled(): 0, pid: 1739, name: bash @@ -58,11 +59,11 @@ Signed-off-by: Thomas Gleixner kernel/workqueue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/kernel/workqueue.c -=================================================================== ---- linux-3.2.orig/kernel/workqueue.c -+++ linux-3.2/kernel/workqueue.c -@@ -3299,14 +3299,14 @@ static void flush_gcwq(struct global_cwq +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 02ce5cc..8389afe 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3301,14 +3301,14 @@ static void flush_gcwq(struct global_cwq *gcwq) spin_unlock_irq(&gcwq->lock); @@ -79,3 +80,6 @@ Index: linux-3.2/kernel/workqueue.c } static int __devinit workqueue_cpu_down_callback(struct notifier_block *nfb, +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/workqueue-more-hotplug-fallout.patch b/debian/patches/features/all/rt/0229-hotplug-stuff.patch.patch similarity index 55% rename from debian/patches/features/all/rt/workqueue-more-hotplug-fallout.patch rename to debian/patches/features/all/rt/0229-hotplug-stuff.patch.patch index 33569e0fc..6807c3298 100644 --- a/debian/patches/features/all/rt/workqueue-more-hotplug-fallout.patch +++ b/debian/patches/features/all/rt/0229-hotplug-stuff.patch.patch @@ -1,6 +1,7 @@ -Subject: hotplug-stuff.patch +From ebe89669ba12c905ef019454a240784c1e2fee0a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 04 Nov 2011 18:58:24 +0100 +Date: Fri, 4 Nov 2011 18:58:24 +0100 +Subject: [PATCH 229/267] hotplug-stuff.patch Do not take lock for non handled cases (might be atomic context) @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner kernel/workqueue.c | 5 +++++ 1 file changed, 5 insertions(+) -Index: linux-3.2/kernel/workqueue.c -=================================================================== ---- linux-3.2.orig/kernel/workqueue.c -+++ linux-3.2/kernel/workqueue.c -@@ -3217,6 +3217,11 @@ static int __devinit workqueue_cpu_up_ca +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 8389afe..674d783 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3219,6 +3219,11 @@ static int __devinit workqueue_cpu_up_callback(struct notifier_block *nfb, new_worker = create_worker(gcwq, false); if (!new_worker) return NOTIFY_BAD; @@ -25,3 +26,6 @@ Index: linux-3.2/kernel/workqueue.c } /* some are called w/ irq disabled, don't disturb irq status */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/debugobjects-rt.patch b/debian/patches/features/all/rt/0230-debugobjects-rt.patch.patch similarity index 60% rename from debian/patches/features/all/rt/debugobjects-rt.patch rename to debian/patches/features/all/rt/0230-debugobjects-rt.patch.patch index 864655505..33c563c75 100644 --- a/debian/patches/features/all/rt/debugobjects-rt.patch +++ b/debian/patches/features/all/rt/0230-debugobjects-rt.patch.patch @@ -1,17 +1,18 @@ -Subject: debugobjects-rt.patch +From 0fbe4d83b24b5cb2db0da8b4ddd3fa545013bd93 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:41:35 +0200 +Subject: [PATCH 230/267] debugobjects-rt.patch Signed-off-by: Thomas Gleixner --- lib/debugobjects.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -Index: linux-3.2/lib/debugobjects.c -=================================================================== ---- linux-3.2.orig/lib/debugobjects.c -+++ linux-3.2/lib/debugobjects.c -@@ -306,7 +306,10 @@ __debug_object_init(void *addr, struct d +diff --git a/lib/debugobjects.c b/lib/debugobjects.c +index a78b7c6..9b622c9 100644 +--- a/lib/debugobjects.c ++++ b/lib/debugobjects.c +@@ -306,7 +306,10 @@ __debug_object_init(void *addr, struct debug_obj_descr *descr, int onstack) struct debug_obj *obj; unsigned long flags; @@ -23,7 +24,7 @@ Index: linux-3.2/lib/debugobjects.c db = get_bucket((unsigned long) addr); -@@ -1015,9 +1018,9 @@ static int __init debug_objects_replace_ +@@ -1015,9 +1018,9 @@ static int __init debug_objects_replace_static_objects(void) } } @@ -34,3 +35,6 @@ Index: linux-3.2/lib/debugobjects.c return 0; free: hlist_for_each_entry_safe(obj, node, tmp, &objects, node) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/jump-label-rt.patch b/debian/patches/features/all/rt/0231-jump-label-rt.patch.patch similarity index 63% rename from debian/patches/features/all/rt/jump-label-rt.patch rename to debian/patches/features/all/rt/0231-jump-label-rt.patch.patch index 4ad2e7daf..ce32eafc9 100644 --- a/debian/patches/features/all/rt/jump-label-rt.patch +++ b/debian/patches/features/all/rt/0231-jump-label-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: jump-label-rt.patch +From 2bd1f5a798104f32a4dd4dff8fcf06c97cbba2ba Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 13 Jul 2011 11:03:16 +0200 +Subject: [PATCH 231/267] jump-label-rt.patch Signed-off-by: Thomas Gleixner --- include/linux/jump_label.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/include/linux/jump_label.h -=================================================================== ---- linux-3.2.orig/include/linux/jump_label.h -+++ linux-3.2/include/linux/jump_label.h +diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h +index 388b0d4..9cc8ed9 100644 +--- a/include/linux/jump_label.h ++++ b/include/linux/jump_label.h @@ -4,7 +4,7 @@ #include #include @@ -20,3 +21,6 @@ Index: linux-3.2/include/linux/jump_label.h struct jump_label_key { atomic_t enabled; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/skbufhead-raw-lock.patch b/debian/patches/features/all/rt/0232-skbufhead-raw-lock.patch.patch similarity index 76% rename from debian/patches/features/all/rt/skbufhead-raw-lock.patch rename to debian/patches/features/all/rt/0232-skbufhead-raw-lock.patch.patch index b0816a5e6..22995eff4 100644 --- a/debian/patches/features/all/rt/skbufhead-raw-lock.patch +++ b/debian/patches/features/all/rt/0232-skbufhead-raw-lock.patch.patch @@ -1,6 +1,7 @@ -Subject: skbufhead-raw-lock.patch +From db6185709bdb319f73536d67b22d4669228decab Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 12 Jul 2011 15:38:34 +0200 +Subject: [PATCH 232/267] skbufhead-raw-lock.patch Signed-off-by: Thomas Gleixner --- @@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 26 ++++++++++++++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) -Index: linux-3.2/include/linux/netdevice.h -=================================================================== ---- linux-3.2.orig/include/linux/netdevice.h -+++ linux-3.2/include/linux/netdevice.h +diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h +index a82ad4d..a5bde77 100644 +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h @@ -1760,6 +1760,7 @@ struct softnet_data { unsigned dropped; struct sk_buff_head input_pkt_queue; @@ -21,10 +22,10 @@ Index: linux-3.2/include/linux/netdevice.h }; static inline void input_queue_head_incr(struct softnet_data *sd) -Index: linux-3.2/include/linux/skbuff.h -=================================================================== ---- linux-3.2.orig/include/linux/skbuff.h -+++ linux-3.2/include/linux/skbuff.h +diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h +index 6cf8b53..ea9736d 100644 +--- a/include/linux/skbuff.h ++++ b/include/linux/skbuff.h @@ -124,6 +124,7 @@ struct sk_buff_head { __u32 qlen; @@ -33,7 +34,7 @@ Index: linux-3.2/include/linux/skbuff.h }; struct sk_buff; -@@ -925,6 +926,12 @@ static inline void skb_queue_head_init(s +@@ -925,6 +926,12 @@ static inline void skb_queue_head_init(struct sk_buff_head *list) __skb_queue_head_init(list); } @@ -46,11 +47,11 @@ Index: linux-3.2/include/linux/skbuff.h static inline void skb_queue_head_init_class(struct sk_buff_head *list, struct lock_class_key *class) { -Index: linux-3.2/net/core/dev.c -=================================================================== ---- linux-3.2.orig/net/core/dev.c -+++ linux-3.2/net/core/dev.c -@@ -222,14 +222,14 @@ static inline struct hlist_head *dev_ind +diff --git a/net/core/dev.c b/net/core/dev.c +index 517b488..d030f8d 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -222,14 +222,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) static inline void rps_lock(struct softnet_data *sd) { #ifdef CONFIG_RPS @@ -91,7 +92,7 @@ Index: linux-3.2/net/core/dev.c } static int napi_gro_complete(struct sk_buff *skb) -@@ -3896,10 +3899,17 @@ static void net_rx_action(struct softirq +@@ -3903,10 +3906,17 @@ static void net_rx_action(struct softirq_action *h) struct softnet_data *sd = &__get_cpu_var(softnet_data); unsigned long time_limit = jiffies + 2; int budget = netdev_budget; @@ -109,7 +110,7 @@ Index: linux-3.2/net/core/dev.c while (!list_empty(&sd->poll_list)) { struct napi_struct *n; int work, weight; -@@ -6365,6 +6375,9 @@ static int dev_cpu_callback(struct notif +@@ -6372,6 +6382,9 @@ static int dev_cpu_callback(struct notifier_block *nfb, netif_rx(skb); input_queue_head_incr(oldsd); } @@ -119,7 +120,7 @@ Index: linux-3.2/net/core/dev.c return NOTIFY_OK; } -@@ -6631,8 +6644,9 @@ static int __init net_dev_init(void) +@@ -6638,8 +6651,9 @@ static int __init net_dev_init(void) struct softnet_data *sd = &per_cpu(softnet_data, i); memset(sd, 0, sizeof(*sd)); @@ -131,3 +132,6 @@ Index: linux-3.2/net/core/dev.c sd->completion_queue = NULL; INIT_LIST_HEAD(&sd->poll_list); sd->output_queue = NULL; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch b/debian/patches/features/all/rt/0233-x86-no-perf-irq-work-rt.patch.patch similarity index 63% rename from debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch rename to debian/patches/features/all/rt/0233-x86-no-perf-irq-work-rt.patch.patch index b326d4329..06f91ee52 100644 --- a/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch +++ b/debian/patches/features/all/rt/0233-x86-no-perf-irq-work-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: x86-no-perf-irq-work-rt.patch +From 5f961ab6d0984d6e06bf2e58b1cecc2f9637cfd0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 13 Jul 2011 14:05:05 +0200 +Subject: [PATCH 233/267] x86-no-perf-irq-work-rt.patch Signed-off-by: Thomas Gleixner --- @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 6 +++++- 3 files changed, 9 insertions(+), 1 deletion(-) -Index: linux-3.2/arch/x86/kernel/irq_work.c -=================================================================== ---- linux-3.2.orig/arch/x86/kernel/irq_work.c -+++ linux-3.2/arch/x86/kernel/irq_work.c -@@ -18,6 +18,7 @@ void smp_irq_work_interrupt(struct pt_re +diff --git a/arch/x86/kernel/irq_work.c b/arch/x86/kernel/irq_work.c +index ca8f703..129b8bb 100644 +--- a/arch/x86/kernel/irq_work.c ++++ b/arch/x86/kernel/irq_work.c +@@ -18,6 +18,7 @@ void smp_irq_work_interrupt(struct pt_regs *regs) irq_exit(); } @@ -26,10 +27,10 @@ Index: linux-3.2/arch/x86/kernel/irq_work.c #endif } +#endif -Index: linux-3.2/kernel/irq_work.c -=================================================================== ---- linux-3.2.orig/kernel/irq_work.c -+++ linux-3.2/kernel/irq_work.c +diff --git a/kernel/irq_work.c b/kernel/irq_work.c +index c3c46c7..727ba59 100644 +--- a/kernel/irq_work.c ++++ b/kernel/irq_work.c @@ -105,8 +105,10 @@ void irq_work_run(void) if (llist_empty(this_list)) return; @@ -41,10 +42,10 @@ Index: linux-3.2/kernel/irq_work.c llnode = llist_del_all(this_list); while (llnode != NULL) { -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index 7ea787b..a791a43 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1362,7 +1362,7 @@ void update_process_times(int user_tick) scheduler_tick(); run_local_timers(); @@ -54,7 +55,7 @@ Index: linux-3.2/kernel/timer.c if (in_irq()) irq_work_run(); #endif -@@ -1376,6 +1376,10 @@ static void run_timer_softirq(struct sof +@@ -1376,6 +1376,10 @@ static void run_timer_softirq(struct softirq_action *h) { struct tvec_base *base = __this_cpu_read(tvec_bases); @@ -65,3 +66,6 @@ Index: linux-3.2/kernel/timer.c printk_tick(); hrtimer_run_pending(); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/console-make-rt-friendly.patch b/debian/patches/features/all/rt/0234-console-make-rt-friendly.patch.patch similarity index 77% rename from debian/patches/features/all/rt/console-make-rt-friendly.patch rename to debian/patches/features/all/rt/0234-console-make-rt-friendly.patch.patch index a38087862..d6e1bc631 100644 --- a/debian/patches/features/all/rt/console-make-rt-friendly.patch +++ b/debian/patches/features/all/rt/0234-console-make-rt-friendly.patch.patch @@ -1,17 +1,18 @@ -Subject: console-make-rt-friendly.patch +From 7345e11db5653c75894b0a3d3cf2f0f380016b79 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:43:07 +0200 +Subject: [PATCH 234/267] console-make-rt-friendly.patch Signed-off-by: Thomas Gleixner --- kernel/printk.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) -Index: linux-3.2/kernel/printk.c -=================================================================== ---- linux-3.2.orig/kernel/printk.c -+++ linux-3.2/kernel/printk.c -@@ -504,6 +504,7 @@ static void __call_console_drivers(unsig +diff --git a/kernel/printk.c b/kernel/printk.c +index 2b95bc0..fad23c8 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -504,6 +504,7 @@ static void __call_console_drivers(unsigned start, unsigned end) { struct console *con; @@ -19,7 +20,7 @@ Index: linux-3.2/kernel/printk.c for_each_console(con) { if (exclusive_console && con != exclusive_console) continue; -@@ -512,6 +513,7 @@ static void __call_console_drivers(unsig +@@ -512,6 +513,7 @@ static void __call_console_drivers(unsigned start, unsigned end) (con->flags & CON_ANYTIME))) con->write(con, &LOG_BUF(start), end - start); } @@ -27,7 +28,7 @@ Index: linux-3.2/kernel/printk.c } #ifdef CONFIG_EARLY_PRINTK -@@ -827,12 +829,18 @@ static inline int can_use_console(unsign +@@ -827,12 +829,18 @@ static inline int can_use_console(unsigned int cpu) * interrupts disabled. It should return with 'lockbuf_lock' * released but interrupts still disabled. */ @@ -48,7 +49,7 @@ Index: linux-3.2/kernel/printk.c retval = 1; /* -@@ -1010,8 +1018,15 @@ asmlinkage int vprintk(const char *fmt, +@@ -1010,8 +1018,15 @@ asmlinkage int vprintk(const char *fmt, va_list args) * will release 'logbuf_lock' regardless of whether it * actually gets the semaphore or not. */ @@ -82,3 +83,6 @@ Index: linux-3.2/kernel/printk.c } console_locked = 0; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/printk-disable-migration-instead-of-preemption.patch b/debian/patches/features/all/rt/0235-printk-Disable-migration-instead-of-preemption.patch similarity index 84% rename from debian/patches/features/all/rt/printk-disable-migration-instead-of-preemption.patch rename to debian/patches/features/all/rt/0235-printk-Disable-migration-instead-of-preemption.patch index c974b1d24..284a0a765 100644 --- a/debian/patches/features/all/rt/printk-disable-migration-instead-of-preemption.patch +++ b/debian/patches/features/all/rt/0235-printk-Disable-migration-instead-of-preemption.patch @@ -1,6 +1,7 @@ -Subject: printk: Disable migration instead of preemption +From 2393db19529654fe543796abc967c908eb7c6148 Mon Sep 17 00:00:00 2001 From: Richard Weinberger Date: Mon, 12 Dec 2011 14:35:56 +0100 +Subject: [PATCH 235/267] printk: Disable migration instead of preemption There is no need do disable preemption in vprintk(), disable_migrate() is sufficient. This fixes the following bug in -rt: @@ -36,11 +37,11 @@ Signed-off-by: Thomas Gleixner kernel/printk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/kernel/printk.c -=================================================================== ---- linux-3.2.orig/kernel/printk.c -+++ linux-3.2/kernel/printk.c -@@ -901,7 +901,7 @@ asmlinkage int vprintk(const char *fmt, +diff --git a/kernel/printk.c b/kernel/printk.c +index fad23c8..13ea6a9 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -901,7 +901,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) boot_delay_msec(); printk_delay(); @@ -49,7 +50,7 @@ Index: linux-3.2/kernel/printk.c /* This stops the holder of console_sem just where we want him */ raw_local_irq_save(flags); this_cpu = smp_processor_id(); -@@ -1032,7 +1032,7 @@ asmlinkage int vprintk(const char *fmt, +@@ -1032,7 +1032,7 @@ asmlinkage int vprintk(const char *fmt, va_list args) out_restore_irqs: raw_local_irq_restore(flags); @@ -58,3 +59,6 @@ Index: linux-3.2/kernel/printk.c return printed_len; } EXPORT_SYMBOL(printk); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch b/debian/patches/features/all/rt/0236-power-use-generic-rwsem-on-rt.patch similarity index 53% rename from debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch rename to debian/patches/features/all/rt/0236-power-use-generic-rwsem-on-rt.patch index 6b887aebc..1431e6dc1 100644 --- a/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch +++ b/debian/patches/features/all/rt/0236-power-use-generic-rwsem-on-rt.patch @@ -1,13 +1,16 @@ +From 0560af1e02494253956e070e69f1cf856e2e0a84 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner +Date: Tue, 10 Apr 2012 14:34:18 -0400 +Subject: [PATCH 236/267] power-use-generic-rwsem-on-rt --- arch/powerpc/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -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 7c93c7e..c504625 100644 +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig @@ -69,10 +69,11 @@ config LOCKDEP_SUPPORT config RWSEM_GENERIC_SPINLOCK @@ -21,3 +24,6 @@ Index: linux-3.2/arch/powerpc/Kconfig config GENERIC_LOCKBREAK bool +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/0237-power-disable-highmem-on-rt.patch.patch similarity index 59% rename from debian/patches/features/all/rt/power-disable-highmem-on-rt.patch rename to debian/patches/features/all/rt/0237-power-disable-highmem-on-rt.patch.patch index 9234b14b1..bf2838691 100644 --- a/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/0237-power-disable-highmem-on-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: power-disable-highmem-on-rt.patch +From 8705b7416b5d8270fa3fce06795fac1f7cb9f217 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:08:34 +0200 +Subject: [PATCH 237/267] power-disable-highmem-on-rt.patch Signed-off-by: Thomas Gleixner --- arch/powerpc/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -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 c504625..d01baf8 100644 +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig @@ -276,7 +276,7 @@ menu "Kernel options" config HIGHMEM @@ -20,3 +21,6 @@ Index: linux-3.2/arch/powerpc/Kconfig source kernel/time/Kconfig source kernel/Kconfig.hz +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/0238-arm-disable-highmem-on-rt.patch.patch similarity index 65% rename from debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch rename to debian/patches/features/all/rt/0238-arm-disable-highmem-on-rt.patch.patch index 05a00c67d..291018a58 100644 --- a/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/0238-arm-disable-highmem-on-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: arm-disable-highmem-on-rt.patch +From 9b87c1e6e04a2419345383133d155c912ec6ae9f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:09:28 +0200 +Subject: [PATCH 238/267] arm-disable-highmem-on-rt.patch Signed-off-by: Thomas Gleixner --- arch/arm/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -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 fc327b8..0e53586 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig @@ -1668,7 +1668,7 @@ config HAVE_ARCH_PFN_VALID config HIGHMEM @@ -20,3 +21,6 @@ Index: linux-3.2/arch/arm/Kconfig help The address space of ARM processors is only 4 Gigabytes large and it has to accommodate user address space, kernel address +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch b/debian/patches/features/all/rt/0239-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch similarity index 75% rename from debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch rename to debian/patches/features/all/rt/0239-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch index d2364d010..05bbebaf9 100644 --- a/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch +++ b/debian/patches/features/all/rt/0239-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch @@ -1,20 +1,20 @@ +From 7f2157307f760daa1eb214bbe42f6b128bde99b2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 1 May 2010 18:29:35 +0200 -Subject: ARM: at91: tclib: Default to tclib timer for RT +Subject: [PATCH 239/267] ARM: at91: tclib: Default to tclib timer for RT RT is not too happy about the shared timer interrupt in AT91 devices. Default to tclib timer for RT. Signed-off-by: Thomas Gleixner - --- drivers/misc/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -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 1cb530c..951ae6c 100644 +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig @@ -82,6 +82,7 @@ config AB8500_PWM config ATMEL_TCLIB bool "Atmel AT32/AT91 Timer/Counter Library" @@ -32,3 +32,6 @@ Index: linux-3.2/drivers/misc/Kconfig help Select this to use 32 KiHz base clock rate as TC block clock source for clock events. +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/0240-mips-disable-highmem-on-rt.patch.patch similarity index 65% rename from debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch rename to debian/patches/features/all/rt/0240-mips-disable-highmem-on-rt.patch.patch index 3ad98104c..e1155183f 100644 --- a/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/0240-mips-disable-highmem-on-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: mips-disable-highmem-on-rt.patch +From da5946af5b91abe1264c94f7d308ad7bca51a1af Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:10:12 +0200 +Subject: [PATCH 240/267] mips-disable-highmem-on-rt.patch Signed-off-by: Thomas Gleixner --- arch/mips/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/arch/mips/Kconfig -=================================================================== ---- linux-3.2.orig/arch/mips/Kconfig -+++ linux-3.2/arch/mips/Kconfig +diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig +index d46f1da..9f02e8b 100644 +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig @@ -2040,7 +2040,7 @@ config CPU_R4400_WORKAROUNDS # config HIGHMEM @@ -20,3 +21,6 @@ Index: linux-3.2/arch/mips/Kconfig config CPU_SUPPORTS_HIGHMEM bool +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch b/debian/patches/features/all/rt/0241-net-Avoid-livelock-in-net_tx_action-on-RT.patch similarity index 89% rename from debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch rename to debian/patches/features/all/rt/0241-net-Avoid-livelock-in-net_tx_action-on-RT.patch index a556e428f..7c5e488c6 100644 --- a/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch +++ b/debian/patches/features/all/rt/0241-net-Avoid-livelock-in-net_tx_action-on-RT.patch @@ -1,6 +1,7 @@ -Subject: net: Avoid livelock in net_tx_action() on RT +From 4bb6ba21dff8a44363b012ed9cf7e881d52cb46d Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 06 Oct 2011 10:48:39 -0400 +Date: Thu, 6 Oct 2011 10:48:39 -0400 +Subject: [PATCH 241/267] net: Avoid livelock in net_tx_action() on RT qdisc_lock is taken w/o disabling interrupts or bottom halfs. So code holding a qdisc_lock() can be interrupted and softirqs can run on the @@ -37,15 +38,14 @@ Cc: Clark Williams Cc: John Kacur Cc: Luis Claudio R. Goncalves Signed-off-by: Thomas Gleixner - --- net/core/dev.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) -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 d030f8d..ae4fd5e 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -3044,6 +3044,36 @@ int netif_rx_ni(struct sk_buff *skb) } EXPORT_SYMBOL(netif_rx_ni); @@ -83,7 +83,7 @@ Index: linux-3.2/net/core/dev.c static void net_tx_action(struct softirq_action *h) { struct softnet_data *sd = &__get_cpu_var(softnet_data); -@@ -3082,7 +3112,7 @@ static void net_tx_action(struct softirq +@@ -3082,7 +3112,7 @@ static void net_tx_action(struct softirq_action *h) head = head->next_sched; root_lock = qdisc_lock(q); @@ -92,3 +92,6 @@ Index: linux-3.2/net/core/dev.c smp_mb__before_clear_bit(); clear_bit(__QDISC_STATE_SCHED, &q->state); +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/ping-sysrq.patch b/debian/patches/features/all/rt/0242-ping-sysrq.patch.patch similarity index 78% rename from debian/patches/features/all/rt/ping-sysrq.patch rename to debian/patches/features/all/rt/0242-ping-sysrq.patch.patch index b78f7905a..3d2b53206 100644 --- a/debian/patches/features/all/rt/ping-sysrq.patch +++ b/debian/patches/features/all/rt/0242-ping-sysrq.patch.patch @@ -1,6 +1,7 @@ -Subject: ping-sysrq.patch +From e5e0ee7e55d021e36709c7a92696668b28a67fef Mon Sep 17 00:00:00 2001 From: Carsten Emde Date: Tue, 19 Jul 2011 13:51:17 +0100 +Subject: [PATCH 242/267] ping-sysrq.patch There are (probably rare) situations when a system crashed and the system console becomes unresponsive but the network icmp layer still is alive. @@ -10,7 +11,6 @@ This patch provides this facility. Please consult the updated documentation Documentation/sysrq.txt for details. Signed-off-by: Carsten Emde - --- Documentation/sysrq.txt | 11 +++++++++-- include/net/netns/ipv4.h | 1 + @@ -18,11 +18,11 @@ Signed-off-by: Carsten Emde net/ipv4/sysctl_net_ipv4.c | 7 +++++++ 4 files changed, 47 insertions(+), 2 deletions(-) -Index: linux-3.2/Documentation/sysrq.txt -=================================================================== ---- linux-3.2.orig/Documentation/sysrq.txt -+++ linux-3.2/Documentation/sysrq.txt -@@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen ( +diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt +index 312e375..9981f30 100644 +--- a/Documentation/sysrq.txt ++++ b/Documentation/sysrq.txt +@@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen (or F13) - , On other - If you know of the key combos for other architectures, please let me know so I can add them to this section. @@ -42,10 +42,10 @@ Index: linux-3.2/Documentation/sysrq.txt * What are the 'command' keys? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'b' - Will immediately reboot the system without syncing or unmounting -Index: linux-3.2/include/net/netns/ipv4.h -=================================================================== ---- linux-3.2.orig/include/net/netns/ipv4.h -+++ linux-3.2/include/net/netns/ipv4.h +diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h +index d786b4f..8cef1d1 100644 +--- a/include/net/netns/ipv4.h ++++ b/include/net/netns/ipv4.h @@ -47,6 +47,7 @@ struct netns_ipv4 { int sysctl_icmp_echo_ignore_all; @@ -54,10 +54,10 @@ Index: linux-3.2/include/net/netns/ipv4.h int sysctl_icmp_ignore_bogus_error_responses; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; -Index: linux-3.2/net/ipv4/icmp.c -=================================================================== ---- linux-3.2.orig/net/ipv4/icmp.c -+++ linux-3.2/net/ipv4/icmp.c +diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c +index ab188ae..028eb47 100644 +--- a/net/ipv4/icmp.c ++++ b/net/ipv4/icmp.c @@ -67,6 +67,7 @@ #include #include @@ -97,7 +97,7 @@ Index: linux-3.2/net/ipv4/icmp.c * Handle ICMP_ECHO ("ping") requests. * * RFC 1122: 3.2.2.6 MUST have an echo server that answers ICMP echo -@@ -827,6 +852,11 @@ static void icmp_echo(struct sk_buff *sk +@@ -827,6 +852,11 @@ static void icmp_echo(struct sk_buff *skb) icmp_param.data_len = skb->len; icmp_param.head_len = sizeof(struct icmphdr); icmp_reply(&icmp_param, skb); @@ -109,11 +109,11 @@ Index: linux-3.2/net/ipv4/icmp.c } } -Index: linux-3.2/net/ipv4/sysctl_net_ipv4.c -=================================================================== ---- linux-3.2.orig/net/ipv4/sysctl_net_ipv4.c -+++ linux-3.2/net/ipv4/sysctl_net_ipv4.c -@@ -680,6 +680,13 @@ static struct ctl_table ipv4_net_table[] +diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c +index 69fd720..0ecdb72 100644 +--- a/net/ipv4/sysctl_net_ipv4.c ++++ b/net/ipv4/sysctl_net_ipv4.c +@@ -680,6 +680,13 @@ static struct ctl_table ipv4_net_table[] = { .proc_handler = proc_dointvec }, { @@ -127,3 +127,6 @@ Index: linux-3.2/net/ipv4/sysctl_net_ipv4.c .procname = "icmp_ignore_bogus_error_responses", .data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses, .maxlen = sizeof(int), +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/kgb-serial-hackaround.patch b/debian/patches/features/all/rt/0243-kgdb-serial-Short-term-workaround.patch similarity index 75% rename from debian/patches/features/all/rt/kgb-serial-hackaround.patch rename to debian/patches/features/all/rt/0243-kgdb-serial-Short-term-workaround.patch index f62e2c941..960c2af36 100644 --- a/debian/patches/features/all/rt/kgb-serial-hackaround.patch +++ b/debian/patches/features/all/rt/0243-kgdb-serial-Short-term-workaround.patch @@ -1,6 +1,7 @@ +From 888b45eebcdd0027b04d6d90da56c7cb9686010b Mon Sep 17 00:00:00 2001 From: Jason Wessel Date: Thu, 28 Jul 2011 12:42:23 -0500 -Subject: kgdb/serial: Short term workaround +Subject: [PATCH 243/267] kgdb/serial: Short term workaround On 07/27/2011 04:37 PM, Thomas Gleixner wrote: > - KGDB (not yet disabled) is reportedly unusable on -rt right now due @@ -16,17 +17,16 @@ change separation between the console and the HW to have a polled mode Thanks, Jason. - --- drivers/tty/serial/8250.c | 13 +++++++++---- include/linux/kdb.h | 2 ++ kernel/debug/kdb/kdb_io.c | 6 ++---- 3 files changed, 13 insertions(+), 8 deletions(-) -Index: linux-3.2/drivers/tty/serial/8250.c -=================================================================== ---- linux-3.2.orig/drivers/tty/serial/8250.c -+++ linux-3.2/drivers/tty/serial/8250.c +diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c +index 3bf482c..0596a35 100644 +--- a/drivers/tty/serial/8250.c ++++ b/drivers/tty/serial/8250.c @@ -38,6 +38,7 @@ #include #include @@ -35,7 +35,7 @@ Index: linux-3.2/drivers/tty/serial/8250.c #include #include -@@ -2855,10 +2856,14 @@ serial8250_console_write(struct console +@@ -2855,10 +2856,14 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) touch_nmi_watchdog(); @@ -54,11 +54,11 @@ Index: linux-3.2/drivers/tty/serial/8250.c /* * First save the IER then disable the interrupts -Index: linux-3.2/include/linux/kdb.h -=================================================================== ---- linux-3.2.orig/include/linux/kdb.h -+++ linux-3.2/include/linux/kdb.h -@@ -150,12 +150,14 @@ extern int kdb_register(char *, kdb_func +diff --git a/include/linux/kdb.h b/include/linux/kdb.h +index 0647258..0d1ebfc 100644 +--- a/include/linux/kdb.h ++++ b/include/linux/kdb.h +@@ -150,12 +150,14 @@ extern int kdb_register(char *, kdb_func_t, char *, char *, short); extern int kdb_register_repeat(char *, kdb_func_t, char *, char *, short, kdb_repeat_t); extern int kdb_unregister(char *); @@ -73,11 +73,11 @@ Index: linux-3.2/include/linux/kdb.h #endif /* CONFIG_KGDB_KDB */ enum { KDB_NOT_INITIALIZED, -Index: linux-3.2/kernel/debug/kdb/kdb_io.c -=================================================================== ---- linux-3.2.orig/kernel/debug/kdb/kdb_io.c -+++ linux-3.2/kernel/debug/kdb/kdb_io.c -@@ -553,7 +553,6 @@ int vkdb_printf(const char *fmt, va_list +diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c +index 4802eb5..5b7455f 100644 +--- a/kernel/debug/kdb/kdb_io.c ++++ b/kernel/debug/kdb/kdb_io.c +@@ -553,7 +553,6 @@ int vkdb_printf(const char *fmt, va_list ap) int diag; int linecount; int logging, saved_loglevel = 0; @@ -85,7 +85,7 @@ Index: linux-3.2/kernel/debug/kdb/kdb_io.c int got_printf_lock = 0; int retlen = 0; int fnd, len; -@@ -564,8 +563,6 @@ int vkdb_printf(const char *fmt, va_list +@@ -564,8 +563,6 @@ int vkdb_printf(const char *fmt, va_list ap) unsigned long uninitialized_var(flags); preempt_disable(); @@ -114,3 +114,6 @@ Index: linux-3.2/kernel/debug/kdb/kdb_io.c return r; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/sysfs-realtime-entry.patch b/debian/patches/features/all/rt/0244-add-sys-kernel-realtime-entry.patch similarity index 75% rename from debian/patches/features/all/rt/sysfs-realtime-entry.patch rename to debian/patches/features/all/rt/0244-add-sys-kernel-realtime-entry.patch index 40340186b..d8d8f8b1e 100644 --- a/debian/patches/features/all/rt/sysfs-realtime-entry.patch +++ b/debian/patches/features/all/rt/0244-add-sys-kernel-realtime-entry.patch @@ -1,6 +1,7 @@ -Subject: add /sys/kernel/realtime entry +From 2bd60b72e2c1fb5480fab987258ee21135a7c7b4 Mon Sep 17 00:00:00 2001 From: Clark Williams -Date: Sat Jul 30 21:55:53 2011 -0500 +Date: Sat, 30 Jul 2011 21:55:53 -0500 +Subject: [PATCH 244/267] add /sys/kernel/realtime entry Add a /sys/kernel entry to indicate that the kernel is a realtime kernel. @@ -17,10 +18,10 @@ Signed-off-by: Peter Zijlstra kernel/ksysfs.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -Index: linux-3.2/kernel/ksysfs.c -=================================================================== ---- linux-3.2.orig/kernel/ksysfs.c -+++ linux-3.2/kernel/ksysfs.c +diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c +index 4e316e1..a546d33 100644 +--- a/kernel/ksysfs.c ++++ b/kernel/ksysfs.c @@ -133,6 +133,15 @@ KERNEL_ATTR_RO(vmcoreinfo); #endif /* CONFIG_KEXEC */ @@ -37,7 +38,7 @@ Index: linux-3.2/kernel/ksysfs.c /* whether file capabilities are enabled */ static ssize_t fscaps_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) -@@ -182,6 +191,9 @@ static struct attribute * kernel_attrs[] +@@ -182,6 +191,9 @@ static struct attribute * kernel_attrs[] = { &kexec_crash_size_attr.attr, &vmcoreinfo_attr.attr, #endif @@ -47,3 +48,6 @@ Index: linux-3.2/kernel/ksysfs.c NULL }; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch b/debian/patches/features/all/rt/0245-mm-rt-kmap_atomic-scheduling.patch similarity index 79% rename from debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch rename to debian/patches/features/all/rt/0245-mm-rt-kmap_atomic-scheduling.patch index ecb772de6..bb96997fd 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch +++ b/debian/patches/features/all/rt/0245-mm-rt-kmap_atomic-scheduling.patch @@ -1,6 +1,7 @@ -Subject: mm, rt: kmap_atomic scheduling +From bb7b8e76b3eeee8acb7076b22bd09d90a750730e Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Thu, 28 Jul 2011 10:43:51 +0200 +Subject: [PATCH 245/267] mm, rt: kmap_atomic scheduling In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context @@ -20,10 +21,10 @@ Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins mm/memory.c | 2 ++ 3 files changed, 43 insertions(+) -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 ada175e3..20f1573 100644 +--- a/arch/x86/kernel/process_32.c ++++ b/arch/x86/kernel/process_32.c @@ -39,6 +39,7 @@ #include #include @@ -32,7 +33,7 @@ Index: linux-3.2/arch/x86/kernel/process_32.c #include #include -@@ -339,6 +340,41 @@ __switch_to(struct task_struct *prev_p, +@@ -339,6 +340,41 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT)) __switch_to_xtra(prev_p, next_p, tss); @@ -74,10 +75,10 @@ Index: linux-3.2/arch/x86/kernel/process_32.c /* * Leave lazy mode, flushing any hypercalls made here. * This must be done before restoring TLS segments so -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 a84a901..1f6b11a 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -63,6 +63,7 @@ struct sched_param { #include #include @@ -97,11 +98,11 @@ Index: linux-3.2/include/linux/sched.h }; #ifdef CONFIG_PREEMPT_RT_FULL -Index: linux-3.2/mm/memory.c -=================================================================== ---- linux-3.2.orig/mm/memory.c -+++ linux-3.2/mm/memory.c -@@ -3439,6 +3439,7 @@ unlock: +diff --git a/mm/memory.c b/mm/memory.c +index af0df1a..a3ae5e7 100644 +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -3447,6 +3447,7 @@ unlock: #ifdef CONFIG_PREEMPT_RT_FULL void pagefault_disable(void) { @@ -109,7 +110,7 @@ Index: linux-3.2/mm/memory.c current->pagefault_disabled++; /* * make sure to have issued the store before a pagefault -@@ -3456,6 +3457,7 @@ void pagefault_enable(void) +@@ -3464,6 +3465,7 @@ void pagefault_enable(void) */ barrier(); current->pagefault_disabled--; @@ -117,3 +118,6 @@ Index: linux-3.2/mm/memory.c } EXPORT_SYMBOL_GPL(pagefault_enable); #endif +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch b/debian/patches/features/all/rt/0246-ipc-sem-Rework-semaphore-wakeups.patch similarity index 74% rename from debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch rename to debian/patches/features/all/rt/0246-ipc-sem-Rework-semaphore-wakeups.patch index a22bf952b..4ffd210c0 100644 --- a/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch +++ b/debian/patches/features/all/rt/0246-ipc-sem-Rework-semaphore-wakeups.patch @@ -1,10 +1,7 @@ -Subject: ipc/sem: Rework semaphore wakeups -From: Peter Zijlstra -Date: Wed, 14 Sep 2011 11:57:04 +0200 - -Subject: ipc/sem: Rework semaphore wakeups +From 80ce0fb657b9f51f428417cb7e955d69235fa708 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Tue Sep 13 15:09:40 CEST 2011 +Date: Tue, 13 Sep 2011 15:09:40 +0200 +Subject: [PATCH 246/267] ipc/sem: Rework semaphore wakeups Current sysv sems have a weird ass wakeup scheme that involves keeping preemption disabled over a potential O(n^2) loop and busy waiting on @@ -31,10 +28,10 @@ Signed-off-by: Thomas Gleixner ipc/sem.c | 10 ++++++++++ 1 file changed, 10 insertions(+) -Index: linux-3.2/ipc/sem.c -=================================================================== ---- linux-3.2.orig/ipc/sem.c -+++ linux-3.2/ipc/sem.c +diff --git a/ipc/sem.c b/ipc/sem.c +index 5215a81..5eaf684 100644 +--- a/ipc/sem.c ++++ b/ipc/sem.c @@ -461,6 +461,13 @@ undo: static void wake_up_sem_queue_prepare(struct list_head *pt, struct sem_queue *q, int error) @@ -49,7 +46,7 @@ Index: linux-3.2/ipc/sem.c if (list_empty(pt)) { /* * Hold preempt off so that we don't get preempted and have the -@@ -472,6 +479,7 @@ static void wake_up_sem_queue_prepare(st +@@ -472,6 +479,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt, q->pid = error; list_add_tail(&q->simple_list, pt); @@ -57,7 +54,7 @@ Index: linux-3.2/ipc/sem.c } /** -@@ -485,6 +493,7 @@ static void wake_up_sem_queue_prepare(st +@@ -485,6 +493,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt, */ static void wake_up_sem_queue_do(struct list_head *pt) { @@ -65,7 +62,7 @@ Index: linux-3.2/ipc/sem.c struct sem_queue *q, *t; int did_something; -@@ -497,6 +506,7 @@ static void wake_up_sem_queue_do(struct +@@ -497,6 +506,7 @@ static void wake_up_sem_queue_do(struct list_head *pt) } if (did_something) preempt_enable(); @@ -73,3 +70,6 @@ Index: linux-3.2/ipc/sem.c } static void unlink_queue(struct sem_array *sma, struct sem_queue *q) +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch b/debian/patches/features/all/rt/0247-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch similarity index 76% rename from debian/patches/features/all/rt/preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch rename to debian/patches/features/all/rt/0247-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch index 5d6222f32..c3dcbc846 100644 --- a/debian/patches/features/all/rt/preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch +++ b/debian/patches/features/all/rt/0247-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch @@ -1,6 +1,8 @@ -Subject: sysrq: Allow immediate Magic SysRq output for PREEMPT_RT_FULL +From 5f911928368b0d9b62da0df476c458037b4f7da4 Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Fri, 23 Sep 2011 13:43:12 -0700 +Subject: [PATCH 247/267] sysrq: Allow immediate Magic SysRq output for + PREEMPT_RT_FULL Add a CONFIG option to allow the output from Magic SysRq to be output immediately, even if this causes large latencies. @@ -29,11 +31,11 @@ Signed-off-by: Thomas Gleixner lib/Kconfig.debug | 22 ++++++++++++++++++++++ 5 files changed, 54 insertions(+), 3 deletions(-) -Index: linux-3.2/drivers/tty/serial/cpm_uart/cpm_uart_core.c -=================================================================== ---- linux-3.2.orig/drivers/tty/serial/cpm_uart/cpm_uart_core.c -+++ linux-3.2/drivers/tty/serial/cpm_uart/cpm_uart_core.c -@@ -1226,7 +1226,7 @@ static void cpm_uart_console_write(struc +diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_core.c b/drivers/tty/serial/cpm_uart/cpm_uart_core.c +index b418947..a8b0559 100644 +--- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c ++++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c +@@ -1226,7 +1226,7 @@ static void cpm_uart_console_write(struct console *co, const char *s, { struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index]; unsigned long flags; @@ -42,11 +44,11 @@ Index: linux-3.2/drivers/tty/serial/cpm_uart/cpm_uart_core.c if (unlikely(nolock)) { local_irq_save(flags); -Index: linux-3.2/drivers/tty/sysrq.c -=================================================================== ---- linux-3.2.orig/drivers/tty/sysrq.c -+++ linux-3.2/drivers/tty/sysrq.c -@@ -492,6 +492,23 @@ static void __sysrq_put_key_op(int key, +diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c +index 43db715..5219738 100644 +--- a/drivers/tty/sysrq.c ++++ b/drivers/tty/sysrq.c +@@ -492,6 +492,23 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p) sysrq_key_table[i] = op_p; } @@ -70,7 +72,7 @@ Index: linux-3.2/drivers/tty/sysrq.c void __handle_sysrq(int key, bool check_mask) { struct sysrq_key_op *op_p; -@@ -500,6 +517,9 @@ void __handle_sysrq(int key, bool check_ +@@ -500,6 +517,9 @@ void __handle_sysrq(int key, bool check_mask) unsigned long flags; spin_lock_irqsave(&sysrq_key_table_lock, flags); @@ -80,7 +82,7 @@ Index: linux-3.2/drivers/tty/sysrq.c /* * Raise the apparent loglevel to maximum so that the sysrq header * is shown to provide the user with positive feedback. We do not -@@ -541,6 +561,9 @@ void __handle_sysrq(int key, bool check_ +@@ -541,6 +561,9 @@ void __handle_sysrq(int key, bool check_mask) printk("\n"); console_loglevel = orig_log_level; } @@ -90,10 +92,10 @@ Index: linux-3.2/drivers/tty/sysrq.c spin_unlock_irqrestore(&sysrq_key_table_lock, flags); } -Index: linux-3.2/include/linux/sysrq.h -=================================================================== ---- linux-3.2.orig/include/linux/sysrq.h -+++ linux-3.2/include/linux/sysrq.h +diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h +index 7faf933..d224c0b 100644 +--- a/include/linux/sysrq.h ++++ b/include/linux/sysrq.h @@ -38,6 +38,11 @@ struct sysrq_key_op { int enable_mask; }; @@ -106,10 +108,10 @@ Index: linux-3.2/include/linux/sysrq.h #ifdef CONFIG_MAGIC_SYSRQ /* Generic SysRq interface -- you may call it from any device driver, supplying -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 13ea6a9..9eabbbb 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -21,6 +21,7 @@ #include #include @@ -118,7 +120,7 @@ Index: linux-3.2/kernel/printk.c #include #include #include -@@ -834,8 +835,8 @@ static int console_trylock_for_printk(un +@@ -834,8 +835,8 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags) { int retval = 0, wake = 0; #ifdef CONFIG_PREEMPT_RT_FULL @@ -129,10 +131,10 @@ Index: linux-3.2/kernel/printk.c #else int lock = 1; #endif -Index: linux-3.2/lib/Kconfig.debug -=================================================================== ---- linux-3.2.orig/lib/Kconfig.debug -+++ linux-3.2/lib/Kconfig.debug +diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug +index c347db3..13a937b 100644 +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug @@ -62,6 +62,28 @@ config MAGIC_SYSRQ Specifies the default mask for the allowed SysRq keys. This can be used to disable several sensitive keys by default. @@ -162,3 +164,6 @@ Index: linux-3.2/lib/Kconfig.debug config STRIP_ASM_SYMS bool "Strip assembler-generated symbols during link" default n +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch b/debian/patches/features/all/rt/0248-x86-kvm-require-const-tsc-for-rt.patch.patch similarity index 52% rename from debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch rename to debian/patches/features/all/rt/0248-x86-kvm-require-const-tsc-for-rt.patch.patch index 9356ec750..78d7de0b9 100644 --- a/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch +++ b/debian/patches/features/all/rt/0248-x86-kvm-require-const-tsc-for-rt.patch.patch @@ -1,17 +1,18 @@ -Subject: x86-kvm-require-const-tsc-for-rt.patch +From 1249880f851c9cb6f7bbae1f635f216aa0f98da3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 06 Nov 2011 12:26:18 +0100 +Date: Sun, 6 Nov 2011 12:26:18 +0100 +Subject: [PATCH 248/267] x86-kvm-require-const-tsc-for-rt.patch Signed-off-by: Thomas Gleixner --- arch/x86/kvm/x86.c | 7 +++++++ 1 file changed, 7 insertions(+) -Index: linux-3.2/arch/x86/kvm/x86.c -=================================================================== ---- linux-3.2.orig/arch/x86/kvm/x86.c -+++ linux-3.2/arch/x86/kvm/x86.c -@@ -5184,6 +5184,13 @@ int kvm_arch_init(void *opaque) +diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c +index e04cae1..66d2844 100644 +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -5207,6 +5207,13 @@ int kvm_arch_init(void *opaque) goto out; } @@ -25,3 +26,6 @@ Index: linux-3.2/arch/x86/kvm/x86.c r = kvm_mmu_module_init(); if (r) goto out; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch b/debian/patches/features/all/rt/0249-scsi-fcoe-rt-aware.patch.patch similarity index 68% rename from debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch rename to debian/patches/features/all/rt/0249-scsi-fcoe-rt-aware.patch.patch index 8d9eee6d4..39350736f 100644 --- a/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch +++ b/debian/patches/features/all/rt/0249-scsi-fcoe-rt-aware.patch.patch @@ -1,6 +1,7 @@ -Subject: scsi-fcoe-rt-aware.patch +From 9ced647b18ba69e9d435dfe720a7babb03da4707 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 12 Nov 2011 14:00:48 +0100 +Subject: [PATCH 249/267] scsi-fcoe-rt-aware.patch Signed-off-by: Thomas Gleixner --- @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner drivers/scsi/libfc/fc_exch.c | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) -Index: linux-3.2/drivers/scsi/fcoe/fcoe.c -=================================================================== ---- linux-3.2.orig/drivers/scsi/fcoe/fcoe.c -+++ linux-3.2/drivers/scsi/fcoe/fcoe.c -@@ -1156,7 +1156,7 @@ static void fcoe_percpu_thread_destroy(u +diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c +index 8d67467..4085187 100644 +--- a/drivers/scsi/fcoe/fcoe.c ++++ b/drivers/scsi/fcoe/fcoe.c +@@ -1156,7 +1156,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu) struct sk_buff *skb; #ifdef CONFIG_SMP struct fcoe_percpu_s *p0; @@ -22,7 +23,7 @@ Index: linux-3.2/drivers/scsi/fcoe/fcoe.c #endif /* CONFIG_SMP */ FCOE_DBG("Destroying receive thread for CPU %d\n", cpu); -@@ -1212,7 +1212,7 @@ static void fcoe_percpu_thread_destroy(u +@@ -1212,7 +1212,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu) kfree_skb(skb); spin_unlock_bh(&p->fcoe_rx_list.lock); } @@ -46,7 +47,7 @@ Index: linux-3.2/drivers/scsi/fcoe/fcoe.c return rc; } -@@ -1680,7 +1680,7 @@ static void fcoe_recv_frame(struct sk_bu +@@ -1680,7 +1680,7 @@ static void fcoe_recv_frame(struct sk_buff *skb) */ hp = (struct fcoe_hdr *) skb_network_header(skb); @@ -55,7 +56,7 @@ Index: linux-3.2/drivers/scsi/fcoe/fcoe.c if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) { if (stats->ErrorFrames < 5) printk(KERN_WARNING "fcoe: FCoE version " -@@ -1712,13 +1712,13 @@ static void fcoe_recv_frame(struct sk_bu +@@ -1712,13 +1712,13 @@ static void fcoe_recv_frame(struct sk_buff *skb) goto drop; if (!fcoe_filter_frames(lport, fp)) { @@ -71,11 +72,11 @@ Index: linux-3.2/drivers/scsi/fcoe/fcoe.c kfree_skb(skb); } -Index: linux-3.2/drivers/scsi/fcoe/fcoe_ctlr.c -=================================================================== ---- linux-3.2.orig/drivers/scsi/fcoe/fcoe_ctlr.c -+++ linux-3.2/drivers/scsi/fcoe/fcoe_ctlr.c -@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs( +diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c +index e7522dc..bfb83c0 100644 +--- a/drivers/scsi/fcoe/fcoe_ctlr.c ++++ b/drivers/scsi/fcoe/fcoe_ctlr.c +@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) unsigned long sel_time = 0; struct fcoe_dev_stats *stats; @@ -84,7 +85,7 @@ Index: linux-3.2/drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2; -@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs( +@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) sel_time = fcf->time; } } @@ -93,11 +94,11 @@ Index: linux-3.2/drivers/scsi/fcoe/fcoe_ctlr.c if (sel_time && !fip->sel_fcf && !fip->sel_time) { sel_time += msecs_to_jiffies(FCOE_CTLR_START_DELAY); fip->sel_time = sel_time; -Index: linux-3.2/drivers/scsi/libfc/fc_exch.c -=================================================================== ---- linux-3.2.orig/drivers/scsi/libfc/fc_exch.c -+++ linux-3.2/drivers/scsi/libfc/fc_exch.c -@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc( +diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c +index 9de9db2..340998f 100644 +--- a/drivers/scsi/libfc/fc_exch.c ++++ b/drivers/scsi/libfc/fc_exch.c +@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport, } memset(ep, 0, sizeof(*ep)); @@ -110,3 +111,6 @@ Index: linux-3.2/drivers/scsi/libfc/fc_exch.c /* peek cache of free slot */ if (pool->left != FC_XID_UNKNOWN) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch b/debian/patches/features/all/rt/0250-x86-crypto-Reduce-preempt-disabled-regions.patch similarity index 80% rename from debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch rename to debian/patches/features/all/rt/0250-x86-crypto-Reduce-preempt-disabled-regions.patch index 0c67e8522..c486a2297 100644 --- a/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch +++ b/debian/patches/features/all/rt/0250-x86-crypto-Reduce-preempt-disabled-regions.patch @@ -1,6 +1,7 @@ -Subject: x86: crypto: Reduce preempt disabled regions +From 0dbae7f8fb5a34f08bbce689af3cdec8bc8f4250 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Mon, 14 Nov 2011 18:19:27 +0100 +Subject: [PATCH 250/267] x86: crypto: Reduce preempt disabled regions Restrict the preempt disabled regions to the actual floating point operations and enable preemption for the administrative actions. @@ -16,11 +17,11 @@ Signed-off-by: Thomas Gleixner arch/x86/crypto/aesni-intel_glue.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) -Index: linux-3.2/arch/x86/crypto/aesni-intel_glue.c -=================================================================== ---- linux-3.2.orig/arch/x86/crypto/aesni-intel_glue.c -+++ linux-3.2/arch/x86/crypto/aesni-intel_glue.c -@@ -289,14 +289,14 @@ static int ecb_encrypt(struct blkcipher_ +diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c +index 545d0ce..0c9eaf1 100644 +--- a/arch/x86/crypto/aesni-intel_glue.c ++++ b/arch/x86/crypto/aesni-intel_glue.c +@@ -289,14 +289,14 @@ static int ecb_encrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -38,7 +39,7 @@ Index: linux-3.2/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -313,14 +313,14 @@ static int ecb_decrypt(struct blkcipher_ +@@ -313,14 +313,14 @@ static int ecb_decrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -55,7 +56,7 @@ Index: linux-3.2/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -359,14 +359,14 @@ static int cbc_encrypt(struct blkcipher_ +@@ -359,14 +359,14 @@ static int cbc_encrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -72,7 +73,7 @@ Index: linux-3.2/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -383,14 +383,14 @@ static int cbc_decrypt(struct blkcipher_ +@@ -383,14 +383,14 @@ static int cbc_decrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -89,7 +90,7 @@ Index: linux-3.2/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -445,18 +445,20 @@ static int ctr_crypt(struct blkcipher_de +@@ -445,18 +445,20 @@ static int ctr_crypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt_block(desc, &walk, AES_BLOCK_SIZE); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -112,3 +113,6 @@ Index: linux-3.2/arch/x86/crypto/aesni-intel_glue.c return err; } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/dm-make-rt-aware.patch b/debian/patches/features/all/rt/0251-dm-Make-rt-aware.patch similarity index 76% rename from debian/patches/features/all/rt/dm-make-rt-aware.patch rename to debian/patches/features/all/rt/0251-dm-Make-rt-aware.patch index 9b2d0f275..e0a2d0dcb 100644 --- a/debian/patches/features/all/rt/dm-make-rt-aware.patch +++ b/debian/patches/features/all/rt/0251-dm-Make-rt-aware.patch @@ -1,6 +1,7 @@ -Subject: dm: Make rt aware +From 7c5e9c5bb3dbe26f8ecc18020a36ed55e99c6a25 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 14 Nov 2011 23:06:09 +0100 +Subject: [PATCH 251/267] dm: Make rt aware Use the BUG_ON_NORT variant for the irq_disabled() checks. RT has interrupts legitimately enabled here as we cant deadlock against the @@ -13,11 +14,11 @@ Signed-off-by: Thomas Gleixner drivers/md/dm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.2/drivers/md/dm.c -=================================================================== ---- linux-3.2.orig/drivers/md/dm.c -+++ linux-3.2/drivers/md/dm.c -@@ -1648,14 +1648,14 @@ static void dm_request_fn(struct request +diff --git a/drivers/md/dm.c b/drivers/md/dm.c +index 4720f68..b1eff42 100644 +--- a/drivers/md/dm.c ++++ b/drivers/md/dm.c +@@ -1648,14 +1648,14 @@ static void dm_request_fn(struct request_queue *q) if (map_request(ti, clone, md)) goto requeued; @@ -34,3 +35,6 @@ Index: linux-3.2/drivers/md/dm.c spin_lock(q->queue_lock); delay_and_out: +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch b/debian/patches/features/all/rt/0252-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch similarity index 72% rename from debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch rename to debian/patches/features/all/rt/0252-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch index 5ba57de55..8804ef813 100644 --- a/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch +++ b/debian/patches/features/all/rt/0252-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch @@ -1,6 +1,7 @@ -Subject: cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT +From 113ec250cd47567fa333e584f5a210780df47ac7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 14 Dec 2011 01:03:49 +0100 +Subject: [PATCH 252/267] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT We can't deal with the cpumask allocations which happen in atomic context (see arch/x86/kernel/apic/io_apic.c) on RT right now. @@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner lib/Kconfig | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.2/arch/x86/Kconfig -=================================================================== ---- linux-3.2.orig/arch/x86/Kconfig -+++ linux-3.2/arch/x86/Kconfig +diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig +index e084a73..c42146e 100644 +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig @@ -730,7 +730,7 @@ config IOMMU_HELPER config MAXSMP bool "Enable Maximum number of SMP Processors and NUMA Nodes" @@ -24,10 +25,10 @@ Index: linux-3.2/arch/x86/Kconfig ---help--- Enable maximum number of CPUS and NUMA Nodes for this architecture. If unsure, say N. -Index: linux-3.2/lib/Kconfig -=================================================================== ---- linux-3.2.orig/lib/Kconfig -+++ linux-3.2/lib/Kconfig +diff --git a/lib/Kconfig b/lib/Kconfig +index 32f3e5a..63d81e8 100644 +--- a/lib/Kconfig ++++ b/lib/Kconfig @@ -231,6 +231,7 @@ config CHECK_SIGNATURE config CPUMASK_OFFSTACK @@ -36,3 +37,6 @@ Index: linux-3.2/lib/Kconfig help Use dynamic allocation for cpumask_var_t, instead of putting them on the stack. This is a bit more expensive, but avoids +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch b/debian/patches/features/all/rt/0253-seqlock-Prevent-rt-starvation.patch similarity index 81% rename from debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch rename to debian/patches/features/all/rt/0253-seqlock-Prevent-rt-starvation.patch index bc7346b4e..0eca3550e 100644 --- a/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch +++ b/debian/patches/features/all/rt/0253-seqlock-Prevent-rt-starvation.patch @@ -1,6 +1,7 @@ -Subject: seqlock: Prevent rt starvation +From 4d679adbfa52d738a7e72a71c5b63582c55fb487 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 22 Feb 2012 12:03:30 +0100 +Subject: [PATCH 253/267] seqlock: Prevent rt starvation If a low prio writer gets preempted while holding the seqlock write locked, a high prio reader spins forever on RT. @@ -15,17 +16,16 @@ possible. Signed-off-by: Thomas Gleixner Cc: stable-rt@vger.kernel.org - --- - include/linux/seqlock.h | 55 +++++++++++++++++++++++++++++++++++++++--------- - include/net/neighbour.h | 2 - + include/linux/seqlock.h | 55 ++++++++++++++++++++++++++++++++++++++--------- + include/net/neighbour.h | 2 +- 2 files changed, 46 insertions(+), 11 deletions(-) -Index: linux-3.2/include/linux/seqlock.h -=================================================================== ---- linux-3.2.orig/include/linux/seqlock.h -+++ linux-3.2/include/linux/seqlock.h -@@ -125,18 +125,30 @@ static inline int read_seqcount_retry(co +diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h +index 3e1f3f9..a1dbf48 100644 +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h +@@ -125,18 +125,30 @@ static inline int read_seqcount_retry(const seqcount_t *s, unsigned start) * Sequence counter only version assumes that callers are using their * own mutexing. */ @@ -92,7 +92,7 @@ Index: linux-3.2/include/linux/seqlock.h static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start) { -@@ -195,36 +230,36 @@ static inline unsigned read_seqretry(con +@@ -195,36 +230,36 @@ static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start) static inline void write_seqlock(seqlock_t *sl) { spin_lock(&sl->lock); @@ -135,7 +135,7 @@ Index: linux-3.2/include/linux/seqlock.h spin_unlock_irq(&sl->lock); } -@@ -233,7 +268,7 @@ static inline unsigned long __write_seql +@@ -233,7 +268,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl) unsigned long flags; spin_lock_irqsave(&sl->lock, flags); @@ -144,7 +144,7 @@ Index: linux-3.2/include/linux/seqlock.h return flags; } -@@ -243,7 +278,7 @@ static inline unsigned long __write_seql +@@ -243,7 +278,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl) static inline void write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) { @@ -153,10 +153,10 @@ Index: linux-3.2/include/linux/seqlock.h spin_unlock_irqrestore(&sl->lock, flags); } -Index: linux-3.2/include/net/neighbour.h -=================================================================== ---- linux-3.2.orig/include/net/neighbour.h -+++ linux-3.2/include/net/neighbour.h +diff --git a/include/net/neighbour.h b/include/net/neighbour.h +index 2720884..6fda9fa 100644 +--- a/include/net/neighbour.h ++++ b/include/net/neighbour.h @@ -385,7 +385,7 @@ struct neighbour_cb { #define NEIGH_CB(skb) ((struct neighbour_cb *)(skb)->cb) @@ -166,3 +166,6 @@ Index: linux-3.2/include/net/neighbour.h const struct net_device *dev) { unsigned int seq; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch b/debian/patches/features/all/rt/0254-timer-Fix-hotplug-for-rt.patch similarity index 83% rename from debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch rename to debian/patches/features/all/rt/0254-timer-Fix-hotplug-for-rt.patch index 9c4ad00c0..face9847d 100644 --- a/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch +++ b/debian/patches/features/all/rt/0254-timer-Fix-hotplug-for-rt.patch @@ -1,6 +1,7 @@ -Subject: timer: Fix hotplug for -rt +From 2ae873bfcfbc86cb8b793586df8da0cd1cdd1a35 Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:28 -0500 +Date: Thu, 1 Mar 2012 13:55:28 -0500 +Subject: [PATCH 254/267] timer: Fix hotplug for -rt Revert the RT patch: Author: Ingo Molnar @@ -28,11 +29,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) -Index: linux-3.2/kernel/timer.c -=================================================================== ---- linux-3.2.orig/kernel/timer.c -+++ linux-3.2/kernel/timer.c -@@ -1743,21 +1743,17 @@ static void __cpuinit migrate_timers(int +diff --git a/kernel/timer.c b/kernel/timer.c +index a791a43..c8c88d1 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1743,21 +1743,17 @@ static void __cpuinit migrate_timers(int cpu) { struct tvec_base *old_base; struct tvec_base *new_base; @@ -57,7 +58,7 @@ Index: linux-3.2/kernel/timer.c BUG_ON(old_base->running_timer); -@@ -1771,10 +1767,8 @@ static void __cpuinit migrate_timers(int +@@ -1771,10 +1767,8 @@ static void __cpuinit migrate_timers(int cpu) } spin_unlock(&old_base->lock); @@ -70,3 +71,6 @@ Index: linux-3.2/kernel/timer.c } #endif /* CONFIG_HOTPLUG_CPU */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch b/debian/patches/features/all/rt/0255-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch similarity index 78% rename from debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch rename to debian/patches/features/all/rt/0255-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch index aa118e41b..888d10667 100644 --- a/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch +++ b/debian/patches/features/all/rt/0255-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch @@ -1,6 +1,8 @@ -Subject: futex/rt: Fix possible lockup when taking pi_lock in proxy handler +From f59381eae9ea03fc0021f571ebaec6c6a8f8c38c Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:29 -0500 +Date: Thu, 1 Mar 2012 13:55:29 -0500 +Subject: [PATCH 255/267] futex/rt: Fix possible lockup when taking pi_lock in + proxy handler When taking the pi_lock, we must disable interrupts because the pi_lock can also be taken in an interrupt handler. @@ -17,7 +19,7 @@ Link: http://lkml.kernel.org/r/20120301190345.165160680@goodmis.org Signed-off-by: Thomas Gleixner --- kernel/rtmutex.c | 6 +++--- - 1 files changed, 3 insertions(+), 3 deletions(-) + 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c index 9850dc0..b525158 100644 @@ -42,12 +44,5 @@ index 9850dc0..b525158 100644 ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock); -- -1.7.3.4 - - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - +1.7.10 diff --git a/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch b/debian/patches/features/all/rt/0256-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch similarity index 70% rename from debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch rename to debian/patches/features/all/rt/0256-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch index 35f2d3d98..1e0bb1299 100644 --- a/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch +++ b/debian/patches/features/all/rt/0256-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch @@ -1,6 +1,8 @@ -Subject: ring-buffer/rt: Check for irqs disabled before grabbing reader lock +From 3a841b921ab0fba99f19c80899ddd30ca3e4c698 Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:32 -0500 +Date: Thu, 1 Mar 2012 13:55:32 -0500 +Subject: [PATCH 256/267] ring-buffer/rt: Check for irqs disabled before + grabbing reader lock In RT the reader lock is a mutex and we can not grab it when preemption is disabled. The in_atomic() check that is there does not check if irqs are @@ -18,10 +20,10 @@ Signed-off-by: Thomas Gleixner kernel/trace/ring_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.2/kernel/trace/ring_buffer.c -=================================================================== ---- linux-3.2.orig/kernel/trace/ring_buffer.c -+++ linux-3.2/kernel/trace/ring_buffer.c +diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c +index 354017f..c060f04 100644 +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c @@ -1054,7 +1054,7 @@ static inline int ok_to_lock(void) if (in_nmi()) return 0; @@ -31,3 +33,6 @@ Index: linux-3.2/kernel/trace/ring_buffer.c return 0; #endif return 1; +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch b/debian/patches/features/all/rt/0257-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch similarity index 82% rename from debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch rename to debian/patches/features/all/rt/0257-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch index b1fc33337..b20ac35cf 100644 --- a/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch +++ b/debian/patches/features/all/rt/0257-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch @@ -1,6 +1,8 @@ -Subject: sched/rt: Fix wait_task_interactive() to test rt_spin_lock state +From 15c45a54d63ba235de26bae3edc875bbe462b6fd Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:33 -0500 +Date: Thu, 1 Mar 2012 13:55:33 -0500 +Subject: [PATCH 257/267] sched/rt: Fix wait_task_interactive() to test + rt_spin_lock state The wait_task_interactive() will have a task sleep waiting for another task to have a certain state. But it ignores the rt_spin_locks state @@ -20,7 +22,7 @@ Link: http://lkml.kernel.org/r/20120301190345.979435764@goodmis.org Signed-off-by: Thomas Gleixner --- kernel/sched.c | 6 ++++-- - 1 files changed, 4 insertions(+), 2 deletions(-) + 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/sched.c b/kernel/sched.c index 81b340d..1cc706d 100644 @@ -47,12 +49,5 @@ index 81b340d..1cc706d 100644 task_rq_unlock(rq, p, &flags); -- -1.7.3.4 - - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - +1.7.10 diff --git a/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch b/debian/patches/features/all/rt/0258-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch similarity index 91% rename from debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch rename to debian/patches/features/all/rt/0258-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch index a94f86771..804ca667e 100644 --- a/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch +++ b/debian/patches/features/all/rt/0258-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch @@ -1,6 +1,7 @@ -Subject: lglock/rt: Use non-rt for_each_cpu() in -rt code +From 4ae26b38227b37f961750c930447068b0b1d2c37 Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:30 -0500 +Date: Thu, 1 Mar 2012 13:55:30 -0500 +Subject: [PATCH 258/267] lglock/rt: Use non-rt for_each_cpu() in -rt code Currently the RT version of the lglocks() does a for_each_online_cpu() in the name##_global_lock_online() functions. Non-rt uses its own @@ -31,7 +32,7 @@ Link: http://lkml.kernel.org/r/20120301190345.374756214@goodmis.org Signed-off-by: Thomas Gleixner --- include/linux/lglock.h | 35 ++++++++++++++++++++++++++++++++--- - 1 files changed, 32 insertions(+), 3 deletions(-) + 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/include/linux/lglock.h b/include/linux/lglock.h index 52b289f..cdfcef3 100644 @@ -107,12 +108,5 @@ index 52b289f..cdfcef3 100644 EXPORT_SYMBOL(name##_global_unlock_online); \ \ -- -1.7.3.4 - - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - +1.7.10 diff --git a/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch b/debian/patches/features/all/rt/0259-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch similarity index 91% rename from debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch rename to debian/patches/features/all/rt/0259-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch index 4fde26846..43fd5fa4e 100644 --- a/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch +++ b/debian/patches/features/all/rt/0259-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch @@ -1,6 +1,7 @@ -Subject: cpu: Make hotplug.lock a "sleeping" spinlock on RT +From 7414f6f107d40967dc5fe7339f11c70ce57e8b74 Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Fri, 02 Mar 2012 10:36:57 -0500 +Date: Fri, 2 Mar 2012 10:36:57 -0500 +Subject: [PATCH 259/267] cpu: Make hotplug.lock a "sleeping" spinlock on RT Tasks can block on hotplug.lock in pin_current_cpu(), but their state might be != RUNNING. So the mutex wakeup will set the state @@ -22,10 +23,10 @@ Signed-off-by: Thomas Gleixner 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 +diff --git a/kernel/cpu.c b/kernel/cpu.c +index fa40834..66dfb74 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -46,7 +46,12 @@ static int cpu_hotplug_disabled; static struct { @@ -121,3 +122,6 @@ Index: linux-3.2/kernel/cpu.c } #else /* #if CONFIG_HOTPLUG_CPU */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/softirq-preempt-fix-3-re.txt b/debian/patches/features/all/rt/0260-softirq-Check-preemption-after-reenabling-interrupts.patch similarity index 69% rename from debian/patches/features/all/rt/softirq-preempt-fix-3-re.txt rename to debian/patches/features/all/rt/0260-softirq-Check-preemption-after-reenabling-interrupts.patch index e10cffec3..a1c9015ec 100644 --- a/debian/patches/features/all/rt/softirq-preempt-fix-3-re.txt +++ b/debian/patches/features/all/rt/0260-softirq-Check-preemption-after-reenabling-interrupts.patch @@ -1,6 +1,8 @@ -Subject: softirq: Check preemption after reenabling interrupts +From a583b75cab964e833c5031f86eb95d3caed27398 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 13 Nov 2011 17:17:09 +0100 (CET) +Date: Sun, 13 Nov 2011 17:17:09 +0100 +Subject: [PATCH 260/267] softirq: Check preemption after reenabling + interrupts raise_softirq_irqoff() disables interrupts and wakes the softirq daemon, but after reenabling interrupts there is no preemption check, @@ -20,11 +22,11 @@ Cc: stable-rt@vger.kernel.org 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 +diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c +index 58916af..f7ca9b4 100644 +--- a/block/blk-iopoll.c ++++ b/block/blk-iopoll.c +@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll *iop) list_add_tail(&iop->list, &__get_cpu_var(blk_cpu_iopoll)); __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); local_irq_restore(flags); @@ -32,7 +34,7 @@ Index: linux-3.2/block/blk-iopoll.c } EXPORT_SYMBOL(blk_iopoll_sched); -@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct so +@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct softirq_action *h) __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); local_irq_enable(); @@ -40,7 +42,7 @@ Index: linux-3.2/block/blk-iopoll.c } /** -@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_noti +@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_notify(struct notifier_block *self, &__get_cpu_var(blk_cpu_iopoll)); __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); local_irq_enable(); @@ -48,10 +50,10 @@ Index: linux-3.2/block/blk-iopoll.c } 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 +diff --git a/block/blk-softirq.c b/block/blk-softirq.c +index 1366a89..60a88ab 100644 +--- a/block/blk-softirq.c ++++ b/block/blk-softirq.c @@ -50,6 +50,7 @@ static void trigger_softirq(void *data) raise_softirq_irqoff(BLOCK_SOFTIRQ); @@ -60,7 +62,7 @@ Index: linux-3.2/block/blk-softirq.c } /* -@@ -92,6 +93,7 @@ static int __cpuinit blk_cpu_notify(stru +@@ -92,6 +93,7 @@ static int __cpuinit blk_cpu_notify(struct notifier_block *self, &__get_cpu_var(blk_cpu_done)); raise_softirq_irqoff(BLOCK_SOFTIRQ); local_irq_enable(); @@ -76,10 +78,10 @@ Index: linux-3.2/block/blk-softirq.c } /** -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 6450c01..58d8982 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -56,8 +56,10 @@ do { \ #ifndef CONFIG_PREEMPT_RT_BASE @@ -99,11 +101,11 @@ Index: linux-3.2/include/linux/preempt.h #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 +diff --git a/net/core/dev.c b/net/core/dev.c +index ae4fd5e..3756e96 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -1779,6 +1779,7 @@ static inline void __netif_reschedule(struct Qdisc *q) sd->output_queue_tailp = &q->next_sched; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -111,7 +113,7 @@ Index: linux-3.2/net/core/dev.c } void __netif_schedule(struct Qdisc *q) -@@ -1800,6 +1801,7 @@ void dev_kfree_skb_irq(struct sk_buff *s +@@ -1800,6 +1801,7 @@ void dev_kfree_skb_irq(struct sk_buff *skb) sd->completion_queue = skb; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -127,7 +129,7 @@ Index: linux-3.2/net/core/dev.c atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -3789,6 +3792,7 @@ static void net_rps_action_and_irq_enabl +@@ -3790,6 +3793,7 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) } else #endif local_irq_enable(); @@ -135,7 +137,7 @@ Index: linux-3.2/net/core/dev.c } static int process_backlog(struct napi_struct *napi, int quota) -@@ -3861,6 +3865,7 @@ void __napi_schedule(struct napi_struct +@@ -3862,6 +3866,7 @@ void __napi_schedule(struct napi_struct *n) local_irq_save(flags); ____napi_schedule(&__get_cpu_var(softnet_data), n); local_irq_restore(flags); @@ -143,7 +145,7 @@ Index: linux-3.2/net/core/dev.c } EXPORT_SYMBOL(__napi_schedule); -@@ -6401,6 +6406,7 @@ static int dev_cpu_callback(struct notif +@@ -6402,6 +6407,7 @@ static int dev_cpu_callback(struct notifier_block *nfb, raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); @@ -151,3 +153,6 @@ Index: linux-3.2/net/core/dev.c /* Process offline CPU's input_pkt_queue */ while ((skb = __skb_dequeue(&oldsd->process_queue))) { +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch b/debian/patches/features/all/rt/0261-rt-Introduce-cpu_chill.patch similarity index 62% rename from debian/patches/features/all/rt/rt-introduce-cpu-chill.patch rename to debian/patches/features/all/rt/0261-rt-Introduce-cpu_chill.patch index 999c6234b..4f0223e0a 100644 --- a/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch +++ b/debian/patches/features/all/rt/0261-rt-Introduce-cpu_chill.patch @@ -1,6 +1,7 @@ -Subject: rt: Introduce cpu_chill() +From 939a22067d292bb22eb0d6c7e8427d626fb297ea Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Wed, 07 Mar 2012 20:51:03 +0100 +Date: Wed, 7 Mar 2012 20:51:03 +0100 +Subject: [PATCH 261/267] rt: Introduce cpu_chill() Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() @@ -13,11 +14,11 @@ 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 +diff --git a/include/linux/delay.h b/include/linux/delay.h +index a6ecb34..e23a7c0 100644 +--- a/include/linux/delay.h ++++ b/include/linux/delay.h +@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int seconds) msleep(seconds * 1000); } @@ -28,3 +29,6 @@ Index: linux-3.2/include/linux/delay.h +#endif + #endif /* defined(_LINUX_DELAY_H) */ +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch b/debian/patches/features/all/rt/0262-fs-dcache-Use-cpu_chill-in-trylock-loops.patch similarity index 70% rename from debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch rename to debian/patches/features/all/rt/0262-fs-dcache-Use-cpu_chill-in-trylock-loops.patch index 002bbf15a..d1e19475e 100644 --- a/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch +++ b/debian/patches/features/all/rt/0262-fs-dcache-Use-cpu_chill-in-trylock-loops.patch @@ -1,6 +1,7 @@ -Subject: fs: dcache: Use cpu_chill() in trylock loops +From 1f3745ebd019755db68c544e5c9792988feebf52 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Wed, 07 Mar 2012 21:00:34 +0100 +Date: Wed, 7 Mar 2012 21:00:34 +0100 +Subject: [PATCH 262/267] fs: dcache: Use cpu_chill() in trylock loops Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -15,10 +16,10 @@ Cc: stable-rt@vger.kernel.org fs/namespace.c | 3 ++- 4 files changed, 8 insertions(+), 5 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 +diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h +index 308a98b..67ed186 100644 +--- a/fs/autofs4/autofs_i.h ++++ b/fs/autofs4/autofs_i.h @@ -34,6 +34,7 @@ #include #include @@ -27,10 +28,10 @@ Index: linux-3.2/fs/autofs4/autofs_i.h #include #include -Index: linux-3.2/fs/autofs4/expire.c -=================================================================== ---- linux-3.2.orig/fs/autofs4/expire.c -+++ linux-3.2/fs/autofs4/expire.c +diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c +index 450f529..43afbb0 100644 +--- a/fs/autofs4/expire.c ++++ b/fs/autofs4/expire.c @@ -170,7 +170,7 @@ again: parent = p->d_parent; if (!spin_trylock(&parent->d_lock)) { @@ -40,10 +41,10 @@ Index: linux-3.2/fs/autofs4/expire.c goto relock; } 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 +diff --git a/fs/dcache.c b/fs/dcache.c +index eb723d3..d47b266 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c @@ -37,6 +37,7 @@ #include #include @@ -52,7 +53,7 @@ Index: linux-3.2/fs/dcache.c #include "internal.h" /* -@@ -410,7 +411,7 @@ static inline struct dentry *dentry_kill +@@ -410,7 +411,7 @@ static inline struct dentry *dentry_kill(struct dentry *dentry, int ref) if (inode && !spin_trylock(&inode->i_lock)) { relock: spin_unlock(&dentry->d_lock); @@ -79,10 +80,10 @@ Index: linux-3.2/fs/dcache.c goto again; } dentry->d_flags &= ~DCACHE_CANT_MOUNT; -Index: linux-3.2/fs/namespace.c -=================================================================== ---- linux-3.2.orig/fs/namespace.c -+++ linux-3.2/fs/namespace.c +diff --git a/fs/namespace.c b/fs/namespace.c +index 63fd6d7..311264b 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c @@ -31,6 +31,7 @@ #include #include @@ -100,3 +101,6 @@ Index: linux-3.2/fs/namespace.c preempt_disable(); } /* +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/net-use-cpu-chill.patch b/debian/patches/features/all/rt/0263-net-Use-cpu_chill-instead-of-cpu_relax.patch similarity index 65% rename from debian/patches/features/all/rt/net-use-cpu-chill.patch rename to debian/patches/features/all/rt/0263-net-Use-cpu_chill-instead-of-cpu_relax.patch index 70e7bf7df..1d22092f0 100644 --- a/debian/patches/features/all/rt/net-use-cpu-chill.patch +++ b/debian/patches/features/all/rt/0263-net-Use-cpu_chill-instead-of-cpu_relax.patch @@ -1,6 +1,7 @@ -Subject: net: Use cpu_chill() instead of cpu_relax() +From e2d058a316dbb69d978d84769ae3e3a2783ff9f2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Wed, 07 Mar 2012 21:10:04 +0100 +Date: Wed, 7 Mar 2012 21:10:04 +0100 +Subject: [PATCH 263/267] net: Use cpu_chill() instead of cpu_relax() Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -13,10 +14,10 @@ Cc: stable-rt@vger.kernel.org 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 +diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c +index d9d4970..ed8ef1e 100644 +--- a/net/packet/af_packet.c ++++ b/net/packet/af_packet.c @@ -89,6 +89,7 @@ #include #include @@ -25,7 +26,7 @@ Index: linux-3.2/net/packet/af_packet.c #ifdef CONFIG_INET #include -@@ -673,7 +674,7 @@ static void prb_retire_rx_blk_timer_expi +@@ -673,7 +674,7 @@ static void prb_retire_rx_blk_timer_expired(unsigned long data) if (BLOCK_NUM_PKTS(pbd)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ @@ -34,7 +35,7 @@ Index: linux-3.2/net/packet/af_packet.c } } -@@ -928,7 +929,7 @@ static void prb_retire_current_block(str +@@ -928,7 +929,7 @@ static void prb_retire_current_block(struct tpacket_kbdq_core *pkc, if (!(status & TP_STATUS_BLK_TMO)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ @@ -43,10 +44,10 @@ Index: linux-3.2/net/packet/af_packet.c } } 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 +diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c +index e8fdb17..5a44c6e 100644 +--- a/net/rds/ib_rdma.c ++++ b/net/rds/ib_rdma.c @@ -34,6 +34,7 @@ #include #include @@ -55,7 +56,7 @@ Index: linux-3.2/net/rds/ib_rdma.c #include "rds.h" #include "ib.h" -@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace +@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace(void) for_each_online_cpu(cpu) { flag = &per_cpu(clean_list_grace, cpu); while (test_bit(CLEAN_LIST_BUSY_BIT, flag)) @@ -64,3 +65,6 @@ Index: linux-3.2/net/rds/ib_rdma.c } } +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch b/debian/patches/features/all/rt/0264-kconfig-disable-a-few-options-rt.patch.patch similarity index 67% rename from debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch rename to debian/patches/features/all/rt/0264-kconfig-disable-a-few-options-rt.patch.patch index 17bba664e..1e38376e5 100644 --- a/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch +++ b/debian/patches/features/all/rt/0264-kconfig-disable-a-few-options-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: kconfig-disable-a-few-options-rt.patch +From fd921ea52d724779a8ce5f6d7e1941090a3f6694 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 24 Jul 2011 12:11:43 +0200 +Subject: [PATCH 264/267] kconfig-disable-a-few-options-rt.patch Disable stuff which is known to have issues on RT @@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner mm/Kconfig | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) -Index: linux-3.2/arch/Kconfig -=================================================================== ---- linux-3.2.orig/arch/Kconfig -+++ linux-3.2/arch/Kconfig +diff --git a/arch/Kconfig b/arch/Kconfig +index 4b0669c..73fc7cd 100644 +--- a/arch/Kconfig ++++ b/arch/Kconfig @@ -6,6 +6,7 @@ config OPROFILE tristate "OProfile system profiling" depends on PROFILING @@ -23,10 +24,10 @@ Index: linux-3.2/arch/Kconfig select RING_BUFFER select RING_BUFFER_ALLOW_SWAP help -Index: linux-3.2/drivers/net/Kconfig -=================================================================== ---- linux-3.2.orig/drivers/net/Kconfig -+++ linux-3.2/drivers/net/Kconfig +diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig +index 654a5e9..0f5149d 100644 +--- a/drivers/net/Kconfig ++++ b/drivers/net/Kconfig @@ -154,6 +154,7 @@ config MACVTAP config NETCONSOLE @@ -35,10 +36,10 @@ Index: linux-3.2/drivers/net/Kconfig ---help--- If you want to log kernel messages over the network, enable this. See for details. -Index: linux-3.2/mm/Kconfig -=================================================================== ---- linux-3.2.orig/mm/Kconfig -+++ linux-3.2/mm/Kconfig +diff --git a/mm/Kconfig b/mm/Kconfig +index 011b110..0526445 100644 +--- a/mm/Kconfig ++++ b/mm/Kconfig @@ -307,7 +307,7 @@ config NOMMU_INITIAL_TRIM_EXCESS config TRANSPARENT_HUGEPAGE @@ -48,3 +49,6 @@ Index: linux-3.2/mm/Kconfig select COMPACTION help Transparent Hugepages allows the kernel to use huge pages and +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch b/debian/patches/features/all/rt/0265-kconfig-preempt-rt-full.patch.patch similarity index 71% rename from debian/patches/features/all/rt/kconfig-preempt-rt-full.patch rename to debian/patches/features/all/rt/0265-kconfig-preempt-rt-full.patch.patch index 83c0854f0..693edf7a9 100644 --- a/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch +++ b/debian/patches/features/all/rt/0265-kconfig-preempt-rt-full.patch.patch @@ -1,6 +1,7 @@ -Subject: kconfig-preempt-rt-full.patch +From 8305d95e93afe96c3b198b6381433f360fcdccfa Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 14:58:57 +0200 +Subject: [PATCH 265/267] kconfig-preempt-rt-full.patch Signed-off-by: Thomas Gleixner --- @@ -9,20 +10,20 @@ Signed-off-by: Thomas Gleixner scripts/mkcompile_h | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) -Index: linux-3.2/init/Makefile -=================================================================== ---- linux-3.2.orig/init/Makefile -+++ linux-3.2/init/Makefile +diff --git a/init/Makefile b/init/Makefile +index 0bf677a..6b473cd 100644 +--- a/init/Makefile ++++ b/init/Makefile @@ -29,4 +29,4 @@ silent_chk_compile.h = : include/generated/compile.h: FORCE @$($(quiet)chk_compile.h) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ - "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)" + "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CONFIG_PREEMPT_RT_FULL)" "$(CC) $(KBUILD_CFLAGS)" -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 35c6f20..d0e9372 100644 +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt @@ -66,6 +66,13 @@ config PREEMPT_RTB enables changes which are preliminary for the full preemptiple RT kernel. @@ -37,10 +38,10 @@ Index: linux-3.2/kernel/Kconfig.preempt endchoice config PREEMPT_COUNT -Index: linux-3.2/scripts/mkcompile_h -=================================================================== ---- linux-3.2.orig/scripts/mkcompile_h -+++ linux-3.2/scripts/mkcompile_h +diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h +index f221ddf..5f44009 100755 +--- a/scripts/mkcompile_h ++++ b/scripts/mkcompile_h @@ -4,7 +4,8 @@ TARGET=$1 ARCH=$2 SMP=$3 @@ -59,3 +60,6 @@ Index: linux-3.2/scripts/mkcompile_h UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP" # Truncate to maximum length +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/0266-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch b/debian/patches/features/all/rt/0266-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch new file mode 100644 index 000000000..f05deb70e --- /dev/null +++ b/debian/patches/features/all/rt/0266-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch @@ -0,0 +1,54 @@ +From 87b9564badf043711b03d381536be29103e9cce9 Mon Sep 17 00:00:00 2001 +From: Steven Rostedt +Date: Mon, 16 Apr 2012 21:51:54 -0400 +Subject: [PATCH 266/267] rt: Make migrate_disable/enable() and + __rt_mutex_init non-GPL only + +Modules that load on the normal vanilla kernel should also load on +an -rt kernel as well. This does not mean we condone non-GPL modules, +we are only being consistent. + +Signed-off-by: Steven Rostedt +--- + kernel/rtmutex.c | 2 +- + kernel/sched.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index b525158..9c4f6e5 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -1290,7 +1290,7 @@ void __rt_mutex_init(struct rt_mutex *lock, const char *name) + + debug_rt_mutex_init(lock, name); + } +-EXPORT_SYMBOL_GPL(__rt_mutex_init); ++EXPORT_SYMBOL(__rt_mutex_init); + + /** + * rt_mutex_init_proxy_locked - initialize and lock a rt_mutex on behalf of a +diff --git a/kernel/sched.c b/kernel/sched.c +index 1cc706d..3b12e0b 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -4426,7 +4426,7 @@ void migrate_disable(void) + p->migrate_disable = 1; + preempt_enable(); + } +-EXPORT_SYMBOL_GPL(migrate_disable); ++EXPORT_SYMBOL(migrate_disable); + + void migrate_enable(void) + { +@@ -4478,7 +4478,7 @@ void migrate_enable(void) + unpin_current_cpu(); + preempt_enable(); + } +-EXPORT_SYMBOL_GPL(migrate_enable); ++EXPORT_SYMBOL(migrate_enable); + #else + static inline void update_migrate_disable(struct task_struct *p) { } + #define migrate_disabled_updated(p) 0 +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/0267-Linux-3.2.16-rt27-REBASE.patch b/debian/patches/features/all/rt/0267-Linux-3.2.16-rt27-REBASE.patch new file mode 100644 index 000000000..426dae5e5 --- /dev/null +++ b/debian/patches/features/all/rt/0267-Linux-3.2.16-rt27-REBASE.patch @@ -0,0 +1,19 @@ +From 9eee911c32b17fa49c4d00541a7459ab912d4fc5 Mon Sep 17 00:00:00 2001 +From: Steven Rostedt +Date: Mon, 16 Apr 2012 22:15:29 -0400 +Subject: [PATCH 267/267] Linux 3.2.16-rt27 REBASE + +--- + localversion-rt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/localversion-rt b/localversion-rt +index b2111a2..be1e37b 100644 +--- a/localversion-rt ++++ b/localversion-rt +@@ -1 +1 @@ +--rt24 ++-rt27 +-- +1.7.10 + diff --git a/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch b/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch deleted file mode 100644 index e201cb8a9..000000000 --- a/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch +++ /dev/null @@ -1,23 +0,0 @@ -Subject: arm-enable-interrupts-in-signal-code.patch -From: Thomas Gleixner -Date: Sat, 16 Jul 2011 16:27:13 +0200 - -Signed-off-by: Thomas Gleixner ---- - arch/arm/kernel/signal.c | 3 +++ - 1 file changed, 3 insertions(+) - -Index: linux-3.2/arch/arm/kernel/signal.c -=================================================================== ---- linux-3.2.orig/arch/arm/kernel/signal.c -+++ linux-3.2/arch/arm/kernel/signal.c -@@ -672,6 +672,9 @@ static void do_signal(struct pt_regs *re - if (!user_mode(regs)) - return; - -+ local_irq_enable(); -+ preempt_check_resched(); -+ - /* - * If we were from a system call, check for system call restarting... - */ diff --git a/debian/patches/features/all/rt/check-series b/debian/patches/features/all/rt/check-series index 261dd8dc0..3d68e54cf 100755 --- a/debian/patches/features/all/rt/check-series +++ b/debian/patches/features/all/rt/check-series @@ -10,7 +10,7 @@ grep "featureset=rt$" debian/patches/series/base-extra > "$debian_series" # Remove comments and empty lines. Drop localversion patch as uname version # shouldn't be touched. Reformat to match series format. -sed -r -e 's/ *#.*//; /^$/d; /^localversion.patch$/d; s,.*,+ features/all/rt/& featureset=rt,' "debian/patches/features/all/rt/series" > "$rt_series" +sed -r -e 's/ *#.*//; /^$/d; /^....-(localversion\.patch|Linux-.*-REBASE)\.patch$/d; s,.*,+ features/all/rt/& featureset=rt,' "debian/patches/features/all/rt/series" > "$rt_series" # removed lines are OK if the rt patch contains fixes that are applied on # featureset=none kernels, too. diff --git a/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch b/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch deleted file mode 100644 index 20d081e21..000000000 --- a/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch +++ /dev/null @@ -1,70 +0,0 @@ -Subject: hrtimer: Add missing debug_activate() aid [Was: Re: [ANNOUNCE] 3.0.6-rt17] -From: Yong Zhang -Date: Thu, 13 Oct 2011 15:52:30 +0800 - -On Fri, Oct 07, 2011 at 10:25:25AM -0700, Fernando Lopez-Lezcano wrote: -> On 10/06/2011 06:15 PM, Thomas Gleixner wrote: -> >Dear RT Folks, -> > -> >I'm pleased to announce the 3.0.6-rt17 release. -> -> Hi and thanks again. So far this one is not hanging which is very -> good news. But I still see the hrtimer_fixup_activate warnings I -> reported for rt16... - -Hi Fernando, - -I think below patch will smooth your concern? - -Thanks, -Yong - ---- -From: Yong Zhang -Subject: [PATCH -rt] hrtimer: Add missing debug_activate() aid - -It will fix below warning, which is also reported by Fernando: - -[ 7.616090] ------------[ cut here ]------------ -[ 7.616093] WARNING: at kernel/hrtimer.c:391 hrtimer_fixup_activate+0x27/0x50() -[ 7.616094] Hardware name: OptiPlex 755 -[ 7.616096] Modules linked in: -[ 7.616099] Pid: 0, comm: kworker/0:0 Tainted: G W 3.0.6-rt17-00284-g9d73a61 #15 -[ 7.616100] Call Trace: -[ 7.616103] [] warn_slowpath_common+0x72/0xa0 -[ 7.616106] [] ? hrtimer_fixup_activate+0x27/0x50 -[ 7.616109] [] ? hrtimer_fixup_activate+0x27/0x50 -[ 7.616112] [] warn_slowpath_null+0x22/0x30 -[ 7.616115] [] hrtimer_fixup_activate+0x27/0x50 -[ 7.616118] [] debug_object_activate+0x100/0x130 -[ 7.616121] [] ? hrtimer_start_range_ns+0x26/0x30 -[ 7.616123] [] enqueue_hrtimer+0x19/0x100 -[ 7.616126] [] ? hrtimer_start_range_ns+0x26/0x30 -[ 7.616129] [] __hrtimer_start_range_ns+0x144/0x540 -[ 7.616132] [] ? _raw_spin_unlock_irqrestore+0x3a/0x80 -[ 7.616136] [] hrtimer_start_range_ns+0x26/0x30 -[ 7.616139] [] tick_nohz_restart_sched_tick+0x185/0x1b0 -[ 7.616142] [] cpu_idle+0x98/0xc0 -[ 7.616146] [] start_secondary+0x1d3/0x1da -[ 7.616148] ---[ end trace 0000000000000003 ]--- - -Reported-by: Fernando Lopez-Lezcano -Signed-off-by: Yong Zhang -Link: http://lkml.kernel.org/r/20111013075230.GA2740@zhy -Signed-off-by: Thomas Gleixner ---- - kernel/hrtimer.c | 1 + - 1 file changed, 1 insertion(+) - -Index: linux-3.2/kernel/hrtimer.c -=================================================================== ---- linux-3.2.orig/kernel/hrtimer.c -+++ linux-3.2/kernel/hrtimer.c -@@ -1042,6 +1042,7 @@ int __hrtimer_start_range_ns(struct hrti - * remove it again and report a failure. This avoids - * stale base->first entries. - */ -+ debug_deactivate(timer); - __remove_hrtimer(timer, new_base, - timer->state & HRTIMER_STATE_CALLBACK, 0); - } diff --git a/debian/patches/features/all/rt/localversion.patch b/debian/patches/features/all/rt/localversion.patch deleted file mode 100644 index 914f318f6..000000000 --- a/debian/patches/features/all/rt/localversion.patch +++ /dev/null @@ -1,17 +0,0 @@ -Subject: localversion.patch -From: Thomas Gleixner -Date: Fri, 08 Jul 2011 20:25:16 +0200 - -Signed-off-by: Thomas Gleixner -Signed-off-by: Peter Zijlstra -Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org ---- - localversion-rt | 1 + - 1 file changed, 1 insertion(+) - -Index: linux-3.2/localversion-rt -=================================================================== ---- /dev/null -+++ linux-3.2/localversion-rt -@@ -0,0 +1 @@ -+-rt22 diff --git a/debian/patches/features/all/rt/series b/debian/patches/features/all/rt/series index f5732d386..1bb2c96d4 100644 --- a/debian/patches/features/all/rt/series +++ b/debian/patches/features/all/rt/series @@ -1,602 +1,267 @@ -########################################################### -# DELTA against a known Linus release (3.2.5) -########################################################### - -############################################################ -# UPSTREAM changes queued for 3.3 or 3.2 -############################################################ -x86_64-patch-for-idle-notifiers.patch -re-possible-slab-deadlock-while-doing-ifenslave-1.patch - -# Should go to stable 3.0.x! - -############################################################ -# UPSTREAM FIXES, patches pending -############################################################ -# rtc-deal-with-errors-correctly.patch -- 3.0.1 -# rtc-fix-hrtimer-deadlock.patch -- 3.0.1 -# rtc-limit-frequency.patch -- 3.0.1 - -# Some variant of this is in 3.1 - -############################################################ -# Stuff broken upstream, patches submitted -############################################################ -x86-kprobes-remove-bogus-preempt-enable.patch - -############################################################ -# Stuff which needs addressing upstream, but requires more -# information -############################################################ -x86-hpet-disable-msi-on-lenovo-w510.patch - -############################################################ -# Stuff broken upstream, need to be sent -############################################################ - -############################################################ -# Submitted on LKML -############################################################ -# SCHED BLOCK/WQ -block-shorten-interrupt-disabled-regions.patch -sched-distangle-worker-accounting-from-rq-3elock.patch - -############################################################ -# Submitted to mips ML -############################################################ -mips-enable-interrupts-in-signal.patch - -############################################################ -# Submitted to ARM ML -############################################################ -arm-enable-interrupts-in-signal-code.patch - -############################################################ -# Submitted on LKML -############################################################ - -# JBD - -# SCHED - -############################################################ -# Submitted on ppc-devel -############################################################ -powerpc-85xx-mark-cascade-irq-no-thread.patch -powerpc-wsp-opb-mark-demux-handler-nothread.patch -powerpc-markipi-interrupts-nothread.patch -power-allow-irq-threading.patch - -############################################################ -# Submitted to net-dev -############################################################ - -############################################################ -# Pending in tip -############################################################ - -# WATCHDOG - -# CLOCKSOURCE - -# RTMUTEX CLEANUP - -# RAW SPINLOCKS - -# X86 - -############################################################ -# Pending in peterz's scheduler queue -############################################################ - -sched-keep-period-timer-alive-when-throttled.patch -sched-prevent-boosting-from-throttling.patch - -############################################################ -# Stuff which should go upstream ASAP -############################################################ - -# Timekeeping / VDSO -time-remove-bogus-comments.patch -x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch -x86-vdso-use-seqcount.patch -ia64-vdso-use-seqcount.patch - -# SEQLOCK -seqlock-remove-unused-functions.patch -seqlock-use-seqcount.patch -#seqlock-provide-seq-spin-lock.patch -#fs-struct-use-seqlock.patch -#fs-dentry-use-seqlock.patch - -# VFS. Al Viro provided this so we can deal with the seqcount simpler -vfs-fstruct-move-code-out-of-seqcount-write-sections.patch - -# RAW SPINLOCKS -timekeeping-split-xtime-lock.patch -intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch - -# MM memcg -mm-memcg-shorten-preempt-disabled-section-around-event-checks.patch - -# Tracing -tracing-account-for-preempt-off-in-preempt_schedule.patch - -# PTRACE/SIGNAL crap -signal-revert-ptrace-preempt-magic.patch - -# ARM IRQF_NO_TRHEAD / IRQ THREADING SUPPORT -arm-mark-pmu-interupt-no-thread.patch -arm-allow-irq-threading.patch -arm-convert-boot-lock-to-raw.patch - -# PREEMPT_ENABLE_NO_RESCHED -sched-create-schedule-preempt-disabled.patch -sched-use-schedule-preempt-disabled.patch - -# SIGNALS / POSIXTIMERS -signals-do-not-wake-self.patch -posix-timers-no-broadcast.patch -signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch -oleg-signal-rt-fix.patch - -# SCHED - -# GENERIC CMPXCHG -generic-cmpxchg-use-raw-local-irq.patch - -# SHORTEN PREEMPT DISABLED -drivers-random-reduce-preempt-disabled-region.patch - -# CLOCKSOURCE -arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch -clocksource-tclib-allow-higher-clockrates.patch - -# HW LATENCY DETECTOR - this really wants a rewrite -#hw-latency-detector.patch - -# DRIVERS NET -drivers-net-tulip-add-missing-pci-disable.patch -drivers-net-8139-disable-irq-nosync.patch -drivers-net-ehea-mark-rx-irq-no-thread.patch -drivers-net-at91-make-mdio-protection-rt-safe.patch - -# PREEMPT -preempt-mark-legitimated-no-resched-sites.patch - -# PAGEFAULT DISABLE -mm-prepare-pf-disable-discoupling.patch -arch-use-pagefault-disabled.patch -peter_zijlstra-frob-pagefault_disable.patch -peterz-raw_pagefault_disable.patch -# highmem-explicitly-disable-preemption.patch -- peterz -filemap-fix-up.patch -mm-remove-preempt-count-from-pf.patch - -# HIGHMEM -x86-highmem-warn.patch - -# PM -suspend-prevernt-might-sleep-splats.patch - -# DEVICE TREE -of-fixup-recursive-locking.patch -of-convert-devtree-lock.patch - -# MM/LISTS -list-add-list-last-entry.patch -mm-page-alloc-use-list-last-entry.patch -mm-slab-move-debug-out.patch - -# INCLUDE MESS -pid-h-include-atomic-h.patch -sysctl-include-atomic-h.patch - -# NETWORKING -net-flip-lock-dep-thingy.patch - -# SOFTIRQ -softirq-thread-do-softirq.patch -softirq-split-out-code.patch - -# X86 -x86-io-apic-migra-no-unmask.patch -x86-32-fix-signal-crap.patch -fix-rt-int3-x86_32-3.2-rt.patch - -# RCU -rcu-reduce-lock-section.patch - -# LOCKING INIT FIXES -locking-various-init-fixes.patch -# rtc-tegra-lock-init.patch -- 3.0.1 - -# PCI -wait-provide-__wake_up_all_locked.patch -pci-access-use-__wake_up_all_locked.patch - -##################################################### -# Stuff which should go mainline, but wants some care -##################################################### - -# SEQLOCK - -# ANON RW SEMAPHORES - -# TRACING -latency-hist.patch - -# HW latency detector -hwlatdetect.patch - -################################################## -# REAL RT STUFF starts here -################################################## - -# Add RT to version -localversion.patch - -# PRINTK -early-printk-consolidate.patch -printk-kill.patch -printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch - -# BASE RT CONFIG -rt-preempt-base-config.patch - -# WARN/BUG_ON_RT -bug-rt-dependend-variants.patch - -# LOCAL_IRQ_RT/NON_RT -local-irq-rt-depending-variants.patch - -# PREEMPT NORT -preempt-nort-rt-variants.patch - -# ANNOTATE local_irq_disable sites -ata-disable-interrupts-if-non-rt.patch -ide-use-nort-local-irq-variants.patch -infiniband-mellanox-ib-use-nort-irq.patch -inpt-gameport-use-local-irq-nort.patch -acpi-use-local-irq-nort.patch -user-use-local-irq-nort.patch -resource-counters-use-localirq-nort.patch -usb-hcd-use-local-irq-nort.patch -tty-use-local-irq-nort.patch -mm-scatterlist-dont-disable-irqs-on-RT.patch - -# Sigh -signal-fix-up-rcu-wreckage.patch - -# ANNOTATE BUG/WARNON -net-wireless-warn-nort.patch - -# BIT SPINLOCKS - SIGH -mm-cgroup-page-bit-spinlock.patch -fs-replace-bh_uptodate_lock-for-rt.patch -fs-jbd-replace-bh_state-lock.patch - -# GENIRQ -genirq-nodebug-shirq.patch -genirq-disable-random-call-on-preempt-rt.patch -genirq-disable-irqpoll-on-rt.patch -genirq-force-threading.patch - -# DRIVERS NET -drivers-net-fix-livelock-issues.patch -drivers-net-vortex-fix-locking-issues.patch -drivers-net-gianfar-make-rt-aware.patch - -# DRIVERS USB -# Revisit. Looks weird -#usb-rt-support.patch -usb-fix-mouse-problem-copying-large-data.patch - -# LOCAL_IRQ_LOCKS -local-var.patch -rt-local-irq-lock.patch -cpu-rt-variants.patch - -# MM SLAB -mm-slab-wrap-functions.patch -rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch -mm-slab-more-lock-breaks.patch - -# MM PAGE_ALLOC -mm-page_alloc-rt-friendly-per-cpu-pages.patch -mm-page_alloc-reduce-lock-sections-further.patch -mm-page-alloc-fix.patch - -# MM SWAP -mm-convert-swap-to-percpu-locked.patch - -# MM vmstat -mm-vmstat-fix-the-irq-lock-asymetry.patch -mm-make-vmstat-rt-aware.patch - -# MM memory -#mm-memory-rt.patch - ZAP... is unused -mm-shrink-the-page-frame-to-rt-size.patch -re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch - -# MM SLAB only -mm-allow-slab-rt.patch - -# Revisit for avr/frv/ia64/mn10300/sh/sparc ... -#mm-quicklists-percpu-locked.patch - -# RADIX TREE -radix-tree-rt-aware.patch - -# PANIC -panic-disable-random-on-rt.patch - -# IPC -ipc-make-rt-aware.patch -ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch - -# RELAY -relay-fix-timer-madness.patch - -# NETWORKING -net-ipv4-route-use-locks-on-up-rt.patch - -# WORKQUEUE SIGH -workqueue-avoid-the-lock-in-cpu-dying.patch - -# TIMERS -timers-prepare-for-full-preemption.patch -timers-preempt-rt-support.patch -timers-fix-timer-hotplug-on-rt.patch -timers-mov-printk_tick-to-soft-interrupt.patch -timer-delay-waking-softirqs-from-the-jiffy-tick.patch -timers-avoid-the-base-null-otptimization-on-rt.patch - -# More PRINTK -rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch - -# HRTIMERS -hrtimers-prepare-full-preemption.patch -hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch -peter_zijlstra-frob-hrtimer.patch -hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch -hrtimer-fix-reprogram-madness.patch -timer-fd-avoid-live-lock.patch - -# POSIX-CPU-TIMERS -posix-timers-thread-posix-cpu-timers-on-rt.patch -posix-timers-shorten-cpu-timers-thread.patch -posix-timers-avoid-wakeups-when-no-timers-are-active.patch - -# SCHEDULER -sched-delay-put-task.patch -sched-limit-nr-migrate.patch -sched-mmdrop-delayed.patch -sched-rt-mutex-wakeup.patch -sched-prevent-idle-boost.patch -sched-might-sleep-do-not-account-rcu-depth.patch -sched-load-balance-break-on-rq-contention.patch -sched-cond-resched.patch -cond-resched-softirq-rt.patch -sched-no-work-when-pi-blocked.patch -cond-resched-lock-rt-tweak.patch -sched-disable-ttwu-queue.patch -sched-disable-rt-group-sched-on-rt.patch -sched-ttwu-ensure-success-return-is-correct.patch - -# STOP MACHINE -stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch -stomp-machine-mark-stomper-thread.patch -stomp-machine-raw-lock.patch - -# MIGRATE DISABLE AND PER CPU -hotplug-light-get-online-cpus.patch -hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch -re-migrate_disable-race-with-cpu-hotplug-3f.patch -sched-migrate-disable.patch -hotplug-use-migrate-disable.patch -hotplug-call-cpu_unplug_begin-a-little-early.patch - -ftrace-migrate-disable-tracing.patch -rt-tracing-show-padding-as-unsigned-short.patch - -migrate-disable-rt-variant.patch -peter_zijlstra-frob-migrate_disable.patch -peter_zijlstra-frob-migrate_disable-2.patch -sched-rt-fix-migrate_enable-thinko.patch -sched-teach-migrate_disable-about-atomic-contexts.patch -rt-sched-postpone-actual-migration-disalbe-to-schedule.patch -rt-sched-do-not-compare-cpu-masks-in-scheduler.patch -rt-sched-have-migrate_disable-ignore-bounded-threads.patch -sched-clear-pf-thread-bound-on-fallback-rq.patch - -# FTRACE -ftrace-crap.patch -rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch - -# NETWORKING -net-netif_rx_ni-migrate-disable.patch - -# NOHZ -softirq-sanitize-softirq-pending.patch - -# LOCKDEP -lockdep-no-softirq-accounting-on-rt.patch - -# SOFTIRQ local lock -mutex-no-spin-on-rt.patch -softirq-local-lock.patch -softirq-export-in-serving-softirq.patch -harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch -softirq-fix-unplug-deadlock.patch -softirq-disable-softirq-stacks-for-rt.patch -softirq-make-fifo.patch -tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch -irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch - -# LOCAL VARS and GETCPU STUFF -local-vars-migrate-disable.patch - -# RAID5 -md-raid5-percpu-handling-rt-aware.patch - -# RTMUTEX -rtmutex-lock-killable.patch - -# FUTEX/RTMUTEX -rtmutex-futex-prepare-rt.patch -futex-requeue-pi-fix.patch - -# RTMUTEX -rt-mutex-add-sleeping-spinlocks-support.patch -spinlock-types-separate-raw.patch -rtmutex-avoid-include-hell.patch -rt-add-rt-spinlock-to-headers.patch -rt-add-rt-to-mutex-headers.patch -rwsem-add-rt-variant.patch -rt-add-rt-locks.patch - -# RTMUTEX Fallout -tasklist-lock-fix-section-conflict.patch - -# NOHZ/RTMUTEX -timer-handle-idle-trylock-in-get-next-timer-irq.patch - -# RCU -rcu-force-preempt-rcu-for-rt.patch -peter_zijlstra-frob-rcu.patch -rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch -rcu-fix-macro-substitution.patch -rcu-tiny-merge-bh.patch -patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch -rt-rcutree-warn-fix.patch - -# LGLOCKS - lovely -lglocks-rt.patch - -# DRIVERS SERIAL -drivers-serial-cleanup-locking-for-rt.patch -drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch -drivers-tty-fix-omap-lock-crap.patch -rt-serial-warn-fix.patch - -# FS -fs-namespace-preemption-fix.patch -mm-protect-activate-switch-mm.patch -fs-block-rt-support.patch -fs-ntfs-disable-interrupt-non-rt.patch - -# X86 -x86-mce-timer-hrtimer.patch -x86-stackprot-no-random-on-rt.patch -# x86-no-highmem-with-rt.patch -- peterz -x86-use-gen-rwsem-spinlocks-rt.patch -x86-disable-debug-stack.patch - -# CPU get light -workqueue-use-get-cpu-light.patch -epoll-use-get-cpu-light.patch -mm-vmalloc-use-get-cpu-light.patch - -# WORKQUEUE more fixes -workqueue-sanity.patch -workqueue-fix-PF_THREAD_BOUND.patch -workqueue-hotplug-fix.patch -workqueue-more-hotplug-fallout.patch - -# DEBUGOBJECTS -debugobjects-rt.patch - -# JUMPLABEL -jump-label-rt.patch - -# NET -skbufhead-raw-lock.patch - -# PERF -perf-move-irq-work-to-softirq-in-rt.patch - -# CONSOLE. NEEDS more thought !!! -console-make-rt-friendly.patch -printk-disable-migration-instead-of-preemption.patch - -# POWERC -power-use-generic-rwsem-on-rt.patch -power-disable-highmem-on-rt.patch - -# ARM -arm-disable-highmem-on-rt.patch -arm-at91-tclib-default-to-tclib-timer-for-rt.patch - -# MIPS -mips-disable-highmem-on-rt.patch - -# NETWORK livelock fix -net-tx-action-avoid-livelock-on-rt.patch - -# NETWORK DEBUGGING AID -ping-sysrq.patch - -# KGDB -kgb-serial-hackaround.patch - -# SYSFS - RT indicator -sysfs-realtime-entry.patch - -# KMAP/HIGHMEM -peter_zijlstra-re-_3_0-rt4.patch - -# IPC -ipc-sem-rework-semaphore-wakeups.patch - -# SYSRQ -preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch - -# KVM require constant freq TSC (smp function call -> cpufreq) -x86-kvm-require-const-tsc-for-rt.patch - -# SCSI/FCOE -scsi-fcoe-rt-aware.patch - -# X86 crypto -x86-crypto-reduce-preempt-disabled-regions.patch - -# Device mapper -dm-make-rt-aware.patch - -# ACPI -# Dropped those two as they cause a scheduling in atomic failure and -# we have no clue why we made those locks raw in the first place. -# acpi-make-gbl-hardware-lock-raw.patch -# acpi-make-ec-lock-raw-as-well.patch - -# This one is just a follow up to the raw spin locks -# Simple raw spinlock based waitqueue -# wait-simple-version.patch -# acpi-gpe-use-wait-simple.patch - -# CPUMASK OFFSTACK -cpumask-disable-offstack-on-rt.patch - -# Various fixes - fold them back -seqlock-prevent-rt-starvation.patch -#fs-protect-opencoded-isize-seqcount.patch -#net-u64-stat-protect-seqcount.patch -rfc-timer-fix-hotplug-for-rt.patch -rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch -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 - -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 -net-use-cpu-chill.patch - -# Enable full RT -kconfig-disable-a-few-options-rt.patch -kconfig-preempt-rt-full.patch - +0001-x86-Call-idle-notifier-after-irq_enter.patch +0002-slab-lockdep-Annotate-all-slab-caches.patch +0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch +0004-x86-hpet-Disable-MSI-on-Lenovo-W510.patch +0005-block-Shorten-interrupt-disabled-regions.patch +0006-sched-Distangle-worker-accounting-from-rq-3Elock.patch +0007-mips-enable-interrupts-in-signal.patch.patch +0008-arm-enable-interrupts-in-signal-code.patch.patch +0009-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch +0010-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch +0011-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch +0012-powerpc-Allow-irq-threading.patch +0013-sched-Keep-period-timer-ticking-when-throttling-acti.patch +0014-sched-Do-not-throttle-due-to-PI-boosting.patch +0015-time-Remove-bogus-comments.patch +0016-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch +0017-x86-vdso-Use-seqcount-instead-of-seqlock.patch +0018-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch +0019-seqlock-Remove-unused-functions.patch +0020-seqlock-Use-seqcount.patch +0021-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch +0022-timekeeping-Split-xtime_lock.patch +0023-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch +0024-mm-memcg-shorten-preempt-disabled-section-around-eve.patch +0025-tracing-Account-for-preempt-off-in-preempt_schedule.patch +0026-signal-revert-ptrace-preempt-magic.patch.patch +0027-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch +0028-arm-Allow-forced-irq-threading.patch +0029-preempt-rt-Convert-arm-boot_lock-to-raw.patch +0030-sched-Create-schedule_preempt_disabled.patch +0031-sched-Use-schedule_preempt_disabled.patch +0032-signals-Do-not-wakeup-self.patch +0033-posix-timers-Prevent-broadcast-signals.patch +0034-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch +0035-signal-x86-Delay-calling-signals-in-atomic.patch +0036-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch +0037-drivers-random-Reduce-preempt-disabled-region.patch +0038-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch +0039-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch +0040-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch +0041-drivers-net-Use-disable_irq_nosync-in-8139too.patch +0042-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch +0043-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch +0044-preempt-mark-legitimated-no-resched-sites.patch.patch +0045-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch +0046-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch +0047-mm-pagefault_disabled.patch +0048-mm-raw_pagefault_disable.patch +0049-filemap-fix-up.patch.patch +0050-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch +0051-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch +0052-suspend-Prevent-might-sleep-splats.patch +0053-OF-Fixup-resursive-locking-code-paths.patch +0054-of-convert-devtree-lock.patch.patch +0055-list-add-list-last-entry.patch.patch +0056-mm-page-alloc-use-list-last-entry.patch.patch +0057-mm-slab-move-debug-out.patch.patch +0058-rwsem-inlcude-fix.patch.patch +0059-sysctl-include-fix.patch.patch +0060-net-flip-lock-dep-thingy.patch.patch +0061-softirq-thread-do-softirq.patch.patch +0062-softirq-split-out-code.patch.patch +0063-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch +0064-x86-32-fix-signal-crap.patch.patch +0065-x86-Do-not-disable-preemption-in-int3-on-32bit.patch +0066-rcu-Reduce-lock-section.patch +0067-locking-various-init-fixes.patch.patch +0068-wait-Provide-__wake_up_all_locked.patch +0069-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch +0070-latency-hist.patch.patch +0071-hwlatdetect.patch.patch +0072-localversion.patch.patch +0073-early-printk-consolidate.patch.patch +0074-printk-kill.patch.patch +0075-printk-force_early_printk-boot-param-to-help-with-de.patch +0076-rt-preempt-base-config.patch.patch +0077-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch +0078-rt-local_irq_-variants-depending-on-RT-RT.patch +0079-preempt-Provide-preempt_-_-no-rt-variants.patch +0080-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch +0081-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch +0082-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch +0083-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch +0084-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch +0085-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch +0086-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch +0087-usb-Use-local_irq_-_nort-variants.patch +0088-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch +0089-mm-scatterlist-dont-disable-irqs-on-RT.patch +0090-signal-fix-up-rcu-wreckage.patch.patch +0091-net-wireless-warn-nort.patch.patch +0092-mm-Replace-cgroup_page-bit-spinlock.patch +0093-buffer_head-Replace-bh_uptodate_lock-for-rt.patch +0094-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch +0095-genirq-Disable-DEBUG_SHIRQ-for-rt.patch +0096-genirq-Disable-random-call-on-preempt-rt.patch +0097-genirq-disable-irqpoll-on-rt.patch +0098-genirq-force-threading.patch.patch +0099-drivers-net-fix-livelock-issues.patch +0100-drivers-net-vortex-fix-locking-issues.patch +0101-drivers-net-gianfar-Make-RT-aware.patch +0102-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch +0103-local-var.patch.patch +0104-rt-local-irq-lock.patch.patch +0105-cpu-rt-variants.patch.patch +0106-mm-slab-wrap-functions.patch.patch +0107-slab-Fix-__do_drain-to-use-the-right-array-cache.patch +0108-mm-More-lock-breaks-in-slab.c.patch +0109-mm-page_alloc-rt-friendly-per-cpu-pages.patch +0110-mm-page_alloc-reduce-lock-sections-further.patch +0111-mm-page-alloc-fix.patch.patch +0112-mm-convert-swap-to-percpu-locked.patch +0113-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch +0114-mm-make-vmstat-rt-aware.patch +0115-mm-shrink-the-page-frame-to-rt-size.patch +0116-ARM-Initialize-ptl-lock-for-vector-page.patch +0117-mm-Allow-only-slab-on-RT.patch +0118-radix-tree-rt-aware.patch.patch +0119-panic-disable-random-on-rt.patch +0120-ipc-Make-the-ipc-code-rt-aware.patch +0121-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch +0122-relay-fix-timer-madness.patch +0123-net-ipv4-route-use-locks-on-up-rt.patch.patch +0124-workqueue-avoid-the-lock-in-cpu-dying.patch.patch +0125-timers-prepare-for-full-preemption.patch +0126-timers-preempt-rt-support.patch +0127-timers-fix-timer-hotplug-on-rt.patch +0128-timers-mov-printk_tick-to-soft-interrupt.patch +0129-timer-delay-waking-softirqs-from-the-jiffy-tick.patch +0130-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch +0131-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch +0132-hrtimers-prepare-full-preemption.patch +0133-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch +0134-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch +0135-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch +0136-hrtimer-fix-reprogram-madness.patch.patch +0137-timer-fd-Prevent-live-lock.patch +0138-posix-timers-thread-posix-cpu-timers-on-rt.patch +0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch +0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch +0141-sched-delay-put-task.patch.patch +0142-sched-limit-nr-migrate.patch.patch +0143-sched-mmdrop-delayed.patch.patch +0144-sched-rt-mutex-wakeup.patch.patch +0145-sched-prevent-idle-boost.patch.patch +0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch +0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch +0148-sched-cond-resched.patch.patch +0149-cond-resched-softirq-fix.patch.patch +0150-sched-no-work-when-pi-blocked.patch.patch +0151-cond-resched-lock-rt-tweak.patch.patch +0152-sched-disable-ttwu-queue.patch.patch +0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch +0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch +0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch +0156-stomp-machine-mark-stomper-thread.patch.patch +0157-stomp-machine-raw-lock.patch.patch +0158-hotplug-Lightweight-get-online-cpus.patch +0159-hotplug-sync_unplug-No.patch +0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch +0161-sched-migrate-disable.patch.patch +0162-hotplug-use-migrate-disable.patch.patch +0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch +0164-ftrace-migrate-disable-tracing.patch.patch +0165-tracing-Show-padding-as-unsigned-short.patch +0166-migrate-disable-rt-variant.patch.patch +0167-sched-Optimize-migrate_disable.patch +0168-sched-Generic-migrate_disable.patch +0169-sched-rt-Fix-migrate_enable-thinko.patch +0170-sched-teach-migrate_disable-about-atomic-contexts.patch +0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch +0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch +0173-sched-Have-migrate_disable-ignore-bounded-threads.patch +0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch +0175-ftrace-crap.patch.patch +0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch +0177-net-netif_rx_ni-migrate-disable.patch.patch +0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch +0179-lockdep-rt.patch.patch +0180-mutex-no-spin-on-rt.patch.patch +0181-softirq-local-lock.patch.patch +0182-softirq-Export-in_serving_softirq.patch +0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch +0184-softirq-Fix-unplug-deadlock.patch +0185-softirq-disable-softirq-stacks-for-rt.patch.patch +0186-softirq-make-fifo.patch.patch +0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch +0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch +0189-local-vars-migrate-disable.patch.patch +0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch +0191-rtmutex-lock-killable.patch.patch +0192-rtmutex-futex-prepare-rt.patch.patch +0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch +0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch +0195-spinlock-types-separate-raw.patch.patch +0196-rtmutex-avoid-include-hell.patch.patch +0197-rt-add-rt-spinlocks.patch.patch +0198-rt-add-rt-to-mutex-headers.patch.patch +0199-rwsem-add-rt-variant.patch.patch +0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch +0201-rwlocks-Fix-section-mismatch.patch +0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch +0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch +0204-rcu-Frob-softirq-test.patch +0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch +0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch +0207-rcu-more-fallout.patch.patch +0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch +0209-rt-rcutree-Move-misplaced-prototype.patch +0210-lglocks-rt.patch.patch +0211-serial-8250-Clean-up-the-locking-for-rt.patch +0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch +0213-drivers-tty-fix-omap-lock-crap.patch.patch +0214-rt-Improve-the-serial-console-PASS_LIMIT.patch +0215-fs-namespace-preemption-fix.patch +0216-mm-protect-activate-switch-mm.patch.patch +0217-fs-block-rt-support.patch.patch +0218-fs-ntfs-disable-interrupt-only-on-RT.patch +0219-x86-Convert-mce-timer-to-hrtimer.patch +0220-x86-stackprotector-Avoid-random-pool-on-rt.patch +0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch +0222-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch +0223-workqueue-use-get-cpu-light.patch.patch +0224-epoll.patch.patch +0225-mm-vmalloc.patch.patch +0226-workqueue-Fix-cpuhotplug-trainwreck.patch +0227-workqueue-Fix-PF_THREAD_BOUND-abuse.patch +0228-workqueue-Use-get_cpu_light-in-flush_gcwq.patch +0229-hotplug-stuff.patch.patch +0230-debugobjects-rt.patch.patch +0231-jump-label-rt.patch.patch +0232-skbufhead-raw-lock.patch.patch +0233-x86-no-perf-irq-work-rt.patch.patch +0234-console-make-rt-friendly.patch.patch +0235-printk-Disable-migration-instead-of-preemption.patch +0236-power-use-generic-rwsem-on-rt.patch +0237-power-disable-highmem-on-rt.patch.patch +0238-arm-disable-highmem-on-rt.patch.patch +0239-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch +0240-mips-disable-highmem-on-rt.patch.patch +0241-net-Avoid-livelock-in-net_tx_action-on-RT.patch +0242-ping-sysrq.patch.patch +0243-kgdb-serial-Short-term-workaround.patch +0244-add-sys-kernel-realtime-entry.patch +0245-mm-rt-kmap_atomic-scheduling.patch +0246-ipc-sem-Rework-semaphore-wakeups.patch +0247-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch +0248-x86-kvm-require-const-tsc-for-rt.patch.patch +0249-scsi-fcoe-rt-aware.patch.patch +0250-x86-crypto-Reduce-preempt-disabled-regions.patch +0251-dm-Make-rt-aware.patch +0252-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch +0253-seqlock-Prevent-rt-starvation.patch +0254-timer-Fix-hotplug-for-rt.patch +0255-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch +0256-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch +0257-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch +0258-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch +0259-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch +0260-softirq-Check-preemption-after-reenabling-interrupts.patch +0261-rt-Introduce-cpu_chill.patch +0262-fs-dcache-Use-cpu_chill-in-trylock-loops.patch +0263-net-Use-cpu_chill-instead-of-cpu_relax.patch +0264-kconfig-disable-a-few-options-rt.patch.patch +0265-kconfig-preempt-rt-full.patch.patch +0266-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch +0267-Linux-3.2.16-rt27-REBASE.patch diff --git a/debian/patches/series/base-extra b/debian/patches/series/base-extra index 856088575..490c4dd57 100644 --- a/debian/patches/series/base-extra +++ b/debian/patches/series/base-extra @@ -1,264 +1,265 @@ -+ features/all/rt/x86_64-patch-for-idle-notifiers.patch featureset=rt -+ features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch featureset=rt -+ features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch featureset=rt -+ features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch featureset=rt -+ features/all/rt/block-shorten-interrupt-disabled-regions.patch featureset=rt -+ features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch featureset=rt -+ features/all/rt/mips-enable-interrupts-in-signal.patch featureset=rt -+ features/all/rt/arm-enable-interrupts-in-signal-code.patch featureset=rt -+ features/all/rt/powerpc-85xx-mark-cascade-irq-no-thread.patch featureset=rt -+ features/all/rt/powerpc-wsp-opb-mark-demux-handler-nothread.patch featureset=rt -+ features/all/rt/powerpc-markipi-interrupts-nothread.patch featureset=rt -+ features/all/rt/power-allow-irq-threading.patch featureset=rt -+ features/all/rt/sched-keep-period-timer-alive-when-throttled.patch featureset=rt -+ features/all/rt/sched-prevent-boosting-from-throttling.patch featureset=rt -+ features/all/rt/time-remove-bogus-comments.patch featureset=rt -+ features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch featureset=rt -+ features/all/rt/x86-vdso-use-seqcount.patch featureset=rt -+ features/all/rt/ia64-vdso-use-seqcount.patch featureset=rt -+ features/all/rt/seqlock-remove-unused-functions.patch featureset=rt -+ features/all/rt/seqlock-use-seqcount.patch featureset=rt -+ features/all/rt/vfs-fstruct-move-code-out-of-seqcount-write-sections.patch featureset=rt -+ features/all/rt/timekeeping-split-xtime-lock.patch featureset=rt -+ features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch featureset=rt -+ features/all/rt/mm-memcg-shorten-preempt-disabled-section-around-event-checks.patch featureset=rt -+ features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch featureset=rt -+ features/all/rt/signal-revert-ptrace-preempt-magic.patch featureset=rt -+ features/all/rt/arm-mark-pmu-interupt-no-thread.patch featureset=rt -+ features/all/rt/arm-allow-irq-threading.patch featureset=rt -+ features/all/rt/arm-convert-boot-lock-to-raw.patch featureset=rt -+ features/all/rt/sched-create-schedule-preempt-disabled.patch featureset=rt -+ features/all/rt/sched-use-schedule-preempt-disabled.patch featureset=rt -+ features/all/rt/signals-do-not-wake-self.patch featureset=rt -+ features/all/rt/posix-timers-no-broadcast.patch featureset=rt -+ features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch featureset=rt -+ features/all/rt/oleg-signal-rt-fix.patch featureset=rt -+ features/all/rt/generic-cmpxchg-use-raw-local-irq.patch featureset=rt -+ features/all/rt/drivers-random-reduce-preempt-disabled-region.patch featureset=rt -+ features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch featureset=rt -+ features/all/rt/clocksource-tclib-allow-higher-clockrates.patch featureset=rt -+ features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch featureset=rt -+ features/all/rt/drivers-net-8139-disable-irq-nosync.patch featureset=rt -+ features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch featureset=rt -+ features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch featureset=rt -+ features/all/rt/preempt-mark-legitimated-no-resched-sites.patch featureset=rt -+ features/all/rt/mm-prepare-pf-disable-discoupling.patch featureset=rt -+ features/all/rt/arch-use-pagefault-disabled.patch featureset=rt -+ features/all/rt/peter_zijlstra-frob-pagefault_disable.patch featureset=rt -+ features/all/rt/peterz-raw_pagefault_disable.patch featureset=rt -+ features/all/rt/filemap-fix-up.patch featureset=rt -+ features/all/rt/mm-remove-preempt-count-from-pf.patch featureset=rt -+ features/all/rt/x86-highmem-warn.patch featureset=rt -+ features/all/rt/suspend-prevernt-might-sleep-splats.patch featureset=rt -+ features/all/rt/of-fixup-recursive-locking.patch featureset=rt -+ features/all/rt/of-convert-devtree-lock.patch featureset=rt -+ features/all/rt/list-add-list-last-entry.patch featureset=rt -+ features/all/rt/mm-page-alloc-use-list-last-entry.patch featureset=rt -+ features/all/rt/mm-slab-move-debug-out.patch featureset=rt -+ features/all/rt/pid-h-include-atomic-h.patch featureset=rt -+ features/all/rt/sysctl-include-atomic-h.patch featureset=rt -+ features/all/rt/net-flip-lock-dep-thingy.patch featureset=rt -+ features/all/rt/softirq-thread-do-softirq.patch featureset=rt -+ features/all/rt/softirq-split-out-code.patch featureset=rt -+ features/all/rt/x86-io-apic-migra-no-unmask.patch featureset=rt -+ features/all/rt/x86-32-fix-signal-crap.patch featureset=rt -+ features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch featureset=rt -+ features/all/rt/rcu-reduce-lock-section.patch featureset=rt -+ features/all/rt/locking-various-init-fixes.patch featureset=rt -+ features/all/rt/wait-provide-__wake_up_all_locked.patch featureset=rt -+ features/all/rt/pci-access-use-__wake_up_all_locked.patch featureset=rt -+ features/all/rt/latency-hist.patch featureset=rt -+ features/all/rt/hwlatdetect.patch featureset=rt -+ features/all/rt/early-printk-consolidate.patch featureset=rt -+ features/all/rt/printk-kill.patch featureset=rt -+ features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch featureset=rt -+ features/all/rt/rt-preempt-base-config.patch featureset=rt -+ features/all/rt/bug-rt-dependend-variants.patch featureset=rt -+ features/all/rt/local-irq-rt-depending-variants.patch featureset=rt -+ features/all/rt/preempt-nort-rt-variants.patch featureset=rt -+ features/all/rt/ata-disable-interrupts-if-non-rt.patch featureset=rt -+ features/all/rt/ide-use-nort-local-irq-variants.patch featureset=rt -+ features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch featureset=rt -+ features/all/rt/inpt-gameport-use-local-irq-nort.patch featureset=rt -+ features/all/rt/acpi-use-local-irq-nort.patch featureset=rt -+ features/all/rt/user-use-local-irq-nort.patch featureset=rt -+ features/all/rt/resource-counters-use-localirq-nort.patch featureset=rt -+ features/all/rt/usb-hcd-use-local-irq-nort.patch featureset=rt -+ features/all/rt/tty-use-local-irq-nort.patch featureset=rt -+ features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch featureset=rt -+ features/all/rt/signal-fix-up-rcu-wreckage.patch featureset=rt -+ features/all/rt/net-wireless-warn-nort.patch featureset=rt -+ features/all/rt/mm-cgroup-page-bit-spinlock.patch featureset=rt -+ features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch featureset=rt -+ features/all/rt/fs-jbd-replace-bh_state-lock.patch featureset=rt -+ features/all/rt/genirq-nodebug-shirq.patch featureset=rt -+ features/all/rt/genirq-disable-random-call-on-preempt-rt.patch featureset=rt -+ features/all/rt/genirq-disable-irqpoll-on-rt.patch featureset=rt -+ features/all/rt/genirq-force-threading.patch featureset=rt -+ features/all/rt/drivers-net-fix-livelock-issues.patch featureset=rt -+ features/all/rt/drivers-net-vortex-fix-locking-issues.patch featureset=rt -+ features/all/rt/drivers-net-gianfar-make-rt-aware.patch featureset=rt -+ features/all/rt/usb-fix-mouse-problem-copying-large-data.patch featureset=rt -+ features/all/rt/local-var.patch featureset=rt -+ features/all/rt/rt-local-irq-lock.patch featureset=rt -+ features/all/rt/cpu-rt-variants.patch featureset=rt -+ features/all/rt/mm-slab-wrap-functions.patch featureset=rt -+ features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch featureset=rt -+ features/all/rt/mm-slab-more-lock-breaks.patch featureset=rt -+ features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch featureset=rt -+ features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch featureset=rt -+ features/all/rt/mm-page-alloc-fix.patch featureset=rt -+ features/all/rt/mm-convert-swap-to-percpu-locked.patch featureset=rt -+ features/all/rt/mm-vmstat-fix-the-irq-lock-asymetry.patch featureset=rt -+ features/all/rt/mm-make-vmstat-rt-aware.patch featureset=rt -+ features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch featureset=rt -+ features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch featureset=rt -+ features/all/rt/mm-allow-slab-rt.patch featureset=rt -+ features/all/rt/radix-tree-rt-aware.patch featureset=rt -+ features/all/rt/panic-disable-random-on-rt.patch featureset=rt -+ features/all/rt/ipc-make-rt-aware.patch featureset=rt -+ features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch featureset=rt -+ features/all/rt/relay-fix-timer-madness.patch featureset=rt -+ features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch featureset=rt -+ features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch featureset=rt -+ features/all/rt/timers-prepare-for-full-preemption.patch featureset=rt -+ features/all/rt/timers-preempt-rt-support.patch featureset=rt -+ features/all/rt/timers-fix-timer-hotplug-on-rt.patch featureset=rt -+ features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch featureset=rt -+ features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch featureset=rt -+ features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch featureset=rt -+ features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch featureset=rt -+ features/all/rt/hrtimers-prepare-full-preemption.patch featureset=rt -+ features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch featureset=rt -+ features/all/rt/peter_zijlstra-frob-hrtimer.patch featureset=rt -+ features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch featureset=rt -+ features/all/rt/hrtimer-fix-reprogram-madness.patch featureset=rt -+ features/all/rt/timer-fd-avoid-live-lock.patch featureset=rt -+ features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch featureset=rt -+ features/all/rt/posix-timers-shorten-cpu-timers-thread.patch featureset=rt -+ features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch featureset=rt -+ features/all/rt/sched-delay-put-task.patch featureset=rt -+ features/all/rt/sched-limit-nr-migrate.patch featureset=rt -+ features/all/rt/sched-mmdrop-delayed.patch featureset=rt -+ features/all/rt/sched-rt-mutex-wakeup.patch featureset=rt -+ features/all/rt/sched-prevent-idle-boost.patch featureset=rt -+ features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch featureset=rt -+ features/all/rt/sched-load-balance-break-on-rq-contention.patch featureset=rt -+ features/all/rt/sched-cond-resched.patch featureset=rt -+ features/all/rt/cond-resched-softirq-rt.patch featureset=rt -+ features/all/rt/sched-no-work-when-pi-blocked.patch featureset=rt -+ features/all/rt/cond-resched-lock-rt-tweak.patch featureset=rt -+ features/all/rt/sched-disable-ttwu-queue.patch featureset=rt -+ features/all/rt/sched-disable-rt-group-sched-on-rt.patch featureset=rt -+ features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch featureset=rt -+ features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch featureset=rt -+ features/all/rt/stomp-machine-mark-stomper-thread.patch featureset=rt -+ features/all/rt/stomp-machine-raw-lock.patch featureset=rt -+ features/all/rt/hotplug-light-get-online-cpus.patch featureset=rt -+ features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch featureset=rt -+ features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch featureset=rt -+ features/all/rt/sched-migrate-disable.patch featureset=rt -+ features/all/rt/hotplug-use-migrate-disable.patch featureset=rt -+ features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch featureset=rt -+ features/all/rt/ftrace-migrate-disable-tracing.patch featureset=rt -+ features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch featureset=rt -+ features/all/rt/migrate-disable-rt-variant.patch featureset=rt -+ features/all/rt/peter_zijlstra-frob-migrate_disable.patch featureset=rt -+ features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch featureset=rt -+ features/all/rt/sched-rt-fix-migrate_enable-thinko.patch featureset=rt -+ features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch featureset=rt -+ features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch featureset=rt -+ features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch featureset=rt -+ features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch featureset=rt -+ features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch featureset=rt -+ features/all/rt/ftrace-crap.patch featureset=rt -+ features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch featureset=rt -+ features/all/rt/net-netif_rx_ni-migrate-disable.patch featureset=rt -+ features/all/rt/softirq-sanitize-softirq-pending.patch featureset=rt -+ features/all/rt/lockdep-no-softirq-accounting-on-rt.patch featureset=rt -+ features/all/rt/mutex-no-spin-on-rt.patch featureset=rt -+ features/all/rt/softirq-local-lock.patch featureset=rt -+ features/all/rt/softirq-export-in-serving-softirq.patch featureset=rt -+ features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch featureset=rt -+ features/all/rt/softirq-fix-unplug-deadlock.patch featureset=rt -+ features/all/rt/softirq-disable-softirq-stacks-for-rt.patch featureset=rt -+ features/all/rt/softirq-make-fifo.patch featureset=rt -+ features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch featureset=rt -+ features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch featureset=rt -+ features/all/rt/local-vars-migrate-disable.patch featureset=rt -+ features/all/rt/md-raid5-percpu-handling-rt-aware.patch featureset=rt -+ features/all/rt/rtmutex-lock-killable.patch featureset=rt -+ features/all/rt/rtmutex-futex-prepare-rt.patch featureset=rt -+ features/all/rt/futex-requeue-pi-fix.patch featureset=rt -+ features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch featureset=rt -+ features/all/rt/spinlock-types-separate-raw.patch featureset=rt -+ features/all/rt/rtmutex-avoid-include-hell.patch featureset=rt -+ features/all/rt/rt-add-rt-spinlock-to-headers.patch featureset=rt -+ features/all/rt/rt-add-rt-to-mutex-headers.patch featureset=rt -+ features/all/rt/rwsem-add-rt-variant.patch featureset=rt -+ features/all/rt/rt-add-rt-locks.patch featureset=rt -+ features/all/rt/tasklist-lock-fix-section-conflict.patch featureset=rt -+ features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch featureset=rt -+ features/all/rt/rcu-force-preempt-rcu-for-rt.patch featureset=rt -+ features/all/rt/peter_zijlstra-frob-rcu.patch featureset=rt -+ features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch featureset=rt -+ features/all/rt/rcu-fix-macro-substitution.patch featureset=rt -+ features/all/rt/rcu-tiny-merge-bh.patch featureset=rt -+ features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch featureset=rt -+ features/all/rt/rt-rcutree-warn-fix.patch featureset=rt -+ features/all/rt/lglocks-rt.patch featureset=rt -+ features/all/rt/drivers-serial-cleanup-locking-for-rt.patch featureset=rt -+ features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch featureset=rt -+ features/all/rt/drivers-tty-fix-omap-lock-crap.patch featureset=rt -+ features/all/rt/rt-serial-warn-fix.patch featureset=rt -+ features/all/rt/fs-namespace-preemption-fix.patch featureset=rt -+ features/all/rt/mm-protect-activate-switch-mm.patch featureset=rt -+ features/all/rt/fs-block-rt-support.patch featureset=rt -+ features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch featureset=rt -+ features/all/rt/x86-mce-timer-hrtimer.patch featureset=rt -+ features/all/rt/x86-stackprot-no-random-on-rt.patch featureset=rt -+ features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch featureset=rt -+ features/all/rt/x86-disable-debug-stack.patch featureset=rt -+ features/all/rt/workqueue-use-get-cpu-light.patch featureset=rt -+ features/all/rt/epoll-use-get-cpu-light.patch featureset=rt -+ features/all/rt/mm-vmalloc-use-get-cpu-light.patch featureset=rt -+ features/all/rt/workqueue-sanity.patch featureset=rt -+ features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch featureset=rt -+ features/all/rt/workqueue-hotplug-fix.patch featureset=rt -+ features/all/rt/workqueue-more-hotplug-fallout.patch featureset=rt -+ features/all/rt/debugobjects-rt.patch featureset=rt -+ features/all/rt/jump-label-rt.patch featureset=rt -+ features/all/rt/skbufhead-raw-lock.patch featureset=rt -+ features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch featureset=rt -+ features/all/rt/console-make-rt-friendly.patch featureset=rt -+ features/all/rt/printk-disable-migration-instead-of-preemption.patch featureset=rt -+ features/all/rt/power-use-generic-rwsem-on-rt.patch featureset=rt -+ features/all/rt/power-disable-highmem-on-rt.patch featureset=rt -+ features/all/rt/arm-disable-highmem-on-rt.patch featureset=rt -+ features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch featureset=rt -+ features/all/rt/mips-disable-highmem-on-rt.patch featureset=rt -+ features/all/rt/net-tx-action-avoid-livelock-on-rt.patch featureset=rt -+ features/all/rt/ping-sysrq.patch featureset=rt -+ features/all/rt/kgb-serial-hackaround.patch featureset=rt -+ features/all/rt/sysfs-realtime-entry.patch featureset=rt -+ features/all/rt/peter_zijlstra-re-_3_0-rt4.patch featureset=rt -+ features/all/rt/ipc-sem-rework-semaphore-wakeups.patch featureset=rt -+ features/all/rt/preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch featureset=rt -+ features/all/rt/x86-kvm-require-const-tsc-for-rt.patch featureset=rt -+ features/all/rt/scsi-fcoe-rt-aware.patch featureset=rt -+ features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch featureset=rt -+ features/all/rt/dm-make-rt-aware.patch featureset=rt -+ features/all/rt/cpumask-disable-offstack-on-rt.patch featureset=rt -+ features/all/rt/seqlock-prevent-rt-starvation.patch featureset=rt -+ features/all/rt/rfc-timer-fix-hotplug-for-rt.patch featureset=rt -+ features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch featureset=rt -+ features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch featureset=rt -+ 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/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/0001-x86-Call-idle-notifier-after-irq_enter.patch featureset=rt ++ features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch featureset=rt ++ features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch featureset=rt ++ features/all/rt/0004-x86-hpet-Disable-MSI-on-Lenovo-W510.patch featureset=rt ++ features/all/rt/0005-block-Shorten-interrupt-disabled-regions.patch featureset=rt ++ features/all/rt/0006-sched-Distangle-worker-accounting-from-rq-3Elock.patch featureset=rt ++ features/all/rt/0007-mips-enable-interrupts-in-signal.patch.patch featureset=rt ++ features/all/rt/0008-arm-enable-interrupts-in-signal-code.patch.patch featureset=rt ++ features/all/rt/0009-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch featureset=rt ++ features/all/rt/0010-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch featureset=rt ++ features/all/rt/0011-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch featureset=rt ++ features/all/rt/0012-powerpc-Allow-irq-threading.patch featureset=rt ++ features/all/rt/0013-sched-Keep-period-timer-ticking-when-throttling-acti.patch featureset=rt ++ features/all/rt/0014-sched-Do-not-throttle-due-to-PI-boosting.patch featureset=rt ++ features/all/rt/0015-time-Remove-bogus-comments.patch featureset=rt ++ features/all/rt/0016-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch featureset=rt ++ features/all/rt/0017-x86-vdso-Use-seqcount-instead-of-seqlock.patch featureset=rt ++ features/all/rt/0018-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch featureset=rt ++ features/all/rt/0019-seqlock-Remove-unused-functions.patch featureset=rt ++ features/all/rt/0020-seqlock-Use-seqcount.patch featureset=rt ++ features/all/rt/0021-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch featureset=rt ++ features/all/rt/0022-timekeeping-Split-xtime_lock.patch featureset=rt ++ features/all/rt/0023-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch featureset=rt ++ features/all/rt/0024-mm-memcg-shorten-preempt-disabled-section-around-eve.patch featureset=rt ++ features/all/rt/0025-tracing-Account-for-preempt-off-in-preempt_schedule.patch featureset=rt ++ features/all/rt/0026-signal-revert-ptrace-preempt-magic.patch.patch featureset=rt ++ features/all/rt/0027-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch featureset=rt ++ features/all/rt/0028-arm-Allow-forced-irq-threading.patch featureset=rt ++ features/all/rt/0029-preempt-rt-Convert-arm-boot_lock-to-raw.patch featureset=rt ++ features/all/rt/0030-sched-Create-schedule_preempt_disabled.patch featureset=rt ++ features/all/rt/0031-sched-Use-schedule_preempt_disabled.patch featureset=rt ++ features/all/rt/0032-signals-Do-not-wakeup-self.patch featureset=rt ++ features/all/rt/0033-posix-timers-Prevent-broadcast-signals.patch featureset=rt ++ features/all/rt/0034-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch featureset=rt ++ features/all/rt/0035-signal-x86-Delay-calling-signals-in-atomic.patch featureset=rt ++ features/all/rt/0036-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch featureset=rt ++ features/all/rt/0037-drivers-random-Reduce-preempt-disabled-region.patch featureset=rt ++ features/all/rt/0038-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch featureset=rt ++ features/all/rt/0039-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch featureset=rt ++ features/all/rt/0040-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch featureset=rt ++ features/all/rt/0041-drivers-net-Use-disable_irq_nosync-in-8139too.patch featureset=rt ++ features/all/rt/0042-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch featureset=rt ++ features/all/rt/0043-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch featureset=rt ++ features/all/rt/0044-preempt-mark-legitimated-no-resched-sites.patch.patch featureset=rt ++ features/all/rt/0045-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch featureset=rt ++ features/all/rt/0046-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch featureset=rt ++ features/all/rt/0047-mm-pagefault_disabled.patch featureset=rt ++ features/all/rt/0048-mm-raw_pagefault_disable.patch featureset=rt ++ features/all/rt/0049-filemap-fix-up.patch.patch featureset=rt ++ features/all/rt/0050-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch featureset=rt ++ features/all/rt/0051-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch featureset=rt ++ features/all/rt/0052-suspend-Prevent-might-sleep-splats.patch featureset=rt ++ features/all/rt/0053-OF-Fixup-resursive-locking-code-paths.patch featureset=rt ++ features/all/rt/0054-of-convert-devtree-lock.patch.patch featureset=rt ++ features/all/rt/0055-list-add-list-last-entry.patch.patch featureset=rt ++ features/all/rt/0056-mm-page-alloc-use-list-last-entry.patch.patch featureset=rt ++ features/all/rt/0057-mm-slab-move-debug-out.patch.patch featureset=rt ++ features/all/rt/0058-rwsem-inlcude-fix.patch.patch featureset=rt ++ features/all/rt/0059-sysctl-include-fix.patch.patch featureset=rt ++ features/all/rt/0060-net-flip-lock-dep-thingy.patch.patch featureset=rt ++ features/all/rt/0061-softirq-thread-do-softirq.patch.patch featureset=rt ++ features/all/rt/0062-softirq-split-out-code.patch.patch featureset=rt ++ features/all/rt/0063-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch featureset=rt ++ features/all/rt/0064-x86-32-fix-signal-crap.patch.patch featureset=rt ++ features/all/rt/0065-x86-Do-not-disable-preemption-in-int3-on-32bit.patch featureset=rt ++ features/all/rt/0066-rcu-Reduce-lock-section.patch featureset=rt ++ features/all/rt/0067-locking-various-init-fixes.patch.patch featureset=rt ++ features/all/rt/0068-wait-Provide-__wake_up_all_locked.patch featureset=rt ++ features/all/rt/0069-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch featureset=rt ++ features/all/rt/0070-latency-hist.patch.patch featureset=rt ++ features/all/rt/0071-hwlatdetect.patch.patch featureset=rt ++ features/all/rt/0073-early-printk-consolidate.patch.patch featureset=rt ++ features/all/rt/0074-printk-kill.patch.patch featureset=rt ++ features/all/rt/0075-printk-force_early_printk-boot-param-to-help-with-de.patch featureset=rt ++ features/all/rt/0076-rt-preempt-base-config.patch.patch featureset=rt ++ features/all/rt/0077-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch featureset=rt ++ features/all/rt/0078-rt-local_irq_-variants-depending-on-RT-RT.patch featureset=rt ++ features/all/rt/0079-preempt-Provide-preempt_-_-no-rt-variants.patch featureset=rt ++ features/all/rt/0080-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch featureset=rt ++ features/all/rt/0081-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch featureset=rt ++ features/all/rt/0082-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch featureset=rt ++ features/all/rt/0083-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch featureset=rt ++ features/all/rt/0084-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch featureset=rt ++ features/all/rt/0085-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch featureset=rt ++ features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch featureset=rt ++ features/all/rt/0087-usb-Use-local_irq_-_nort-variants.patch featureset=rt ++ features/all/rt/0088-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch featureset=rt ++ features/all/rt/0089-mm-scatterlist-dont-disable-irqs-on-RT.patch featureset=rt ++ features/all/rt/0090-signal-fix-up-rcu-wreckage.patch.patch featureset=rt ++ features/all/rt/0091-net-wireless-warn-nort.patch.patch featureset=rt ++ features/all/rt/0092-mm-Replace-cgroup_page-bit-spinlock.patch featureset=rt ++ features/all/rt/0093-buffer_head-Replace-bh_uptodate_lock-for-rt.patch featureset=rt ++ features/all/rt/0094-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch featureset=rt ++ features/all/rt/0095-genirq-Disable-DEBUG_SHIRQ-for-rt.patch featureset=rt ++ features/all/rt/0096-genirq-Disable-random-call-on-preempt-rt.patch featureset=rt ++ features/all/rt/0097-genirq-disable-irqpoll-on-rt.patch featureset=rt ++ features/all/rt/0098-genirq-force-threading.patch.patch featureset=rt ++ features/all/rt/0099-drivers-net-fix-livelock-issues.patch featureset=rt ++ features/all/rt/0100-drivers-net-vortex-fix-locking-issues.patch featureset=rt ++ features/all/rt/0101-drivers-net-gianfar-Make-RT-aware.patch featureset=rt ++ features/all/rt/0102-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch featureset=rt ++ features/all/rt/0103-local-var.patch.patch featureset=rt ++ features/all/rt/0104-rt-local-irq-lock.patch.patch featureset=rt ++ features/all/rt/0105-cpu-rt-variants.patch.patch featureset=rt ++ features/all/rt/0106-mm-slab-wrap-functions.patch.patch featureset=rt ++ features/all/rt/0107-slab-Fix-__do_drain-to-use-the-right-array-cache.patch featureset=rt ++ features/all/rt/0108-mm-More-lock-breaks-in-slab.c.patch featureset=rt ++ features/all/rt/0109-mm-page_alloc-rt-friendly-per-cpu-pages.patch featureset=rt ++ features/all/rt/0110-mm-page_alloc-reduce-lock-sections-further.patch featureset=rt ++ features/all/rt/0111-mm-page-alloc-fix.patch.patch featureset=rt ++ features/all/rt/0112-mm-convert-swap-to-percpu-locked.patch featureset=rt ++ features/all/rt/0113-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch featureset=rt ++ features/all/rt/0114-mm-make-vmstat-rt-aware.patch featureset=rt ++ features/all/rt/0115-mm-shrink-the-page-frame-to-rt-size.patch featureset=rt ++ features/all/rt/0116-ARM-Initialize-ptl-lock-for-vector-page.patch featureset=rt ++ features/all/rt/0117-mm-Allow-only-slab-on-RT.patch featureset=rt ++ features/all/rt/0118-radix-tree-rt-aware.patch.patch featureset=rt ++ features/all/rt/0119-panic-disable-random-on-rt.patch featureset=rt ++ features/all/rt/0120-ipc-Make-the-ipc-code-rt-aware.patch featureset=rt ++ features/all/rt/0121-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch featureset=rt ++ features/all/rt/0122-relay-fix-timer-madness.patch featureset=rt ++ features/all/rt/0123-net-ipv4-route-use-locks-on-up-rt.patch.patch featureset=rt ++ features/all/rt/0124-workqueue-avoid-the-lock-in-cpu-dying.patch.patch featureset=rt ++ features/all/rt/0125-timers-prepare-for-full-preemption.patch featureset=rt ++ features/all/rt/0126-timers-preempt-rt-support.patch featureset=rt ++ features/all/rt/0127-timers-fix-timer-hotplug-on-rt.patch featureset=rt ++ features/all/rt/0128-timers-mov-printk_tick-to-soft-interrupt.patch featureset=rt ++ features/all/rt/0129-timer-delay-waking-softirqs-from-the-jiffy-tick.patch featureset=rt ++ features/all/rt/0130-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch featureset=rt ++ features/all/rt/0131-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch featureset=rt ++ features/all/rt/0132-hrtimers-prepare-full-preemption.patch featureset=rt ++ features/all/rt/0133-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch featureset=rt ++ features/all/rt/0134-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch featureset=rt ++ features/all/rt/0135-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch featureset=rt ++ features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch featureset=rt ++ features/all/rt/0137-timer-fd-Prevent-live-lock.patch featureset=rt ++ features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch featureset=rt ++ features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch featureset=rt ++ features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch featureset=rt ++ features/all/rt/0141-sched-delay-put-task.patch.patch featureset=rt ++ features/all/rt/0142-sched-limit-nr-migrate.patch.patch featureset=rt ++ features/all/rt/0143-sched-mmdrop-delayed.patch.patch featureset=rt ++ features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch featureset=rt ++ features/all/rt/0145-sched-prevent-idle-boost.patch.patch featureset=rt ++ features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch featureset=rt ++ features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch featureset=rt ++ features/all/rt/0148-sched-cond-resched.patch.patch featureset=rt ++ features/all/rt/0149-cond-resched-softirq-fix.patch.patch featureset=rt ++ features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch featureset=rt ++ features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch featureset=rt ++ features/all/rt/0152-sched-disable-ttwu-queue.patch.patch featureset=rt ++ features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch featureset=rt ++ features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch featureset=rt ++ features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch featureset=rt ++ features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch featureset=rt ++ features/all/rt/0157-stomp-machine-raw-lock.patch.patch featureset=rt ++ features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch featureset=rt ++ features/all/rt/0159-hotplug-sync_unplug-No.patch featureset=rt ++ features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch featureset=rt ++ features/all/rt/0161-sched-migrate-disable.patch.patch featureset=rt ++ features/all/rt/0162-hotplug-use-migrate-disable.patch.patch featureset=rt ++ features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch featureset=rt ++ features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch featureset=rt ++ features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch featureset=rt ++ features/all/rt/0166-migrate-disable-rt-variant.patch.patch featureset=rt ++ features/all/rt/0167-sched-Optimize-migrate_disable.patch featureset=rt ++ features/all/rt/0168-sched-Generic-migrate_disable.patch featureset=rt ++ features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch featureset=rt ++ features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch featureset=rt ++ features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch featureset=rt ++ features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch featureset=rt ++ features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch featureset=rt ++ features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch featureset=rt ++ features/all/rt/0175-ftrace-crap.patch.patch featureset=rt ++ features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch featureset=rt ++ features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch featureset=rt ++ features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch featureset=rt ++ features/all/rt/0179-lockdep-rt.patch.patch featureset=rt ++ features/all/rt/0180-mutex-no-spin-on-rt.patch.patch featureset=rt ++ features/all/rt/0181-softirq-local-lock.patch.patch featureset=rt ++ features/all/rt/0182-softirq-Export-in_serving_softirq.patch featureset=rt ++ features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch featureset=rt ++ features/all/rt/0184-softirq-Fix-unplug-deadlock.patch featureset=rt ++ features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch featureset=rt ++ features/all/rt/0186-softirq-make-fifo.patch.patch featureset=rt ++ features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch featureset=rt ++ features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch featureset=rt ++ features/all/rt/0189-local-vars-migrate-disable.patch.patch featureset=rt ++ features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch featureset=rt ++ features/all/rt/0191-rtmutex-lock-killable.patch.patch featureset=rt ++ features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch featureset=rt ++ features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch featureset=rt ++ features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch featureset=rt ++ features/all/rt/0195-spinlock-types-separate-raw.patch.patch featureset=rt ++ features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch featureset=rt ++ features/all/rt/0197-rt-add-rt-spinlocks.patch.patch featureset=rt ++ features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch featureset=rt ++ features/all/rt/0199-rwsem-add-rt-variant.patch.patch featureset=rt ++ features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch featureset=rt ++ features/all/rt/0201-rwlocks-Fix-section-mismatch.patch featureset=rt ++ features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch featureset=rt ++ features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch featureset=rt ++ features/all/rt/0204-rcu-Frob-softirq-test.patch featureset=rt ++ features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch featureset=rt ++ features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch featureset=rt ++ features/all/rt/0207-rcu-more-fallout.patch.patch featureset=rt ++ features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch featureset=rt ++ features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch featureset=rt ++ features/all/rt/0210-lglocks-rt.patch.patch featureset=rt ++ features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch featureset=rt ++ features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch featureset=rt ++ features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch featureset=rt ++ features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch featureset=rt ++ features/all/rt/0215-fs-namespace-preemption-fix.patch featureset=rt ++ features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch featureset=rt ++ features/all/rt/0217-fs-block-rt-support.patch.patch featureset=rt ++ features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch featureset=rt ++ features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch featureset=rt ++ features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch featureset=rt ++ features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch featureset=rt ++ features/all/rt/0222-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch featureset=rt ++ features/all/rt/0223-workqueue-use-get-cpu-light.patch.patch featureset=rt ++ features/all/rt/0224-epoll.patch.patch featureset=rt ++ features/all/rt/0225-mm-vmalloc.patch.patch featureset=rt ++ features/all/rt/0226-workqueue-Fix-cpuhotplug-trainwreck.patch featureset=rt ++ features/all/rt/0227-workqueue-Fix-PF_THREAD_BOUND-abuse.patch featureset=rt ++ features/all/rt/0228-workqueue-Use-get_cpu_light-in-flush_gcwq.patch featureset=rt ++ features/all/rt/0229-hotplug-stuff.patch.patch featureset=rt ++ features/all/rt/0230-debugobjects-rt.patch.patch featureset=rt ++ features/all/rt/0231-jump-label-rt.patch.patch featureset=rt ++ features/all/rt/0232-skbufhead-raw-lock.patch.patch featureset=rt ++ features/all/rt/0233-x86-no-perf-irq-work-rt.patch.patch featureset=rt ++ features/all/rt/0234-console-make-rt-friendly.patch.patch featureset=rt ++ features/all/rt/0235-printk-Disable-migration-instead-of-preemption.patch featureset=rt ++ features/all/rt/0236-power-use-generic-rwsem-on-rt.patch featureset=rt ++ features/all/rt/0237-power-disable-highmem-on-rt.patch.patch featureset=rt ++ features/all/rt/0238-arm-disable-highmem-on-rt.patch.patch featureset=rt ++ features/all/rt/0239-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch featureset=rt ++ features/all/rt/0240-mips-disable-highmem-on-rt.patch.patch featureset=rt ++ features/all/rt/0241-net-Avoid-livelock-in-net_tx_action-on-RT.patch featureset=rt ++ features/all/rt/0242-ping-sysrq.patch.patch featureset=rt ++ features/all/rt/0243-kgdb-serial-Short-term-workaround.patch featureset=rt ++ features/all/rt/0244-add-sys-kernel-realtime-entry.patch featureset=rt ++ features/all/rt/0245-mm-rt-kmap_atomic-scheduling.patch featureset=rt ++ features/all/rt/0246-ipc-sem-Rework-semaphore-wakeups.patch featureset=rt ++ features/all/rt/0247-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch featureset=rt ++ features/all/rt/0248-x86-kvm-require-const-tsc-for-rt.patch.patch featureset=rt ++ features/all/rt/0249-scsi-fcoe-rt-aware.patch.patch featureset=rt ++ features/all/rt/0250-x86-crypto-Reduce-preempt-disabled-regions.patch featureset=rt ++ features/all/rt/0251-dm-Make-rt-aware.patch featureset=rt ++ features/all/rt/0252-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch featureset=rt ++ features/all/rt/0253-seqlock-Prevent-rt-starvation.patch featureset=rt ++ features/all/rt/0254-timer-Fix-hotplug-for-rt.patch featureset=rt ++ features/all/rt/0255-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch featureset=rt ++ features/all/rt/0256-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch featureset=rt ++ features/all/rt/0257-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch featureset=rt ++ features/all/rt/0258-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch featureset=rt ++ features/all/rt/0259-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch featureset=rt ++ features/all/rt/0260-softirq-Check-preemption-after-reenabling-interrupts.patch featureset=rt ++ features/all/rt/0261-rt-Introduce-cpu_chill.patch featureset=rt ++ features/all/rt/0262-fs-dcache-Use-cpu_chill-in-trylock-loops.patch featureset=rt ++ features/all/rt/0263-net-Use-cpu_chill-instead-of-cpu_relax.patch featureset=rt ++ features/all/rt/0264-kconfig-disable-a-few-options-rt.patch.patch featureset=rt ++ features/all/rt/0265-kconfig-preempt-rt-full.patch.patch featureset=rt ++ features/all/rt/0266-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch featureset=rt From d2f8bdbfcb86aa7cfb4e026924af99d1a65b5b77 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 12 May 2012 17:01:23 +0000 Subject: [PATCH 16/31] Prepare to release linux-2.6 (3.2.17-1). svn path=/dists/sid/linux-2.6/; revision=19000 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index dccd18e28..a8eeca3e2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -linux-2.6 (3.2.17-1) UNRELEASED; urgency=low +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 @@ -46,7 +46,7 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low * [armel] Introduce a new udeb module for leds and use it on kirkwoord kernel thanks to Simon Guinot (Closes: #671200) - -- Ben Hutchings Tue, 01 May 2012 00:43:48 +0100 + -- Ben Hutchings Sat, 12 May 2012 15:29:09 +0100 linux-2.6 (3.2.16-1) unstable; urgency=low From 56681910b7ce728dd542b88d20a4123e327478d6 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Wed, 16 May 2012 02:01:40 +0000 Subject: [PATCH 17/31] wacom: Add support for various tablet models (Closes: #671801) Mostly cherry-picked by Jonathan Nieder from input-next. I've added one extra fix on the end. svn path=/dists/sid/linux-2.6/; revision=19001 --- debian/changelog | 7 + ...m-cleanup-feature-report-for-bamboos.patch | 49 ++ ...com-remove-unused-bamboo-HID-parsing.patch | 43 ++ ...add-some-comments-to-wacom_parse_hid.patch | 72 +++ ...t-wacom-relax-Bamboo-stylus-ID-check.patch | 41 ++ ...m-read-3rd-gen-Bamboo-Touch-HID-data.patch | 121 +++++ ...rd-gen-Bamboo-P-Touch-packet-support.patch | 188 ++++++++ ...wacom-ignore-unwanted-bamboo-packets.patch | 63 +++ ...ut-wacom-add-support-for-Cintiq-24HD.patch | 160 +++++++ ...acom-add-LED-support-for-Cintiq-24HD.patch | 93 ++++ ...BTN_TOOL_FINGER-to-indicate-touch-de.patch | 83 ++++ ...e-switch-statement-for-wacom_tpc_irq.patch | 69 +++ ...om-add-missing-LEDS_CLASS-to-Kconfig.patch | 29 ++ ...3rd-gen-Bamboo-MT-when-4-fingers-are.patch | 32 ++ ...physical-size-calculation-for-3rd-ge.patch | 42 ++ ...put-wacom-isolate-input-registration.patch | 127 ++++++ ...heck-for-allocation-failure-in-probe.patch | 33 ++ ...put-wacom-wireless-monitor-framework.patch | 219 +++++++++ ...-create-inputs-when-wireless-connect.patch | 234 ++++++++++ ...-Input-wacom-wireless-battery-status.patch | 184 ++++++++ ...nput-wacom-add-basic-Intuos5-support.patch | 139 ++++++ ...Intuos5-Touch-Ring-ExpressKey-suppor.patch | 93 ++++ ...m-add-Intuos5-Touch-Ring-LED-support.patch | 163 +++++++ ...dd-Intuos5-multitouch-sensor-support.patch | 183 ++++++++ ...rieve-maximum-number-of-touch-points.patch | 249 ++++++++++ ...put-wacom-add-0xE5-MT-device-support.patch | 430 ++++++++++++++++++ ...rn-proper-error-if-usb_get_extra_des.patch | 41 ++ debian/patches/series/base | 28 ++ 28 files changed, 3215 insertions(+) create mode 100644 debian/patches/features/all/wacom/0001-Input-wacom-cleanup-feature-report-for-bamboos.patch create mode 100644 debian/patches/features/all/wacom/0002-Input-wacom-remove-unused-bamboo-HID-parsing.patch create mode 100644 debian/patches/features/all/wacom/0003-Input-wacom-add-some-comments-to-wacom_parse_hid.patch create mode 100644 debian/patches/features/all/wacom/0004-Input-wacom-relax-Bamboo-stylus-ID-check.patch create mode 100644 debian/patches/features/all/wacom/0005-Input-wacom-read-3rd-gen-Bamboo-Touch-HID-data.patch create mode 100644 debian/patches/features/all/wacom/0006-Input-wacom-3rd-gen-Bamboo-P-Touch-packet-support.patch create mode 100644 debian/patches/features/all/wacom/0007-Input-wacom-ignore-unwanted-bamboo-packets.patch create mode 100644 debian/patches/features/all/wacom/0008-Input-wacom-add-support-for-Cintiq-24HD.patch create mode 100644 debian/patches/features/all/wacom/0009-Input-wacom-add-LED-support-for-Cintiq-24HD.patch create mode 100644 debian/patches/features/all/wacom/0010-Input-wacom-use-BTN_TOOL_FINGER-to-indicate-touch-de.patch create mode 100644 debian/patches/features/all/wacom/0011-Input-wacom-use-switch-statement-for-wacom_tpc_irq.patch create mode 100644 debian/patches/features/all/wacom/0012-Input-wacom-add-missing-LEDS_CLASS-to-Kconfig.patch create mode 100644 debian/patches/features/all/wacom/0013-Input-wacom-fix-3rd-gen-Bamboo-MT-when-4-fingers-are.patch create mode 100644 debian/patches/features/all/wacom/0014-Input-wacom-fix-physical-size-calculation-for-3rd-ge.patch create mode 100644 debian/patches/features/all/wacom/0015-Input-wacom-isolate-input-registration.patch create mode 100644 debian/patches/features/all/wacom/0016-Input-wacom-check-for-allocation-failure-in-probe.patch create mode 100644 debian/patches/features/all/wacom/0017-Input-wacom-wireless-monitor-framework.patch create mode 100644 debian/patches/features/all/wacom/0018-Input-wacom-create-inputs-when-wireless-connect.patch create mode 100644 debian/patches/features/all/wacom/0019-Input-wacom-wireless-battery-status.patch create mode 100644 debian/patches/features/all/wacom/0020-Input-wacom-add-basic-Intuos5-support.patch create mode 100644 debian/patches/features/all/wacom/0021-Input-wacom-add-Intuos5-Touch-Ring-ExpressKey-suppor.patch create mode 100644 debian/patches/features/all/wacom/0022-Input-wacom-add-Intuos5-Touch-Ring-LED-support.patch create mode 100644 debian/patches/features/all/wacom/0023-Input-wacom-add-Intuos5-multitouch-sensor-support.patch create mode 100644 debian/patches/features/all/wacom/0024-Input-wacom-retrieve-maximum-number-of-touch-points.patch create mode 100644 debian/patches/features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch create mode 100644 debian/patches/features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch diff --git a/debian/changelog b/debian/changelog index a8eeca3e2..801a289bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +linux-2.6 (3.2.17-2) UNRELEASED; urgency=low + + [ Jonathan Nieder ] + * wacom: Add support for various tablet models (Closes: #671801) + + -- Ben Hutchings Wed, 16 May 2012 02:19:30 +0100 + linux-2.6 (3.2.17-1) unstable; urgency=low * New upstream stable update: diff --git a/debian/patches/features/all/wacom/0001-Input-wacom-cleanup-feature-report-for-bamboos.patch b/debian/patches/features/all/wacom/0001-Input-wacom-cleanup-feature-report-for-bamboos.patch new file mode 100644 index 000000000..44fc8f99f --- /dev/null +++ b/debian/patches/features/all/wacom/0001-Input-wacom-cleanup-feature-report-for-bamboos.patch @@ -0,0 +1,49 @@ +From: Chris Bagwell +Date: Wed, 26 Oct 2011 22:24:22 -0700 +Subject: Input: wacom - cleanup feature report for bamboos + +commit 6e8ec5379c7ab9a57190e23af173aee74f88e54a upstream. + +Only the stylus interface on Bamboo's has a feature report that can +be used to set to wacom mode. The touch interface only has 1 report mode +and will return errors for those get/sets requests. + +The get request was always erroring out because it was not marked as +an input request. Only down side of error was needlessly resending the +set request 5 times. + +Signed-off-by: Chris Bagwell +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 1c1b7b43cf92..8669096a8ea1 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -66,7 +66,8 @@ static int wacom_get_report(struct usb_interface *intf, u8 type, u8 id, + do { + retval = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), + USB_REQ_GET_REPORT, +- USB_TYPE_CLASS | USB_RECIP_INTERFACE, ++ USB_DIR_IN | USB_TYPE_CLASS | ++ USB_RECIP_INTERFACE, + (type << 8) + id, + intf->altsetting[0].desc.bInterfaceNumber, + buf, size, 100); +@@ -348,7 +349,8 @@ static int wacom_query_tablet_data(struct usb_interface *intf, struct wacom_feat + WAC_HID_FEATURE_REPORT, + report_id, rep_data, 4, 1); + } while ((error < 0 || rep_data[1] != 4) && limit++ < WAC_MSG_RETRIES); +- } else if (features->type != TABLETPC) { ++ } else if (features->type != TABLETPC && ++ features->device_type == BTN_TOOL_PEN) { + do { + rep_data[0] = 2; + rep_data[1] = 2; +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0002-Input-wacom-remove-unused-bamboo-HID-parsing.patch b/debian/patches/features/all/wacom/0002-Input-wacom-remove-unused-bamboo-HID-parsing.patch new file mode 100644 index 000000000..5db714165 --- /dev/null +++ b/debian/patches/features/all/wacom/0002-Input-wacom-remove-unused-bamboo-HID-parsing.patch @@ -0,0 +1,43 @@ +From: Chris Bagwell +Date: Wed, 26 Oct 2011 22:26:16 -0700 +Subject: Input: wacom - remove unused bamboo HID parsing + +commit fc72bf758f943fbc5c0d9dd14575b91996513c77 upstream. + +Bamboo's do not declared a Digitizer-Stylus so the if() was +never executed. wacom_features already contains correct stylus +packet length. + +Signed-off-by: Chris Bagwell +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 8669096a8ea1..f3dfb827437a 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -245,8 +245,6 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi + /* penabled only accepts exact bytes of data */ + if (features->type == TABLETPC2FG) + features->pktlen = WACOM_PKGLEN_GRAPHIRE; +- if (features->type == BAMBOO_PT) +- features->pktlen = WACOM_PKGLEN_BBFUN; + features->device_type = BTN_TOOL_PEN; + features->x_max = + get_unaligned_le16(&report[i + 3]); +@@ -288,8 +286,6 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi + /* penabled only accepts exact bytes of data */ + if (features->type == TABLETPC2FG) + features->pktlen = WACOM_PKGLEN_GRAPHIRE; +- if (features->type == BAMBOO_PT) +- features->pktlen = WACOM_PKGLEN_BBFUN; + features->device_type = BTN_TOOL_PEN; + features->y_max = + get_unaligned_le16(&report[i + 3]); +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0003-Input-wacom-add-some-comments-to-wacom_parse_hid.patch b/debian/patches/features/all/wacom/0003-Input-wacom-add-some-comments-to-wacom_parse_hid.patch new file mode 100644 index 000000000..0ef066dfc --- /dev/null +++ b/debian/patches/features/all/wacom/0003-Input-wacom-add-some-comments-to-wacom_parse_hid.patch @@ -0,0 +1,72 @@ +From: Chris Bagwell +Date: Wed, 26 Oct 2011 22:26:59 -0700 +Subject: Input: wacom - add some comments to wacom_parse_hid + +commit 428f85884bb4a88737e5fa76535ede06a33fe162 upstream. + +Signed-off-by: Chris Bagwell +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 37 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 36 insertions(+), 1 deletion(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index f3dfb827437a..e648f9ac4d82 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -165,7 +165,37 @@ static void wacom_close(struct input_dev *dev) + usb_autopm_put_interface(wacom->intf); + } + +-static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc, ++/* ++ * Interface Descriptor of wacom devices can be incomplete and ++ * inconsistent so wacom_features table is used to store stylus ++ * device's packet lengths, various maximum values, and tablet ++ * resolution based on product ID's. ++ * ++ * For devices that contain 2 interfaces, wacom_features table is ++ * inaccurate for the touch interface. Since the Interface Descriptor ++ * for touch interfaces has pretty complete data, this function exists ++ * to query tablet for this missing information instead of hard coding in ++ * an additional table. ++ * ++ * A typical Interface Descriptor for a stylus will contain a ++ * boot mouse application collection that is not of interest and this ++ * function will ignore it. ++ * ++ * It also contains a digitizer application collection that also is not ++ * of interest since any information it contains would be duplicate ++ * of what is in wacom_features. Usually it defines a report of an array ++ * of bytes that could be used as max length of the stylus packet returned. ++ * If it happens to define a Digitizer-Stylus Physical Collection then ++ * the X and Y logical values contain valid data but it is ignored. ++ * ++ * A typical Interface Descriptor for a touch interface will contain a ++ * Digitizer-Finger Physical Collection which will define both logical ++ * X/Y maximum as well as the physical size of tablet. Since touch ++ * interfaces haven't supported pressure or distance, this is enough ++ * information to override invalid values in the wacom_features table. ++ */ ++static int wacom_parse_hid(struct usb_interface *intf, ++ struct hid_descriptor *hid_desc, + struct wacom_features *features) + { + struct usb_device *dev = interface_to_usbdev(intf); +@@ -299,6 +329,11 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi + i++; + break; + ++ /* ++ * Requiring Stylus Usage will ignore boot mouse ++ * X/Y values and some cases of invalid Digitizer X/Y ++ * values commonly reported. ++ */ + case HID_USAGE_STYLUS: + pen = 1; + i++; +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0004-Input-wacom-relax-Bamboo-stylus-ID-check.patch b/debian/patches/features/all/wacom/0004-Input-wacom-relax-Bamboo-stylus-ID-check.patch new file mode 100644 index 000000000..b2f78555c --- /dev/null +++ b/debian/patches/features/all/wacom/0004-Input-wacom-relax-Bamboo-stylus-ID-check.patch @@ -0,0 +1,41 @@ +From: Chris Bagwell +Date: Wed, 26 Oct 2011 22:28:34 -0700 +Subject: Input: wacom - relax Bamboo stylus ID check + +commit c5981411f60c31f0dff6f0f98d2d3711384badaf upstream. + +Bit 0x02 always means tip versus eraser. Bit 0x01 is something related +to version of stylus and different values are starting to be used. + +Relaxing proximity check is required to be used with 3rd generation +Bamboo Pen and Touch tablets. + +Signed-off-by: Chris Bagwell +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 2ee47d01a3b4..f00c70e1adb0 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -843,12 +843,7 @@ static int wacom_bpt_pen(struct wacom_wac *wacom) + unsigned char *data = wacom->data; + int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0; + +- /* +- * Similar to Graphire protocol, data[1] & 0x20 is proximity and +- * data[1] & 0x18 is tool ID. 0x30 is safety check to ignore +- * 2 unused tool ID's. +- */ +- prox = (data[1] & 0x30) == 0x30; ++ prox = (data[1] & 0x20) == 0x20; + + /* + * All reports shared between PEN and RUBBER tool must be +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0005-Input-wacom-read-3rd-gen-Bamboo-Touch-HID-data.patch b/debian/patches/features/all/wacom/0005-Input-wacom-read-3rd-gen-Bamboo-Touch-HID-data.patch new file mode 100644 index 000000000..06280b469 --- /dev/null +++ b/debian/patches/features/all/wacom/0005-Input-wacom-read-3rd-gen-Bamboo-Touch-HID-data.patch @@ -0,0 +1,121 @@ +From: Chris Bagwell +Date: Wed, 26 Oct 2011 22:32:52 -0700 +Subject: Input: wacom - read 3rd gen Bamboo Touch HID data + +commit 4134361af6e099e5f477663fed1d49f0cf29eb4f upstream. + +Override invalid pen based pktlen and x/y_max with touch +values from HID report. + +Since active area of pen and touch are same on these +devices, set physical x/y size while pen x/y_max and +resolution are still valid. + +Signed-off-by: Chris Bagwell +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 49 ++++++++++++++++++++++++++++++++++++-- + drivers/input/tablet/wacom_wac.h | 1 + + 2 files changed, 48 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index e648f9ac4d82..2fe21d1a18b7 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -28,7 +28,9 @@ + #define HID_USAGE_Y_TILT 0x3e + #define HID_USAGE_FINGER 0x22 + #define HID_USAGE_STYLUS 0x20 +-#define HID_COLLECTION 0xc0 ++#define HID_COLLECTION 0xa1 ++#define HID_COLLECTION_LOGICAL 0x02 ++#define HID_COLLECTION_END 0xc0 + + enum { + WCM_UNDEFINED = 0, +@@ -165,6 +167,35 @@ static void wacom_close(struct input_dev *dev) + usb_autopm_put_interface(wacom->intf); + } + ++static int wacom_parse_logical_collection(unsigned char *report, ++ struct wacom_features *features) ++{ ++ int length = 0; ++ ++ if (features->type == BAMBOO_PT) { ++ ++ /* Logical collection is only used by 3rd gen Bamboo Touch */ ++ features->pktlen = WACOM_PKGLEN_BBTOUCH3; ++ features->device_type = BTN_TOOL_DOUBLETAP; ++ ++ /* ++ * Stylus and Touch have same active area ++ * so compute physical size based on stylus ++ * data before its overwritten. ++ */ ++ features->x_phy = ++ (features->x_max * features->x_resolution) / 100; ++ features->y_phy = ++ (features->y_max * features->y_resolution) / 100; ++ ++ features->x_max = features->y_max = ++ get_unaligned_le16(&report[10]); ++ ++ length = 11; ++ } ++ return length; ++} ++ + /* + * Interface Descriptor of wacom devices can be incomplete and + * inconsistent so wacom_features table is used to store stylus +@@ -193,6 +224,10 @@ static void wacom_close(struct input_dev *dev) + * X/Y maximum as well as the physical size of tablet. Since touch + * interfaces haven't supported pressure or distance, this is enough + * information to override invalid values in the wacom_features table. ++ * ++ * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical ++ * Collection. Instead they define a Logical Collection with a single ++ * Logical Maximum for both X and Y. + */ + static int wacom_parse_hid(struct usb_interface *intf, + struct hid_descriptor *hid_desc, +@@ -341,10 +376,20 @@ static int wacom_parse_hid(struct usb_interface *intf, + } + break; + +- case HID_COLLECTION: ++ case HID_COLLECTION_END: + /* reset UsagePage and Finger */ + finger = usage = 0; + break; ++ ++ case HID_COLLECTION: ++ i++; ++ switch (report[i]) { ++ case HID_COLLECTION_LOGICAL: ++ i += wacom_parse_logical_collection(&report[i], ++ features); ++ break; ++ } ++ break; + } + } + +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 53eb71b68330..af94e6d9d6a9 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -22,6 +22,7 @@ + #define WACOM_PKGLEN_TPC1FG 5 + #define WACOM_PKGLEN_TPC2FG 14 + #define WACOM_PKGLEN_BBTOUCH 20 ++#define WACOM_PKGLEN_BBTOUCH3 64 + + /* device IDs */ + #define STYLUS_DEVICE_ID 0x02 +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0006-Input-wacom-3rd-gen-Bamboo-P-Touch-packet-support.patch b/debian/patches/features/all/wacom/0006-Input-wacom-3rd-gen-Bamboo-P-Touch-packet-support.patch new file mode 100644 index 000000000..758a90892 --- /dev/null +++ b/debian/patches/features/all/wacom/0006-Input-wacom-3rd-gen-Bamboo-P-Touch-packet-support.patch @@ -0,0 +1,188 @@ +From: Chris Bagwell +Date: Wed, 26 Oct 2011 22:34:21 -0700 +Subject: Input: wacom - 3rd gen Bamboo P&Touch packet support + +commit 73149ab8433c0ade5a4f79b137af2a081e8a5d13 upstream. + +3rd generation Bamboo Pen and Touch tablets reuse the older +stylus packet but add an extra fixed zero pad byte to end. + +The touch packets are quite different since it supports tracking +of up to 16 touches. The packet is 64-byte fixed size but contains +up to 15 smaller messages indicating data for a single touch or +for tablet button presses. + +Signed-off-by: Chris Bagwell +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 94 ++++++++++++++++++++++++++++++++++++-- + drivers/input/tablet/wacom_wac.h | 3 +- + 2 files changed, 92 insertions(+), 5 deletions(-) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index f00c70e1adb0..c456ab04efcf 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -837,6 +837,64 @@ static int wacom_bpt_touch(struct wacom_wac *wacom) + return 0; + } + ++static void wacom_bpt3_touch_msg(struct wacom_wac *wacom, unsigned char *data) ++{ ++ struct input_dev *input = wacom->input; ++ int slot_id = data[0] - 2; /* data[0] is between 2 and 17 */ ++ bool touch = data[1] & 0x80; ++ ++ touch = touch && !wacom->shared->stylus_in_proximity; ++ ++ input_mt_slot(input, slot_id); ++ input_mt_report_slot_state(input, MT_TOOL_FINGER, touch); ++ ++ if (touch) { ++ int x = (data[2] << 4) | (data[4] >> 4); ++ int y = (data[3] << 4) | (data[4] & 0x0f); ++ int w = data[6]; ++ ++ input_report_abs(input, ABS_MT_POSITION_X, x); ++ input_report_abs(input, ABS_MT_POSITION_Y, y); ++ input_report_abs(input, ABS_MT_TOUCH_MAJOR, w); ++ } ++} ++ ++static void wacom_bpt3_button_msg(struct wacom_wac *wacom, unsigned char *data) ++{ ++ struct input_dev *input = wacom->input; ++ ++ input_report_key(input, BTN_LEFT, (data[1] & 0x08) != 0); ++ input_report_key(input, BTN_FORWARD, (data[1] & 0x04) != 0); ++ input_report_key(input, BTN_BACK, (data[1] & 0x02) != 0); ++ input_report_key(input, BTN_RIGHT, (data[1] & 0x01) != 0); ++} ++ ++static int wacom_bpt3_touch(struct wacom_wac *wacom) ++{ ++ struct input_dev *input = wacom->input; ++ unsigned char *data = wacom->data; ++ int count = data[1] & 0x03; ++ int i; ++ ++ /* data has up to 7 fixed sized 8-byte messages starting at data[2] */ ++ for (i = 0; i < count; i++) { ++ int offset = (8 * i) + 2; ++ int msg_id = data[offset]; ++ ++ if (msg_id >= 2 && msg_id <= 17) ++ wacom_bpt3_touch_msg(wacom, data + offset); ++ else if (msg_id == 128) ++ wacom_bpt3_button_msg(wacom, data + offset); ++ ++ } ++ ++ input_mt_report_pointer_emulation(input, true); ++ ++ input_sync(input); ++ ++ return 0; ++} ++ + static int wacom_bpt_pen(struct wacom_wac *wacom) + { + struct input_dev *input = wacom->input; +@@ -907,7 +965,9 @@ static int wacom_bpt_irq(struct wacom_wac *wacom, size_t len) + { + if (len == WACOM_PKGLEN_BBTOUCH) + return wacom_bpt_touch(wacom); +- else if (len == WACOM_PKGLEN_BBFUN) ++ else if (len == WACOM_PKGLEN_BBTOUCH3) ++ return wacom_bpt3_touch(wacom); ++ else if (len == WACOM_PKGLEN_BBFUN || len == WACOM_PKGLEN_BBPEN) + return wacom_bpt_pen(wacom); + + return 0; +@@ -1026,9 +1086,9 @@ void wacom_setup_device_quirks(struct wacom_features *features) + features->type == BAMBOO_PT) + features->quirks |= WACOM_QUIRK_MULTI_INPUT; + +- /* quirks for bamboo touch */ ++ /* quirk for bamboo touch with 2 low res touches */ + if (features->type == BAMBOO_PT && +- features->device_type == BTN_TOOL_DOUBLETAP) { ++ features->pktlen == WACOM_PKGLEN_BBTOUCH) { + features->x_max <<= 5; + features->y_max <<= 5; + features->x_fuzz <<= 5; +@@ -1235,7 +1295,21 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + __set_bit(BTN_TOOL_FINGER, input_dev->keybit); + __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); + +- input_mt_init_slots(input_dev, 2); ++ if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { ++ __set_bit(BTN_TOOL_TRIPLETAP, ++ input_dev->keybit); ++ __set_bit(BTN_TOOL_QUADTAP, ++ input_dev->keybit); ++ ++ input_mt_init_slots(input_dev, 16); ++ ++ input_set_abs_params(input_dev, ++ ABS_MT_TOUCH_MAJOR, ++ 0, 255, 0, 0); ++ } else { ++ input_mt_init_slots(input_dev, 2); ++ } ++ + input_set_abs_params(input_dev, ABS_MT_POSITION_X, + 0, features->x_max, + features->x_fuzz, 0); +@@ -1504,6 +1578,15 @@ static const struct wacom_features wacom_features_0xDA = + static struct wacom_features wacom_features_0xDB = + { "Wacom Bamboo 2FG 6x8 SE", WACOM_PKGLEN_BBFUN, 21648, 13700, 1023, + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++static const struct wacom_features wacom_features_0xDD = ++ { "Wacom Bamboo Connect", WACOM_PKGLEN_BBPEN, 14720, 9200, 1023, ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++static const struct wacom_features wacom_features_0xDE = ++ { "Wacom Bamboo 16FG 4x5", WACOM_PKGLEN_BBPEN, 14720, 9200, 1023, ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++static const struct wacom_features wacom_features_0xDF = ++ { "Wacom Bamboo 16FG 6x8", WACOM_PKGLEN_BBPEN, 21648, 13700, 1023, ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + static const struct wacom_features wacom_features_0x6004 = + { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; +@@ -1599,6 +1682,9 @@ const struct usb_device_id wacom_ids[] = { + { USB_DEVICE_WACOM(0xD8) }, + { USB_DEVICE_WACOM(0xDA) }, + { USB_DEVICE_WACOM(0xDB) }, ++ { USB_DEVICE_WACOM(0xDD) }, ++ { USB_DEVICE_WACOM(0xDE) }, ++ { USB_DEVICE_WACOM(0xDF) }, + { USB_DEVICE_WACOM(0xF0) }, + { USB_DEVICE_WACOM(0xCC) }, + { USB_DEVICE_WACOM(0x90) }, +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index af94e6d9d6a9..27f1d1c203a1 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -12,7 +12,7 @@ + #include + + /* maximum packet length for USB devices */ +-#define WACOM_PKGLEN_MAX 32 ++#define WACOM_PKGLEN_MAX 64 + + /* packet length for individual models */ + #define WACOM_PKGLEN_PENPRTN 7 +@@ -23,6 +23,7 @@ + #define WACOM_PKGLEN_TPC2FG 14 + #define WACOM_PKGLEN_BBTOUCH 20 + #define WACOM_PKGLEN_BBTOUCH3 64 ++#define WACOM_PKGLEN_BBPEN 10 + + /* device IDs */ + #define STYLUS_DEVICE_ID 0x02 +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0007-Input-wacom-ignore-unwanted-bamboo-packets.patch b/debian/patches/features/all/wacom/0007-Input-wacom-ignore-unwanted-bamboo-packets.patch new file mode 100644 index 000000000..deb175346 --- /dev/null +++ b/debian/patches/features/all/wacom/0007-Input-wacom-ignore-unwanted-bamboo-packets.patch @@ -0,0 +1,63 @@ +From: Chris Bagwell +Date: Mon, 7 Nov 2011 19:52:42 -0800 +Subject: Input: wacom - ignore unwanted bamboo packets + +commit 5a6c865d9861efdd066db1b5da491ebc2ff5926d upstream. + +Bamboo's Pen and Touch packets always start with a value +of 0x02 in first byte. In 3rd gen Bamboo's, the hw is now +periodically sending some additional packets with unrelated data +and uses a value other than 0x02 to inform driver this. + +Ignore those packets now. + +This was reported by users as bad behavior in Gimp. The +invalid packets being processed made the stylus report +out of proximity for the 1 packet and this triggered some +secondary bug which caused Gimp to stop drawing until +user really took pen out of proximity of tablet. + +Signed-off-by: Chris Bagwell +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index c456ab04efcf..551f3a3156dc 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -799,6 +799,9 @@ static int wacom_bpt_touch(struct wacom_wac *wacom) + unsigned char *data = wacom->data; + int i; + ++ if (data[0] != 0x02) ++ return 0; ++ + for (i = 0; i < 2; i++) { + int offset = (data[1] & 0x80) ? (8 * i) : (9 * i); + bool touch = data[offset + 3] & 0x80; +@@ -876,6 +879,9 @@ static int wacom_bpt3_touch(struct wacom_wac *wacom) + int count = data[1] & 0x03; + int i; + ++ if (data[0] != 0x02) ++ return 0; ++ + /* data has up to 7 fixed sized 8-byte messages starting at data[2] */ + for (i = 0; i < count; i++) { + int offset = (8 * i) + 2; +@@ -901,6 +907,9 @@ static int wacom_bpt_pen(struct wacom_wac *wacom) + unsigned char *data = wacom->data; + int prox = 0, x = 0, y = 0, p = 0, d = 0, pen = 0, btn1 = 0, btn2 = 0; + ++ if (data[0] != 0x02) ++ return 0; ++ + prox = (data[1] & 0x20) == 0x20; + + /* +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0008-Input-wacom-add-support-for-Cintiq-24HD.patch b/debian/patches/features/all/wacom/0008-Input-wacom-add-support-for-Cintiq-24HD.patch new file mode 100644 index 000000000..d7657d5f0 --- /dev/null +++ b/debian/patches/features/all/wacom/0008-Input-wacom-add-support-for-Cintiq-24HD.patch @@ -0,0 +1,160 @@ +From: Jason Gerecke +Date: Mon, 12 Dec 2011 00:11:45 -0800 +Subject: Input: wacom - add support for Cintiq 24HD + +commit 803296b678a43005e3bc0aaa1951d211bd76a054 upstream. + +Adds support for the Cintiq 24HD. There are two quirks about this +model that haven't been seen in prior tablets. First, a second +touch ring is present on this display; it is being exposed via the +ABS_THROTTLE axis. Second, three capacitive buttons at the top of +the unit are available; though physically a touch strip, we report +the use of these buttons with generic KEY_ events. + +Signed-off-by: Jason Gerecke +Reviewed-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 77 +++++++++++++++++++++++++++++++++++++- + drivers/input/tablet/wacom_wac.h | 1 + + 2 files changed, 77 insertions(+), 1 deletion(-) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 551f3a3156dc..88672ec296c1 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -452,7 +452,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom) + if ((data[1] & 0xb8) == 0xa0) { + t = (data[6] << 2) | ((data[7] >> 6) & 3); + if ((features->type >= INTUOS4S && features->type <= INTUOS4L) || +- features->type == WACOM_21UX2) { ++ features->type == WACOM_21UX2 || features->type == WACOM_24HD) { + t = (t << 1) | (data[1] & 1); + } + input_report_abs(input, ABS_PRESSURE, t); +@@ -519,6 +519,56 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + input_report_key(input, wacom->tool[1], 0); + input_report_abs(input, ABS_MISC, 0); + } ++ } else if (features->type == WACOM_24HD) { ++ input_report_key(input, BTN_0, (data[6] & 0x01)); ++ input_report_key(input, BTN_1, (data[6] & 0x02)); ++ input_report_key(input, BTN_2, (data[6] & 0x04)); ++ input_report_key(input, BTN_3, (data[6] & 0x08)); ++ input_report_key(input, BTN_4, (data[6] & 0x10)); ++ input_report_key(input, BTN_5, (data[6] & 0x20)); ++ input_report_key(input, BTN_6, (data[6] & 0x40)); ++ input_report_key(input, BTN_7, (data[6] & 0x80)); ++ input_report_key(input, BTN_8, (data[8] & 0x01)); ++ input_report_key(input, BTN_9, (data[8] & 0x02)); ++ input_report_key(input, BTN_A, (data[8] & 0x04)); ++ input_report_key(input, BTN_B, (data[8] & 0x08)); ++ input_report_key(input, BTN_C, (data[8] & 0x10)); ++ input_report_key(input, BTN_X, (data[8] & 0x20)); ++ input_report_key(input, BTN_Y, (data[8] & 0x40)); ++ input_report_key(input, BTN_Z, (data[8] & 0x80)); ++ ++ /* ++ * Three "buttons" are available on the 24HD which are ++ * physically implemented as a touchstrip. Each button ++ * is approximately 3 bits wide with a 2 bit spacing. ++ * The raw touchstrip bits are stored at: ++ * ((data[3] & 0x1f) << 8) | data[4]) ++ */ ++ input_report_key(input, KEY_PROG1, data[4] & 0x07); ++ input_report_key(input, KEY_PROG2, data[4] & 0xE0); ++ input_report_key(input, KEY_PROG3, data[3] & 0x1C); ++ ++ if (data[1] & 0x80) { ++ input_report_abs(input, ABS_WHEEL, (data[1] & 0x7f)); ++ } else { ++ /* Out of proximity, clear wheel value. */ ++ input_report_abs(input, ABS_WHEEL, 0); ++ } ++ ++ if (data[2] & 0x80) { ++ input_report_abs(input, ABS_THROTTLE, (data[2] & 0x7f)); ++ } else { ++ /* Out of proximity, clear second wheel value. */ ++ input_report_abs(input, ABS_THROTTLE, 0); ++ } ++ ++ if (data[1] | data[2] | (data[3] & 0x1f) | data[4] | data[6] | data[8]) { ++ input_report_key(input, wacom->tool[1], 1); ++ input_report_abs(input, ABS_MISC, PAD_DEVICE_ID); ++ } else { ++ input_report_key(input, wacom->tool[1], 0); ++ input_report_abs(input, ABS_MISC, 0); ++ } + } else { + if (features->type == WACOM_21UX2) { + input_report_key(input, BTN_0, (data[5] & 0x01)); +@@ -1019,6 +1069,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) + case CINTIQ: + case WACOM_BEE: + case WACOM_21UX2: ++ case WACOM_24HD: + sync = wacom_intuos_irq(wacom_wac); + break; + +@@ -1174,6 +1225,26 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + __set_bit(INPUT_PROP_POINTER, input_dev->propbit); + break; + ++ case WACOM_24HD: ++ __set_bit(BTN_A, input_dev->keybit); ++ __set_bit(BTN_B, input_dev->keybit); ++ __set_bit(BTN_C, input_dev->keybit); ++ __set_bit(BTN_X, input_dev->keybit); ++ __set_bit(BTN_Y, input_dev->keybit); ++ __set_bit(BTN_Z, input_dev->keybit); ++ ++ for (i = 0; i < 10; i++) ++ __set_bit(BTN_0 + i, input_dev->keybit); ++ ++ __set_bit(KEY_PROG1, input_dev->keybit); ++ __set_bit(KEY_PROG2, input_dev->keybit); ++ __set_bit(KEY_PROG3, input_dev->keybit); ++ ++ input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); ++ input_set_abs_params(input_dev, ABS_THROTTLE, 0, 71, 0, 0); ++ wacom_setup_cintiq(wacom_wac); ++ break; ++ + case WACOM_21UX2: + __set_bit(BTN_A, input_dev->keybit); + __set_bit(BTN_B, input_dev->keybit); +@@ -1503,6 +1574,9 @@ static const struct wacom_features wacom_features_0xBB = + static const struct wacom_features wacom_features_0xBC = + { "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047, + 63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++static const struct wacom_features wacom_features_0xF4 = ++ { "Wacom Cintiq 24HD", WACOM_PKGLEN_INTUOS, 104480, 65600, 2047, ++ 63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; + static const struct wacom_features wacom_features_0x3F = + { "Wacom Cintiq 21UX", WACOM_PKGLEN_INTUOS, 87200, 65600, 1023, + 63, CINTIQ, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; +@@ -1706,6 +1780,7 @@ const struct usb_device_id wacom_ids[] = { + { USB_DEVICE_WACOM(0xE6) }, + { USB_DEVICE_WACOM(0xEC) }, + { USB_DEVICE_WACOM(0x47) }, ++ { USB_DEVICE_WACOM(0xF4) }, + { USB_DEVICE_LENOVO(0x6004) }, + { } + }; +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 27f1d1c203a1..050acaefee7d 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -59,6 +59,7 @@ enum { + INTUOS4S, + INTUOS4, + INTUOS4L, ++ WACOM_24HD, + WACOM_21UX2, + CINTIQ, + WACOM_BEE, +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0009-Input-wacom-add-LED-support-for-Cintiq-24HD.patch b/debian/patches/features/all/wacom/0009-Input-wacom-add-LED-support-for-Cintiq-24HD.patch new file mode 100644 index 000000000..5e13941c7 --- /dev/null +++ b/debian/patches/features/all/wacom/0009-Input-wacom-add-LED-support-for-Cintiq-24HD.patch @@ -0,0 +1,93 @@ +From: Jason Gerecke +Date: Mon, 12 Dec 2011 00:12:04 -0800 +Subject: Input: wacom - add LED support for Cintiq 24HD + +commit 246835fccdc0dadeda20cd51f7ec868031fa8142 upstream. + +The Cintiq 24HD has three LEDs on the left side of the tablet and +three LEDs on the right side of the tablet. Switching to LED 0, +1, or 2 will enable the top, middle, or bottom LED for the respective +side. Switching to LED 3 turns off the LEDs on the respective side. + +Signed-off-by: Jason Gerecke +Reviewed-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + Documentation/ABI/testing/sysfs-driver-wacom | 17 +++++++++-------- + drivers/input/tablet/wacom_sys.c | 5 ++++- + 2 files changed, 13 insertions(+), 9 deletions(-) + +diff --git a/Documentation/ABI/testing/sysfs-driver-wacom b/Documentation/ABI/testing/sysfs-driver-wacom +index 82d4df136444..0130d6683c14 100644 +--- a/Documentation/ABI/testing/sysfs-driver-wacom ++++ b/Documentation/ABI/testing/sysfs-driver-wacom +@@ -15,9 +15,9 @@ Contact: linux-input@vger.kernel.org + Description: + Attribute group for control of the status LEDs and the OLEDs. + This attribute group is only available for Intuos 4 M, L, +- and XL (with LEDs and OLEDs) and Cintiq 21UX2 (LEDs only). +- Therefore its presence implicitly signifies the presence of +- said LEDs and OLEDs on the tablet device. ++ and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD ++ (LEDs only). Therefore its presence implicitly signifies the ++ presence of said LEDs and OLEDs on the tablet device. + + What: /sys/bus/usb/devices/-:./wacom_led/status0_luminance + Date: August 2011 +@@ -41,16 +41,17 @@ Date: August 2011 + Contact: linux-input@vger.kernel.org + Description: + Writing to this file sets which one of the four (for Intuos 4) +- or of the right four (for Cintiq 21UX2) status LEDs is active (0..3). +- The other three LEDs on the same side are always inactive. ++ or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status ++ LEDs is active (0..3). The other three LEDs on the same side are ++ always inactive. + + What: /sys/bus/usb/devices/-:./wacom_led/status_led1_select + Date: September 2011 + Contact: linux-input@vger.kernel.org + Description: +- Writing to this file sets which one of the left four (for Cintiq 21UX2) +- status LEDs is active (0..3). The other three LEDs on the left are always +- inactive. ++ Writing to this file sets which one of the left four (for Cintiq 21UX2 ++ and Cintiq 24HD) status LEDs is active (0..3). The other three LEDs on ++ the left are always inactive. + + What: /sys/bus/usb/devices/-:./wacom_led/buttons_luminance + Date: August 2011 +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 2fe21d1a18b7..7e63183a6c68 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -563,7 +563,8 @@ static int wacom_led_control(struct wacom *wacom) + if (!buf) + return -ENOMEM; + +- if (wacom->wacom_wac.features.type == WACOM_21UX2) ++ if (wacom->wacom_wac.features.type == WACOM_21UX2 || ++ wacom->wacom_wac.features.type == WACOM_24HD) + led = (wacom->led.select[1] << 4) | 0x40; + + led |= wacom->led.select[0] | 0x4; +@@ -782,6 +783,7 @@ static int wacom_initialize_leds(struct wacom *wacom) + &intuos4_led_attr_group); + break; + ++ case WACOM_24HD: + case WACOM_21UX2: + wacom->led.select[0] = 0; + wacom->led.select[1] = 0; +@@ -816,6 +818,7 @@ static void wacom_destroy_leds(struct wacom *wacom) + &intuos4_led_attr_group); + break; + ++ case WACOM_24HD: + case WACOM_21UX2: + sysfs_remove_group(&wacom->intf->dev.kobj, + &cintiq_led_attr_group); +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0010-Input-wacom-use-BTN_TOOL_FINGER-to-indicate-touch-de.patch b/debian/patches/features/all/wacom/0010-Input-wacom-use-BTN_TOOL_FINGER-to-indicate-touch-de.patch new file mode 100644 index 000000000..7ccdbde55 --- /dev/null +++ b/debian/patches/features/all/wacom/0010-Input-wacom-use-BTN_TOOL_FINGER-to-indicate-touch-de.patch @@ -0,0 +1,83 @@ +From: Ping Cheng +Date: Tue, 31 Jan 2012 00:07:33 -0800 +Subject: Input: wacom - use BTN_TOOL_FINGER to indicate touch device type + +commit 8b4a0c1fe3b03c0cfe829413481d69c2e6fd844c upstream. + +Tested-by: Chris Bagwell +Reviewed-by: Chris Bagwell +Signed-off-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 6 +----- + drivers/input/tablet/wacom_wac.c | 4 ++-- + 2 files changed, 3 insertions(+), 7 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 7e63183a6c68..c9588eececfb 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -176,7 +176,7 @@ static int wacom_parse_logical_collection(unsigned char *report, + + /* Logical collection is only used by 3rd gen Bamboo Touch */ + features->pktlen = WACOM_PKGLEN_BBTOUCH3; +- features->device_type = BTN_TOOL_DOUBLETAP; ++ features->device_type = BTN_TOOL_FINGER; + + /* + * Stylus and Touch have same active area +@@ -286,12 +286,10 @@ static int wacom_parse_hid(struct usb_interface *intf, + if (features->type == TABLETPC2FG) { + /* need to reset back */ + features->pktlen = WACOM_PKGLEN_TPC2FG; +- features->device_type = BTN_TOOL_DOUBLETAP; + } + if (features->type == BAMBOO_PT) { + /* need to reset back */ + features->pktlen = WACOM_PKGLEN_BBTOUCH; +- features->device_type = BTN_TOOL_DOUBLETAP; + features->x_phy = + get_unaligned_le16(&report[i + 5]); + features->x_max = +@@ -325,7 +323,6 @@ static int wacom_parse_hid(struct usb_interface *intf, + if (features->type == TABLETPC2FG) { + /* need to reset back */ + features->pktlen = WACOM_PKGLEN_TPC2FG; +- features->device_type = BTN_TOOL_DOUBLETAP; + features->y_max = + get_unaligned_le16(&report[i + 3]); + features->y_phy = +@@ -334,7 +331,6 @@ static int wacom_parse_hid(struct usb_interface *intf, + } else if (features->type == BAMBOO_PT) { + /* need to reset back */ + features->pktlen = WACOM_PKGLEN_BBTOUCH; +- features->device_type = BTN_TOOL_DOUBLETAP; + features->y_phy = + get_unaligned_le16(&report[i + 3]); + features->y_max = +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 88672ec296c1..3c9f4b8cfe8f 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -1317,7 +1317,7 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + break; + + case TABLETPC2FG: +- if (features->device_type == BTN_TOOL_DOUBLETAP) { ++ if (features->device_type == BTN_TOOL_FINGER) { + + input_mt_init_slots(input_dev, 2); + input_set_abs_params(input_dev, ABS_MT_TOOL_TYPE, +@@ -1366,7 +1366,7 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + + __set_bit(INPUT_PROP_POINTER, input_dev->propbit); + +- if (features->device_type == BTN_TOOL_DOUBLETAP) { ++ if (features->device_type == BTN_TOOL_FINGER) { + __set_bit(BTN_LEFT, input_dev->keybit); + __set_bit(BTN_FORWARD, input_dev->keybit); + __set_bit(BTN_BACK, input_dev->keybit); +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0011-Input-wacom-use-switch-statement-for-wacom_tpc_irq.patch b/debian/patches/features/all/wacom/0011-Input-wacom-use-switch-statement-for-wacom_tpc_irq.patch new file mode 100644 index 000000000..1f0417271 --- /dev/null +++ b/debian/patches/features/all/wacom/0011-Input-wacom-use-switch-statement-for-wacom_tpc_irq.patch @@ -0,0 +1,69 @@ +From: Ping Cheng +Date: Tue, 31 Jan 2012 00:07:33 -0800 +Subject: Input: wacom - use switch statement for wacom_tpc_irq() + +commit 31175a8348af76aea2f557857c90467d13632dc3 upstream. + +And add two new data formats. + +Tested-by: Chris Bagwell +Reviewed-by: Chris Bagwell +Signed-off-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 24 ++++++++++++++++++------ + drivers/input/tablet/wacom_wac.h | 2 ++ + 2 files changed, 20 insertions(+), 6 deletions(-) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 3c9f4b8cfe8f..07a1f218b5c1 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -832,12 +832,24 @@ static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len) + + dbg("wacom_tpc_irq: received report #%d", data[0]); + +- if (len == WACOM_PKGLEN_TPC1FG || data[0] == WACOM_REPORT_TPC1FG) +- return wacom_tpc_single_touch(wacom, len); +- else if (data[0] == WACOM_REPORT_TPC2FG) +- return wacom_tpc_mt_touch(wacom); +- else if (data[0] == WACOM_REPORT_PENABLED) +- return wacom_tpc_pen(wacom); ++ switch (len) { ++ case WACOM_PKGLEN_TPC1FG: ++ return wacom_tpc_single_touch(wacom, len); ++ ++ case WACOM_PKGLEN_TPC2FG: ++ return wacom_tpc_mt_touch(wacom); ++ ++ default: ++ switch (data[0]) { ++ case WACOM_REPORT_TPC1FG: ++ case WACOM_REPORT_TPCHID: ++ case WACOM_REPORT_TPCST: ++ return wacom_tpc_single_touch(wacom, len); ++ ++ case WACOM_REPORT_PENABLED: ++ return wacom_tpc_pen(wacom); ++ } ++ } + + return 0; + } +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 050acaefee7d..4f0ba21b0196 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -39,6 +39,8 @@ + #define WACOM_REPORT_INTUOSPAD 12 + #define WACOM_REPORT_TPC1FG 6 + #define WACOM_REPORT_TPC2FG 13 ++#define WACOM_REPORT_TPCHID 15 ++#define WACOM_REPORT_TPCST 16 + + /* device quirks */ + #define WACOM_QUIRK_MULTI_INPUT 0x0001 +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0012-Input-wacom-add-missing-LEDS_CLASS-to-Kconfig.patch b/debian/patches/features/all/wacom/0012-Input-wacom-add-missing-LEDS_CLASS-to-Kconfig.patch new file mode 100644 index 000000000..cf0f75447 --- /dev/null +++ b/debian/patches/features/all/wacom/0012-Input-wacom-add-missing-LEDS_CLASS-to-Kconfig.patch @@ -0,0 +1,29 @@ +From: Chris Bagwell +Date: Wed, 8 Feb 2012 23:08:48 -0800 +Subject: Input: wacom - add missing LEDS_CLASS to Kconfig + +commit 68513a4c5fe68938350cf2c56d97946e49f014e1 upstream. + +Signed-off-by: Chris Bagwell +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/Kconfig | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/input/tablet/Kconfig b/drivers/input/tablet/Kconfig +index 58a87755b936..e53f4081a586 100644 +--- a/drivers/input/tablet/Kconfig ++++ b/drivers/input/tablet/Kconfig +@@ -77,6 +77,8 @@ config TABLET_USB_WACOM + tristate "Wacom Intuos/Graphire tablet support (USB)" + depends on USB_ARCH_HAS_HCD + select USB ++ select NEW_LEDS ++ select LEDS_CLASS + help + Say Y here if you want to use the USB version of the Wacom Intuos + or Graphire tablet. Make sure to say Y to "Mouse support" +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0013-Input-wacom-fix-3rd-gen-Bamboo-MT-when-4-fingers-are.patch b/debian/patches/features/all/wacom/0013-Input-wacom-fix-3rd-gen-Bamboo-MT-when-4-fingers-are.patch new file mode 100644 index 000000000..9a6d6e9b6 --- /dev/null +++ b/debian/patches/features/all/wacom/0013-Input-wacom-fix-3rd-gen-Bamboo-MT-when-4-fingers-are.patch @@ -0,0 +1,32 @@ +From: Jason Gerecke +Date: Tue, 6 Mar 2012 10:19:19 -0800 +Subject: Input: wacom - fix 3rd-gen Bamboo MT when 4+ fingers are in use + +commit 19d57d3a145e94349abf805eed2316ef720d86c2 upstream. + +The message count field uses three bits of storage, not two. + +Signed-off-by: Jason Gerecke +Acked-by: Chris Bagwell +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 07a1f218b5c1..89a96427faa0 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -938,7 +938,7 @@ static int wacom_bpt3_touch(struct wacom_wac *wacom) + { + struct input_dev *input = wacom->input; + unsigned char *data = wacom->data; +- int count = data[1] & 0x03; ++ int count = data[1] & 0x07; + int i; + + if (data[0] != 0x02) +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0014-Input-wacom-fix-physical-size-calculation-for-3rd-ge.patch b/debian/patches/features/all/wacom/0014-Input-wacom-fix-physical-size-calculation-for-3rd-ge.patch new file mode 100644 index 000000000..c94efbe1b --- /dev/null +++ b/debian/patches/features/all/wacom/0014-Input-wacom-fix-physical-size-calculation-for-3rd-ge.patch @@ -0,0 +1,42 @@ +From: Jason Gerecke +Date: Mon, 12 Mar 2012 22:15:43 -0700 +Subject: Input: wacom - fix physical size calculation for 3rd-gen Bamboo + +commit 24e3e5ae1e4c2a3a32f5b1f96b4e3fd721806acd upstream. + +This calculation determines the physical dimensions of the tablet, +used later on in calculate_touch_res to obtain the touch sensor +resolution. + +Instead of dividing the logical size by the resolution, the current +code performs a multiplication. This doesn't pose a problem for the +3rd-gen Bamboo since the resolution and scale factor happen to be +identical, but will produce an incorrect result for other cases. + +Signed-off-by: Jason Gerecke +Reviewed-by: Chris Bagwell +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index c9588eececfb..dc07821fdae3 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -184,9 +184,9 @@ static int wacom_parse_logical_collection(unsigned char *report, + * data before its overwritten. + */ + features->x_phy = +- (features->x_max * features->x_resolution) / 100; ++ (features->x_max * 100) / features->x_resolution; + features->y_phy = +- (features->y_max * features->y_resolution) / 100; ++ (features->y_max * 100) / features->y_resolution; + + features->x_max = features->y_max = + get_unaligned_le16(&report[10]); +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0015-Input-wacom-isolate-input-registration.patch b/debian/patches/features/all/wacom/0015-Input-wacom-isolate-input-registration.patch new file mode 100644 index 000000000..0b64cf21a --- /dev/null +++ b/debian/patches/features/all/wacom/0015-Input-wacom-isolate-input-registration.patch @@ -0,0 +1,127 @@ +From: Chris Bagwell +Date: Sun, 25 Mar 2012 23:25:45 -0700 +Subject: Input: wacom - isolate input registration + +commit 3aac0ef10bf5c76ba4262cfd9b044a6c067d5aae upstream. + +Although this better co-locates input registration logic, +the main goal is to make it easier to optionally create +input devices or delay creation to later time periods. + +Signed-off-by: Chris Bagwell +Tested-by: Jason Gerecke +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 53 ++++++++++++++++++++++++-------------- + 1 file changed, 33 insertions(+), 20 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index dc07821fdae3..59a42e23ddfa 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -822,6 +822,37 @@ static void wacom_destroy_leds(struct wacom *wacom) + } + } + ++static int wacom_register_input(struct wacom *wacom) ++{ ++ struct input_dev *input_dev; ++ struct usb_interface *intf = wacom->intf; ++ struct usb_device *dev = interface_to_usbdev(intf); ++ struct wacom_wac *wacom_wac = &(wacom->wacom_wac); ++ int error; ++ ++ input_dev = input_allocate_device(); ++ if (!input_dev) ++ return -ENOMEM; ++ ++ input_dev->name = wacom_wac->name; ++ input_dev->dev.parent = &intf->dev; ++ input_dev->open = wacom_open; ++ input_dev->close = wacom_close; ++ usb_to_input_id(dev, &input_dev->id); ++ input_set_drvdata(input_dev, wacom); ++ ++ wacom_wac->input = input_dev; ++ wacom_setup_input_capabilities(input_dev, wacom_wac); ++ ++ error = input_register_device(input_dev); ++ if (error) { ++ input_free_device(input_dev); ++ wacom_wac->input = NULL; ++ } ++ ++ return error; ++} ++ + static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *id) + { + struct usb_device *dev = interface_to_usbdev(intf); +@@ -829,18 +860,12 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + struct wacom *wacom; + struct wacom_wac *wacom_wac; + struct wacom_features *features; +- struct input_dev *input_dev; + int error; + + if (!id->driver_info) + return -EINVAL; + + wacom = kzalloc(sizeof(struct wacom), GFP_KERNEL); +- input_dev = input_allocate_device(); +- if (!wacom || !input_dev) { +- error = -ENOMEM; +- goto fail1; +- } + + wacom_wac = &wacom->wacom_wac; + wacom_wac->features = *((struct wacom_features *)id->driver_info); +@@ -869,8 +894,6 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + usb_make_path(dev, wacom->phys, sizeof(wacom->phys)); + strlcat(wacom->phys, "/input0", sizeof(wacom->phys)); + +- wacom_wac->input = input_dev; +- + endpoint = &intf->cur_altsetting->endpoint[0].desc; + + /* Retrieve the physical and logical size for OEM devices */ +@@ -894,15 +917,6 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + goto fail3; + } + +- input_dev->name = wacom_wac->name; +- input_dev->dev.parent = &intf->dev; +- input_dev->open = wacom_open; +- input_dev->close = wacom_close; +- usb_to_input_id(dev, &input_dev->id); +- input_set_drvdata(input_dev, wacom); +- +- wacom_setup_input_capabilities(input_dev, wacom_wac); +- + usb_fill_int_urb(wacom->irq, dev, + usb_rcvintpipe(dev, endpoint->bEndpointAddress), + wacom_wac->data, features->pktlen, +@@ -914,7 +928,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + if (error) + goto fail4; + +- error = input_register_device(input_dev); ++ error = wacom_register_input(wacom); + if (error) + goto fail5; + +@@ -928,8 +942,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + fail4: wacom_remove_shared_data(wacom_wac); + fail3: usb_free_urb(wacom->irq); + fail2: usb_free_coherent(dev, WACOM_PKGLEN_MAX, wacom_wac->data, wacom->data_dma); +- fail1: input_free_device(input_dev); +- kfree(wacom); ++ fail1: kfree(wacom); + return error; + } + +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0016-Input-wacom-check-for-allocation-failure-in-probe.patch b/debian/patches/features/all/wacom/0016-Input-wacom-check-for-allocation-failure-in-probe.patch new file mode 100644 index 000000000..10247db45 --- /dev/null +++ b/debian/patches/features/all/wacom/0016-Input-wacom-check-for-allocation-failure-in-probe.patch @@ -0,0 +1,33 @@ +From: Dan Carpenter +Date: Thu, 29 Mar 2012 22:38:11 -0700 +Subject: Input: wacom - check for allocation failure in probe() + +commit f182394033d639679264d61e6dca62761e659ff7 upstream. + +We accidentally removed the check for NULL in 3aac0ef10b "Input: wacom - +isolate input registration". + +Signed-off-by: Dan Carpenter +Reviewed-by: Chris Bagwell +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 59a42e23ddfa..bf2462132c5c 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -866,6 +866,8 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + return -EINVAL; + + wacom = kzalloc(sizeof(struct wacom), GFP_KERNEL); ++ if (!wacom) ++ return -ENOMEM; + + wacom_wac = &wacom->wacom_wac; + wacom_wac->features = *((struct wacom_features *)id->driver_info); +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0017-Input-wacom-wireless-monitor-framework.patch b/debian/patches/features/all/wacom/0017-Input-wacom-wireless-monitor-framework.patch new file mode 100644 index 000000000..ee27989be --- /dev/null +++ b/debian/patches/features/all/wacom/0017-Input-wacom-wireless-monitor-framework.patch @@ -0,0 +1,219 @@ +From: Chris Bagwell +Date: Sun, 25 Mar 2012 23:26:11 -0700 +Subject: Input: wacom - wireless monitor framework + +commit d3825d51c3eddb8a3c7d1281f27181aff6db19b8 upstream. + +The 3rd gen Bamboo Pen & Touch and Intuos5 tablets support an +optional wireless module. When its receiver is plugged into USB, +it presents 3 interfaces: 0) Monitor 1) Pen and 2) Touch. + +The exact capabilities of the Pen and Touch interfaces can +not be determined until a tablet connection is established +and reported over the Monitor interface. + +This patch detects this wireless receiver and enables interrupt +packets to be processed for the Monitor interface. Processing +the data in packets will be left to another patch. + +Since it doesn't make sense to create an input device for the +Monitor interface, it is not created. Creation of Pen and Touch +input device is also delayed until monitor packets can be processed. + +Signed-off-by: Chris Bagwell +Tested-by: Jason Gerecke +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 36 +++++++++++++++++++++++++++++++----- + drivers/input/tablet/wacom_wac.c | 28 +++++++++++++++++++++++++++- + drivers/input/tablet/wacom_wac.h | 4 ++++ + 3 files changed, 62 insertions(+), 6 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index bf2462132c5c..223246575860 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -422,6 +422,7 @@ static int wacom_query_tablet_data(struct usb_interface *intf, struct wacom_feat + report_id, rep_data, 4, 1); + } while ((error < 0 || rep_data[1] != 4) && limit++ < WAC_MSG_RETRIES); + } else if (features->type != TABLETPC && ++ features->type != WIRELESS && + features->device_type == BTN_TOOL_PEN) { + do { + rep_data[0] = 2; +@@ -454,6 +455,21 @@ static int wacom_retrieve_hid_descriptor(struct usb_interface *intf, + features->pressure_fuzz = 0; + features->distance_fuzz = 0; + ++ /* ++ * The wireless device HID is basic and layout conflicts with ++ * other tablets (monitor and touch interface can look like pen). ++ * Skip the query for this type and modify defaults based on ++ * interface number. ++ */ ++ if (features->type == WIRELESS) { ++ if (intf->cur_altsetting->desc.bInterfaceNumber == 0) { ++ features->device_type = 0; ++ } else if (intf->cur_altsetting->desc.bInterfaceNumber == 2) { ++ features->device_type = BTN_TOOL_DOUBLETAP; ++ features->pktlen = WACOM_PKGLEN_BBTOUCH3; ++ } ++ } ++ + /* only Tablet PCs and Bamboo P&T need to retrieve the info */ + if ((features->type != TABLETPC) && (features->type != TABLETPC2FG) && + (features->type != BAMBOO_PT)) +@@ -930,14 +946,22 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + if (error) + goto fail4; + +- error = wacom_register_input(wacom); +- if (error) +- goto fail5; ++ if (!(features->quirks & WACOM_QUIRK_NO_INPUT)) { ++ error = wacom_register_input(wacom); ++ if (error) ++ goto fail5; ++ } + + /* Note that if query fails it is not a hard failure */ + wacom_query_tablet_data(intf, features); + + usb_set_intfdata(intf, wacom); ++ ++ if (features->quirks & WACOM_QUIRK_MONITOR) { ++ if (usb_submit_urb(wacom->irq, GFP_KERNEL)) ++ goto fail5; ++ } ++ + return 0; + + fail5: wacom_destroy_leds(wacom); +@@ -955,7 +979,8 @@ static void wacom_disconnect(struct usb_interface *intf) + usb_set_intfdata(intf, NULL); + + usb_kill_urb(wacom->irq); +- input_unregister_device(wacom->wacom_wac.input); ++ if (wacom->wacom_wac.input) ++ input_unregister_device(wacom->wacom_wac.input); + wacom_destroy_leds(wacom); + usb_free_urb(wacom->irq); + usb_free_coherent(interface_to_usbdev(intf), WACOM_PKGLEN_MAX, +@@ -987,7 +1012,8 @@ static int wacom_resume(struct usb_interface *intf) + wacom_query_tablet_data(intf, features); + wacom_led_control(wacom); + +- if (wacom->open && usb_submit_urb(wacom->irq, GFP_NOIO) < 0) ++ if ((wacom->open || features->quirks & WACOM_QUIRK_MONITOR) ++ && usb_submit_urb(wacom->irq, GFP_NOIO) < 0) + rv = -EIO; + + mutex_unlock(&wacom->lock); +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 89a96427faa0..8b73b05f5aef 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -1044,6 +1044,14 @@ static int wacom_bpt_irq(struct wacom_wac *wacom, size_t len) + return 0; + } + ++static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len) ++{ ++ if (len != WACOM_PKGLEN_WIRELESS) ++ return 0; ++ ++ return 0; ++} ++ + void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) + { + bool sync; +@@ -1094,6 +1102,10 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) + sync = wacom_bpt_irq(wacom_wac, len); + break; + ++ case WIRELESS: ++ sync = wacom_wireless_irq(wacom_wac, len); ++ break; ++ + default: + sync = false; + break; +@@ -1155,7 +1167,7 @@ void wacom_setup_device_quirks(struct wacom_features *features) + + /* these device have multiple inputs */ + if (features->type == TABLETPC || features->type == TABLETPC2FG || +- features->type == BAMBOO_PT) ++ features->type == BAMBOO_PT || features->type == WIRELESS) + features->quirks |= WACOM_QUIRK_MULTI_INPUT; + + /* quirk for bamboo touch with 2 low res touches */ +@@ -1167,6 +1179,16 @@ void wacom_setup_device_quirks(struct wacom_features *features) + features->y_fuzz <<= 5; + features->quirks |= WACOM_QUIRK_BBTOUCH_LOWRES; + } ++ ++ if (features->type == WIRELESS) { ++ ++ /* monitor never has input and pen/touch have delayed create */ ++ features->quirks |= WACOM_QUIRK_NO_INPUT; ++ ++ /* must be monitor interface if no device_type set */ ++ if (!features->device_type) ++ features->quirks |= WACOM_QUIRK_MONITOR; ++ } + } + + static unsigned int wacom_calculate_touch_res(unsigned int logical_max, +@@ -1640,6 +1662,9 @@ static const struct wacom_features wacom_features_0xEC = + static const struct wacom_features wacom_features_0x47 = + { "Wacom Intuos2 6x8", WACOM_PKGLEN_INTUOS, 20320, 16240, 1023, + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++static const struct wacom_features wacom_features_0x84 = ++ { "Wacom Wireless Receiver", WACOM_PKGLEN_WIRELESS, 0, 0, 0, ++ 0, WIRELESS, 0, 0 }; + static const struct wacom_features wacom_features_0xD0 = + { "Wacom Bamboo 2FG", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; +@@ -1766,6 +1791,7 @@ const struct usb_device_id wacom_ids[] = { + { USB_DEVICE_DETAILED(0xCE, USB_CLASS_HID, + USB_INTERFACE_SUBCLASS_BOOT, + USB_INTERFACE_PROTOCOL_MOUSE) }, ++ { USB_DEVICE_WACOM(0x84) }, + { USB_DEVICE_WACOM(0xD0) }, + { USB_DEVICE_WACOM(0xD1) }, + { USB_DEVICE_WACOM(0xD2) }, +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 4f0ba21b0196..2c04b6248a56 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -24,6 +24,7 @@ + #define WACOM_PKGLEN_BBTOUCH 20 + #define WACOM_PKGLEN_BBTOUCH3 64 + #define WACOM_PKGLEN_BBPEN 10 ++#define WACOM_PKGLEN_WIRELESS 32 + + /* device IDs */ + #define STYLUS_DEVICE_ID 0x02 +@@ -45,6 +46,8 @@ + /* device quirks */ + #define WACOM_QUIRK_MULTI_INPUT 0x0001 + #define WACOM_QUIRK_BBTOUCH_LOWRES 0x0002 ++#define WACOM_QUIRK_NO_INPUT 0x0004 ++#define WACOM_QUIRK_MONITOR 0x0008 + + enum { + PENPARTNER = 0, +@@ -54,6 +57,7 @@ enum { + PL, + DTU, + BAMBOO_PT, ++ WIRELESS, + INTUOS, + INTUOS3S, + INTUOS3, +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0018-Input-wacom-create-inputs-when-wireless-connect.patch b/debian/patches/features/all/wacom/0018-Input-wacom-create-inputs-when-wireless-connect.patch new file mode 100644 index 000000000..d07aa9604 --- /dev/null +++ b/debian/patches/features/all/wacom/0018-Input-wacom-create-inputs-when-wireless-connect.patch @@ -0,0 +1,234 @@ +From: Chris Bagwell +Date: Sun, 25 Mar 2012 23:26:20 -0700 +Subject: Input: wacom - create inputs when wireless connect + +commit 16bf288c4be67b68c3fcb6561ff145702cb7bd22 upstream. + +When a tablet connect or disconnect is detected, schedule +work queue to register or unregister related input devices. + +When a wireless tablet connects, it reports same USB PID +used if tablet is connected with USB cable. Use this to +update features values, set input capabilities, and then +register device. From there, the Pen and Touch interfaces +will reuse the existing tablet's IRQ routines. + +Its possible that 1 receiver is shared with 2 tablets with +different PID (small and medium Bamboo for example) so the +input is unregister at disconnect to better support this case. + +Signed-off-by: Chris Bagwell +Tested-by: Jason Gerecke +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom.h | 7 +++ + drivers/input/tablet/wacom_sys.c | 91 ++++++++++++++++++++++++++++++++++---- + drivers/input/tablet/wacom_wac.c | 20 ++++++++- + drivers/input/tablet/wacom_wac.h | 1 + + 4 files changed, 109 insertions(+), 10 deletions(-) + +diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h +index 0783864a7dc2..febbfd9f3a84 100644 +--- a/drivers/input/tablet/wacom.h ++++ b/drivers/input/tablet/wacom.h +@@ -112,6 +112,7 @@ struct wacom { + struct urb *irq; + struct wacom_wac wacom_wac; + struct mutex lock; ++ struct work_struct work; + bool open; + char phys[32]; + struct wacom_led { +@@ -122,6 +123,12 @@ struct wacom { + } led; + }; + ++static inline void wacom_schedule_work(struct wacom_wac *wacom_wac) ++{ ++ struct wacom *wacom = container_of(wacom_wac, struct wacom, wacom_wac); ++ schedule_work(&wacom->work); ++} ++ + extern const struct usb_device_id wacom_ids[]; + + void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len); +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 223246575860..1bcf555ff340 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -167,6 +167,19 @@ static void wacom_close(struct input_dev *dev) + usb_autopm_put_interface(wacom->intf); + } + ++/* ++ * Static values for max X/Y and resolution of Pen interface is stored in ++ * features. This mean physical size of active area can be computed. ++ * This is useful to do when Pen and Touch have same active area of tablet. ++ * This means for Touch device, we only need to find max X/Y value and we ++ * have enough information to compute resolution of touch. ++ */ ++static void wacom_set_phy_from_res(struct wacom_features *features) ++{ ++ features->x_phy = (features->x_max * 100) / features->x_resolution; ++ features->y_phy = (features->y_max * 100) / features->y_resolution; ++} ++ + static int wacom_parse_logical_collection(unsigned char *report, + struct wacom_features *features) + { +@@ -178,15 +191,7 @@ static int wacom_parse_logical_collection(unsigned char *report, + features->pktlen = WACOM_PKGLEN_BBTOUCH3; + features->device_type = BTN_TOOL_FINGER; + +- /* +- * Stylus and Touch have same active area +- * so compute physical size based on stylus +- * data before its overwritten. +- */ +- features->x_phy = +- (features->x_max * 100) / features->x_resolution; +- features->y_phy = +- (features->y_max * 100) / features->y_resolution; ++ wacom_set_phy_from_res(features); + + features->x_max = features->y_max = + get_unaligned_le16(&report[10]); +@@ -869,6 +874,72 @@ static int wacom_register_input(struct wacom *wacom) + return error; + } + ++static void wacom_wireless_work(struct work_struct *work) ++{ ++ struct wacom *wacom = container_of(work, struct wacom, work); ++ struct usb_device *usbdev = wacom->usbdev; ++ struct wacom_wac *wacom_wac = &wacom->wacom_wac; ++ ++ /* ++ * Regardless if this is a disconnect or a new tablet, ++ * remove any existing input devices. ++ */ ++ ++ /* Stylus interface */ ++ wacom = usb_get_intfdata(usbdev->config->interface[1]); ++ if (wacom->wacom_wac.input) ++ input_unregister_device(wacom->wacom_wac.input); ++ wacom->wacom_wac.input = 0; ++ ++ /* Touch interface */ ++ wacom = usb_get_intfdata(usbdev->config->interface[2]); ++ if (wacom->wacom_wac.input) ++ input_unregister_device(wacom->wacom_wac.input); ++ wacom->wacom_wac.input = 0; ++ ++ if (wacom_wac->pid == 0) { ++ printk(KERN_INFO "wacom: wireless tablet disconnected\n"); ++ } else { ++ const struct usb_device_id *id = wacom_ids; ++ ++ printk(KERN_INFO ++ "wacom: wireless tablet connected with PID %x\n", ++ wacom_wac->pid); ++ ++ while (id->match_flags) { ++ if (id->idVendor == USB_VENDOR_ID_WACOM && ++ id->idProduct == wacom_wac->pid) ++ break; ++ id++; ++ } ++ ++ if (!id->match_flags) { ++ printk(KERN_INFO ++ "wacom: ignorning unknown PID.\n"); ++ return; ++ } ++ ++ /* Stylus interface */ ++ wacom = usb_get_intfdata(usbdev->config->interface[1]); ++ wacom_wac = &wacom->wacom_wac; ++ wacom_wac->features = ++ *((struct wacom_features *)id->driver_info); ++ wacom_wac->features.device_type = BTN_TOOL_PEN; ++ wacom_register_input(wacom); ++ ++ /* Touch interface */ ++ wacom = usb_get_intfdata(usbdev->config->interface[2]); ++ wacom_wac = &wacom->wacom_wac; ++ wacom_wac->features = ++ *((struct wacom_features *)id->driver_info); ++ wacom_wac->features.pktlen = WACOM_PKGLEN_BBTOUCH3; ++ wacom_wac->features.device_type = BTN_TOOL_FINGER; ++ wacom_set_phy_from_res(&wacom_wac->features); ++ wacom_wac->features.x_max = wacom_wac->features.y_max = 4096; ++ wacom_register_input(wacom); ++ } ++} ++ + static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *id) + { + struct usb_device *dev = interface_to_usbdev(intf); +@@ -909,6 +980,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + wacom->usbdev = dev; + wacom->intf = intf; + mutex_init(&wacom->lock); ++ INIT_WORK(&wacom->work, wacom_wireless_work); + usb_make_path(dev, wacom->phys, sizeof(wacom->phys)); + strlcat(wacom->phys, "/input0", sizeof(wacom->phys)); + +@@ -979,6 +1051,7 @@ static void wacom_disconnect(struct usb_interface *intf) + usb_set_intfdata(intf, NULL); + + usb_kill_urb(wacom->irq); ++ cancel_work_sync(&wacom->work); + if (wacom->wacom_wac.input) + input_unregister_device(wacom->wacom_wac.input); + wacom_destroy_leds(wacom); +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 8b73b05f5aef..1013ac345781 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -1046,9 +1046,27 @@ static int wacom_bpt_irq(struct wacom_wac *wacom, size_t len) + + static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len) + { +- if (len != WACOM_PKGLEN_WIRELESS) ++ unsigned char *data = wacom->data; ++ int connected; ++ ++ if (len != WACOM_PKGLEN_WIRELESS || data[0] != 0x80) + return 0; + ++ connected = data[1] & 0x01; ++ if (connected) { ++ int pid; ++ ++ pid = get_unaligned_be16(&data[6]); ++ if (wacom->pid != pid) { ++ wacom->pid = pid; ++ wacom_schedule_work(wacom); ++ } ++ } else if (wacom->pid != 0) { ++ /* disconnected while previously connected */ ++ wacom->pid = 0; ++ wacom_schedule_work(wacom); ++ } ++ + return 0; + } + +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 2c04b6248a56..cffaf6b7e6e9 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -111,6 +111,7 @@ struct wacom_wac { + struct wacom_features features; + struct wacom_shared *shared; + struct input_dev *input; ++ int pid; + }; + + #endif +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0019-Input-wacom-wireless-battery-status.patch b/debian/patches/features/all/wacom/0019-Input-wacom-wireless-battery-status.patch new file mode 100644 index 000000000..ce1aa25d6 --- /dev/null +++ b/debian/patches/features/all/wacom/0019-Input-wacom-wireless-battery-status.patch @@ -0,0 +1,184 @@ +From: Chris Bagwell +Date: Sun, 25 Mar 2012 23:26:30 -0700 +Subject: Input: wacom - wireless battery status + +commit a1d552cc15b0be9124ccba593f99f59c4ec1e153 upstream. + +Signed-off-by: Chris Bagwell +Tested-by: Jason Gerecke +Acked-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/Kconfig | 1 + + drivers/input/tablet/wacom.h | 2 ++ + drivers/input/tablet/wacom_sys.c | 57 +++++++++++++++++++++++++++++++++++++- + drivers/input/tablet/wacom_wac.c | 5 +++- + drivers/input/tablet/wacom_wac.h | 1 + + 5 files changed, 64 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/tablet/Kconfig b/drivers/input/tablet/Kconfig +index e53f4081a586..bed7cbf84cfd 100644 +--- a/drivers/input/tablet/Kconfig ++++ b/drivers/input/tablet/Kconfig +@@ -76,6 +76,7 @@ config TABLET_USB_KBTAB + config TABLET_USB_WACOM + tristate "Wacom Intuos/Graphire tablet support (USB)" + depends on USB_ARCH_HAS_HCD ++ select POWER_SUPPLY + select USB + select NEW_LEDS + select LEDS_CLASS +diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h +index febbfd9f3a84..b4842d0e61dd 100644 +--- a/drivers/input/tablet/wacom.h ++++ b/drivers/input/tablet/wacom.h +@@ -88,6 +88,7 @@ + #include + #include + #include ++#include + #include + + /* +@@ -121,6 +122,7 @@ struct wacom { + u8 hlv; /* status led brightness button pressed (1..127) */ + u8 img_lum; /* OLED matrix display brightness */ + } led; ++ struct power_supply battery; + }; + + static inline void wacom_schedule_work(struct wacom_wac *wacom_wac) +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 1bcf555ff340..8a5fad186140 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -843,6 +843,55 @@ static void wacom_destroy_leds(struct wacom *wacom) + } + } + ++static enum power_supply_property wacom_battery_props[] = { ++ POWER_SUPPLY_PROP_CAPACITY ++}; ++ ++static int wacom_battery_get_property(struct power_supply *psy, ++ enum power_supply_property psp, ++ union power_supply_propval *val) ++{ ++ struct wacom *wacom = container_of(psy, struct wacom, battery); ++ int ret = 0; ++ ++ switch (psp) { ++ case POWER_SUPPLY_PROP_CAPACITY: ++ val->intval = ++ wacom->wacom_wac.battery_capacity * 100 / 31; ++ break; ++ default: ++ ret = -EINVAL; ++ break; ++ } ++ ++ return ret; ++} ++ ++static int wacom_initialize_battery(struct wacom *wacom) ++{ ++ int error = 0; ++ ++ if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_MONITOR) { ++ wacom->battery.properties = wacom_battery_props; ++ wacom->battery.num_properties = ARRAY_SIZE(wacom_battery_props); ++ wacom->battery.get_property = wacom_battery_get_property; ++ wacom->battery.name = "wacom_battery"; ++ wacom->battery.type = POWER_SUPPLY_TYPE_BATTERY; ++ wacom->battery.use_for_apm = 0; ++ ++ error = power_supply_register(&wacom->usbdev->dev, ++ &wacom->battery); ++ } ++ ++ return error; ++} ++ ++static void wacom_destroy_battery(struct wacom *wacom) ++{ ++ if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_MONITOR) ++ power_supply_unregister(&wacom->battery); ++} ++ + static int wacom_register_input(struct wacom *wacom) + { + struct input_dev *input_dev; +@@ -1018,10 +1067,14 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + if (error) + goto fail4; + ++ error = wacom_initialize_battery(wacom); ++ if (error) ++ goto fail5; ++ + if (!(features->quirks & WACOM_QUIRK_NO_INPUT)) { + error = wacom_register_input(wacom); + if (error) +- goto fail5; ++ goto fail6; + } + + /* Note that if query fails it is not a hard failure */ +@@ -1036,6 +1089,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + + return 0; + ++ fail6: wacom_destroy_battery(wacom); + fail5: wacom_destroy_leds(wacom); + fail4: wacom_remove_shared_data(wacom_wac); + fail3: usb_free_urb(wacom->irq); +@@ -1054,6 +1108,7 @@ static void wacom_disconnect(struct usb_interface *intf) + cancel_work_sync(&wacom->work); + if (wacom->wacom_wac.input) + input_unregister_device(wacom->wacom_wac.input); ++ wacom_destroy_battery(wacom); + wacom_destroy_leds(wacom); + usb_free_urb(wacom->irq); + usb_free_coherent(interface_to_usbdev(intf), WACOM_PKGLEN_MAX, +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index 1013ac345781..cecd35c8f0b3 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -1054,17 +1054,20 @@ static int wacom_wireless_irq(struct wacom_wac *wacom, size_t len) + + connected = data[1] & 0x01; + if (connected) { +- int pid; ++ int pid, battery; + + pid = get_unaligned_be16(&data[6]); ++ battery = data[5] & 0x3f; + if (wacom->pid != pid) { + wacom->pid = pid; + wacom_schedule_work(wacom); + } ++ wacom->battery_capacity = battery; + } else if (wacom->pid != 0) { + /* disconnected while previously connected */ + wacom->pid = 0; + wacom_schedule_work(wacom); ++ wacom->battery_capacity = 0; + } + + return 0; +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index cffaf6b7e6e9..ba5a334e54d6 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -112,6 +112,7 @@ struct wacom_wac { + struct wacom_shared *shared; + struct input_dev *input; + int pid; ++ int battery_capacity; + }; + + #endif +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0020-Input-wacom-add-basic-Intuos5-support.patch b/debian/patches/features/all/wacom/0020-Input-wacom-add-basic-Intuos5-support.patch new file mode 100644 index 000000000..a3cf8d477 --- /dev/null +++ b/debian/patches/features/all/wacom/0020-Input-wacom-add-basic-Intuos5-support.patch @@ -0,0 +1,139 @@ +From: Jason Gerecke +Date: Tue, 3 Apr 2012 15:47:22 -0700 +Subject: Input: wacom - add basic Intuos5 support + +commit 9fee619505bdb202c9f54b58ec996884160cdbf2 upstream. + +This patch adds support for the basic pen functions of Intuos5 +tablets. + +Signed-off-by: Jason Gerecke +Reviewed-by: Chris Bagwell +Reviewed-by: Ping Cheng +Tested-by: Timo Aaltonen +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 36 +++++++++++++++++++++++++++++++++--- + drivers/input/tablet/wacom_wac.h | 3 +++ + 2 files changed, 36 insertions(+), 3 deletions(-) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index cecd35c8f0b3..f159e9d90d4a 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -452,6 +452,7 @@ static void wacom_intuos_general(struct wacom_wac *wacom) + if ((data[1] & 0xb8) == 0xa0) { + t = (data[6] << 2) | ((data[7] >> 6) & 3); + if ((features->type >= INTUOS4S && features->type <= INTUOS4L) || ++ (features->type >= INTUOS5S && features->type <= INTUOS5L) || + features->type == WACOM_21UX2 || features->type == WACOM_24HD) { + t = (t << 1) | (data[1] & 1); + } +@@ -632,7 +633,9 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + (features->type == INTUOS3 || + features->type == INTUOS3S || + features->type == INTUOS4 || +- features->type == INTUOS4S)) { ++ features->type == INTUOS4S || ++ features->type == INTUOS5 || ++ features->type == INTUOS5S)) { + + return 0; + } +@@ -685,7 +688,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + + } else if (wacom->tool[idx] == BTN_TOOL_MOUSE) { + /* I4 mouse */ +- if (features->type >= INTUOS4S && features->type <= INTUOS4L) { ++ if ((features->type >= INTUOS4S && features->type <= INTUOS4L) || ++ (features->type >= INTUOS5S && features->type <= INTUOS5L)) { + input_report_key(input, BTN_LEFT, data[6] & 0x01); + input_report_key(input, BTN_MIDDLE, data[6] & 0x02); + input_report_key(input, BTN_RIGHT, data[6] & 0x04); +@@ -712,7 +716,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + } + } + } else if ((features->type < INTUOS3S || features->type == INTUOS3L || +- features->type == INTUOS4L) && ++ features->type == INTUOS4L || features->type == INTUOS5L) && + wacom->tool[idx] == BTN_TOOL_LENS) { + /* Lens cursor packets */ + input_report_key(input, BTN_LEFT, data[8] & 0x01); +@@ -1107,6 +1111,9 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) + case INTUOS4S: + case INTUOS4: + case INTUOS4L: ++ case INTUOS5S: ++ case INTUOS5: ++ case INTUOS5L: + case CINTIQ: + case WACOM_BEE: + case WACOM_21UX2: +@@ -1355,12 +1362,15 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + wacom_setup_intuos(wacom_wac); + break; + ++ case INTUOS5: ++ case INTUOS5L: + case INTUOS4: + case INTUOS4L: + __set_bit(BTN_7, input_dev->keybit); + __set_bit(BTN_8, input_dev->keybit); + /* fall through */ + ++ case INTUOS5S: + case INTUOS4S: + for (i = 0; i < 7; i++) + __set_bit(BTN_0 + i, input_dev->keybit); +@@ -1629,6 +1639,21 @@ static const struct wacom_features wacom_features_0xBB = + static const struct wacom_features wacom_features_0xBC = + { "Wacom Intuos4 WL", WACOM_PKGLEN_INTUOS, 40840, 25400, 2047, + 63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++static const struct wacom_features wacom_features_0x26 = ++ { "Wacom Intuos5 touch S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047, ++ 63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++static const struct wacom_features wacom_features_0x27 = ++ { "Wacom Intuos5 touch M", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047, ++ 63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++static const struct wacom_features wacom_features_0x28 = ++ { "Wacom Intuos5 touch L", WACOM_PKGLEN_INTUOS, 65024, 40640, 2047, ++ 63, INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++static const struct wacom_features wacom_features_0x29 = ++ { "Wacom Intuos5 S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047, ++ 63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++static const struct wacom_features wacom_features_0x2A = ++ { "Wacom Intuos5 M", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047, ++ 63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; + static const struct wacom_features wacom_features_0xF4 = + { "Wacom Cintiq 24HD", WACOM_PKGLEN_INTUOS, 104480, 65600, 2047, + 63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; +@@ -1801,6 +1826,11 @@ const struct usb_device_id wacom_ids[] = { + { USB_DEVICE_WACOM(0xBA) }, + { USB_DEVICE_WACOM(0xBB) }, + { USB_DEVICE_WACOM(0xBC) }, ++ { USB_DEVICE_WACOM(0x26) }, ++ { USB_DEVICE_WACOM(0x27) }, ++ { USB_DEVICE_WACOM(0x28) }, ++ { USB_DEVICE_WACOM(0x29) }, ++ { USB_DEVICE_WACOM(0x2A) }, + { USB_DEVICE_WACOM(0x3F) }, + { USB_DEVICE_WACOM(0xC5) }, + { USB_DEVICE_WACOM(0xC6) }, +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index ba5a334e54d6..0aa00ce5fd7d 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -65,6 +65,9 @@ enum { + INTUOS4S, + INTUOS4, + INTUOS4L, ++ INTUOS5S, ++ INTUOS5, ++ INTUOS5L, + WACOM_24HD, + WACOM_21UX2, + CINTIQ, +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0021-Input-wacom-add-Intuos5-Touch-Ring-ExpressKey-suppor.patch b/debian/patches/features/all/wacom/0021-Input-wacom-add-Intuos5-Touch-Ring-ExpressKey-suppor.patch new file mode 100644 index 000000000..3e99cfecb --- /dev/null +++ b/debian/patches/features/all/wacom/0021-Input-wacom-add-Intuos5-Touch-Ring-ExpressKey-suppor.patch @@ -0,0 +1,93 @@ +From: Jason Gerecke +Date: Tue, 3 Apr 2012 15:48:35 -0700 +Subject: Input: wacom - add Intuos5 Touch Ring/ExpressKey support + +commit f860e581fd473250c6dcbd3e13d576b6197e4694 upstream. + +Intuos5 uses a new report type for Touch Ring and ExpressKey data. +Note that data from the capacitive sensors present on the ExpressKeys +will be ignored until a proper way is found to expose it. + +Signed-off-by: Jason Gerecke +Reviewed-by: Chris Bagwell +Reviewed-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_wac.c | 33 +++++++++++++++++++++++++++++++-- + drivers/input/tablet/wacom_wac.h | 1 + + 2 files changed, 32 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index f159e9d90d4a..b5176a073c83 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -484,7 +484,8 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + int idx = 0, result; + + if (data[0] != WACOM_REPORT_PENABLED && data[0] != WACOM_REPORT_INTUOSREAD +- && data[0] != WACOM_REPORT_INTUOSWRITE && data[0] != WACOM_REPORT_INTUOSPAD) { ++ && data[0] != WACOM_REPORT_INTUOSWRITE && data[0] != WACOM_REPORT_INTUOSPAD ++ && data[0] != WACOM_REPORT_INTUOS5PAD) { + dbg("wacom_intuos_irq: received unknown report #%d", data[0]); + return 0; + } +@@ -494,7 +495,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + idx = data[1] & 0x01; + + /* pad packets. Works as a second tool and is always in prox */ +- if (data[0] == WACOM_REPORT_INTUOSPAD) { ++ if (data[0] == WACOM_REPORT_INTUOSPAD || data[0] == WACOM_REPORT_INTUOS5PAD) { + if (features->type >= INTUOS4S && features->type <= INTUOS4L) { + input_report_key(input, BTN_0, (data[2] & 0x01)); + input_report_key(input, BTN_1, (data[3] & 0x01)); +@@ -570,6 +571,34 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + input_report_key(input, wacom->tool[1], 0); + input_report_abs(input, ABS_MISC, 0); + } ++ } else if (features->type >= INTUOS5S && features->type <= INTUOS5L) { ++ int i; ++ ++ /* Touch ring mode switch has no capacitive sensor */ ++ input_report_key(input, BTN_0, (data[3] & 0x01)); ++ ++ /* ++ * ExpressKeys on Intuos5 have a capacitive sensor in ++ * addition to the mechanical switch. Switch data is ++ * stored in data[4], capacitive data in data[5]. ++ */ ++ for (i = 0; i < 8; i++) ++ input_report_key(input, BTN_1 + i, data[4] & (1 << i)); ++ ++ if (data[2] & 0x80) { ++ input_report_abs(input, ABS_WHEEL, (data[2] & 0x7f)); ++ } else { ++ /* Out of proximity, clear wheel value. */ ++ input_report_abs(input, ABS_WHEEL, 0); ++ } ++ ++ if (data[2] | (data[3] & 0x01) | data[4]) { ++ input_report_key(input, wacom->tool[1], 1); ++ input_report_abs(input, ABS_MISC, PAD_DEVICE_ID); ++ } else { ++ input_report_key(input, wacom->tool[1], 0); ++ input_report_abs(input, ABS_MISC, 0); ++ } + } else { + if (features->type == WACOM_21UX2) { + input_report_key(input, BTN_0, (data[5] & 0x01)); +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 0aa00ce5fd7d..17ba1868f0cd 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -38,6 +38,7 @@ + #define WACOM_REPORT_INTUOSREAD 5 + #define WACOM_REPORT_INTUOSWRITE 6 + #define WACOM_REPORT_INTUOSPAD 12 ++#define WACOM_REPORT_INTUOS5PAD 3 + #define WACOM_REPORT_TPC1FG 6 + #define WACOM_REPORT_TPC2FG 13 + #define WACOM_REPORT_TPCHID 15 +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0022-Input-wacom-add-Intuos5-Touch-Ring-LED-support.patch b/debian/patches/features/all/wacom/0022-Input-wacom-add-Intuos5-Touch-Ring-LED-support.patch new file mode 100644 index 000000000..f0b87f864 --- /dev/null +++ b/debian/patches/features/all/wacom/0022-Input-wacom-add-Intuos5-Touch-Ring-LED-support.patch @@ -0,0 +1,163 @@ +From: Jason Gerecke +Date: Tue, 3 Apr 2012 15:50:37 -0700 +Subject: Input: wacom - add Intuos5 Touch Ring LED support + +commit 9b5b95dd516a13d53ecf9217672d2116f05097bc upstream. + +The Touch Ring LEDs on Intuos5 tablets use a different report +format which supports only 4 levels of brightness. We remap +the 7-bit value obtained from sysfs to an appropriate value +for the tablet. Control of the crop mark LEDs (new to the I5) +is left for a later patch. + +Signed-off-by: Jason Gerecke +Reviewed-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + Documentation/ABI/testing/sysfs-driver-wacom | 15 +++--- + drivers/input/tablet/wacom_sys.c | 67 ++++++++++++++++++++++---- + 2 files changed, 65 insertions(+), 17 deletions(-) + +diff --git a/Documentation/ABI/testing/sysfs-driver-wacom b/Documentation/ABI/testing/sysfs-driver-wacom +index 0130d6683c14..5e9cbdc7486e 100644 +--- a/Documentation/ABI/testing/sysfs-driver-wacom ++++ b/Documentation/ABI/testing/sysfs-driver-wacom +@@ -15,9 +15,10 @@ Contact: linux-input@vger.kernel.org + Description: + Attribute group for control of the status LEDs and the OLEDs. + This attribute group is only available for Intuos 4 M, L, +- and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD +- (LEDs only). Therefore its presence implicitly signifies the +- presence of said LEDs and OLEDs on the tablet device. ++ and XL (with LEDs and OLEDs), Intuos 5 (LEDs only), and Cintiq ++ 21UX2 and Cintiq 24HD (LEDs only). Therefore its presence ++ implicitly signifies the presence of said LEDs and OLEDs on the ++ tablet device. + + What: /sys/bus/usb/devices/-:./wacom_led/status0_luminance + Date: August 2011 +@@ -40,10 +41,10 @@ What: /sys/bus/usb/devices/-:./wacom_led/status_led0 + Date: August 2011 + Contact: linux-input@vger.kernel.org + Description: +- Writing to this file sets which one of the four (for Intuos 4) +- or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status +- LEDs is active (0..3). The other three LEDs on the same side are +- always inactive. ++ Writing to this file sets which one of the four (for Intuos 4 ++ and Intuos 5) or of the right four (for Cintiq 21UX2 and Cintiq ++ 24HD) status LEDs is active (0..3). The other three LEDs on the ++ same side are always inactive. + + What: /sys/bus/usb/devices/-:./wacom_led/status_led1_select + Date: September 2011 +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 8a5fad186140..f470e41d23e7 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -574,23 +574,39 @@ static void wacom_remove_shared_data(struct wacom_wac *wacom) + static int wacom_led_control(struct wacom *wacom) + { + unsigned char *buf; +- int retval, led = 0; ++ int retval; + + buf = kzalloc(9, GFP_KERNEL); + if (!buf) + return -ENOMEM; + +- if (wacom->wacom_wac.features.type == WACOM_21UX2 || +- wacom->wacom_wac.features.type == WACOM_24HD) +- led = (wacom->led.select[1] << 4) | 0x40; ++ if (wacom->wacom_wac.features.type >= INTUOS5S && ++ wacom->wacom_wac.features.type <= INTUOS5L) { ++ /* ++ * Touch Ring and crop mark LED luminance may take on ++ * one of four values: ++ * 0 = Low; 1 = Medium; 2 = High; 3 = Off ++ */ ++ int ring_led = wacom->led.select[0] & 0x03; ++ int ring_lum = (((wacom->led.llv & 0x60) >> 5) - 1) & 0x03; ++ int crop_lum = 0; + +- led |= wacom->led.select[0] | 0x4; ++ buf[0] = WAC_CMD_LED_CONTROL; ++ buf[1] = (crop_lum << 4) | (ring_lum << 2) | (ring_led); ++ } ++ else { ++ int led = wacom->led.select[0] | 0x4; + +- buf[0] = WAC_CMD_LED_CONTROL; +- buf[1] = led; +- buf[2] = wacom->led.llv; +- buf[3] = wacom->led.hlv; +- buf[4] = wacom->led.img_lum; ++ if (wacom->wacom_wac.features.type == WACOM_21UX2 || ++ wacom->wacom_wac.features.type == WACOM_24HD) ++ led |= (wacom->led.select[1] << 4) | 0x40; ++ ++ buf[0] = WAC_CMD_LED_CONTROL; ++ buf[1] = led; ++ buf[2] = wacom->led.llv; ++ buf[3] = wacom->led.hlv; ++ buf[4] = wacom->led.img_lum; ++ } + + retval = wacom_set_report(wacom->intf, 0x03, WAC_CMD_LED_CONTROL, + buf, 9, WAC_CMD_RETRIES); +@@ -783,6 +799,17 @@ static struct attribute_group intuos4_led_attr_group = { + .attrs = intuos4_led_attrs, + }; + ++static struct attribute *intuos5_led_attrs[] = { ++ &dev_attr_status0_luminance.attr, ++ &dev_attr_status_led0_select.attr, ++ NULL ++}; ++ ++static struct attribute_group intuos5_led_attr_group = { ++ .name = "wacom_led", ++ .attrs = intuos5_led_attrs, ++}; ++ + static int wacom_initialize_leds(struct wacom *wacom) + { + int error; +@@ -812,6 +839,19 @@ static int wacom_initialize_leds(struct wacom *wacom) + &cintiq_led_attr_group); + break; + ++ case INTUOS5S: ++ case INTUOS5: ++ case INTUOS5L: ++ wacom->led.select[0] = 0; ++ wacom->led.select[1] = 0; ++ wacom->led.llv = 32; ++ wacom->led.hlv = 0; ++ wacom->led.img_lum = 0; ++ ++ error = sysfs_create_group(&wacom->intf->dev.kobj, ++ &intuos5_led_attr_group); ++ break; ++ + default: + return 0; + } +@@ -840,6 +880,13 @@ static void wacom_destroy_leds(struct wacom *wacom) + sysfs_remove_group(&wacom->intf->dev.kobj, + &cintiq_led_attr_group); + break; ++ ++ case INTUOS5S: ++ case INTUOS5: ++ case INTUOS5L: ++ sysfs_remove_group(&wacom->intf->dev.kobj, ++ &intuos5_led_attr_group); ++ break; + } + } + +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0023-Input-wacom-add-Intuos5-multitouch-sensor-support.patch b/debian/patches/features/all/wacom/0023-Input-wacom-add-Intuos5-multitouch-sensor-support.patch new file mode 100644 index 000000000..aa9987e23 --- /dev/null +++ b/debian/patches/features/all/wacom/0023-Input-wacom-add-Intuos5-multitouch-sensor-support.patch @@ -0,0 +1,183 @@ +From: Jason Gerecke +Date: Tue, 3 Apr 2012 15:50:40 -0700 +Subject: Input: wacom - add Intuos5 multitouch sensor support + +commit ae584ca473289377dd7fd8c61439db4bfab5489a upstream. + +Intuos5 tablets with PTH-* model numbers include a multitouch sensor +which use the same touch reports as the 3rd-generation Bamboo. No +useful information is in the HID descriptor for the touch interface +so hardcoded values are used during setup. + +Signed-off-by: Jason Gerecke +Reviewed-by: Chris Bagwell +Reviewed-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 25 +++++++++++++++ + drivers/input/tablet/wacom_wac.c | 64 +++++++++++++++++++++++++++++++++++--- + 2 files changed, 84 insertions(+), 5 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index f470e41d23e7..4d52e5924801 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -233,6 +233,9 @@ static int wacom_parse_logical_collection(unsigned char *report, + * 3rd gen Bamboo Touch no longer define a Digitizer-Finger Pysical + * Collection. Instead they define a Logical Collection with a single + * Logical Maximum for both X and Y. ++ * ++ * Intuos5 touch interface does not contain useful data. We deal with ++ * this after returning from this function. + */ + static int wacom_parse_hid(struct usb_interface *intf, + struct hid_descriptor *hid_desc, +@@ -1087,6 +1090,28 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + if (error) + goto fail3; + ++ /* ++ * Intuos5 has no useful data about its touch interface in its ++ * HID descriptor. If this is the touch interface (wMaxPacketSize ++ * of WACOM_PKGLEN_BBTOUCH3), override the table values. ++ */ ++ if (features->type >= INTUOS5S && features->type <= INTUOS5L) { ++ if (endpoint->wMaxPacketSize == WACOM_PKGLEN_BBTOUCH3) { ++ features->device_type = BTN_TOOL_FINGER; ++ features->pktlen = WACOM_PKGLEN_BBTOUCH3; ++ ++ features->x_phy = ++ (features->x_max * 100) / features->x_resolution; ++ features->y_phy = ++ (features->y_max * 100) / features->y_resolution; ++ ++ features->x_max = 4096; ++ features->y_max = 4096; ++ } else { ++ features->device_type = BTN_TOOL_PEN; ++ } ++ } ++ + wacom_setup_device_quirks(features); + + strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name)); +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index b5176a073c83..d96e186f71dc 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -321,6 +321,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom) + + /* Enter report */ + if ((data[1] & 0xfc) == 0xc0) { ++ if (features->type >= INTUOS5S && features->type <= INTUOS5L) ++ wacom->shared->stylus_in_proximity = true; ++ + /* serial number of the tool */ + wacom->serial[idx] = ((data[3] & 0x0f) << 28) + + (data[4] << 20) + (data[5] << 12) + +@@ -406,6 +409,9 @@ static int wacom_intuos_inout(struct wacom_wac *wacom) + + /* Exit report */ + if ((data[1] & 0xfe) == 0x80) { ++ if (features->type >= INTUOS5S && features->type <= INTUOS5L) ++ wacom->shared->stylus_in_proximity = false; ++ + /* + * Reset all states otherwise we lose the initial states + * when in-prox next time +@@ -1140,9 +1146,6 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) + case INTUOS4S: + case INTUOS4: + case INTUOS4L: +- case INTUOS5S: +- case INTUOS5: +- case INTUOS5L: + case CINTIQ: + case WACOM_BEE: + case WACOM_21UX2: +@@ -1150,6 +1153,15 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) + sync = wacom_intuos_irq(wacom_wac); + break; + ++ case INTUOS5S: ++ case INTUOS5: ++ case INTUOS5L: ++ if (len == WACOM_PKGLEN_BBTOUCH3) ++ sync = wacom_bpt3_touch(wacom_wac); ++ else ++ sync = wacom_intuos_irq(wacom_wac); ++ break; ++ + case TABLETPC: + case TABLETPC2FG: + sync = wacom_tpc_irq(wacom_wac, len); +@@ -1224,7 +1236,8 @@ void wacom_setup_device_quirks(struct wacom_features *features) + + /* these device have multiple inputs */ + if (features->type == TABLETPC || features->type == TABLETPC2FG || +- features->type == BAMBOO_PT || features->type == WIRELESS) ++ features->type == BAMBOO_PT || features->type == WIRELESS || ++ (features->type >= INTUOS5S && features->type <= INTUOS5L)) + features->quirks |= WACOM_QUIRK_MULTI_INPUT; + + /* quirk for bamboo touch with 2 low res touches */ +@@ -1393,13 +1406,54 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + + case INTUOS5: + case INTUOS5L: ++ if (features->device_type == BTN_TOOL_PEN) { ++ __set_bit(BTN_7, input_dev->keybit); ++ __set_bit(BTN_8, input_dev->keybit); ++ } ++ /* fall through */ ++ ++ case INTUOS5S: ++ __set_bit(INPUT_PROP_POINTER, input_dev->propbit); ++ ++ if (features->device_type == BTN_TOOL_PEN) { ++ for (i = 0; i < 7; i++) ++ __set_bit(BTN_0 + i, input_dev->keybit); ++ ++ input_set_abs_params(input_dev, ABS_DISTANCE, 0, ++ features->distance_max, ++ 0, 0); ++ ++ input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); ++ ++ wacom_setup_intuos(wacom_wac); ++ } else if (features->device_type == BTN_TOOL_FINGER) { ++ __clear_bit(ABS_MISC, input_dev->absbit); ++ ++ __set_bit(BTN_TOOL_FINGER, input_dev->keybit); ++ __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); ++ __set_bit(BTN_TOOL_TRIPLETAP, input_dev->keybit); ++ __set_bit(BTN_TOOL_QUADTAP, input_dev->keybit); ++ ++ input_mt_init_slots(input_dev, 16); ++ ++ input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, ++ 0, 255, 0, 0); ++ ++ input_set_abs_params(input_dev, ABS_MT_POSITION_X, ++ 0, features->x_max, ++ features->x_fuzz, 0); ++ input_set_abs_params(input_dev, ABS_MT_POSITION_Y, ++ 0, features->y_max, ++ features->y_fuzz, 0); ++ } ++ break; ++ + case INTUOS4: + case INTUOS4L: + __set_bit(BTN_7, input_dev->keybit); + __set_bit(BTN_8, input_dev->keybit); + /* fall through */ + +- case INTUOS5S: + case INTUOS4S: + for (i = 0; i < 7; i++) + __set_bit(BTN_0 + i, input_dev->keybit); +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0024-Input-wacom-retrieve-maximum-number-of-touch-points.patch b/debian/patches/features/all/wacom/0024-Input-wacom-retrieve-maximum-number-of-touch-points.patch new file mode 100644 index 000000000..b2d34eba5 --- /dev/null +++ b/debian/patches/features/all/wacom/0024-Input-wacom-retrieve-maximum-number-of-touch-points.patch @@ -0,0 +1,249 @@ +From: Ping Cheng +Date: Sun, 29 Apr 2012 21:09:17 -0700 +Subject: Input: wacom - retrieve maximum number of touch points + +commit f393ee2b814e3291c12565000210b3cf10aa5c1d upstream. + +>From the HID usage table when it is supported. + +Tested-by: Jason Gerecke +Signed-off-by: Chris Bagwell +Signed-off-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom_sys.c | 29 ++++++++++++++++++- + drivers/input/tablet/wacom_wac.c | 59 +++++++++++++++++++++++--------------- + drivers/input/tablet/wacom_wac.h | 1 + + 3 files changed, 65 insertions(+), 24 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 4d52e5924801..53598c2065cf 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -28,6 +28,7 @@ + #define HID_USAGE_Y_TILT 0x3e + #define HID_USAGE_FINGER 0x22 + #define HID_USAGE_STYLUS 0x20 ++#define HID_USAGE_CONTACTMAX 0x55 + #define HID_COLLECTION 0xa1 + #define HID_COLLECTION_LOGICAL 0x02 + #define HID_COLLECTION_END 0xc0 +@@ -201,6 +202,27 @@ static int wacom_parse_logical_collection(unsigned char *report, + return length; + } + ++static void wacom_retrieve_report_data(struct usb_interface *intf, ++ struct wacom_features *features) ++{ ++ int result = 0; ++ unsigned char *rep_data; ++ ++ rep_data = kmalloc(2, GFP_KERNEL); ++ if (rep_data) { ++ ++ rep_data[0] = 12; ++ result = wacom_get_report(intf, WAC_HID_FEATURE_REPORT, ++ rep_data[0], &rep_data, 2, ++ WAC_MSG_RETRIES); ++ ++ if (result >= 0 && rep_data[1] > 2) ++ features->touch_max = rep_data[1]; ++ ++ kfree(rep_data); ++ } ++} ++ + /* + * Interface Descriptor of wacom devices can be incomplete and + * inconsistent so wacom_features table is used to store stylus +@@ -377,6 +399,11 @@ static int wacom_parse_hid(struct usb_interface *intf, + pen = 1; + i++; + break; ++ ++ case HID_USAGE_CONTACTMAX: ++ wacom_retrieve_report_data(intf, features); ++ i++; ++ break; + } + break; + +@@ -1085,7 +1112,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i + + endpoint = &intf->cur_altsetting->endpoint[0].desc; + +- /* Retrieve the physical and logical size for OEM devices */ ++ /* Retrieve the physical and logical size for touch devices */ + error = wacom_retrieve_hid_descriptor(intf, features); + if (error) + goto fail3; +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index d96e186f71dc..e5cd0e57d178 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -1434,7 +1434,7 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + __set_bit(BTN_TOOL_TRIPLETAP, input_dev->keybit); + __set_bit(BTN_TOOL_QUADTAP, input_dev->keybit); + +- input_mt_init_slots(input_dev, 16); ++ input_mt_init_slots(input_dev, features->touch_max); + + input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, + 0, 255, 0, 0); +@@ -1467,7 +1467,7 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + case TABLETPC2FG: + if (features->device_type == BTN_TOOL_FINGER) { + +- input_mt_init_slots(input_dev, 2); ++ input_mt_init_slots(input_dev, features->touch_max); + input_set_abs_params(input_dev, ABS_MT_TOOL_TYPE, + 0, MT_TOOL_MAX, 0, 0); + input_set_abs_params(input_dev, ABS_MT_POSITION_X, +@@ -1522,6 +1522,7 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + + __set_bit(BTN_TOOL_FINGER, input_dev->keybit); + __set_bit(BTN_TOOL_DOUBLETAP, input_dev->keybit); ++ input_mt_init_slots(input_dev, features->touch_max); + + if (features->pktlen == WACOM_PKGLEN_BBTOUCH3) { + __set_bit(BTN_TOOL_TRIPLETAP, +@@ -1529,13 +1530,9 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + __set_bit(BTN_TOOL_QUADTAP, + input_dev->keybit); + +- input_mt_init_slots(input_dev, 16); +- + input_set_abs_params(input_dev, + ABS_MT_TOUCH_MAJOR, + 0, 255, 0, 0); +- } else { +- input_mt_init_slots(input_dev, 2); + } + + input_set_abs_params(input_dev, ABS_MT_POSITION_X, +@@ -1724,13 +1721,16 @@ static const struct wacom_features wacom_features_0xBC = + 63, INTUOS4, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; + static const struct wacom_features wacom_features_0x26 = + { "Wacom Intuos5 touch S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047, +- 63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++ 63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, ++ .touch_max = 16 }; + static const struct wacom_features wacom_features_0x27 = + { "Wacom Intuos5 touch M", WACOM_PKGLEN_INTUOS, 44704, 27940, 2047, +- 63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++ 63, INTUOS5, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, ++ .touch_max = 16 }; + static const struct wacom_features wacom_features_0x28 = + { "Wacom Intuos5 touch L", WACOM_PKGLEN_INTUOS, 65024, 40640, 2047, +- 63, INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; ++ 63, INTUOS5L, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, ++ .touch_max = 16 }; + static const struct wacom_features wacom_features_0x29 = + { "Wacom Intuos5 S", WACOM_PKGLEN_INTUOS, 31496, 19685, 2047, + 63, INTUOS5S, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; +@@ -1778,13 +1778,16 @@ static const struct wacom_features wacom_features_0x9F = + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + static const struct wacom_features wacom_features_0xE2 = + { "Wacom ISDv4 E2", WACOM_PKGLEN_TPC2FG, 26202, 16325, 255, +- 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xE3 = + { "Wacom ISDv4 E3", WACOM_PKGLEN_TPC2FG, 26202, 16325, 255, +- 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xE6 = + { "Wacom ISDv4 E6", WACOM_PKGLEN_TPC2FG, 27760, 15694, 255, +- 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xEC = + { "Wacom ISDv4 EC", WACOM_PKGLEN_GRAPHIRE, 25710, 14500, 255, + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; +@@ -1793,19 +1796,22 @@ static const struct wacom_features wacom_features_0x47 = + 31, INTUOS, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + static const struct wacom_features wacom_features_0x84 = + { "Wacom Wireless Receiver", WACOM_PKGLEN_WIRELESS, 0, 0, 0, +- 0, WIRELESS, 0, 0 }; ++ 0, WIRELESS, 0, 0, .touch_max = 16 }; + static const struct wacom_features wacom_features_0xD0 = + { "Wacom Bamboo 2FG", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xD1 = + { "Wacom Bamboo 2FG 4x5", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xD2 = + { "Wacom Bamboo Craft", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + static const struct wacom_features wacom_features_0xD3 = + { "Wacom Bamboo 2FG 6x8", WACOM_PKGLEN_BBFUN, 21648, 13700, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xD4 = + { "Wacom Bamboo Pen", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; +@@ -1814,28 +1820,35 @@ static const struct wacom_features wacom_features_0xD5 = + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + static const struct wacom_features wacom_features_0xD6 = + { "Wacom BambooPT 2FG 4x5", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xD7 = + { "Wacom BambooPT 2FG Small", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xD8 = + { "Wacom Bamboo Comic 2FG", WACOM_PKGLEN_BBFUN, 21648, 13700, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xDA = + { "Wacom Bamboo 2FG 4x5 SE", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static struct wacom_features wacom_features_0xDB = + { "Wacom Bamboo 2FG 6x8 SE", WACOM_PKGLEN_BBFUN, 21648, 13700, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 2 }; + static const struct wacom_features wacom_features_0xDD = + { "Wacom Bamboo Connect", WACOM_PKGLEN_BBPEN, 14720, 9200, 1023, + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + static const struct wacom_features wacom_features_0xDE = + { "Wacom Bamboo 16FG 4x5", WACOM_PKGLEN_BBPEN, 14720, 9200, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 16 }; + static const struct wacom_features wacom_features_0xDF = + { "Wacom Bamboo 16FG 6x8", WACOM_PKGLEN_BBPEN, 21648, 13700, 1023, +- 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; ++ 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, ++ .touch_max = 16 }; + static const struct wacom_features wacom_features_0x6004 = + { "ISD-V4", WACOM_PKGLEN_GRAPHIRE, 12800, 8000, 255, + 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 17ba1868f0cd..321269c1ac4c 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -99,6 +99,7 @@ struct wacom_features { + int pressure_fuzz; + int distance_fuzz; + unsigned quirks; ++ unsigned touch_max; + }; + + struct wacom_shared { +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch b/debian/patches/features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch new file mode 100644 index 000000000..46219465f --- /dev/null +++ b/debian/patches/features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch @@ -0,0 +1,430 @@ +From: Ping Cheng +Date: Sun, 29 Apr 2012 21:09:18 -0700 +Subject: Input: wacom - add 0xE5 (MT device) support + +commit 1963518b9b1b8019d33b4b08deee6f873ffa2730 upstream. + +Main part of patch is adding support for a new Wacom MT touch +packet and labels these devices using MTSCREEN type. + +Other items of interest: + +Delete some duplicate code in HID parsing for Y info since +its already done in X path. + +In wacom_query_tablet_data(), only invoke the set report +that requests tablets to send Wacom Touch packets for +Finger interfaces. Mostly, this is to make code intent clear. + +Tested-by: Jason Gerecke +Signed-off-by: Chris Bagwell +Signed-off-by: Ping Cheng +Signed-off-by: Dmitry Torokhov +Signed-off-by: Jonathan Nieder +--- + drivers/input/tablet/wacom.h | 4 +- + drivers/input/tablet/wacom_sys.c | 91 ++++++++++++++++++++--------------- + drivers/input/tablet/wacom_wac.c | 99 ++++++++++++++++++++++++++++++++++++-- + drivers/input/tablet/wacom_wac.h | 8 +++ + 4 files changed, 157 insertions(+), 45 deletions(-) + +diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h +index b4842d0e61dd..b79d45198d82 100644 +--- a/drivers/input/tablet/wacom.h ++++ b/drivers/input/tablet/wacom.h +@@ -135,6 +135,6 @@ extern const struct usb_device_id wacom_ids[]; + + void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len); + void wacom_setup_device_quirks(struct wacom_features *features); +-void wacom_setup_input_capabilities(struct input_dev *input_dev, +- struct wacom_wac *wacom_wac); ++int wacom_setup_input_capabilities(struct input_dev *input_dev, ++ struct wacom_wac *wacom_wac); + #endif +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 53598c2065cf..734671aeb572 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -317,6 +317,10 @@ static int wacom_parse_hid(struct usb_interface *intf, + /* need to reset back */ + features->pktlen = WACOM_PKGLEN_TPC2FG; + } ++ ++ if (features->type == MTSCREEN) ++ features->pktlen = WACOM_PKGLEN_MTOUCH; ++ + if (features->type == BAMBOO_PT) { + /* need to reset back */ + features->pktlen = WACOM_PKGLEN_BBTOUCH; +@@ -349,18 +353,15 @@ static int wacom_parse_hid(struct usb_interface *intf, + case HID_USAGE_Y: + if (usage == WCM_DESKTOP) { + if (finger) { +- features->device_type = BTN_TOOL_FINGER; +- if (features->type == TABLETPC2FG) { +- /* need to reset back */ +- features->pktlen = WACOM_PKGLEN_TPC2FG; ++ int type = features->type; ++ ++ if (type == TABLETPC2FG || type == MTSCREEN) { + features->y_max = + get_unaligned_le16(&report[i + 3]); + features->y_phy = + get_unaligned_le16(&report[i + 6]); + i += 7; +- } else if (features->type == BAMBOO_PT) { +- /* need to reset back */ +- features->pktlen = WACOM_PKGLEN_BBTOUCH; ++ } else if (type == BAMBOO_PT) { + features->y_phy = + get_unaligned_le16(&report[i + 3]); + features->y_max = +@@ -374,10 +375,6 @@ static int wacom_parse_hid(struct usb_interface *intf, + i += 4; + } + } else if (pen) { +- /* penabled only accepts exact bytes of data */ +- if (features->type == TABLETPC2FG) +- features->pktlen = WACOM_PKGLEN_GRAPHIRE; +- features->device_type = BTN_TOOL_PEN; + features->y_max = + get_unaligned_le16(&report[i + 3]); + i += 4; +@@ -440,22 +437,29 @@ static int wacom_query_tablet_data(struct usb_interface *intf, struct wacom_feat + if (!rep_data) + return error; + +- /* ask to report tablet data if it is MT Tablet PC or +- * not a Tablet PC */ +- if (features->type == TABLETPC2FG) { +- do { +- rep_data[0] = 3; +- rep_data[1] = 4; +- rep_data[2] = 0; +- rep_data[3] = 0; +- report_id = 3; +- error = wacom_set_report(intf, WAC_HID_FEATURE_REPORT, +- report_id, rep_data, 4, 1); +- if (error >= 0) +- error = wacom_get_report(intf, +- WAC_HID_FEATURE_REPORT, +- report_id, rep_data, 4, 1); +- } while ((error < 0 || rep_data[1] != 4) && limit++ < WAC_MSG_RETRIES); ++ /* ask to report Wacom data */ ++ if (features->device_type == BTN_TOOL_FINGER) { ++ /* if it is an MT Tablet PC touch */ ++ if (features->type == TABLETPC2FG || ++ features->type == MTSCREEN) { ++ do { ++ rep_data[0] = 3; ++ rep_data[1] = 4; ++ rep_data[2] = 0; ++ rep_data[3] = 0; ++ report_id = 3; ++ error = wacom_set_report(intf, ++ WAC_HID_FEATURE_REPORT, ++ report_id, ++ rep_data, 4, 1); ++ if (error >= 0) ++ error = wacom_get_report(intf, ++ WAC_HID_FEATURE_REPORT, ++ report_id, ++ rep_data, 4, 1); ++ } while ((error < 0 || rep_data[1] != 4) && ++ limit++ < WAC_MSG_RETRIES); ++ } + } else if (features->type != TABLETPC && + features->type != WIRELESS && + features->device_type == BTN_TOOL_PEN) { +@@ -477,7 +481,7 @@ static int wacom_query_tablet_data(struct usb_interface *intf, struct wacom_feat + } + + static int wacom_retrieve_hid_descriptor(struct usb_interface *intf, +- struct wacom_features *features) ++ struct wacom_features *features) + { + int error = 0; + struct usb_host_interface *interface = intf->cur_altsetting; +@@ -505,10 +509,13 @@ static int wacom_retrieve_hid_descriptor(struct usb_interface *intf, + } + } + +- /* only Tablet PCs and Bamboo P&T need to retrieve the info */ +- if ((features->type != TABLETPC) && (features->type != TABLETPC2FG) && +- (features->type != BAMBOO_PT)) ++ /* only devices that support touch need to retrieve the info */ ++ if (features->type != TABLETPC && ++ features->type != TABLETPC2FG && ++ features->type != BAMBOO_PT && ++ features->type != MTSCREEN) { + goto out; ++ } + + if (usb_get_extra_descriptor(interface, HID_DEVICET_HID, &hid_desc)) { + if (usb_get_extra_descriptor(&interface->endpoint[0], +@@ -978,8 +985,10 @@ static int wacom_register_input(struct wacom *wacom) + int error; + + input_dev = input_allocate_device(); +- if (!input_dev) +- return -ENOMEM; ++ if (!input_dev) { ++ error = -ENOMEM; ++ goto fail1; ++ } + + input_dev->name = wacom_wac->name; + input_dev->dev.parent = &intf->dev; +@@ -989,14 +998,20 @@ static int wacom_register_input(struct wacom *wacom) + input_set_drvdata(input_dev, wacom); + + wacom_wac->input = input_dev; +- wacom_setup_input_capabilities(input_dev, wacom_wac); ++ error = wacom_setup_input_capabilities(input_dev, wacom_wac); ++ if (error) ++ goto fail1; + + error = input_register_device(input_dev); +- if (error) { +- input_free_device(input_dev); +- wacom_wac->input = NULL; +- } ++ if (error) ++ goto fail2; + ++ return 0; ++ ++fail2: ++ input_free_device(input_dev); ++ wacom_wac->input = NULL; ++fail1: + return error; + } + +diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c +index e5cd0e57d178..10e5cf870359 100644 +--- a/drivers/input/tablet/wacom_wac.c ++++ b/drivers/input/tablet/wacom_wac.c +@@ -768,6 +768,72 @@ static int wacom_intuos_irq(struct wacom_wac *wacom) + return 1; + } + ++static int find_slot_from_contactid(struct wacom_wac *wacom, int contactid) ++{ ++ int touch_max = wacom->features.touch_max; ++ int i; ++ ++ if (!wacom->slots) ++ return -1; ++ ++ for (i = 0; i < touch_max; ++i) { ++ if (wacom->slots[i] == contactid) ++ return i; ++ } ++ for (i = 0; i < touch_max; ++i) { ++ if (wacom->slots[i] == -1) ++ return i; ++ } ++ return -1; ++} ++ ++static int wacom_mt_touch(struct wacom_wac *wacom) ++{ ++ struct input_dev *input = wacom->input; ++ char *data = wacom->data; ++ int i; ++ int current_num_contacts = data[2]; ++ int contacts_to_send = 0; ++ ++ /* ++ * First packet resets the counter since only the first ++ * packet in series will have non-zero current_num_contacts. ++ */ ++ if (current_num_contacts) ++ wacom->num_contacts_left = current_num_contacts; ++ ++ /* There are at most 5 contacts per packet */ ++ contacts_to_send = min(5, wacom->num_contacts_left); ++ ++ for (i = 0; i < contacts_to_send; i++) { ++ int offset = (WACOM_BYTES_PER_MT_PACKET * i) + 3; ++ bool touch = data[offset] & 0x1; ++ int id = le16_to_cpup((__le16 *)&data[offset + 1]); ++ int slot = find_slot_from_contactid(wacom, id); ++ ++ if (slot < 0) ++ continue; ++ ++ input_mt_slot(input, slot); ++ input_mt_report_slot_state(input, MT_TOOL_FINGER, touch); ++ if (touch) { ++ int x = le16_to_cpup((__le16 *)&data[offset + 7]); ++ int y = le16_to_cpup((__le16 *)&data[offset + 9]); ++ input_report_abs(input, ABS_MT_POSITION_X, x); ++ input_report_abs(input, ABS_MT_POSITION_Y, y); ++ } ++ wacom->slots[slot] = touch ? id : -1; ++ } ++ ++ input_mt_report_pointer_emulation(input, true); ++ ++ wacom->num_contacts_left -= contacts_to_send; ++ if (wacom->num_contacts_left < 0) ++ wacom->num_contacts_left = 0; ++ ++ return 1; ++} ++ + static int wacom_tpc_mt_touch(struct wacom_wac *wacom) + { + struct input_dev *input = wacom->input; +@@ -806,6 +872,9 @@ static int wacom_tpc_single_touch(struct wacom_wac *wacom, size_t len) + bool prox; + int x = 0, y = 0; + ++ if (wacom->features.touch_max > 1 || len > WACOM_PKGLEN_TPC2FG) ++ return 0; ++ + if (!wacom->shared->stylus_in_proximity) { + if (len == WACOM_PKGLEN_TPC1FG) { + prox = data[0] & 0x01; +@@ -873,10 +942,10 @@ static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len) + + switch (len) { + case WACOM_PKGLEN_TPC1FG: +- return wacom_tpc_single_touch(wacom, len); ++ return wacom_tpc_single_touch(wacom, len); + + case WACOM_PKGLEN_TPC2FG: +- return wacom_tpc_mt_touch(wacom); ++ return wacom_tpc_mt_touch(wacom); + + default: + switch (data[0]) { +@@ -885,6 +954,9 @@ static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len) + case WACOM_REPORT_TPCST: + return wacom_tpc_single_touch(wacom, len); + ++ case WACOM_REPORT_TPCMT: ++ return wacom_mt_touch(wacom); ++ + case WACOM_REPORT_PENABLED: + return wacom_tpc_pen(wacom); + } +@@ -1164,6 +1236,7 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len) + + case TABLETPC: + case TABLETPC2FG: ++ case MTSCREEN: + sync = wacom_tpc_irq(wacom_wac, len); + break; + +@@ -1237,7 +1310,8 @@ void wacom_setup_device_quirks(struct wacom_features *features) + /* these device have multiple inputs */ + if (features->type == TABLETPC || features->type == TABLETPC2FG || + features->type == BAMBOO_PT || features->type == WIRELESS || +- (features->type >= INTUOS5S && features->type <= INTUOS5L)) ++ (features->type >= INTUOS5S && features->type <= INTUOS5L) || ++ features->type == MTSCREEN) + features->quirks |= WACOM_QUIRK_MULTI_INPUT; + + /* quirk for bamboo touch with 2 low res touches */ +@@ -1268,8 +1342,8 @@ static unsigned int wacom_calculate_touch_res(unsigned int logical_max, + return (logical_max * 100) / physical_max; + } + +-void wacom_setup_input_capabilities(struct input_dev *input_dev, +- struct wacom_wac *wacom_wac) ++int wacom_setup_input_capabilities(struct input_dev *input_dev, ++ struct wacom_wac *wacom_wac) + { + struct wacom_features *features = &wacom_wac->features; + int i; +@@ -1465,8 +1539,18 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + break; + + case TABLETPC2FG: ++ case MTSCREEN: + if (features->device_type == BTN_TOOL_FINGER) { + ++ wacom_wac->slots = kmalloc(features->touch_max * ++ sizeof(int), ++ GFP_KERNEL); ++ if (!wacom_wac->slots) ++ return -ENOMEM; ++ ++ for (i = 0; i < features->touch_max; i++) ++ wacom_wac->slots[i] = -1; ++ + input_mt_init_slots(input_dev, features->touch_max); + input_set_abs_params(input_dev, ABS_MT_TOOL_TYPE, + 0, MT_TOOL_MAX, 0, 0); +@@ -1552,6 +1636,7 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev, + } + break; + } ++ return 0; + } + + static const struct wacom_features wacom_features_0x00 = +@@ -1784,6 +1869,9 @@ static const struct wacom_features wacom_features_0xE3 = + { "Wacom ISDv4 E3", WACOM_PKGLEN_TPC2FG, 26202, 16325, 255, + 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, + .touch_max = 2 }; ++static const struct wacom_features wacom_features_0xE5 = ++ { "Wacom ISDv4 E5", WACOM_PKGLEN_MTOUCH, 26202, 16325, 255, ++ 0, MTSCREEN, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + static const struct wacom_features wacom_features_0xE6 = + { "Wacom ISDv4 E6", WACOM_PKGLEN_TPC2FG, 27760, 15694, 255, + 0, TABLETPC2FG, WACOM_INTUOS_RES, WACOM_INTUOS_RES, +@@ -1962,6 +2050,7 @@ const struct usb_device_id wacom_ids[] = { + { USB_DEVICE_WACOM(0x9F) }, + { USB_DEVICE_WACOM(0xE2) }, + { USB_DEVICE_WACOM(0xE3) }, ++ { USB_DEVICE_WACOM(0xE5) }, + { USB_DEVICE_WACOM(0xE6) }, + { USB_DEVICE_WACOM(0xEC) }, + { USB_DEVICE_WACOM(0x47) }, +diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h +index 321269c1ac4c..78fbd3f42009 100644 +--- a/drivers/input/tablet/wacom_wac.h ++++ b/drivers/input/tablet/wacom_wac.h +@@ -25,6 +25,10 @@ + #define WACOM_PKGLEN_BBTOUCH3 64 + #define WACOM_PKGLEN_BBPEN 10 + #define WACOM_PKGLEN_WIRELESS 32 ++#define WACOM_PKGLEN_MTOUCH 62 ++ ++/* wacom data size per MT contact */ ++#define WACOM_BYTES_PER_MT_PACKET 11 + + /* device IDs */ + #define STYLUS_DEVICE_ID 0x02 +@@ -41,6 +45,7 @@ + #define WACOM_REPORT_INTUOS5PAD 3 + #define WACOM_REPORT_TPC1FG 6 + #define WACOM_REPORT_TPC2FG 13 ++#define WACOM_REPORT_TPCMT 13 + #define WACOM_REPORT_TPCHID 15 + #define WACOM_REPORT_TPCST 16 + +@@ -76,6 +81,7 @@ enum { + WACOM_MO, + TABLETPC, + TABLETPC2FG, ++ MTSCREEN, + MAX_TYPE + }; + +@@ -118,6 +124,8 @@ struct wacom_wac { + struct input_dev *input; + int pid; + int battery_capacity; ++ int num_contacts_left; ++ int *slots; + }; + + #endif +-- +1.7.10.1 + diff --git a/debian/patches/features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch b/debian/patches/features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch new file mode 100644 index 000000000..8b714a64f --- /dev/null +++ b/debian/patches/features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch @@ -0,0 +1,41 @@ +From: Dmitry Torokhov +Date: Wed, 2 May 2012 00:13:38 -0700 +Subject: [PATCH 26/26] Input: wacom - return proper error if + usb_get_extra_descriptor() fails + +commit a882c932a628cbab17752fc8b1c94692f95bbf9a upstream. + +Instead of returning 1 (which is not even negative) let's capture and return +error codde returned by usb_get_extra_descriptor(). + +Reviewed-by: Chris Bagwell +Signed-off-by: Dmitry Torokhov +--- + drivers/input/tablet/wacom_sys.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c +index 364f2c343..8f3b30b 100644 +--- a/drivers/input/tablet/wacom_sys.c ++++ b/drivers/input/tablet/wacom_sys.c +@@ -517,11 +517,12 @@ static int wacom_retrieve_hid_descriptor(struct usb_interface *intf, + goto out; + } + +- if (usb_get_extra_descriptor(interface, HID_DEVICET_HID, &hid_desc)) { +- if (usb_get_extra_descriptor(&interface->endpoint[0], +- HID_DEVICET_REPORT, &hid_desc)) { +- printk("wacom: can not retrieve extra class descriptor\n"); +- error = 1; ++ error = usb_get_extra_descriptor(interface, HID_DEVICET_HID, &hid_desc); ++ if (error) { ++ error = usb_get_extra_descriptor(&interface->endpoint[0], ++ HID_DEVICET_REPORT, &hid_desc); ++ if (error) { ++ printk(KERN_ERR "wacom: can not retrieve extra class descriptor\n"); + goto out; + } + } +-- +1.7.10 + diff --git a/debian/patches/series/base b/debian/patches/series/base index b9ac37b4f..1576c6b6f 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -199,3 +199,31 @@ + bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch + bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch + bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch + +# Update wacom driver to 3.5ish ++ features/all/wacom/0001-Input-wacom-cleanup-feature-report-for-bamboos.patch ++ features/all/wacom/0002-Input-wacom-remove-unused-bamboo-HID-parsing.patch ++ features/all/wacom/0003-Input-wacom-add-some-comments-to-wacom_parse_hid.patch ++ features/all/wacom/0004-Input-wacom-relax-Bamboo-stylus-ID-check.patch ++ features/all/wacom/0005-Input-wacom-read-3rd-gen-Bamboo-Touch-HID-data.patch ++ features/all/wacom/0006-Input-wacom-3rd-gen-Bamboo-P-Touch-packet-support.patch ++ features/all/wacom/0007-Input-wacom-ignore-unwanted-bamboo-packets.patch ++ features/all/wacom/0008-Input-wacom-add-support-for-Cintiq-24HD.patch ++ features/all/wacom/0009-Input-wacom-add-LED-support-for-Cintiq-24HD.patch ++ features/all/wacom/0010-Input-wacom-use-BTN_TOOL_FINGER-to-indicate-touch-de.patch ++ features/all/wacom/0011-Input-wacom-use-switch-statement-for-wacom_tpc_irq.patch ++ features/all/wacom/0012-Input-wacom-add-missing-LEDS_CLASS-to-Kconfig.patch ++ features/all/wacom/0013-Input-wacom-fix-3rd-gen-Bamboo-MT-when-4-fingers-are.patch ++ features/all/wacom/0014-Input-wacom-fix-physical-size-calculation-for-3rd-ge.patch ++ features/all/wacom/0015-Input-wacom-isolate-input-registration.patch ++ features/all/wacom/0016-Input-wacom-check-for-allocation-failure-in-probe.patch ++ features/all/wacom/0017-Input-wacom-wireless-monitor-framework.patch ++ features/all/wacom/0018-Input-wacom-create-inputs-when-wireless-connect.patch ++ features/all/wacom/0019-Input-wacom-wireless-battery-status.patch ++ features/all/wacom/0020-Input-wacom-add-basic-Intuos5-support.patch ++ features/all/wacom/0021-Input-wacom-add-Intuos5-Touch-Ring-ExpressKey-suppor.patch ++ features/all/wacom/0022-Input-wacom-add-Intuos5-Touch-Ring-LED-support.patch ++ features/all/wacom/0023-Input-wacom-add-Intuos5-multitouch-sensor-support.patch ++ features/all/wacom/0024-Input-wacom-retrieve-maximum-number-of-touch-points.patch ++ features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch ++ features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch From 7dacceede89c4ee3e35afe1439ca19bf52b9f269 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Wed, 16 May 2012 22:24:47 +0000 Subject: [PATCH 18/31] test-patches: Fix -j option, broken since 3.1.0-1~experimental.1 svn path=/dists/sid/linux-2.6/; revision=19002 --- debian/bin/test-patches | 2 +- debian/changelog | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/bin/test-patches b/debian/bin/test-patches index 480074921..53e08c87a 100755 --- a/debian/bin/test-patches +++ b/debian/bin/test-patches @@ -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 diff --git a/debian/changelog b/debian/changelog index 801a289bb..147e5cfc0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,9 @@ linux-2.6 (3.2.17-2) UNRELEASED; urgency=low [ Jonathan Nieder ] * wacom: Add support for various tablet models (Closes: #671801) + [ Ben Hutchings ] + * test-patches: Fix -j option, broken since 3.1.0-1~experimental.1 + -- Ben Hutchings Wed, 16 May 2012 02:19:30 +0100 linux-2.6 (3.2.17-1) unstable; urgency=low From 875476dfffbf03bebe1c05214aa5201671232662 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 17 May 2012 00:55:37 +0000 Subject: [PATCH 19/31] Drop obsolete 'Skip looking for ioapic overrides when ioapics are not present' The bug was fixed slightly differently upstream in Linux 2.6.38 by commit 678301ecadec24ff77ab310eebf8a32ccddb1850 ('x86, ioapic: Don't warn about non-existing IOAPICs if we have none') svn path=/dists/sid/linux-2.6/; revision=19003 --- ...errides-when-ioapics-are-not-present.patch | 47 ------------------- debian/patches/series/base | 1 - 2 files changed, 48 deletions(-) delete mode 100644 debian/patches/bugfix/x86/Skip-looking-for-ioapic-overrides-when-ioapics-are-not-present.patch diff --git a/debian/patches/bugfix/x86/Skip-looking-for-ioapic-overrides-when-ioapics-are-not-present.patch b/debian/patches/bugfix/x86/Skip-looking-for-ioapic-overrides-when-ioapics-are-not-present.patch deleted file mode 100644 index ce62eef10..000000000 --- a/debian/patches/bugfix/x86/Skip-looking-for-ioapic-overrides-when-ioapics-are-not-present.patch +++ /dev/null @@ -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 - -Avinash Kurup 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 -Signed-off-by: "Eric W. Biederman" -[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; - diff --git a/debian/patches/series/base b/debian/patches/series/base index 1576c6b6f..1f3df4a1e 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -32,7 +32,6 @@ + debian/decnet-Disable-auto-loading-as-mitigation-against-lo.patch + bugfix/mips/mips-ide-flush-dcache.patch -+ bugfix/x86/Skip-looking-for-ioapic-overrides-when-ioapics-are-not-present.patch + bugfix/all/dm-Deal-with-merge_bvec_fn-in-component-devices-bett.patch + features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch From b8ab1403bcb78b284766193c1afd8b8a17f1505e Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 17 May 2012 01:18:19 +0000 Subject: [PATCH 20/31] Drop obsolete 'mips/ide: flush dcache also if icache does not snoop dcache' We no longer enable IDE drivers on MIPS, and libata uses flush_dcache_page() which has the right condition. svn path=/dists/sid/linux-2.6/; revision=19004 --- .../bugfix/mips/mips-ide-flush-dcache.patch | 46 ------------------- debian/patches/series/base | 1 - 2 files changed, 47 deletions(-) delete mode 100644 debian/patches/bugfix/mips/mips-ide-flush-dcache.patch diff --git a/debian/patches/bugfix/mips/mips-ide-flush-dcache.patch b/debian/patches/bugfix/mips/mips-ide-flush-dcache.patch deleted file mode 100644 index e6c22adb2..000000000 --- a/debian/patches/bugfix/mips/mips-ide-flush-dcache.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Sebastian Andrzej Siewior -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 ---- - 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) { diff --git a/debian/patches/series/base b/debian/patches/series/base index 1f3df4a1e..1069ed069 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -31,7 +31,6 @@ + debian/rds-Disable-auto-loading-as-mitigation-against-local.patch + debian/decnet-Disable-auto-loading-as-mitigation-against-lo.patch -+ bugfix/mips/mips-ide-flush-dcache.patch + bugfix/all/dm-Deal-with-merge_bvec_fn-in-component-devices-bett.patch + features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch From a6b80d072f70fdac4f23be34724a0a25d3403a8f Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 17 May 2012 01:33:39 +0000 Subject: [PATCH 21/31] rt2800usb: Re-enable powersaving by default We've disabled powersaving for rt2800usb with a patch since 2.6.38-2, as it resulted in very high latency then. It looks like this has been fixed by commits 1c0bcf89d85cc97a0d9ce4cd909351a81fa4fdde ('rt2x00: Add autowake support for USB hardware') and 5f0dd296a01c8173fcc05a8b262a1168ae90bc74 ('rt2x00: Implement tx_frames_pending mac80211 callback function.'). Just comment-out the patch for now, in case we have to revert this. svn path=/dists/sid/linux-2.6/; revision=19005 --- debian/changelog | 2 ++ debian/patches/series/base | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 147e5cfc0..470e27999 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ linux-2.6 (3.2.17-2) UNRELEASED; urgency=low [ 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 -- Ben Hutchings Wed, 16 May 2012 02:19:30 +0100 diff --git a/debian/patches/series/base b/debian/patches/series/base index 1069ed069..0078e6d0e 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -35,7 +35,7 @@ + features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch + debian/sched-autogroup-disabled.patch -+ bugfix/all/rt2800-disable-powersaving-as-default.patch +#+ bugfix/all/rt2800-disable-powersaving-as-default.patch + features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch + debian/cgroups-Document-the-Debian-memory-resource-controll.patch + bugfix/ia64/nouveau-ACPI-support-is-dependent-on-X86.patch From fefce7f6370ca2b53c0138c5e0073f3c3aae519f Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 17 May 2012 01:50:19 +0000 Subject: [PATCH 22/31] Add bug references to some patches not yet upstream svn path=/dists/sid/linux-2.6/; revision=19006 --- .../dm-Deal-with-merge_bvec_fn-in-component-devices-bett.patch | 1 + debian/patches/bugfix/powerpc/lpar-console.patch | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/patches/bugfix/all/dm-Deal-with-merge_bvec_fn-in-component-devices-bett.patch b/debian/patches/bugfix/all/dm-Deal-with-merge_bvec_fn-in-component-devices-bett.patch index e24811221..43c0e4cf3 100644 --- a/debian/patches/bugfix/all/dm-Deal-with-merge_bvec_fn-in-component-devices-bett.patch +++ b/debian/patches/bugfix/all/dm-Deal-with-merge_bvec_fn-in-component-devices-bett.patch @@ -1,6 +1,7 @@ From: Ben Hutchings 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 diff --git a/debian/patches/bugfix/powerpc/lpar-console.patch b/debian/patches/bugfix/powerpc/lpar-console.patch index 96ab15326..53fa3115f 100644 --- a/debian/patches/bugfix/powerpc/lpar-console.patch +++ b/debian/patches/bugfix/powerpc/lpar-console.patch @@ -1,6 +1,7 @@ From: Ben Hutchings 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. From c2af7fa4ccf3be2fdf1233905c50a2c9c78f3f52 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 17 May 2012 01:51:19 +0000 Subject: [PATCH 23/31] Regenerate some patches that have gone upstream svn path=/dists/sid/linux-2.6/; revision=19007 --- .../all/snapshot-Implement-compat_ioctl.patch | 20 ++++++++++++------- ...rion5x-Fix-GPIO-enable-bits-for-MPP9.patch | 16 +++++++++------ .../patches/bugfix/arm/ARM-topdown-mmap.patch | 9 ++++----- ...erator-precedence-when-enabling-RC6p.patch | 16 ++++++++------- 4 files changed, 36 insertions(+), 25 deletions(-) diff --git a/debian/patches/bugfix/all/snapshot-Implement-compat_ioctl.patch b/debian/patches/bugfix/all/snapshot-Implement-compat_ioctl.patch index 5a9ea1fb7..299a0e88b 100644 --- a/debian/patches/bugfix/all/snapshot-Implement-compat_ioctl.patch +++ b/debian/patches/bugfix/all/snapshot-Implement-compat_ioctl.patch @@ -1,15 +1,21 @@ From: Ben Hutchings -Date: Tue, 27 Dec 2011 20:42:09 +0100 -Subject: [PATCH] snapshot: Implement compat_ioctl +Date: Tue, 27 Dec 2011 22:54:52 +0100 +Subject: [PATCH] PM / Hibernate: Implement compat_ioctl for /dev/snapshot + +commit c336078bf65c4d38caa9a4b8b7b7261c778e622c upstream. + +This allows uswsusp built for i386 to run on an x86_64 kernel (tested +with Debian package version 1.0+20110509-2). References: http://bugs.debian.org/502816 Signed-off-by: Ben Hutchings +Signed-off-by: Rafael J. Wysocki --- kernel/power/user.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 64 insertions(+), 0 deletions(-) + 1 file changed, 64 insertions(+) diff --git a/kernel/power/user.c b/kernel/power/user.c -index 6d8f535..d86e5a7 100644 +index 78bdb44..6b1ab7a 100644 --- a/kernel/power/user.c +++ b/kernel/power/user.c @@ -21,6 +21,7 @@ @@ -20,7 +26,7 @@ index 6d8f535..d86e5a7 100644 #include #include #include -@@ -464,6 +465,66 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd, +@@ -380,6 +381,66 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd, return error; } @@ -87,7 +93,7 @@ index 6d8f535..d86e5a7 100644 static const struct file_operations snapshot_fops = { .open = snapshot_open, .release = snapshot_release, -@@ -471,6 +532,9 @@ static const struct file_operations snapshot_fops = { +@@ -387,6 +448,9 @@ static const struct file_operations snapshot_fops = { .write = snapshot_write, .llseek = no_llseek, .unlocked_ioctl = snapshot_ioctl, @@ -98,5 +104,5 @@ index 6d8f535..d86e5a7 100644 static struct miscdevice snapshot_device = { -- -1.7.7.3 +1.7.10 diff --git a/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch b/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch index 08a4a0abd..1f8f753c1 100644 --- a/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch +++ b/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch @@ -1,17 +1,21 @@ From: Ben Hutchings -Date: Sat, 7 Apr 2012 04:57:36 +0100 +Date: Sun, 8 Apr 2012 05:18:53 +0100 Subject: [PATCH] ARM: orion5x: Fix GPIO enable bits for MPP9 -Commit 554cdaefd1cf7bb54b209c4e68c7cec87ce442a9 seems to have -accidentally inverted the GPIO valid bits for MPP9 (only). For the -mv2120 platform which uses MPP9 as a GPIO LED device, this results in -the error: +commit 48d99f47a81a66bdd61a348c7fe8df5a7afdf5f3 upstream. + +Commit 554cdaefd1cf7bb54b209c4e68c7cec87ce442a9 ('ARM: orion5x: Refactor +mpp code to use common orion platform mpp.') seems to have accidentally +inverted the GPIO valid bits for MPP9 (only). For the mv2120 platform +which uses MPP9 as a GPIO LED device, this results in the error: [ 12.711476] leds-gpio: probe of leds-gpio failed with error -22 Reported-by: Henry von Tresckow References: http://bugs.debian.org/667446 Signed-off-by: Ben Hutchings +Tested-by: Hans Henry von Tresckow +Signed-off-by: Jason Cooper --- arch/arm/mach-orion5x/mpp.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) @@ -32,5 +36,5 @@ index eac6897..db70e79 100644 #define MPP10_UNUSED MPP(10, 0x0, 0, 0, 1, 1, 1) #define MPP10_GPIO MPP(10, 0x0, 1, 1, 1, 1, 1) -- -1.7.9.5 +1.7.10 diff --git a/debian/patches/bugfix/arm/ARM-topdown-mmap.patch b/debian/patches/bugfix/arm/ARM-topdown-mmap.patch index 0aee603d2..0a6d8c70c 100644 --- a/debian/patches/bugfix/arm/ARM-topdown-mmap.patch +++ b/debian/patches/bugfix/arm/ARM-topdown-mmap.patch @@ -1,10 +1,9 @@ -http://ftp.arm.linux.org.uk/git/gitweb.cgi?p=linux-2.6-arm.git;a=commit;h=7dbaa466780a754154531b44c2086f6618cee3a8 - -From 7dbaa466780a754154531b44c2086f6618cee3a8 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Tue, 22 Nov 2011 04:01:07 +0100 Subject: [PATCH] ARM: 7169/1: topdown mmap support +commit 7dbaa466780a754154531b44c2086f6618cee3a8 upstream. + Similar to other architectures, this adds topdown mmap support in user process address space allocation policy. This allows mmap sizes greater than 2GB. This support is largely copied from MIPS and the generic @@ -21,7 +20,7 @@ Signed-off-by: Russell King --- arch/arm/include/asm/pgtable.h | 1 + arch/arm/include/asm/processor.h | 2 + - arch/arm/mm/mmap.c | 173 ++++++++++++++++++++++++++++++++++++- + arch/arm/mm/mmap.c | 173 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 171 insertions(+), 5 deletions(-) diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h @@ -254,5 +253,5 @@ index 44b628e..ce8cb19 100644 /* * You really shouldn't be using read() or write() on /dev/mem. This -- -1.7.4.4 +1.7.10 diff --git a/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch b/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch index dd0f81a98..230cdcbd9 100644 --- a/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch +++ b/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch @@ -1,16 +1,18 @@ From: Eugeni Dodonov -Date: Thu, 23 Feb 2012 17:57:06 -0800 -Subject: [PATCH 1/1] drm/i915: fix operator precedence when enabling RC6p +Date: Thu, 23 Feb 2012 23:57:06 -0200 +Subject: [PATCH] drm/i915: fix operator precedence when enabling RC6p + +commit c0e2ee1bc0cf82eec89e26b7afe7e4db0561b7d9 upstream. As noticed by Torsten Kaiser, the operator precedence can play tricks with us here. -CC: Dave Airlie -CC: Jesse Barnes -Signed-off-by: Eugeni Dodonov +CC: Dave Airlie +Signed-off-by: Eugeni Dodonov +Signed-off-by: Jesse Barnes --- drivers/gpu/drm/i915/intel_display.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e654f32..4871ba0 100644 @@ -26,5 +28,5 @@ index e654f32..4871ba0 100644 I915_WRITE(GEN6_RC_CONTROL, rc6_mask | -- -1.7.8.4 +1.7.10 From b33aba0333ac0215948d42f486308f5620a2ee0c Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 18 May 2012 13:22:38 +0000 Subject: [PATCH 24/31] [sparc,sparc64] Build virtio-modules-udeb for use in qemu (Closes: #673320) svn path=/dists/sid/linux-2.6/; revision=19009 --- debian/changelog | 1 + debian/installer/sparc/modules/sparc/virtio-modules | 1 + debian/installer/sparc64/modules/sparc64/virtio-modules | 1 + 3 files changed, 3 insertions(+) create mode 100644 debian/installer/sparc/modules/sparc/virtio-modules create mode 100644 debian/installer/sparc64/modules/sparc64/virtio-modules diff --git a/debian/changelog b/debian/changelog index 470e27999..0df51f1b8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,7 @@ linux-2.6 (3.2.17-2) UNRELEASED; urgency=low * 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) -- Ben Hutchings Wed, 16 May 2012 02:19:30 +0100 diff --git a/debian/installer/sparc/modules/sparc/virtio-modules b/debian/installer/sparc/modules/sparc/virtio-modules new file mode 100644 index 000000000..61da39659 --- /dev/null +++ b/debian/installer/sparc/modules/sparc/virtio-modules @@ -0,0 +1 @@ +#include diff --git a/debian/installer/sparc64/modules/sparc64/virtio-modules b/debian/installer/sparc64/modules/sparc64/virtio-modules new file mode 100644 index 000000000..61da39659 --- /dev/null +++ b/debian/installer/sparc64/modules/sparc64/virtio-modules @@ -0,0 +1 @@ +#include From 930598230bca8b0ba5f8fe135909d80dca965579 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 May 2012 00:06:12 +0000 Subject: [PATCH 25/31] Update to 3.2.18 svn path=/dists/sid/linux-2.6/; revision=19015 --- debian/changelog | 14 +- ...ass-missing-argument-to-brcms_b_mute.patch | 44 ------ .../nfsv4-revalidate-uid-gid-after-open.patch | 74 ---------- ...-length-error-in-mixed-non-vlan-vlan.patch | 137 ------------------ ...pogate-rx-hash-when-packet-is-copied.patch | 39 ----- ...rion5x-Fix-GPIO-enable-bits-for-MPP9.patch | 40 ----- .../ia64/ia64-Add-accept4-syscall.patch | 52 ------- debian/patches/series/base | 7 - 8 files changed, 13 insertions(+), 394 deletions(-) delete mode 100644 debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch delete mode 100644 debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch delete mode 100644 debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch delete mode 100644 debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch delete mode 100644 debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch delete mode 100644 debian/patches/bugfix/ia64/ia64-Add-accept4-syscall.patch diff --git a/debian/changelog b/debian/changelog index 0df51f1b8..efaf9b7dc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,16 @@ -linux-2.6 (3.2.17-2) UNRELEASED; urgency=low +linux-2.6 (3.2.18-1) UNRELEASED; 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 + - 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) diff --git a/debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch b/debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch deleted file mode 100644 index 2f0b2e538..000000000 --- a/debian/patches/bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch +++ /dev/null @@ -1,44 +0,0 @@ -From jrnieder@gmail.com Sat May 12 01:35:51 2012 -Date: Fri, 11 May 2012 19:35:33 -0500 -From: Jonathan Nieder -Subject: brcm80211: smac: pass missing argument to 'brcms_b_mute' - -[Not needed upstream --- this bug is specific to 3.2.y.] - -Commit c6c44893c864, which removes the flag argument from brcms_b_mute, -is not part of 3.2.y, and we forgot to adjust a new call accordingly -when applying commit badc4f07622f ("brcm80211: smac: resume transmit -fifo upon receiving frames"). - - drivers/net/wireless/brcm80211/brcmsmac/main.c: In function 'brcms_c_recvctl': - drivers/net/wireless/brcm80211/brcmsmac/main.c:7882:4: error: too few arguments to function 'brcms_b_mute' - drivers/net/wireless/brcm80211/brcmsmac/main.c:2538:13: note: declared here - -Earlier build tests missed this because they didn't include this driver -due to 'depends on BCMA=n'. - -Reported-by: Ben Hutchings -Signed-off-by: Jonathan Nieder -Signed-off-by: Ben Hutchings ---- - drivers/net/wireless/brcm80211/brcmsmac/main.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c -index f98becc9e169..833cbefcbfd2 100644 ---- a/drivers/net/wireless/brcm80211/brcmsmac/main.c -+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c -@@ -7879,7 +7879,7 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh, - if (wlc->hw->suspended_fifos) { - hdr = (struct ieee80211_hdr *)p->data; - if (ieee80211_is_beacon(hdr->frame_control)) -- brcms_b_mute(wlc->hw, false); -+ brcms_b_mute(wlc->hw, false, 0); - } - - memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status)); --- -1.7.10.1 - - - diff --git a/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch b/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch deleted file mode 100644 index 9449c18ac..000000000 --- a/debian/patches/bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch +++ /dev/null @@ -1,74 +0,0 @@ -From stable-owner@vger.kernel.org Fri May 11 10:20:33 2012 -Date: Fri, 11 May 2012 04:20:20 -0500 -From: Jonathan Nieder -Subject: [PATCH] NFSv4: Revalidate uid/gid after open - -This is a shorter (and more appropriate for stable kernels) analog to -the following upstream commit: - -commit 6926afd1925a54a13684ebe05987868890665e2b -Author: Trond Myklebust -Date: Sat Jan 7 13:22:46 2012 -0500 - - NFSv4: Save the owner/group name string when doing open - - ...so that we can do the uid/gid mapping outside the asynchronous RPC - context. - This fixes a bug in the current NFSv4 atomic open code where the client - isn't able to determine what the true uid/gid fields of the file are, - (because the asynchronous nature of the OPEN call denies it the ability - to do an upcall) and so fills them with default values, marking the - inode as needing revalidation. - Unfortunately, in some cases, the VFS will do some additional sanity - checks on the file, and may override the server's decision to allow - the open because it sees the wrong owner/group fields. - - Signed-off-by: Trond Myklebust - -Without this patch, logging into two different machines with home -directories mounted over NFS4 and then running "vim" and typing ":q" -in each reliably produces the following error on the second machine: - - E137: Viminfo file is not writable: /users/system/rtheys/.viminfo - -This regression was introduced by 80e52aced138 ("NFSv4: Don't do -idmapper upcalls for asynchronous RPC calls", merged during the 2.6.32 -cycle) --- after the OPEN call, .viminfo has the default values for -st_uid and st_gid (0xfffffffe) cached because we do not want to let -rpciod wait for an idmapper upcall to fill them in. - -The fix used in mainline is to save the owner and group as strings and -perform the upcall in _nfs4_proc_open outside the rpciod context, -which takes about 600 lines. For stable, we can do something similar -with a one-liner: make open check for the stale fields and make a -(synchronous) GETATTR call to fill them when needed. - -Trond dictated the patch, I typed it in, and Rik tested it. - -Addresses http://bugs.debian.org/659111 and - https://bugzilla.redhat.com/789298 - -Reported-by: Rik Theys -Explained-by: David Flyn -Signed-off-by: Jonathan Nieder -Tested-by: Rik Theys -Signed-off-by: Ben Hutchings ---- - fs/nfs/nfs4proc.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index 3d6730213f9d..30f6548f2b99 100644 ---- a/fs/nfs/nfs4proc.c -+++ b/fs/nfs/nfs4proc.c -@@ -1771,6 +1771,7 @@ static int _nfs4_do_open(struct inode *dir, struct path *path, fmode_t fmode, in - nfs_setattr_update_inode(state->inode, sattr); - nfs_post_op_update_inode(state->inode, opendata->o_res.f_attr); - } -+ nfs_revalidate_inode(server, state->inode); - nfs4_opendata_put(opendata); - nfs4_put_state_owner(sp); - *res = state; --- -1.7.10.1 - diff --git a/debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch b/debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch deleted file mode 100644 index 64b8396ff..000000000 --- a/debian/patches/bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch +++ /dev/null @@ -1,137 +0,0 @@ -From dc7296f6dc82ac546b5006dcfff1b16967b6c234 Mon Sep 17 00:00:00 2001 -From: stephen hemminger -Date: Mon, 30 Apr 2012 06:47:37 +0000 -Subject: [PATCH 06/10] sky2: fix receive length error in mixed non-VLAN/VLAN - traffic - -[ Upstream commit e072b3fad5f3915102c94628b4971f52ff99dd05 ] - -Bug: The VLAN bit of the MAC RX Status Word is unreliable in several older -supported chips. Sometimes the VLAN bit is not set for valid VLAN packets -and also sometimes the VLAN bit is set for non-VLAN packets that came after -a VLAN packet. This results in a receive length error when VLAN hardware -tagging is enabled. - -Fix: Variation on original fix proposed by Mirko. -The VLAN information is decoded in the status loop, and can be -applied to the received SKB there. This eliminates the need for the -separate tag field in the interface data structure. The tag has to -be copied and cleared if packet is copied. This version checked out -with vlan and normal traffic. - -Note: vlan_tx_tag_present should be renamed vlan_tag_present, but that -is outside scope of this. - -Reported-by: Mirko Lindner -Signed-off-by: Stephen Hemminger -Signed-off-by: David S. Miller -Signed-off-by: Ben Hutchings ---- - drivers/net/ethernet/marvell/sky2.c | 28 +++++++++++++++++----------- - drivers/net/ethernet/marvell/sky2.h | 1 - - 2 files changed, 17 insertions(+), 12 deletions(-) - -diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c -index e1f4b65..65c51ff 100644 ---- a/drivers/net/ethernet/marvell/sky2.c -+++ b/drivers/net/ethernet/marvell/sky2.c -@@ -2476,9 +2476,11 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2, - skb->ip_summed = re->skb->ip_summed; - skb->csum = re->skb->csum; - skb->rxhash = re->skb->rxhash; -+ skb->vlan_tci = re->skb->vlan_tci; - - pci_dma_sync_single_for_device(sky2->hw->pdev, re->data_addr, - length, PCI_DMA_FROMDEVICE); -+ re->skb->vlan_tci = 0; - re->skb->rxhash = 0; - re->skb->ip_summed = CHECKSUM_NONE; - skb_put(skb, length); -@@ -2564,9 +2566,6 @@ static struct sk_buff *sky2_receive(struct net_device *dev, - struct sk_buff *skb = NULL; - u16 count = (status & GMR_FS_LEN) >> 16; - -- if (status & GMR_FS_VLAN) -- count -= VLAN_HLEN; /* Account for vlan tag */ -- - netif_printk(sky2, rx_status, KERN_DEBUG, dev, - "rx slot %u status 0x%x len %d\n", - sky2->rx_next, status, length); -@@ -2574,6 +2573,9 @@ static struct sk_buff *sky2_receive(struct net_device *dev, - sky2->rx_next = (sky2->rx_next + 1) % sky2->rx_pending; - prefetch(sky2->rx_ring + sky2->rx_next); - -+ if (vlan_tx_tag_present(re->skb)) -+ count -= VLAN_HLEN; /* Account for vlan tag */ -+ - /* This chip has hardware problems that generates bogus status. - * So do only marginal checking and expect higher level protocols - * to handle crap frames. -@@ -2631,11 +2633,8 @@ static inline void sky2_tx_done(struct net_device *dev, u16 last) - } - - static inline void sky2_skb_rx(const struct sky2_port *sky2, -- u32 status, struct sk_buff *skb) -+ struct sk_buff *skb) - { -- if (status & GMR_FS_VLAN) -- __vlan_hwaccel_put_tag(skb, be16_to_cpu(sky2->rx_tag)); -- - if (skb->ip_summed == CHECKSUM_NONE) - netif_receive_skb(skb); - else -@@ -2689,6 +2688,14 @@ static void sky2_rx_checksum(struct sky2_port *sky2, u32 status) - } - } - -+static void sky2_rx_tag(struct sky2_port *sky2, u16 length) -+{ -+ struct sk_buff *skb; -+ -+ skb = sky2->rx_ring[sky2->rx_next].skb; -+ __vlan_hwaccel_put_tag(skb, be16_to_cpu(length)); -+} -+ - static void sky2_rx_hash(struct sky2_port *sky2, u32 status) - { - struct sk_buff *skb; -@@ -2747,8 +2754,7 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx) - } - - skb->protocol = eth_type_trans(skb, dev); -- -- sky2_skb_rx(sky2, status, skb); -+ sky2_skb_rx(sky2, skb); - - /* Stop after net poll weight */ - if (++work_done >= to_do) -@@ -2756,11 +2762,11 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do, u16 idx) - break; - - case OP_RXVLAN: -- sky2->rx_tag = length; -+ sky2_rx_tag(sky2, length); - break; - - case OP_RXCHKSVLAN: -- sky2->rx_tag = length; -+ sky2_rx_tag(sky2, length); - /* fall through */ - case OP_RXCHKS: - if (likely(dev->features & NETIF_F_RXCSUM)) -diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h -index ff6f58b..3c896ce 100644 ---- a/drivers/net/ethernet/marvell/sky2.h -+++ b/drivers/net/ethernet/marvell/sky2.h -@@ -2241,7 +2241,6 @@ struct sky2_port { - u16 rx_pending; - u16 rx_data_size; - u16 rx_nfrags; -- u16 rx_tag; - - struct { - unsigned long last; --- -1.7.10.1 - - diff --git a/debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch b/debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch deleted file mode 100644 index 385593f04..000000000 --- a/debian/patches/bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 5ab3f9a96c8f77166a2d0c3bdd9ed2a5029e3271 Mon Sep 17 00:00:00 2001 -From: stephen hemminger -Date: Mon, 30 Apr 2012 05:49:45 +0000 -Subject: [PATCH 05/10] sky2: propogate rx hash when packet is copied - -[ Upstream commit 3f42941b5d1d13542b1a755a9e4f633aa72e4d3e ] - -When a small packet is received, the driver copies it to a new skb to allow -reusing the full size Rx buffer. The copy was propogating the checksum offload -but not the receive hash information. The bug is impact was mostly harmless -and therefore not observed until reviewing this area of code. - -Signed-off-by: Stephen Hemminger -Signed-off-by: David S. Miller -Signed-off-by: Ben Hutchings ---- - drivers/net/ethernet/marvell/sky2.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c -index 7eb8a00..e1f4b65 100644 ---- a/drivers/net/ethernet/marvell/sky2.c -+++ b/drivers/net/ethernet/marvell/sky2.c -@@ -2475,8 +2475,11 @@ static struct sk_buff *receive_copy(struct sky2_port *sky2, - skb_copy_from_linear_data(re->skb, skb->data, length); - skb->ip_summed = re->skb->ip_summed; - skb->csum = re->skb->csum; -+ skb->rxhash = re->skb->rxhash; -+ - pci_dma_sync_single_for_device(sky2->hw->pdev, re->data_addr, - length, PCI_DMA_FROMDEVICE); -+ re->skb->rxhash = 0; - re->skb->ip_summed = CHECKSUM_NONE; - skb_put(skb, length); - } --- -1.7.10.1 - - diff --git a/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch b/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch deleted file mode 100644 index 1f8f753c1..000000000 --- a/debian/patches/bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: Ben Hutchings -Date: Sun, 8 Apr 2012 05:18:53 +0100 -Subject: [PATCH] ARM: orion5x: Fix GPIO enable bits for MPP9 - -commit 48d99f47a81a66bdd61a348c7fe8df5a7afdf5f3 upstream. - -Commit 554cdaefd1cf7bb54b209c4e68c7cec87ce442a9 ('ARM: orion5x: Refactor -mpp code to use common orion platform mpp.') seems to have accidentally -inverted the GPIO valid bits for MPP9 (only). For the mv2120 platform -which uses MPP9 as a GPIO LED device, this results in the error: - -[ 12.711476] leds-gpio: probe of leds-gpio failed with error -22 - -Reported-by: Henry von Tresckow -References: http://bugs.debian.org/667446 -Signed-off-by: Ben Hutchings -Tested-by: Hans Henry von Tresckow -Signed-off-by: Jason Cooper ---- - arch/arm/mach-orion5x/mpp.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/mach-orion5x/mpp.h b/arch/arm/mach-orion5x/mpp.h -index eac6897..db70e79 100644 ---- a/arch/arm/mach-orion5x/mpp.h -+++ b/arch/arm/mach-orion5x/mpp.h -@@ -65,8 +65,8 @@ - #define MPP8_GIGE MPP(8, 0x1, 0, 0, 1, 1, 1) - - #define MPP9_UNUSED MPP(9, 0x0, 0, 0, 1, 1, 1) --#define MPP9_GPIO MPP(9, 0x0, 0, 0, 1, 1, 1) --#define MPP9_GIGE MPP(9, 0x1, 1, 1, 1, 1, 1) -+#define MPP9_GPIO MPP(9, 0x0, 1, 1, 1, 1, 1) -+#define MPP9_GIGE MPP(9, 0x1, 0, 0, 1, 1, 1) - - #define MPP10_UNUSED MPP(10, 0x0, 0, 0, 1, 1, 1) - #define MPP10_GPIO MPP(10, 0x0, 1, 1, 1, 1, 1) --- -1.7.10 - diff --git a/debian/patches/bugfix/ia64/ia64-Add-accept4-syscall.patch b/debian/patches/bugfix/ia64/ia64-Add-accept4-syscall.patch deleted file mode 100644 index b73d33e25..000000000 --- a/debian/patches/bugfix/ia64/ia64-Add-accept4-syscall.patch +++ /dev/null @@ -1,52 +0,0 @@ -From: Émeric Maschino -Date: Mon, 9 Jan 2012 12:55:10 -0800 -Subject: [PATCH] ia64: Add accept4() syscall - -commit 65cc21b4523e94d5640542a818748cd3be8cd6b4 upstream. - -While debugging udev > 170 failure on Debian Wheezy -(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648325), it appears -that the issue was in fact due to missing accept4() in ia64. - -This patch simply adds accept4() to ia64. - -Signed-off-by: Émeric Maschino -Signed-off-by: Tony Luck ---- - arch/ia64/include/asm/unistd.h | 3 ++- - arch/ia64/kernel/entry.S | 1 + - 2 files changed, 3 insertions(+), 1 deletions(-) - -diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h -index 7617248..7a3bd25 100644 ---- a/arch/ia64/include/asm/unistd.h -+++ b/arch/ia64/include/asm/unistd.h -@@ -323,11 +323,12 @@ - #define __NR_sendmmsg 1331 - #define __NR_process_vm_readv 1332 - #define __NR_process_vm_writev 1333 -+#define __NR_accept4 1334 - - #ifdef __KERNEL__ - - --#define NR_syscalls 310 /* length of syscall table */ -+#define NR_syscalls 311 /* length of syscall table */ - - /* - * The following defines stop scripts/checksyscalls.sh from complaining about -diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S -index 5b31d46..1ccbe12 100644 ---- a/arch/ia64/kernel/entry.S -+++ b/arch/ia64/kernel/entry.S -@@ -1779,6 +1779,7 @@ sys_call_table: - data8 sys_sendmmsg - data8 sys_process_vm_readv - data8 sys_process_vm_writev -+ data8 sys_accept4 - - .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls - #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */ --- -1.7.8.2 - diff --git a/debian/patches/series/base b/debian/patches/series/base index 0078e6d0e..0002c7917 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -41,7 +41,6 @@ + bugfix/ia64/nouveau-ACPI-support-is-dependent-on-X86.patch + features/x86/x86-Add-amilo-rfkill-driver-for-some-Fujitsu-Siemens.patch -+ bugfix/ia64/ia64-Add-accept4-syscall.patch + bugfix/arm/ixp4xx_iobe.patch + debian/bcma-Do-not-claim-PCI-device-IDs-also-claimed-by-brc.patch @@ -81,8 +80,6 @@ # Temporary, until the original change has been tested some more + debian/revert-CIFS-Respect-negotiated-MaxMpxCount.patch -+ bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch - # Update all Hyper-V drivers to 3.4-rc1 (no longer staging) + features/x86/hyperv/0001-NLS-improve-UTF8-UTF16-string-conversion-routine.patch + features/x86/hyperv/0002-HID-Move-the-hid-hyperv-driver-out-of-staging.patch @@ -191,10 +188,6 @@ + debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch -+ bugfix/all/brcm80211-smac-pass-missing-argument-to-brcms_b_mute.patch -+ bugfix/all/nfsv4-revalidate-uid-gid-after-open.patch -+ bugfix/all/sky2-propogate-rx-hash-when-packet-is-copied.patch -+ bugfix/all/sky2-fix-receive-length-error-in-mixed-non-vlan-vlan.patch + bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch + bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch From 44aa667c129f33fbbcf925d3dce4a8f78c24616a Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 May 2012 01:12:54 +0000 Subject: [PATCH 26/31] Add KVM fixes requested and queued for 3.2.19 svn path=/dists/sid/linux-2.6/; revision=19016 --- debian/changelog | 5 ++ ...flush-tlbs-before-releasing-mmu_lock.patch | 85 +++++++++++++++++++ ...atus-after-handling-stop_on_stop-bit.patch | 71 ++++++++++++++++ ...nitize-fpc-registers-for-kvm_set_fpu.patch | 43 ++++++++++ ...fix-erroneous-exception-bitmap-check.patch | 43 ++++++++++ ...-vmx_set_cr0-expects-kvm-srcu-locked.patch | 40 +++++++++ debian/patches/series/base | 7 ++ 7 files changed, 294 insertions(+) create mode 100644 debian/patches/bugfix/all/kvm-mmu_notifier-flush-tlbs-before-releasing-mmu_lock.patch create mode 100644 debian/patches/bugfix/s390/kvm-s390-do-store-status-after-handling-stop_on_stop-bit.patch create mode 100644 debian/patches/bugfix/s390/kvm-s390-sanitize-fpc-registers-for-kvm_set_fpu.patch create mode 100644 debian/patches/bugfix/x86/kvm-nvmx-fix-erroneous-exception-bitmap-check.patch create mode 100644 debian/patches/bugfix/x86/kvm-vmx-vmx_set_cr0-expects-kvm-srcu-locked.patch diff --git a/debian/changelog b/debian/changelog index efaf9b7dc..c391df448 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,11 @@ linux-2.6 (3.2.18-1) UNRELEASED; urgency=low * 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 -- Ben Hutchings Wed, 16 May 2012 02:19:30 +0100 diff --git a/debian/patches/bugfix/all/kvm-mmu_notifier-flush-tlbs-before-releasing-mmu_lock.patch b/debian/patches/bugfix/all/kvm-mmu_notifier-flush-tlbs-before-releasing-mmu_lock.patch new file mode 100644 index 000000000..00c6c7b65 --- /dev/null +++ b/debian/patches/bugfix/all/kvm-mmu_notifier-flush-tlbs-before-releasing-mmu_lock.patch @@ -0,0 +1,85 @@ +From: Marcelo Tosatti +Date: Fri, 18 May 2012 17:58:45 -0300 +Subject: KVM: mmu_notifier: Flush TLBs before releasing mmu_lock + +From: Takuya Yoshikawa + +(cherry picked from commit 565f3be2174611f364405bbea2d86e153c2e7e78 + +Other threads may process the same page in that small window and skip +TLB flush and then return before these functions do flush. + +Signed-off-by: Takuya Yoshikawa +Signed-off-by: Marcelo Tosatti +Signed-off-by: Avi Kivity +Signed-off-by: Ben Hutchings +--- + virt/kvm/kvm_main.c | 19 ++++++++++--------- + 1 files changed, 10 insertions(+), 9 deletions(-) + +diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c +index e401c1b..9ffac2e 100644 +--- a/virt/kvm/kvm_main.c ++++ b/virt/kvm/kvm_main.c +@@ -289,15 +289,15 @@ static void kvm_mmu_notifier_invalidate_page(struct mmu_notifier *mn, + */ + idx = srcu_read_lock(&kvm->srcu); + spin_lock(&kvm->mmu_lock); ++ + kvm->mmu_notifier_seq++; + need_tlb_flush = kvm_unmap_hva(kvm, address) | kvm->tlbs_dirty; +- spin_unlock(&kvm->mmu_lock); +- srcu_read_unlock(&kvm->srcu, idx); +- + /* we've to flush the tlb before the pages can be freed */ + if (need_tlb_flush) + kvm_flush_remote_tlbs(kvm); + ++ spin_unlock(&kvm->mmu_lock); ++ srcu_read_unlock(&kvm->srcu, idx); + } + + static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn, +@@ -335,12 +335,12 @@ static void kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn, + for (; start < end; start += PAGE_SIZE) + need_tlb_flush |= kvm_unmap_hva(kvm, start); + need_tlb_flush |= kvm->tlbs_dirty; +- spin_unlock(&kvm->mmu_lock); +- srcu_read_unlock(&kvm->srcu, idx); +- + /* we've to flush the tlb before the pages can be freed */ + if (need_tlb_flush) + kvm_flush_remote_tlbs(kvm); ++ ++ spin_unlock(&kvm->mmu_lock); ++ srcu_read_unlock(&kvm->srcu, idx); + } + + static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn, +@@ -378,13 +378,14 @@ static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn, + + idx = srcu_read_lock(&kvm->srcu); + spin_lock(&kvm->mmu_lock); +- young = kvm_age_hva(kvm, address); +- spin_unlock(&kvm->mmu_lock); +- srcu_read_unlock(&kvm->srcu, idx); + ++ young = kvm_age_hva(kvm, address); + if (young) + kvm_flush_remote_tlbs(kvm); + ++ spin_unlock(&kvm->mmu_lock); ++ srcu_read_unlock(&kvm->srcu, idx); ++ + return young; + } + +-- +1.7.6.4 + +-- +To unsubscribe from this list: send the line "unsubscribe stable" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + + diff --git a/debian/patches/bugfix/s390/kvm-s390-do-store-status-after-handling-stop_on_stop-bit.patch b/debian/patches/bugfix/s390/kvm-s390-do-store-status-after-handling-stop_on_stop-bit.patch new file mode 100644 index 000000000..82c8a6bb2 --- /dev/null +++ b/debian/patches/bugfix/s390/kvm-s390-do-store-status-after-handling-stop_on_stop-bit.patch @@ -0,0 +1,71 @@ +From: Marcelo Tosatti +Date: Fri, 18 May 2012 17:58:50 -0300 +Subject: KVM: s390: do store status after handling STOP_ON_STOP bit + +From: Jens Freimann + +(cherry picked from commit 9e0d5473e2f0ba2d2fe9dab9408edef3060b710e) + +In handle_stop() handle the stop bit before doing the store status as +described for "Stop and Store Status" in the Principles of Operation. +We have to give up the local_int.lock before calling kvm store status +since it calls gmap_fault() which might sleep. Since local_int.lock +only protects local_int.* and not guest memory we can give up the lock. + +Signed-off-by: Jens Freimann +Signed-off-by: Christian Borntraeger +Signed-off-by: Marcelo Tosatti +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Ben Hutchings +--- + arch/s390/kvm/intercept.c | 20 ++++++++++++-------- + 1 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c +index 0243454..a5f6eff 100644 +--- a/arch/s390/kvm/intercept.c ++++ b/arch/s390/kvm/intercept.c +@@ -133,13 +133,6 @@ static int handle_stop(struct kvm_vcpu *vcpu) + + vcpu->stat.exit_stop_request++; + spin_lock_bh(&vcpu->arch.local_int.lock); +- if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) { +- vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP; +- rc = kvm_s390_vcpu_store_status(vcpu, +- KVM_S390_STORE_STATUS_NOADDR); +- if (rc >= 0) +- rc = -EOPNOTSUPP; +- } + + if (vcpu->arch.local_int.action_bits & ACTION_RELOADVCPU_ON_STOP) { + vcpu->arch.local_int.action_bits &= ~ACTION_RELOADVCPU_ON_STOP; +@@ -155,7 +148,18 @@ static int handle_stop(struct kvm_vcpu *vcpu) + rc = -EOPNOTSUPP; + } + +- spin_unlock_bh(&vcpu->arch.local_int.lock); ++ if (vcpu->arch.local_int.action_bits & ACTION_STORE_ON_STOP) { ++ vcpu->arch.local_int.action_bits &= ~ACTION_STORE_ON_STOP; ++ /* store status must be called unlocked. Since local_int.lock ++ * only protects local_int.* and not guest memory we can give ++ * up the lock here */ ++ spin_unlock_bh(&vcpu->arch.local_int.lock); ++ rc = kvm_s390_vcpu_store_status(vcpu, ++ KVM_S390_STORE_STATUS_NOADDR); ++ if (rc >= 0) ++ rc = -EOPNOTSUPP; ++ } else ++ spin_unlock_bh(&vcpu->arch.local_int.lock); + return rc; + } + +-- +1.7.6.4 + +-- +To unsubscribe from this list: send the line "unsubscribe stable" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + + diff --git a/debian/patches/bugfix/s390/kvm-s390-sanitize-fpc-registers-for-kvm_set_fpu.patch b/debian/patches/bugfix/s390/kvm-s390-sanitize-fpc-registers-for-kvm_set_fpu.patch new file mode 100644 index 000000000..9cab1c80e --- /dev/null +++ b/debian/patches/bugfix/s390/kvm-s390-sanitize-fpc-registers-for-kvm_set_fpu.patch @@ -0,0 +1,43 @@ +From: Marcelo Tosatti +Date: Fri, 18 May 2012 17:58:51 -0300 +Subject: KVM: s390: Sanitize fpc registers for KVM_SET_FPU + +From: Christian Borntraeger + +(cherry picked from commit 851755871c1f3184f4124c466e85881f17fa3226) + +commit 7eef87dc99e419b1cc051e4417c37e4744d7b661 (KVM: s390: fix +register setting) added a load of the floating point control register +to the KVM_SET_FPU path. Lets make sure that the fpc is valid. + +Signed-off-by: Christian Borntraeger +Signed-off-by: Marcelo Tosatti +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Ben Hutchings +--- + arch/s390/kvm/kvm-s390.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c +index d1c44573..d3cb86c 100644 +--- a/arch/s390/kvm/kvm-s390.c ++++ b/arch/s390/kvm/kvm-s390.c +@@ -418,7 +418,7 @@ int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu, + int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) + { + memcpy(&vcpu->arch.guest_fpregs.fprs, &fpu->fprs, sizeof(fpu->fprs)); +- vcpu->arch.guest_fpregs.fpc = fpu->fpc; ++ vcpu->arch.guest_fpregs.fpc = fpu->fpc & FPC_VALID_MASK; + restore_fp_regs(&vcpu->arch.guest_fpregs); + return 0; + } +-- +1.7.6.4 + +-- +To unsubscribe from this list: send the line "unsubscribe stable" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + + diff --git a/debian/patches/bugfix/x86/kvm-nvmx-fix-erroneous-exception-bitmap-check.patch b/debian/patches/bugfix/x86/kvm-nvmx-fix-erroneous-exception-bitmap-check.patch new file mode 100644 index 000000000..fd839a0d6 --- /dev/null +++ b/debian/patches/bugfix/x86/kvm-nvmx-fix-erroneous-exception-bitmap-check.patch @@ -0,0 +1,43 @@ +From: Marcelo Tosatti +Date: Fri, 18 May 2012 17:58:48 -0300 +Subject: KVM: nVMX: Fix erroneous exception bitmap check + +From: Nadav Har'El + +(cherry picked from commit 9587190107d0c0cbaccbf7bf6b0245d29095a9ae) + +The code which checks whether to inject a pagefault to L1 or L2 (in +nested VMX) was wrong, incorrect in how it checked the PF_VECTOR bit. +Thanks to Dan Carpenter for spotting this. + +Signed-off-by: Nadav Har'El +Reported-by: Dan Carpenter +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Ben Hutchings +--- + arch/x86/kvm/vmx.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c +index 4ea7678..7ac5993 100644 +--- a/arch/x86/kvm/vmx.c ++++ b/arch/x86/kvm/vmx.c +@@ -1677,7 +1677,7 @@ static int nested_pf_handled(struct kvm_vcpu *vcpu) + struct vmcs12 *vmcs12 = get_vmcs12(vcpu); + + /* TODO: also check PFEC_MATCH/MASK, not just EB.PF. */ +- if (!(vmcs12->exception_bitmap & PF_VECTOR)) ++ if (!(vmcs12->exception_bitmap & (1u << PF_VECTOR))) + return 0; + + nested_vmx_vmexit(vcpu); +-- +1.7.6.4 + +-- +To unsubscribe from this list: send the line "unsubscribe stable" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + + diff --git a/debian/patches/bugfix/x86/kvm-vmx-vmx_set_cr0-expects-kvm-srcu-locked.patch b/debian/patches/bugfix/x86/kvm-vmx-vmx_set_cr0-expects-kvm-srcu-locked.patch new file mode 100644 index 000000000..e68e23368 --- /dev/null +++ b/debian/patches/bugfix/x86/kvm-vmx-vmx_set_cr0-expects-kvm-srcu-locked.patch @@ -0,0 +1,40 @@ +From: Marcelo Tosatti +Date: Fri, 18 May 2012 17:58:49 -0300 +Subject: KVM: VMX: vmx_set_cr0 expects kvm->srcu locked + +(cherry picked from commit 7a4f5ad051e02139a9f1c0f7f4b1acb88915852b) + +vmx_set_cr0 is called from vcpu run context, therefore it expects +kvm->srcu to be held (for setting up the real-mode TSS). + +Signed-off-by: Marcelo Tosatti +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Ben Hutchings +--- + arch/x86/kvm/vmx.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c +index 7ac5993..7315488 100644 +--- a/arch/x86/kvm/vmx.c ++++ b/arch/x86/kvm/vmx.c +@@ -3915,7 +3915,9 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu) + vmcs_write16(VIRTUAL_PROCESSOR_ID, vmx->vpid); + + vmx->vcpu.arch.cr0 = X86_CR0_NW | X86_CR0_CD | X86_CR0_ET; ++ vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); + vmx_set_cr0(&vmx->vcpu, kvm_read_cr0(vcpu)); /* enter rmode */ ++ srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); + vmx_set_cr4(&vmx->vcpu, 0); + vmx_set_efer(&vmx->vcpu, 0); + vmx_fpu_activate(&vmx->vcpu); +-- +1.7.6.4 + +-- +To unsubscribe from this list: send the line "unsubscribe stable" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + + diff --git a/debian/patches/series/base b/debian/patches/series/base index 0002c7917..db1a98567 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -188,8 +188,15 @@ + debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch + +# KVM fixes queued for 3.2.19 ++ bugfix/all/kvm-mmu_notifier-flush-tlbs-before-releasing-mmu_lock.patch + bugfix/all/kvm-ensure-all-vcpus-are-consistent-with-in-kernel-irqchip.patch + bugfix/all/kvm-lock-slots_lock-around-device-assignment.patch ++ bugfix/x86/kvm-nvmx-fix-erroneous-exception-bitmap-check.patch ++ bugfix/x86/kvm-vmx-vmx_set_cr0-expects-kvm-srcu-locked.patch ++ bugfix/s390/kvm-s390-do-store-status-after-handling-stop_on_stop-bit.patch ++ bugfix/s390/kvm-s390-sanitize-fpc-registers-for-kvm_set_fpu.patch # Update wacom driver to 3.5ish + features/all/wacom/0001-Input-wacom-cleanup-feature-report-for-bamboos.patch From 9eec2e85da8fcc2879f361d129847df8b73d7210 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 May 2012 01:22:31 +0000 Subject: [PATCH 27/31] Note that 3.2.18 fixes #672891 svn path=/dists/sid/linux-2.6/; revision=19017 --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index c391df448..eccb6caca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,8 @@ linux-2.6 (3.2.18-1) UNRELEASED; urgency=low - 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) From 214e4a8ace516adf51388187eec9d46d498d10a3 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 May 2012 01:35:02 +0000 Subject: [PATCH 28/31] rt2800usb: Add support for Ralink RT5392/RF5372 chipset (Closes: #673186) Backported by Jonathan Nieder. svn path=/dists/sid/linux-2.6/; revision=19018 --- debian/changelog | 1 + ...00-add-debug-message-for-new-chipset.patch | 41 ++ .../rt2x00-add-rt5372-chipset-support.patch | 456 ++++++++++++++++++ debian/patches/series/base | 4 + 4 files changed, 502 insertions(+) create mode 100644 debian/patches/features/all/rt2x00-add-debug-message-for-new-chipset.patch create mode 100644 debian/patches/features/all/rt2x00-add-rt5372-chipset-support.patch diff --git a/debian/changelog b/debian/changelog index eccb6caca..5d0e252c6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,7 @@ linux-2.6 (3.2.18-1) UNRELEASED; urgency=low [ 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 diff --git a/debian/patches/features/all/rt2x00-add-debug-message-for-new-chipset.patch b/debian/patches/features/all/rt2x00-add-debug-message-for-new-chipset.patch new file mode 100644 index 000000000..c1b2ff8a9 --- /dev/null +++ b/debian/patches/features/all/rt2x00-add-debug-message-for-new-chipset.patch @@ -0,0 +1,41 @@ +From: John Li +Date: Wed, 8 Feb 2012 21:25:24 +0800 +Subject: rt2x00:Add debug message for new chipset + +commit b6df7f1d3b0513529c496b7ef70f0f14b5177407 upstream. + +Signed-off-by: John Li +Acked-by: Helmut Schaa +Acked-by: Gertjan van Wingerde +Acked-by: Ivo van Doorn +Signed-off-by: John W. Linville +Signed-off-by: Jonathan Nieder +--- + drivers/net/wireless/rt2x00/rt2800lib.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c +index 1ba079dffb11..1ff428ba060e 100644 +--- a/drivers/net/wireless/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/rt2x00/rt2800lib.c +@@ -3939,7 +3939,7 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) + !rt2x00_rt(rt2x00dev, RT3390) && + !rt2x00_rt(rt2x00dev, RT3572) && + !rt2x00_rt(rt2x00dev, RT5390)) { +- ERROR(rt2x00dev, "Invalid RT chipset detected.\n"); ++ ERROR(rt2x00dev, "Invalid RT chipset 0x%04x detected.\n", rt2x00dev->chip.rt); + return -ENODEV; + } + +@@ -3958,7 +3958,7 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) + case RF5390: + break; + default: +- ERROR(rt2x00dev, "Invalid RF chipset 0x%x detected.\n", ++ ERROR(rt2x00dev, "Invalid RF chipset 0x%04x detected.\n", + rt2x00dev->chip.rf); + return -ENODEV; + } +-- +1.7.10.2 + diff --git a/debian/patches/features/all/rt2x00-add-rt5372-chipset-support.patch b/debian/patches/features/all/rt2x00-add-rt5372-chipset-support.patch new file mode 100644 index 000000000..d6140e716 --- /dev/null +++ b/debian/patches/features/all/rt2x00-add-rt5372-chipset-support.patch @@ -0,0 +1,456 @@ +From: John Li +Date: Fri, 17 Feb 2012 17:33:06 +0800 +Subject: rt2x00:Add RT5372 chipset support + +commit 2ed7188447fd48336f296ce2dfbd35785768d28c upstream. + +Signed-off-by: John Li +Acked-by: Gertjan van Wingerde +Acked-by: Ivo van Doorn +Signed-off-by: John W. Linville +Signed-off-by: Jonathan Nieder +--- + drivers/net/wireless/rt2x00/rt2800.h | 1 + + drivers/net/wireless/rt2x00/rt2800lib.c | 155 ++++++++++++++++++++++++++----- + drivers/net/wireless/rt2x00/rt2800pci.c | 3 +- + drivers/net/wireless/rt2x00/rt2800usb.c | 14 +++ + drivers/net/wireless/rt2x00/rt2x00.h | 1 + + 5 files changed, 148 insertions(+), 26 deletions(-) + +diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h +index 4778620347c4..9efdaafb11e5 100644 +--- a/drivers/net/wireless/rt2x00/rt2800.h ++++ b/drivers/net/wireless/rt2x00/rt2800.h +@@ -68,6 +68,7 @@ + #define RF3322 0x000c + #define RF3853 0x000d + #define RF5370 0x5370 ++#define RF5372 0x5372 + #define RF5390 0x5390 + + /* +diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c +index 1ff428ba060e..1896cbf912ad 100644 +--- a/drivers/net/wireless/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/rt2x00/rt2800lib.c +@@ -402,7 +402,8 @@ int rt2800_load_firmware(struct rt2x00_dev *rt2x00dev, + + if (rt2x00_is_pci(rt2x00dev)) { + if (rt2x00_rt(rt2x00dev, RT3572) || +- rt2x00_rt(rt2x00dev, RT5390)) { ++ rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_register_read(rt2x00dev, AUX_CTRL, ®); + rt2x00_set_field32(®, AUX_CTRL_FORCE_PCIE_CLK, 1); + rt2x00_set_field32(®, AUX_CTRL_WAKE_PCIE_EN, 1); +@@ -1904,7 +1905,8 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, + r55_nonbt_rev[idx]); + rt2800_rfcsr_write(rt2x00dev, 59, + r59_nonbt_rev[idx]); +- } else if (rt2x00_rt(rt2x00dev, RT5390)) { ++ } else if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + static const char r59_non_bt[] = {0x8f, 0x8f, + 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d, + 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86}; +@@ -1951,6 +1953,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, + else if (rt2x00_rf(rt2x00dev, RF3052)) + rt2800_config_channel_rf3052(rt2x00dev, conf, rf, info); + else if (rt2x00_rf(rt2x00dev, RF5370) || ++ rt2x00_rf(rt2x00dev, RF5372) || + rt2x00_rf(rt2x00dev, RF5390)) + rt2800_config_channel_rf53xx(rt2x00dev, conf, rf, info); + else +@@ -1965,7 +1968,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, + rt2800_bbp_write(rt2x00dev, 86, 0); + + if (rf->channel <= 14) { +- if (!rt2x00_rt(rt2x00dev, RT5390)) { ++ if (!rt2x00_rt(rt2x00dev, RT5390) && ++ !rt2x00_rt(rt2x00dev, RT5392)) { + if (test_bit(CAPABILITY_EXTERNAL_LNA_BG, + &rt2x00dev->cap_flags)) { + rt2800_bbp_write(rt2x00dev, 82, 0x62); +@@ -2495,7 +2499,8 @@ static u8 rt2800_get_default_vgc(struct rt2x00_dev *rt2x00dev) + rt2x00_rt(rt2x00dev, RT3071) || + rt2x00_rt(rt2x00dev, RT3090) || + rt2x00_rt(rt2x00dev, RT3390) || +- rt2x00_rt(rt2x00dev, RT5390)) ++ rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + return 0x1c + (2 * rt2x00dev->lna_gain); + else + return 0x2e + rt2x00dev->lna_gain; +@@ -2630,7 +2635,8 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) + } else if (rt2x00_rt(rt2x00dev, RT3572)) { + rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400); + rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); +- } else if (rt2x00_rt(rt2x00dev, RT5390)) { ++ } else if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); + rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); + rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); +@@ -3006,7 +3012,8 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) + rt2800_wait_bbp_ready(rt2x00dev))) + return -EACCES; + +- if (rt2x00_rt(rt2x00dev, RT5390)) { ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_bbp_read(rt2x00dev, 4, &value); + rt2x00_set_field8(&value, BBP4_MAC_IF_CTRL, 1); + rt2800_bbp_write(rt2x00dev, 4, value); +@@ -3014,19 +3021,22 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) + + if (rt2800_is_305x_soc(rt2x00dev) || + rt2x00_rt(rt2x00dev, RT3572) || +- rt2x00_rt(rt2x00dev, RT5390)) ++ rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 31, 0x08); + + rt2800_bbp_write(rt2x00dev, 65, 0x2c); + rt2800_bbp_write(rt2x00dev, 66, 0x38); + +- if (rt2x00_rt(rt2x00dev, RT5390)) ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 68, 0x0b); + + if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860C)) { + rt2800_bbp_write(rt2x00dev, 69, 0x16); + rt2800_bbp_write(rt2x00dev, 73, 0x12); +- } else if (rt2x00_rt(rt2x00dev, RT5390)) { ++ } else if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_bbp_write(rt2x00dev, 69, 0x12); + rt2800_bbp_write(rt2x00dev, 73, 0x13); + rt2800_bbp_write(rt2x00dev, 75, 0x46); +@@ -3044,7 +3054,8 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) + rt2x00_rt(rt2x00dev, RT3090) || + rt2x00_rt(rt2x00dev, RT3390) || + rt2x00_rt(rt2x00dev, RT3572) || +- rt2x00_rt(rt2x00dev, RT5390)) { ++ rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_bbp_write(rt2x00dev, 79, 0x13); + rt2800_bbp_write(rt2x00dev, 80, 0x05); + rt2800_bbp_write(rt2x00dev, 81, 0x33); +@@ -3056,64 +3067,88 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) + } + + rt2800_bbp_write(rt2x00dev, 82, 0x62); +- if (rt2x00_rt(rt2x00dev, RT5390)) ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 83, 0x7a); + else + rt2800_bbp_write(rt2x00dev, 83, 0x6a); + + if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860D)) + rt2800_bbp_write(rt2x00dev, 84, 0x19); +- else if (rt2x00_rt(rt2x00dev, RT5390)) ++ else if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 84, 0x9a); + else + rt2800_bbp_write(rt2x00dev, 84, 0x99); + +- if (rt2x00_rt(rt2x00dev, RT5390)) ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 86, 0x38); + else + rt2800_bbp_write(rt2x00dev, 86, 0x00); + ++ if (rt2x00_rt(rt2x00dev, RT5392)) ++ rt2800_bbp_write(rt2x00dev, 88, 0x90); ++ + rt2800_bbp_write(rt2x00dev, 91, 0x04); + +- if (rt2x00_rt(rt2x00dev, RT5390)) ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 92, 0x02); + else + rt2800_bbp_write(rt2x00dev, 92, 0x00); + ++ if (rt2x00_rt(rt2x00dev, RT5392)) { ++ rt2800_bbp_write(rt2x00dev, 95, 0x9a); ++ rt2800_bbp_write(rt2x00dev, 98, 0x12); ++ } ++ + if (rt2x00_rt_rev_gte(rt2x00dev, RT3070, REV_RT3070F) || + rt2x00_rt_rev_gte(rt2x00dev, RT3071, REV_RT3071E) || + rt2x00_rt_rev_gte(rt2x00dev, RT3090, REV_RT3090E) || + rt2x00_rt_rev_gte(rt2x00dev, RT3390, REV_RT3390E) || + rt2x00_rt(rt2x00dev, RT3572) || + rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392) || + rt2800_is_305x_soc(rt2x00dev)) + rt2800_bbp_write(rt2x00dev, 103, 0xc0); + else + rt2800_bbp_write(rt2x00dev, 103, 0x00); + +- if (rt2x00_rt(rt2x00dev, RT5390)) ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 104, 0x92); + + if (rt2800_is_305x_soc(rt2x00dev)) + rt2800_bbp_write(rt2x00dev, 105, 0x01); +- else if (rt2x00_rt(rt2x00dev, RT5390)) ++ else if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 105, 0x3c); + else + rt2800_bbp_write(rt2x00dev, 105, 0x05); + + if (rt2x00_rt(rt2x00dev, RT5390)) + rt2800_bbp_write(rt2x00dev, 106, 0x03); ++ else if (rt2x00_rt(rt2x00dev, RT5392)) ++ rt2800_bbp_write(rt2x00dev, 106, 0x12); + else + rt2800_bbp_write(rt2x00dev, 106, 0x35); + +- if (rt2x00_rt(rt2x00dev, RT5390)) ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) + rt2800_bbp_write(rt2x00dev, 128, 0x12); + ++ if (rt2x00_rt(rt2x00dev, RT5392)) { ++ rt2800_bbp_write(rt2x00dev, 134, 0xd0); ++ rt2800_bbp_write(rt2x00dev, 135, 0xf6); ++ } ++ + if (rt2x00_rt(rt2x00dev, RT3071) || + rt2x00_rt(rt2x00dev, RT3090) || + rt2x00_rt(rt2x00dev, RT3390) || + rt2x00_rt(rt2x00dev, RT3572) || +- rt2x00_rt(rt2x00dev, RT5390)) { ++ rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_bbp_read(rt2x00dev, 138, &value); + + rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); +@@ -3125,7 +3160,8 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) + rt2800_bbp_write(rt2x00dev, 138, value); + } + +- if (rt2x00_rt(rt2x00dev, RT5390)) { ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + int ant, div_mode; + + rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); +@@ -3251,13 +3287,15 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) + !rt2x00_rt(rt2x00dev, RT3390) && + !rt2x00_rt(rt2x00dev, RT3572) && + !rt2x00_rt(rt2x00dev, RT5390) && ++ !rt2x00_rt(rt2x00dev, RT5392) && + !rt2800_is_305x_soc(rt2x00dev)) + return 0; + + /* + * Init RF calibration. + */ +- if (rt2x00_rt(rt2x00dev, RT5390)) { ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); + rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 1); + rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); +@@ -3475,6 +3513,66 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) + rt2800_rfcsr_write(rt2x00dev, 61, 0xdd); + rt2800_rfcsr_write(rt2x00dev, 62, 0x00); + rt2800_rfcsr_write(rt2x00dev, 63, 0x00); ++ } else if (rt2x00_rt(rt2x00dev, RT5392)) { ++ rt2800_rfcsr_write(rt2x00dev, 1, 0x17); ++ rt2800_rfcsr_write(rt2x00dev, 2, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 3, 0x88); ++ rt2800_rfcsr_write(rt2x00dev, 5, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 6, 0xe0); ++ rt2800_rfcsr_write(rt2x00dev, 7, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 10, 0x53); ++ rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); ++ rt2800_rfcsr_write(rt2x00dev, 12, 0x46); ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); ++ rt2800_rfcsr_write(rt2x00dev, 14, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 15, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 16, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 18, 0x03); ++ rt2800_rfcsr_write(rt2x00dev, 19, 0x4d); ++ rt2800_rfcsr_write(rt2x00dev, 20, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 21, 0x8d); ++ rt2800_rfcsr_write(rt2x00dev, 22, 0x20); ++ rt2800_rfcsr_write(rt2x00dev, 23, 0x0b); ++ rt2800_rfcsr_write(rt2x00dev, 24, 0x44); ++ rt2800_rfcsr_write(rt2x00dev, 25, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 26, 0x82); ++ rt2800_rfcsr_write(rt2x00dev, 27, 0x09); ++ rt2800_rfcsr_write(rt2x00dev, 28, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 29, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 30, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 31, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 32, 0x20); ++ rt2800_rfcsr_write(rt2x00dev, 33, 0xC0); ++ rt2800_rfcsr_write(rt2x00dev, 34, 0x07); ++ rt2800_rfcsr_write(rt2x00dev, 35, 0x12); ++ rt2800_rfcsr_write(rt2x00dev, 36, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 37, 0x08); ++ rt2800_rfcsr_write(rt2x00dev, 38, 0x89); ++ rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); ++ rt2800_rfcsr_write(rt2x00dev, 40, 0x0f); ++ rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); ++ rt2800_rfcsr_write(rt2x00dev, 42, 0xd5); ++ rt2800_rfcsr_write(rt2x00dev, 43, 0x9b); ++ rt2800_rfcsr_write(rt2x00dev, 44, 0x0e); ++ rt2800_rfcsr_write(rt2x00dev, 45, 0xa2); ++ rt2800_rfcsr_write(rt2x00dev, 46, 0x73); ++ rt2800_rfcsr_write(rt2x00dev, 47, 0x0c); ++ rt2800_rfcsr_write(rt2x00dev, 48, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 49, 0x94); ++ rt2800_rfcsr_write(rt2x00dev, 50, 0x94); ++ rt2800_rfcsr_write(rt2x00dev, 51, 0x3a); ++ rt2800_rfcsr_write(rt2x00dev, 52, 0x48); ++ rt2800_rfcsr_write(rt2x00dev, 53, 0x44); ++ rt2800_rfcsr_write(rt2x00dev, 54, 0x38); ++ rt2800_rfcsr_write(rt2x00dev, 55, 0x43); ++ rt2800_rfcsr_write(rt2x00dev, 56, 0xa1); ++ rt2800_rfcsr_write(rt2x00dev, 57, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 58, 0x39); ++ rt2800_rfcsr_write(rt2x00dev, 59, 0x07); ++ rt2800_rfcsr_write(rt2x00dev, 60, 0x45); ++ rt2800_rfcsr_write(rt2x00dev, 61, 0x91); ++ rt2800_rfcsr_write(rt2x00dev, 62, 0x39); ++ rt2800_rfcsr_write(rt2x00dev, 63, 0x07); + } + + if (rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070F)) { +@@ -3542,7 +3640,8 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) + rt2800_init_rx_filter(rt2x00dev, true, 0x27, 0x15); + } + +- if (!rt2x00_rt(rt2x00dev, RT5390)) { ++ if (!rt2x00_rt(rt2x00dev, RT5390) && ++ !rt2x00_rt(rt2x00dev, RT5392)) { + /* + * Set back to initial state + */ +@@ -3570,7 +3669,8 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) + rt2x00_set_field32(®, OPT_14_CSR_BIT0, 1); + rt2800_register_write(rt2x00dev, OPT_14_CSR, reg); + +- if (!rt2x00_rt(rt2x00dev, RT5390)) { ++ if (!rt2x00_rt(rt2x00dev, RT5390) && ++ !rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); + rt2x00_set_field8(&rfcsr, RFCSR17_TX_LO1_EN, 0); + if (rt2x00_rt(rt2x00dev, RT3070) || +@@ -3638,7 +3738,8 @@ static int rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) + rt2800_rfcsr_write(rt2x00dev, 27, rfcsr); + } + +- if (rt2x00_rt(rt2x00dev, RT5390)) { ++ if (rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392)) { + rt2800_rfcsr_read(rt2x00dev, 38, &rfcsr); + rt2x00_set_field8(&rfcsr, RFCSR38_RX_LO1_EN, 0); + rt2800_rfcsr_write(rt2x00dev, 38, rfcsr); +@@ -3922,7 +4023,8 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) + * RT53xx: defined in "EEPROM_CHIP_ID" field + */ + rt2800_register_read(rt2x00dev, MAC_CSR0, ®); +- if (rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5390) ++ if (rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5390 || ++ rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5392) + rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &value); + else + value = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); +@@ -3938,7 +4040,8 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) + !rt2x00_rt(rt2x00dev, RT3090) && + !rt2x00_rt(rt2x00dev, RT3390) && + !rt2x00_rt(rt2x00dev, RT3572) && +- !rt2x00_rt(rt2x00dev, RT5390)) { ++ !rt2x00_rt(rt2x00dev, RT5390) && ++ !rt2x00_rt(rt2x00dev, RT5392)) { + ERROR(rt2x00dev, "Invalid RT chipset 0x%04x detected.\n", rt2x00dev->chip.rt); + return -ENODEV; + } +@@ -3955,6 +4058,7 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) + case RF3052: + case RF3320: + case RF5370: ++ case RF5372: + case RF5390: + break; + default: +@@ -4261,6 +4365,7 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) + rt2x00_rf(rt2x00dev, RF3022) || + rt2x00_rf(rt2x00dev, RF3320) || + rt2x00_rf(rt2x00dev, RF5370) || ++ rt2x00_rf(rt2x00dev, RF5372) || + rt2x00_rf(rt2x00dev, RF5390)) { + spec->num_channels = 14; + spec->channels = rf_vals_3x; +diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c +index 837b460d4055..bf0f83cf3738 100644 +--- a/drivers/net/wireless/rt2x00/rt2800pci.c ++++ b/drivers/net/wireless/rt2x00/rt2800pci.c +@@ -480,7 +480,8 @@ static int rt2800pci_init_registers(struct rt2x00_dev *rt2x00dev) + + if (rt2x00_is_pcie(rt2x00dev) && + (rt2x00_rt(rt2x00dev, RT3572) || +- rt2x00_rt(rt2x00dev, RT5390))) { ++ rt2x00_rt(rt2x00dev, RT5390) || ++ rt2x00_rt(rt2x00dev, RT5392))) { + rt2x00pci_register_read(rt2x00dev, AUX_CTRL, ®); + rt2x00_set_field32(®, AUX_CTRL_FORCE_PCIE_CLK, 1); + rt2x00_set_field32(®, AUX_CTRL_WAKE_PCIE_EN, 1); +diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c +index 0ffa1119acd1..d241ac6d7477 100644 +--- a/drivers/net/wireless/rt2x00/rt2800usb.c ++++ b/drivers/net/wireless/rt2x00/rt2800usb.c +@@ -1119,12 +1119,26 @@ static struct usb_device_id rt2800usb_device_table[] = { + { USB_DEVICE(0x5a57, 0x0284) }, + #endif + #ifdef CONFIG_RT2800USB_RT53XX ++ /* Alpha */ ++ { USB_DEVICE(0x2001, 0x3c15) }, ++ { USB_DEVICE(0x2001, 0x3c19) }, ++ /* Arcadyan */ ++ { USB_DEVICE(0x043e, 0x7a12) }, + /* Azurewave */ + { USB_DEVICE(0x13d3, 0x3329) }, + { USB_DEVICE(0x13d3, 0x3365) }, ++ /* LG innotek */ ++ { USB_DEVICE(0x043e, 0x7a22) }, ++ /* Panasonic */ ++ { USB_DEVICE(0x04da, 0x1801) }, ++ { USB_DEVICE(0x04da, 0x1800) }, ++ /* Philips */ ++ { USB_DEVICE(0x0471, 0x2104) }, + /* Ralink */ + { USB_DEVICE(0x148f, 0x5370) }, + { USB_DEVICE(0x148f, 0x5372) }, ++ /* Unknown */ ++ { USB_DEVICE(0x04da, 0x23f6) }, + #endif + #ifdef CONFIG_RT2800USB_UNKNOWN + /* +diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h +index 99ff12d0c29d..845dce5c997a 100644 +--- a/drivers/net/wireless/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/rt2x00/rt2x00.h +@@ -192,6 +192,7 @@ struct rt2x00_chip { + #define RT3593 0x3593 /* PCIe */ + #define RT3883 0x3883 /* WSOC */ + #define RT5390 0x5390 /* 2.4GHz */ ++#define RT5392 0x5392 /* 2.4GHz */ + + u16 rf; + u16 rev; +-- +1.7.10.2 + diff --git a/debian/patches/series/base b/debian/patches/series/base index db1a98567..195e58890 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -225,3 +225,7 @@ + features/all/wacom/0024-Input-wacom-retrieve-maximum-number-of-touch-points.patch + features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch + features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch + +# Add support for Ralink RT5392/RF5372 chipset ++ features/all/rt2x00-add-debug-message-for-new-chipset.patch ++ features/all/rt2x00-add-rt5372-chipset-support.patch From dbff313c1ccabda39ef0e726fbab9177d8df41ee Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 May 2012 01:40:25 +0000 Subject: [PATCH 29/31] ACPI battery: only refresh the sysfs files when pertinent information changes (Closes: #670958) svn path=/dists/sid/linux-2.6/; revision=19019 --- debian/changelog | 2 + ...fresh-the-sysfs-files-when-pertinent.patch | 49 +++++++++++++++++++ debian/patches/series/base | 2 + 3 files changed, 53 insertions(+) create mode 100644 debian/patches/bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch diff --git a/debian/changelog b/debian/changelog index 5d0e252c6..a0940ef06 100644 --- a/debian/changelog +++ b/debian/changelog @@ -28,6 +28,8 @@ linux-2.6 (3.2.18-1) UNRELEASED; urgency=low * [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 Wed, 16 May 2012 02:19:30 +0100 diff --git a/debian/patches/bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch b/debian/patches/bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch new file mode 100644 index 000000000..90659142b --- /dev/null +++ b/debian/patches/bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch @@ -0,0 +1,49 @@ +From: Andy Whitcroft +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 +Tested-by: Ralf Jung +Signed-off-by: Len Brown +--- + 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 + diff --git a/debian/patches/series/base b/debian/patches/series/base index 195e58890..756ba4354 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -229,3 +229,5 @@ # Add support for Ralink RT5392/RF5372 chipset + features/all/rt2x00-add-debug-message-for-new-chipset.patch + features/all/rt2x00-add-rt5372-chipset-support.patch + ++ bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch From 7bad4f9f8a0ce7c9598b44435f9a3577a33e5ddc Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 May 2012 03:06:52 +0000 Subject: [PATCH 30/31] Hide a new #include from genksyms to avoid silly symbol version changes svn path=/dists/sid/linux-2.6/; revision=19020 --- .../debian/fork-avoid-ABI-change-in-3.2.18.patch | 14 ++++++++++++++ debian/patches/series/base | 1 + 2 files changed, 15 insertions(+) create mode 100644 debian/patches/debian/fork-avoid-ABI-change-in-3.2.18.patch diff --git a/debian/patches/debian/fork-avoid-ABI-change-in-3.2.18.patch b/debian/patches/debian/fork-avoid-ABI-change-in-3.2.18.patch new file mode 100644 index 000000000..061e3fad9 --- /dev/null +++ b/debian/patches/debian/fork-avoid-ABI-change-in-3.2.18.patch @@ -0,0 +1,14 @@ +diff --git a/kernel/fork.c b/kernel/fork.c +index 26f1ab0..1291a50 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -47,7 +47,9 @@ + #include + #include + #include ++#ifndef __GENKSYMS__ + #include ++#endif + #include + #include + #include diff --git a/debian/patches/series/base b/debian/patches/series/base index 756ba4354..63a90ccf1 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -186,6 +186,7 @@ + debian/efi-avoid-ABI-change.patch + debian/skbuff-avoid-ABI-change-in-3.2.17.patch + debian/usb-hcd-avoid-ABI-change-in-3.2.17.patch ++ debian/fork-avoid-ABI-change-in-3.2.18.patch + bugfix/all/ext4-Report-max_batch_time-option-correctly.patch From 0a8ca792e19e51361c08644b863328f9b1935da3 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 21 May 2012 12:28:20 +0000 Subject: [PATCH 31/31] Prepare to release linux-2.6 (3.2.18-1). svn path=/dists/sid/linux-2.6/; revision=19023 --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index a0940ef06..86e7aeacb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -linux-2.6 (3.2.18-1) UNRELEASED; urgency=low +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 @@ -31,7 +31,7 @@ linux-2.6 (3.2.18-1) UNRELEASED; urgency=low * ACPI battery: only refresh the sysfs files when pertinent information changes (Closes: #670958) - -- Ben Hutchings Wed, 16 May 2012 02:19:30 +0100 + -- Ben Hutchings Mon, 21 May 2012 04:07:08 +0100 linux-2.6 (3.2.17-1) unstable; urgency=low