rpms/kernel/devel kernel-2.6.spec, 1.3224, 1.3225 linux-2.6-utrace.patch, 1.63, 1.64 linux-2.6-sched-cfs-v2.6.22-rc4-v17.patch, 1.1, NONE
Dave Jones (davej)
fedora-extras-commits at redhat.com
Sun Jun 17 19:46:08 UTC 2007
Author: davej
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21901
Modified Files:
kernel-2.6.spec linux-2.6-utrace.patch
Removed Files:
linux-2.6-sched-cfs-v2.6.22-rc4-v17.patch
Log Message:
* Sun Jun 17 2007 Dave Jones <davej at redhat.com>
- 2.6.22-rc5.
Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.3224
retrieving revision 1.3225
diff -u -r1.3224 -r1.3225
--- kernel-2.6.spec 17 Jun 2007 19:11:38 -0000 1.3224
+++ kernel-2.6.spec 17 Jun 2007 19:45:32 -0000 1.3225
@@ -420,8 +420,7 @@
### BRANCH PATCH ###
%else
# Here should be only the patches up to the upstream canonical Linus tree.
-Patch00: patch-2.6.22-rc4.bz2
-Patch01: patch-2.6.22-rc4-git8.bz2
+Patch00: patch-2.6.22-rc5.bz2
%endif
%if !%{nopatches}
@@ -501,7 +500,7 @@
Patch860: xen-printf-rate-limit.patch
Patch870: xen-11668-hvm_disable_fix.patch
Patch880: xen-dom0-reboot.patch
-Patch900: linux-2.6-sched-cfs-v2.6.22-rc4-v17.patch
+Patch900: linux-2.6-sched-cfs.patch
%endif
@@ -907,13 +906,13 @@
%else
# Update to latest upstream.
-ApplyPatch patch-2.6.22-rc4.bz2
-ApplyPatch patch-2.6.22-rc4-git4.bz2
+ApplyPatch patch-2.6.22-rc5.bz2
%endif
%if !%{nopatches}
-# Patches 10 through 100 are meant for core subsystem upgrades
+# Ingo's new scheduler.
+ApplyPatch linux-2.6-sched-cfs.patch
# Roland's utrace ptrace replacement.
#ApplyPatch linux-2.6-utrace.patch
@@ -1111,7 +1110,7 @@
ApplyPatch linux-2.6-ata-quirk.patch
# Add the new wireless stack and drivers from wireless-dev
-ApplyPatch git-wireless-dev.patch
+#ApplyPatch git-wireless-dev.patch
# avoid bcm3xx vs bcm43xx-mac80211 PCI ID conflicts
ApplyPatch linux-2.6-bcm43xx-pci-neuter.patch
@@ -1126,9 +1125,6 @@
# Make hdaps timer only tick when in use.
ApplyPatch linux-2.6-wakeups-hdaps.patch
-# Ingo's new scheduler.
-ApplyPatch linux-2.6-sched-cfs-v2.6.22-rc4-v17.patch
-
#
# misc small stuff to make things compile or otherwise improve performance
#
@@ -2088,6 +2084,9 @@
%changelog
* Sun Jun 17 2007 Dave Jones <davej at redhat.com>
+- 2.6.22-rc5.
+
+* Sun Jun 17 2007 Dave Jones <davej at redhat.com>
- Add Ingo's CFS scheduler.
* Sat Jun 16 2007 Dave Jones <davej at redhat.com>
linux-2.6-utrace.patch:
Index: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-utrace.patch,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -r1.63 -r1.64
--- linux-2.6-utrace.patch 16 Jun 2007 14:47:17 -0000 1.63
+++ linux-2.6-utrace.patch 17 Jun 2007 19:45:32 -0000 1.64
@@ -12968,7 +12968,7 @@
* For a WNOHANG return, clear out all the fields
--- linux-2.6/kernel/utrace.c
+++ linux-2.6/kernel/utrace.c
-@@ -0,0 +1,2144 @@
+@@ -0,0 +1,2222 @@
+/*
+ * utrace infrastructure interface for debugging user processes
+ *
@@ -13281,6 +13281,18 @@
+
+ }
+
++ /*
++ * When it's in TASK_STOPPED state, do not set UTRACE_EVENT(JCTL).
++ * That bit indicates utrace_report_jctl has not run yet, but it
++ * may have. Set UTRACE_ACTION_QUIESCE instead to be sure that
++ * once it resumes it will recompute its flags in utrace_quiescent.
++ */
++ if (((flags &~ tsk->utrace_flags) & UTRACE_EVENT(JCTL))
++ && tsk->state == TASK_STOPPED) {
++ flags &= ~UTRACE_EVENT(JCTL);
++ flags |= UTRACE_ACTION_QUIESCE;
++ }
++
+ tsk->utrace_flags = flags;
+ if (flags)
+ spin_unlock(&utrace->lock);
@@ -13324,7 +13336,7 @@
+static int
+quiesce(struct task_struct *target, int interrupt)
+{
-+ int quiescent;
++ int ret;
+
+ target->utrace_flags |= UTRACE_ACTION_QUIESCE;
+ read_barrier_depends();
@@ -13332,27 +13344,60 @@
+ if (target->exit_state)
+ goto dead;
+
-+ quiescent = target->state & (TASK_TRACED | TASK_STOPPED);
-+ if (!quiescent) {
++ /*
++ * First a quick check without the siglock. If it's in TASK_TRACED
++ * or TASK_STOPPED already, we know it is going to go through
++ * utrace_get_signal before it resumes.
++ */
++ ret = 1;
++ switch (target->state) {
++ case TASK_TRACED:
++ break;
++
++ case TASK_STOPPED:
++ /*
++ * If it will call utrace_report_jctl but have not gotten
++ * through it yet, then don't consider it quiescent yet.
++ * utrace_report_jctl will take target->utrace->lock and
++ * clear UTRACE_EVENT(JCTL) once it finishes.
++ */
++ if (!(target->utrace_flags & UTRACE_EVENT(JCTL)))
++ break;
++
++ default:
++ /*
++ * Now get the siglock and check again.
++ */
+ spin_lock_irq(&target->sighand->siglock);
+ if (unlikely(target->exit_state)) {
+ spin_unlock_irq(&target->sighand->siglock);
+ goto dead;
+ }
-+ quiescent = unlikely(target->state
-+ & (TASK_TRACED | TASK_STOPPED));
-+ if (!quiescent) {
++ switch (target->state) {
++ case TASK_TRACED:
++ break;
++
++ case TASK_STOPPED:
++ ret = !(target->utrace_flags & UTRACE_EVENT(JCTL));
++ break;
++
++ default:
++ /*
++ * It is not stopped, so tell it to stop soon.
++ */
++ ret = 0;
+ if (interrupt)
+ signal_wake_up(target, 0);
+ else {
+ set_tsk_thread_flag(target, TIF_SIGPENDING);
+ kick_process(target);
+ }
++ break;
+ }
+ spin_unlock_irq(&target->sighand->siglock);
+ }
+
-+ return quiescent;
++ return ret;
+
+dead:
+ /*
@@ -14172,6 +14217,18 @@
+ spin_unlock_irq(&tsk->sighand->siglock);
+ }
+
++ /*
++ * We clear the UTRACE_EVENT(JCTL) bit to indicate that we are now
++ * in a truly quiescent TASK_STOPPED state. After this, we can be
++ * detached by another thread. Setting UTRACE_ACTION_QUIESCE
++ * ensures that we will go through utrace_quiescent and recompute
++ * flags after we resume.
++ */
++ spin_lock(&utrace->lock);
++ tsk->utrace_flags &= ~UTRACE_EVENT(JCTL);
++ tsk->utrace_flags |= UTRACE_ACTION_QUIESCE;
++ spin_unlock(&utrace->lock);
++
+ return action & UTRACE_JCTL_NOSIGCHLD;
+}
+
@@ -14551,6 +14608,7 @@
+ struct list_head *pos, *next;
+ struct utrace_attached_engine *engine;
+ unsigned long action, ev;
++ int killed;
+
+/*
+ XXX pass syscall # to engine hook directly, let it return inhibit-action
@@ -14574,12 +14632,32 @@
+ break;
+ }
+ action = check_detach(tsk, action);
-+ if (unlikely(check_quiescent(tsk, action)) && !is_exit)
++ killed = check_quiescent(tsk, action);
++
++ if (!is_exit) {
++ if (unlikely(killed))
++ /*
++ * We are continuing despite QUIESCE because of a
++ * SIGKILL. Don't let the system call actually
++ * proceed.
++ */
++ tracehook_abort_syscall(regs);
++
+ /*
-+ * We are continuing despite QUIESCE because of a SIGKILL.
-+ * Don't let the system call actually proceed.
++ * Clear TIF_SIGPENDING if it no longer needs to be set.
++ * It may have been set as part of quiesence, and won't
++ * ever have been cleared by another thread. For other
++ * reports, we can just leave it set and will go through
++ * utrace_get_signal to reset things. But here we are
++ * about to enter a syscall, which might bail out with an
++ * -ERESTART* error if it's set now.
+ */
-+ tracehook_abort_syscall(regs);
++ if (signal_pending(tsk)) {
++ spin_lock_irq(&tsk->sighand->siglock);
++ recalc_sigpending();
++ spin_unlock_irq(&tsk->sighand->siglock);
++ }
++ }
+}
+
+
--- linux-2.6-sched-cfs-v2.6.22-rc4-v17.patch DELETED ---
More information about the fedora-extras-commits
mailing list