From: shc_work@mail.ru (Alexander Shiyan)
To: linux-arm-kernel@lists.infradead.org
Subject: Re[2]: [PATCH] ARM: ixp4xx: Add "ask" handler for timer interrupts
Date: Sun, 02 Dec 2012 10:02:03 +0400 [thread overview]
Message-ID: <1354428123.119115041@f313.mail.ru> (raw)
In-Reply-To: <201212020011.42105.arnd@arndb.de>
> On Saturday 01 December 2012, Jason Cooper wrote:
> > On Sat, Dec 01, 2012 at 09:25:51PM +0000, Arnd Bergmann wrote:
> > > On Saturday 01 December 2012, Alexander Shiyan wrote:
> > > > + switch (d->irq) {
> > > > + case IRQ_IXP4XX_TIMER1:
> > > > + *IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
> > > > + break;
> > > > + case IRQ_IXP4XX_TIMER2:
> > > > + *IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND;
> > > > + break;
> > > > + case IRQ_IXP4XX_TIMESTAMP:
> > > > + *IXP4XX_OSST = IXP4XX_OSST_TIMER_TS_PEND;
> > > > + break;
> > > > + case IRQ_IXP4XX_WDOG:
> > > > + *IXP4XX_OSST = IXP4XX_OSST_TIMER_WDOG_PEND;
> > > > + break;
> > >
> > > Since you are touching these lines, it probably makes sense to convert them
> > > to use writel_relaxed() in the process. Dereferencing a volatile pointer
> > > in order to do MMIO is strongly discouraged, see
> > > Documentation/volatile-considered-harmful.txt
> >
> > Arnd,
> >
> > I took a quick look at the ixp4xx code when I saw this. It appears the
> > entire sub-arch is written this way :-( Perhaps it would be better to
> > do a cleanup patch before this one? I didn't mention it in my initial
> > comment because it looks like quite a bit of work.
> >
> > In either case, it's all cleanup, so it shouldn't cause a dependency
> > headache.
> >
> > Alexander, if you're so inclined, a cleanup series would be much
> > appreciated. If you don't have the time, no problem, just make the
> > changes suggested by Arnd and I and we'll get to the cleanup eventually.
>
> I got curious to how hard this would be and ended up with a patch.
>
> Arnd
>
> 8<--------
> [PATCH] ARM: ixp4xx: use proper __iomem annotations consistently
>
> The ixp4xx platform on ARM is one of the remaining locations still using
> direct pointer dereferences for MMIO access. This patch should convert
> all known instances to use readl_relaxed/writel_relaxed.
>
> I could not find a nice solution for mach/hardware.h, which is included
> by mach/io.h indirectly but actually requires MMIO accesses as defined
> in asm/io.h. Using a macro as a workaround helps, but the better solution
> in the long run would be to have a proper gpiolib driver rather than
> using a private API to do GPIO.
>
> I did not touch the definitions used in drivers/usb/gadget/pxa25x_udc.c,
> they are shared with the pxa platform and ever more screwed up than the
> other ones in ixp4xx that I fixed.
>
> In the process of doing this patch, I noticed that indirect PCI access
> on ixp4xx is broken since the PCIBIOS_MIN_MEM consolidateion, and this
> does not get fixed here.
Nice work! I changed my patch and maybe do another one for this modified
version of common.c. Only one comment about this patch is below.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
...
> diff --git a/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h b/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
> index eb68b61..2522ab0 100644
> --- a/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
> +++ b/arch/arm/mach-ixp4xx/include/mach/ixp4xx-regs.h
> @@ -92,7 +92,7 @@
> /*
> * Expansion Bus Controller registers.
> */
> -#define IXP4XX_EXP_REG(x) ((volatile u32 __iomem *)(IXP4XX_EXP_CFG_BASE_VIRT+(x)))
> +#define IXP4XX_EXP_REG(x) (IXP4XX_EXP_CFG_BASE_VIRT+(x))
Modify this to:
#define IXP4XX_EXP_REG(x) IOMEM(IXP4XX_EXP_CFG_BASE_VIRT+(x))
to avoid compiler warnings.
---
next prev parent reply other threads:[~2012-12-02 6:02 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-01 7:33 [PATCH] ARM: ixp4xx: Add "ask" handler for timer interrupts Alexander Shiyan
2012-12-01 13:05 ` Jason Cooper
2012-12-01 13:14 ` Re[2]: " Alexander Shiyan
2012-12-01 15:41 ` Jason Cooper
2012-12-01 21:25 ` Arnd Bergmann
2012-12-01 21:45 ` Jason Cooper
2012-12-02 0:11 ` Arnd Bergmann
2012-12-02 6:02 ` Alexander Shiyan [this message]
2012-12-02 13:13 ` Arnd Bergmann
2012-12-02 13:55 ` Re[4]: " Alexander Shiyan
2012-12-03 23:40 ` Arnd Bergmann
2012-12-02 8:09 ` [PATCH 1/2] ARM: ixp4xx: Moving the timer flags control in ixp4xx_irq_ack() procedure Alexander Shiyan
2012-12-02 8:09 ` [PATCH 2/2] ARM: ixp4xx: Using gpiolib rather than a private GPIO API Alexander Shiyan
2012-12-02 13:25 ` Arnd Bergmann
2012-12-02 13:24 ` [PATCH 1/2] ARM: ixp4xx: Moving the timer flags control in ixp4xx_irq_ack() procedure Arnd Bergmann
2012-12-02 13:37 ` Mikael Pettersson
2012-12-02 13:50 ` Re[2]: " Alexander Shiyan
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=1354428123.119115041@f313.mail.ru \
--to=shc_work@mail.ru \
--cc=linux-arm-kernel@lists.infradead.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox