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