From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932597AbbCIOJb (ORCPT ); Mon, 9 Mar 2015 10:09:31 -0400 Received: from www.linutronix.de ([62.245.132.108]:35608 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932524AbbCIOJT convert rfc822-to-8bit (ORCPT ); Mon, 9 Mar 2015 10:09:19 -0400 Date: Mon, 9 Mar 2015 15:09:17 +0100 From: Sebastian Andrzej Siewior To: Frederic Weisbecker Cc: linux-kernel@vger.kernel.org Subject: full no_hz: how works arch_irq_work_raise() with tick off on generic implementation Message-ID: <20150309140917.GB13768@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8BIT User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I just stumbled over this in -RT. The code: 87 bool irq_work_queue(struct irq_work *work) 88 { … 96 /* If the work is "lazy", handle it from next tick if any */ 97 if (work->flags & IRQ_WORK_LAZY) { 98 if (llist_add(&work->llnode, this_cpu_ptr(&lazy_list)) && 99 tick_nohz_tick_stopped()) 100 arch_irq_work_raise(); 101 } else { 102 if (llist_add(&work->llnode, this_cpu_ptr(&raised_list))) 103 arch_irq_work_raise(); 104 } … 109 } so what I asked myself: What happens if the CPU is in NO_HZ mode with the tick off and you invoke arch_irq_work_raise() on an architecture without a special IRQ_WORK interrupt? And why you don't this tick_nohz_tick_stopped() check for the raised_list? Wouldn't it be a easier for your full NO_HZ code to simply run in the hardirq exit path instead of using irq_work? Sebastian