From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751066AbbIFEZW (ORCPT ); Sun, 6 Sep 2015 00:25:22 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:40178 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750767AbbIFEZQ (ORCPT ); Sun, 6 Sep 2015 00:25:16 -0400 From: Yang Yingliang To: , CC: Yang Yingliang , Jiang Liu , Thomas Gleixner , "Marc Zyngier" , Mark Rutland , "Will Deacon" , Russell King - ARM Linux , Hanjun Guo Subject: [RFC PATCH v1 1/4] genirq: Introduce irq_settings_set_move_pcntxt() helper Date: Sun, 6 Sep 2015 12:23:38 +0800 Message-ID: <1441513421-8092-2-git-send-email-yangyingliang@huawei.com> X-Mailer: git-send-email 1.9.5.msysgit.1 In-Reply-To: <1441513421-8092-1-git-send-email-yangyingliang@huawei.com> References: <1441513421-8092-1-git-send-email-yangyingliang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.177.19.219] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090201.55EBBFEB.0052,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 515c92bf8c939fc2447d3a6ce36c22a9 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's expected to use the helper when interrupt can be moved in process. Cc: Jiang Liu Cc: Thomas Gleixner Cc: Marc Zyngier Cc: Mark Rutland Cc: Will Deacon Cc: Russell King - ARM Linux Cc: Hanjun Guo Signed-off-by: Yang Yingliang --- include/linux/irq.h | 1 + kernel/irq/irqdesc.c | 12 ++++++++++++ kernel/irq/settings.h | 5 +++++ 3 files changed, 18 insertions(+) diff --git a/include/linux/irq.h b/include/linux/irq.h index 6f8b340..f4ecfb9 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -514,6 +514,7 @@ static inline void irq_set_chip_and_handler(unsigned int irq, struct irq_chip *c } extern int irq_set_percpu_devid(unsigned int irq); +extern int irq_set_move_pcntxt(unsigned int irq); extern void __irq_set_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index 0a2a4b6..c036a1a 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -580,6 +580,18 @@ int irq_set_percpu_devid(unsigned int irq) return 0; } +int irq_set_move_pcntxt(unsigned int irq) +{ + struct irq_desc *desc = irq_to_desc(irq); + + if (!desc) + return -EINVAL; + + irq_settings_set_move_pcntxt(desc); + + return 0; +} + void kstat_incr_irq_this_cpu(unsigned int irq) { kstat_incr_irqs_this_cpu(irq_to_desc(irq)); diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h index 3320b84..ea58bc2 100644 --- a/kernel/irq/settings.h +++ b/kernel/irq/settings.h @@ -135,6 +135,11 @@ static inline void irq_settings_set_noprobe(struct irq_desc *desc) desc->status_use_accessors |= _IRQ_NOPROBE; } +static inline void irq_settings_set_move_pcntxt(struct irq_desc *desc) +{ + desc->status_use_accessors |= _IRQ_MOVE_PCNTXT; +} + static inline bool irq_settings_can_move_pcntxt(struct irq_desc *desc) { return desc->status_use_accessors & _IRQ_MOVE_PCNTXT; -- 2.5.0