Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee49f6cb authored by Lingutla Chandrasekhar's avatar Lingutla Chandrasekhar Committed by Satya Durga Srinivasu Prabhala
Browse files

Revert "softirq: Let ksoftirqd do its job"



Ksfotirqd is a normal priority CFS task. It can experience higher
scheduling latency under heavy load conditions. Currently once
asynchronous softirq processing is deferred to ksoftirqd, softirqs
are not processed further until ksoftirqd task gets a chance to run.
High latencies for softirqs like TIMER, HI TASKLET is not acceptable.

So revert 'commit 4cd13c21 ("softirq: Let ksoftirqd do its job")'.

Change-Id: I38a1a88b5f42dd534c65d739dbb7e4321a7904db
Signed-off-by: default avatarLingutla Chandrasekhar <clingutla@codeaurora.org>
[satyap@codeaurora.org: Fix trivial merge conflicts]
Signed-off-by: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent ab58fa6c
Loading
Loading
Loading
Loading
+1 −15
Original line number Diff line number Diff line
@@ -84,17 +84,6 @@ static void wakeup_softirqd(void)
		wake_up_process(tsk);
}

/*
 * If ksoftirqd is scheduled, we do not want to process pending softirqs
 * right now. Let ksoftirqd handle this at its own rate, to get fairness.
 */
static bool ksoftirqd_running(void)
{
	struct task_struct *tsk = __this_cpu_read(ksoftirqd);

	return tsk && (tsk->state == TASK_RUNNING);
}

/*
 * preempt_count and SOFTIRQ_OFFSET usage:
 * - preempt_count is changed by SOFTIRQ_OFFSET on entering or leaving
@@ -350,7 +339,7 @@ asmlinkage __visible void do_softirq(void)

	pending = local_softirq_pending();

	if (pending && !ksoftirqd_running())
	if (pending)
		do_softirq_own_stack();

	local_irq_restore(flags);
@@ -377,9 +366,6 @@ void irq_enter(void)

static inline void invoke_softirq(void)
{
	if (ksoftirqd_running())
		return;

	if (!force_irqthreads) {
#ifdef CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK
		/*