From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755503AbeARS3Z (ORCPT ); Thu, 18 Jan 2018 13:29:25 -0500 Received: from mout.gmx.net ([212.227.15.19]:58390 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753332AbeARS3Y (ORCPT ); Thu, 18 Jan 2018 13:29:24 -0500 Message-ID: <1516300112.7351.17.camel@gmx.de> Subject: Re: [RFC 4/6] softirq: Run per-group per-cpu ksoftirqd thread From: Mike Galbraith To: Dmitry Safonov , linux-kernel@vger.kernel.org Cc: Andrew Morton , David Miller , Eric Dumazet , Frederic Weisbecker , Hannes Frederic Sowa , Ingo Molnar , "Levin, Alexander (Sasha Levin)" , Linus Torvalds , Mauro Carvalho Chehab , Paolo Abeni , "Paul E. McKenney" , Peter Zijlstra , Radu Rendec , Rik van Riel , Stanislaw Gruszka , Thomas Gleixner , Wanpeng Li Date: Thu, 18 Jan 2018 19:28:32 +0100 In-Reply-To: <1516298004.2762.11.camel@arista.com> References: <20180118161238.13792-1-dima@arista.com> <20180118161238.13792-5-dima@arista.com> <1516294803.8020.11.camel@gmx.de> <1516298004.2762.11.camel@arista.com> Content-Type: text/plain; charset="ISO-8859-15" X-Mailer: Evolution 3.20.5 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:UTnqOt1lDijt8lao34JebUylDyNSO7rdo3G0SjK5wDfrNmVRgLK qlKCBmp3HbAoBuWTlqC9sheY56U8ATAn8AF9C4oYV4768CvIdqJNBnC3wyla+/ULcZp+Tv3 TH+DFUu/Sc33c/c+qY0sfJxRtONsM7L6ohDJg3j3tEptf9vkxyHdjwRaiYYonD01Uj/gbOb a+4Fdzwa13ad8eOwjPxIQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:1sukEQRJS3U=:JjsshUtv5xBXPqmf2HoxH2 TQlMRaKkfvJLltLtPwJpTL/GQlWVesRtU006v/Bl4Yh4RNeMSK0xONxtg1+SZKBNM8WoLCDTg LsOBGoz8RqBGc5q38T5nWACiIOkSMs1eVyUkglByjJcLxRlrfFZekjlvuNlgVjZtjIOy7hKki ZTlFBS+M2t0ZtoLTicmuONjFOntbLYgBVCcGwB89/KHyvdUiJy5sZRNO7KrZ/EvXflEdEEEMn 9HdpT/xdigm0AJVgQ1cQGSb30OQSXTV52fQGWN3v9Oby93FcvMtnp4seqWMgpq+b5r7drCZlq +50SVBRLixzgPYmthu9Y4TIz+odPFCoiDB5ooYS2JlGm0737BviJBcgTg2nT9nRKaS6FXp6+i ivJUPAh69AwLaPihEshnwON35dEwC9nsRaxhKu1zD3Nb6e1ELeiC+qItXT/yWoNc0dJjhMIoV jj1ONR+UAfOkoHkQowHxqIb0N3uQIn/cxQk470Eb4kXuTEQeo0n8aM393ZjGuL7eMLZYDSkUF RYXpTbqjy6HNLN/cpB+exT5PGyv8EfCu2a/jOjpter4cI6LObDqUhznhoyCRW8BMHzBFKK9kQ hhJvoqE/3wJUY+DZHYwqS2AH3wS9slaAMAr267UqT5syFh9dwpMWJKPXg0+7tACYz36CPHDY3 SbEixSoMr7D9pdnL28qanitNxJqK4D5fmqUtK1zhrvHRqpVxsSt24N+xhZiBjMnii00tPQE8l pR6g4+oIcUzMlDYrswu5aWA2v5mSYgDhg+3HnoJghX8aoFZbKhcrKD5hWRB5YQoa3QWiMSoFH p5wP9SSTT34WcKCnKRJpnWpNl21KBGnFs8SZ+YMUplRkePOX6w= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2018-01-18 at 17:53 +0000, Dmitry Safonov wrote: > How do you identify in RT one ksoftirqd thread from > another? I mean, to find which softirq nr the thread is servicing? static void do_raise_softirq_irqoff(unsigned int nr) { struct task_struct *tsk = __this_cpu_ksoftirqd(nr); unsigned int mask = 1UL << nr; trace_softirq_raise(nr); or_softirq_pending(mask); /* * If we are not in a hard interrupt and inside a bh disabled * region, we simply raise the flag on current. local_bh_enable() * will make sure that the softirq is executed. Otherwise we * delegate it to the proper softirqd thread for this softirq. */ if (!in_irq() && current->softirq_nestcnt) { if (!(current->flags & PF_KSOFTIRQD) || current == tsk) current->softirqs_raised |= mask; else if (tsk) { tsk->softirqs_raised |= mask; wakeup_softirqd(nr); } } else if (tsk) tsk->softirqs_raised |= mask; }