[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK8P3a1Uh=PQbGi540KGLpkoEVH+KUW18mzqN3aiijroXwEMWQ@mail.gmail.com>
Date: Mon, 26 Jun 2017 22:43:40 +0200
From: Arnd Bergmann <arnd@...db.de>
To: Logan Gunthorpe <logang@...tatee.com>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-arch <linux-arch@...r.kernel.org>,
linux-ntb@...glegroups.com, linux-alpha@...r.kernel.org,
linuxppc-dev <linuxppc-dev@...ts.ozlabs.org>,
linux-crypto@...r.kernel.org,
dri-devel <dri-devel@...ts.freedesktop.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Stephen Bates <sbates@...thlin.com>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Paul Mackerras <paulus@...ba.org>,
Michael Ellerman <mpe@...erman.id.au>,
Suresh Warrier <warrier@...ux.vnet.ibm.com>,
Nicholas Piggin <npiggin@...il.com>
Subject: Re: [PATCH 2/7] iomap: implement ioread64 and iowrite64
> +u64 ioread64(void __iomem *addr)
> +{
> + u64 low, high;
> +
> + low = ioread32(addr);
> + high = ioread32(addr + sizeof(u32));
> + return low | (high << 32);
> +}
> +u64 ioread64be(void __iomem *addr)
> +{
> + u64 low, high;
> +
> + low = ioread32be(addr + sizeof(u32));
> + high = ioread32be(addr);
> + return low | (high << 32);
> +}
> +#endif
This hardcodes the behavior of include/linux/io-64-nonatomic-hi-lo.h, which
I find rather confusing, as only about one in five drivers wants this
behavior.
I'd suggest you don't add it in lib/iomap.c at all for 32-bit architectures,
but rather use the same logic that we have for readq/writeq in
io-64-nonatomic-hi-lo.h and io-64-nonatomic-lo-hi.h, adding
{lo_hi,hi_lo}_{ioread,iowrite}{,be} to the same files, and provide
the {ioread,iowrite}{,be} macros only if they have not been defined
at that point.
Arnd
Powered by blists - more mailing lists