From: Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> To: LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> Cc: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Simon Guinot <sguinot-D+JDLXUtGQkAvxtiuMwx3w@public.gmane.org>, Lennert Buytenhek <kernel-OLH4Qvv75CYX/NnBR394Jw@public.gmane.org>, Russell King - ARM Linux <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>, Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>, Holger Brunck <Holger.Brunck-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org>, Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>, Sebastian Hesselbarth <sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>, Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>, Simon Guinot <simon-jKBdWWKqtFpg9hUCZPvPmw@public.gmane.org>, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Jean-Francois Moine <moinejf-GANU6spQydw@public.gmane.org>, Gerlando Falauto <gerlando.falauto-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org> Subject: [RFC patch 2/8] genirq: generic chip: Add support for per chip type mask cache Date: Fri, 03 May 2013 21:50:46 -0000 [thread overview] Message-ID: <20130503214629.470374625@linutronix.de> (raw) In-Reply-To: 20130503212258.385818955@linutronix.de [-- Attachment #1: genirq-add-mask_cache-and-pmask_cache-into-struct-irq_chip_type.patch --] [-- Type: text/plain, Size: 4548 bytes --] From: Gerlando Falauto <gerlando.falauto-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org> Today the same interrupt mask cache (stored within struct irq_chip_generic) is shared between all the irq_chip_type instances. As there are instances where each irq_chip_type uses a distinct mask register (as it is the case for Orion SoCs), sharing a single mask cache may be incorrect. So add a distinct pointer for each irq_chip_type, which for now points to the original mask register within irq_chip_generic. So no functional changes here. [ tglx: Minor cosmetic tweaks ] Reported-by: Joey Oravec <joravec-Vf0cVmJFnCtWk0Htik3J/w@public.gmane.org> Signed-off-by: Simon Guinot <sguinot-D+JDLXUtGQkAvxtiuMwx3w@public.gmane.org> Signed-off-by: Holger Brunck <holger.brunck-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org> Signed-off-by: Gerlando Falauto <gerlando.falauto-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org> Cc: Lennert Buytenhek <kernel-OLH4Qvv75CYX/NnBR394Jw@public.gmane.org> Cc: Simon Guinot <simon-jKBdWWKqtFpg9hUCZPvPmw@public.gmane.org> Cc: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org> Cc: Nicolas Pitre <nico-vtqb6HGKxmzR7s880joybQ@public.gmane.org> Cc: Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org> Cc: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org> Cc: Holger Brunck <Holger.Brunck-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org> Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Signed-off-by: Thomas Gleixner <tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> --- include/linux/irq.h | 6 +++++- kernel/irq/generic-chip.c | 16 ++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) Index: linux-2.6/include/linux/irq.h =================================================================== --- linux-2.6.orig/include/linux/irq.h +++ linux-2.6/include/linux/irq.h @@ -644,6 +644,8 @@ struct irq_chip_regs { * @regs: Register offsets for this chip * @handler: Flow handler associated with this chip * @type: Chip can handle these flow types + * @mask_cache_priv: Cached mask register private to the chip type + * @mask_cache: Pointer to cached mask register * * A irq_generic_chip can have several instances of irq_chip_type when * it requires different functions and register offsets for different @@ -654,6 +656,8 @@ struct irq_chip_type { struct irq_chip_regs regs; irq_flow_handler_t handler; u32 type; + u32 mask_cache_priv; + u32 *mask_cache; }; /** @@ -662,7 +666,7 @@ struct irq_chip_type { * @reg_base: Register base address (virtual) * @irq_base: Interrupt base nr for this chip * @irq_cnt: Number of interrupts handled by this chip - * @mask_cache: Cached mask register + * @mask_cache: Cached mask register shared between all chip types * @type_cache: Cached type register * @polarity_cache: Cached polarity register * @wake_enabled: Interrupt can wakeup from suspend Index: linux-2.6/kernel/irq/generic-chip.c =================================================================== --- linux-2.6.orig/kernel/irq/generic-chip.c +++ linux-2.6/kernel/irq/generic-chip.c @@ -39,7 +39,7 @@ void irq_gc_mask_disable_reg(struct irq_ irq_gc_lock(gc); irq_reg_writel(mask, gc->reg_base + ct->regs.disable); - gc->mask_cache &= ~mask; + *ct->mask_cache &= ~mask; irq_gc_unlock(gc); } @@ -57,8 +57,8 @@ void irq_gc_mask_set_bit(struct irq_data u32 mask = 1 << (d->irq - gc->irq_base); irq_gc_lock(gc); - gc->mask_cache |= mask; - irq_reg_writel(gc->mask_cache, gc->reg_base + ct->regs.mask); + *ct->mask_cache |= mask; + irq_reg_writel(*ct->mask_cache, gc->reg_base + ct->regs.mask); irq_gc_unlock(gc); } @@ -76,8 +76,8 @@ void irq_gc_mask_clr_bit(struct irq_data u32 mask = 1 << (d->irq - gc->irq_base); irq_gc_lock(gc); - gc->mask_cache &= ~mask; - irq_reg_writel(gc->mask_cache, gc->reg_base + ct->regs.mask); + *ct->mask_cache &= ~mask; + irq_reg_writel(*ct->mask_cache, gc->reg_base + ct->regs.mask); irq_gc_unlock(gc); } @@ -96,7 +96,7 @@ void irq_gc_unmask_enable_reg(struct irq irq_gc_lock(gc); irq_reg_writel(mask, gc->reg_base + ct->regs.enable); - gc->mask_cache |= mask; + *ct->mask_cache |= mask; irq_gc_unlock(gc); } @@ -250,6 +250,10 @@ void irq_setup_generic_chip(struct irq_c if (flags & IRQ_GC_INIT_MASK_CACHE) gc->mask_cache = irq_reg_readl(gc->reg_base + ct->regs.mask); + /* Initialize mask cache pointer */ + for (i = 0; i < gc->num_ct; i++) + ct[i].mask_cache = &gc->mask_cache; + for (i = gc->irq_base; msk; msk >>= 1, i++) { if (!(msk & 0x01)) continue;
WARNING: multiple messages have this Message-ID (diff)
From: tglx@linutronix.de (Thomas Gleixner) To: linux-arm-kernel@lists.infradead.org Subject: [RFC patch 2/8] genirq: generic chip: Add support for per chip type mask cache Date: Fri, 03 May 2013 21:50:46 -0000 [thread overview] Message-ID: <20130503214629.470374625@linutronix.de> (raw) In-Reply-To: 20130503212258.385818955@linutronix.de An embedded and charset-unspecified text was scrubbed... Name: genirq-add-mask_cache-and-pmask_cache-into-struct-irq_chip_type.patch URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130503/5f6f2dfd/attachment.ksh>
next prev parent reply other threads:[~2013-05-03 21:50 UTC|newest] Thread overview: 178+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-05-02 18:25 [PATCH] irqchip: add support for Marvell Orion SoCs Sebastian Hesselbarth 2013-05-02 18:25 ` Sebastian Hesselbarth 2013-05-02 18:25 ` Sebastian Hesselbarth 2013-05-02 18:33 ` Sebastian Hesselbarth 2013-05-02 18:33 ` Sebastian Hesselbarth 2013-05-02 18:33 ` Sebastian Hesselbarth 2013-05-02 18:45 ` Russell King - ARM Linux 2013-05-02 18:45 ` Russell King - ARM Linux 2013-05-02 18:54 ` Sebastian Hesselbarth 2013-05-02 18:54 ` Sebastian Hesselbarth 2013-05-02 18:56 ` Russell King - ARM Linux 2013-05-02 18:56 ` Russell King - ARM Linux 2013-05-02 19:04 ` Sebastian Hesselbarth 2013-05-02 19:04 ` Sebastian Hesselbarth 2013-05-02 18:53 ` Jason Gunthorpe 2013-05-02 18:53 ` Jason Gunthorpe 2013-05-02 18:53 ` Jason Gunthorpe 2013-05-02 19:05 ` Sebastian Hesselbarth 2013-05-02 19:05 ` Sebastian Hesselbarth 2013-05-02 19:35 ` Jason Gunthorpe 2013-05-02 19:35 ` Jason Gunthorpe 2013-05-02 19:48 ` Sebastian Hesselbarth 2013-05-02 19:48 ` Sebastian Hesselbarth 2013-05-02 20:02 ` Andrew Lunn 2013-05-02 20:02 ` Andrew Lunn 2013-05-02 20:08 ` Gregory CLEMENT 2013-05-02 20:08 ` Gregory CLEMENT 2013-05-04 17:58 ` Jason Cooper 2013-05-04 17:58 ` Jason Cooper 2013-05-04 17:58 ` Jason Cooper 2013-05-02 19:11 ` Arnd Bergmann 2013-05-02 19:11 ` Arnd Bergmann 2013-05-02 19:34 ` Sebastian Hesselbarth 2013-05-02 19:34 ` Sebastian Hesselbarth 2013-05-02 19:37 ` Jason Gunthorpe 2013-05-02 19:37 ` Jason Gunthorpe 2013-05-02 19:39 ` Sebastian Hesselbarth 2013-05-02 19:39 ` Sebastian Hesselbarth 2013-05-02 19:22 ` Jason Cooper 2013-05-02 19:22 ` Jason Cooper 2013-05-02 19:22 ` Jason Cooper 2013-05-02 21:34 ` Thomas Gleixner 2013-05-02 21:34 ` Thomas Gleixner 2013-05-02 21:56 ` Sebastian Hesselbarth 2013-05-02 21:56 ` Sebastian Hesselbarth 2013-05-02 22:09 ` Arnd Bergmann 2013-05-02 22:09 ` Arnd Bergmann 2013-05-02 22:37 ` Sebastian Hesselbarth 2013-05-02 22:37 ` Sebastian Hesselbarth 2013-05-04 18:12 ` Jason Cooper 2013-05-04 18:12 ` Jason Cooper 2013-05-04 18:12 ` Jason Cooper 2013-05-02 23:48 ` [PATCH v2 0/5] ARM: orion: add orion irqchip driver Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-02 23:48 ` [PATCH v2 1/5] irqchip: add support for Marvell Orion SoCs Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-03 12:55 ` Russell King - ARM Linux 2013-05-03 12:55 ` Russell King - ARM Linux 2013-05-03 13:13 ` Sebastian Hesselbarth 2013-05-03 13:13 ` Sebastian Hesselbarth 2013-05-03 14:09 ` Thomas Gleixner 2013-05-03 14:09 ` Thomas Gleixner 2013-05-03 21:50 ` [RFC patch 0/8] genirq: Support for irq domains in generic irq chip Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 21:50 ` [RFC patch 1/8] genirq: generic chip: Remove the local cur_regs() function Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner [not found] ` <20130503214629.397359626-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org> 2013-05-27 13:38 ` Grant Likely 2013-05-27 13:38 ` Grant Likely 2013-05-03 21:50 ` Thomas Gleixner [this message] 2013-05-03 21:50 ` [RFC patch 2/8] genirq: generic chip: Add support for per chip type mask cache Thomas Gleixner 2013-05-03 21:50 ` [RFC patch 3/8] genirq: generic chip: Handle separate mask registers Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 21:50 ` [RFC patch 4/8] genirq: generic chip: Cache per irq bit mask Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 22:24 ` Russell King - ARM Linux 2013-05-03 22:24 ` Russell King - ARM Linux 2013-05-03 22:39 ` Thomas Gleixner 2013-05-03 22:39 ` Thomas Gleixner 2013-05-03 21:50 ` [RFC patch 5/8] genirq: Add a mask calculation function Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 21:50 ` [RFC patch 6/8] genirq: Split out code in generic chip Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-27 13:45 ` Grant Likely 2013-05-27 13:45 ` Grant Likely 2013-05-27 13:45 ` Grant Likely 2013-05-03 21:50 ` [RFC patch 7/8] genirq: generic chip: Add linear irq domain support Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-03 22:23 ` Russell King - ARM Linux 2013-05-03 22:23 ` Russell King - ARM Linux 2013-05-03 22:38 ` Thomas Gleixner 2013-05-03 22:38 ` Thomas Gleixner 2013-05-04 2:30 ` Sebastian Hesselbarth 2013-05-04 2:30 ` Sebastian Hesselbarth 2013-05-04 8:04 ` Thomas Gleixner 2013-05-04 8:04 ` Thomas Gleixner 2013-05-06 12:32 ` [RFC patch 7/8] fixup 1/2: " Sebastian Hesselbarth 2013-05-06 12:32 ` Sebastian Hesselbarth 2013-05-06 12:32 ` [RFC patch 7/8] fixup 2/2: " Sebastian Hesselbarth 2013-05-06 12:32 ` Sebastian Hesselbarth 2013-05-06 13:31 ` Thomas Gleixner 2013-05-06 13:31 ` Thomas Gleixner 2013-05-06 13:25 ` [RFC patch 7/8] fixup 1/2: " Thomas Gleixner 2013-05-06 13:25 ` Thomas Gleixner 2013-05-03 21:50 ` [RFC patch 8/8] irqchip: sun4i: Convert to generic irq chip Thomas Gleixner 2013-05-03 21:50 ` Thomas Gleixner 2013-05-04 2:37 ` Sebastian Hesselbarth 2013-05-04 2:37 ` Sebastian Hesselbarth 2013-05-06 9:48 ` [RFC patch 0/8] genirq: Support for irq domains in " Uwe Kleine-König 2013-05-06 9:48 ` Uwe Kleine-König 2013-05-06 14:30 ` [patch 0/8] genirq: Support for irq domains in generic irq chip - V2 Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-06 14:30 ` [patch 1/8] genirq: generic chip: Remove the local cur_regs() function Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-29 9:14 ` [tip:irq/core] genirq: Generic " tip-bot for Gerlando Falauto 2013-05-06 14:30 ` [patch 2/8] genirq: generic chip: Add support for per chip type mask cache Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-29 9:16 ` [tip:irq/core] genirq: Generic " tip-bot for Gerlando Falauto 2013-05-06 14:30 ` [patch 3/8] genirq: generic chip: Handle separate mask registers Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-29 9:17 ` [tip:irq/core] genirq: Generic " tip-bot for Gerlando Falauto 2013-05-06 14:30 ` [patch 4/8] genirq: generic chip: Cache per irq bit mask Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-29 9:18 ` [tip:irq/core] genirq: Generic " tip-bot for Thomas Gleixner 2013-05-06 14:30 ` [patch 5/8] genirq: Add a mask calculation function Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-29 9:19 ` [tip:irq/core] genirq: irqchip: " tip-bot for Thomas Gleixner 2013-05-06 14:30 ` [patch 6/8] genirq: Split out code in generic chip Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-29 9:21 ` [tip:irq/core] genirq: Generic chip: Split out code into separate functions tip-bot for Thomas Gleixner 2013-05-06 14:30 ` [patch 7/8] genirq: generic chip: Add linear irq domain support Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-29 2:22 ` Grant Likely 2013-05-29 2:22 ` Grant Likely 2013-05-29 8:23 ` Thomas Gleixner 2013-05-29 8:23 ` Thomas Gleixner 2013-05-29 9:22 ` [tip:irq/core] genirq: Generic " tip-bot for Thomas Gleixner 2013-05-06 14:30 ` [patch 8/8] irqchip: sun4i: Convert to generic irq chip Thomas Gleixner 2013-05-06 14:30 ` Thomas Gleixner 2013-05-06 15:18 ` Rob Herring 2013-05-06 15:18 ` Rob Herring 2013-05-12 14:05 ` [PATCH] irq-sun4i: Fix trivial build errors Maxime Ripard 2013-05-12 14:05 ` Maxime Ripard 2013-05-12 14:08 ` [patch 8/8] irqchip: sun4i: Convert to generic irq chip Maxime Ripard 2013-05-12 14:08 ` Maxime Ripard 2013-05-12 14:14 ` Maxime Ripard 2013-05-12 14:14 ` Maxime Ripard 2013-05-13 10:57 ` [patch 0/8] genirq: Support for irq domains in generic irq chip - V2 Gerlando Falauto 2013-05-13 12:01 ` Thomas Gleixner 2013-10-01 15:27 ` Gerlando Falauto 2013-10-01 15:27 ` Gerlando Falauto 2013-05-02 23:48 ` [PATCH v2 2/5] ARM: dove: add DT parsing for legacy mv643xx_eth Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-03 5:06 ` Andrew Lunn 2013-05-03 5:06 ` Andrew Lunn 2013-05-03 5:06 ` Andrew Lunn 2013-05-03 9:58 ` Sebastian Hesselbarth 2013-05-03 9:58 ` Sebastian Hesselbarth 2013-05-04 18:29 ` Jason Cooper 2013-05-04 18:29 ` Jason Cooper 2013-05-04 18:29 ` Jason Cooper [not found] ` <20130504182935.GO31290-u4khhh1J0LxI1Ri9qeTfzeTW4wlIGRCZ@public.gmane.org> 2013-05-04 19:37 ` Florian Fainelli 2013-05-02 23:48 ` [PATCH v2 3/5] ARM: dove: add DT parsing for legacy timer Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-02 23:48 ` [PATCH v2 4/5] ARM: dove: move DT boards to orion irqchip driver Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth 2013-05-02 23:48 ` [PATCH v2 5/5] ARM: dove: add DT nodes for irqchip conversion Sebastian Hesselbarth 2013-05-02 23:48 ` Sebastian Hesselbarth
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20130503214629.470374625@linutronix.de \ --to=tglx-hfztesqfncyowbw4kg4ksq@public.gmane.org \ --cc=Holger.Brunck-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org \ --cc=andrew-g2DYL2Zd6BY@public.gmane.org \ --cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \ --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \ --cc=gerlando.falauto-SkAbAL50j+5BDgjK7y7TUQ@public.gmane.org \ --cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \ --cc=jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org \ --cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \ --cc=kernel-OLH4Qvv75CYX/NnBR394Jw@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \ --cc=moinejf-GANU6spQydw@public.gmane.org \ --cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \ --cc=sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=sguinot-D+JDLXUtGQkAvxtiuMwx3w@public.gmane.org \ --cc=simon-jKBdWWKqtFpg9hUCZPvPmw@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.