2006-02-02 14:29:24

by Olaf Hering

[permalink] [raw]
Subject: Re: [PATCH] Introduce __iowrite32_copy

On Wed, Feb 01, Linux Kernel Mailing List wrote:

> tree c4d797b413bb6f8a1b8507213294a291ab5114f8
> parent f7589f28d7dd4586b4e90ac3b2a180409669053a
> author Bryan O'Sullivan <[email protected]> Wed, 01 Feb 2006 19:05:16 -0800
> committer Linus Torvalds <[email protected]> Thu, 02 Feb 2006 00:53:13 -0800
>
> [PATCH] Introduce __iowrite32_copy
>
> This arch-independent routine copies data to a memory-mapped I/O region,
> using 32-bit accesses. The naming is double-underscored to make it clear
> that it does not guarantee write ordering, nor does it perform a memory
> barrier afterwards; the kernel doc also explicitly states this. This style
> of access is required by some devices.
>
> This change also introduces include/linux/io.h, at Andrew's suggestion. It
> only has one occupant at the moment, but is a logical destination for
> oft-replicated contents of include/asm-*/{io,iomap}.h to migrate to.

> +++ b/lib/iomap_copy.c

> +void __attribute__((weak)) __iowrite32_copy(void __iomem *to,
> + const void *from,
> + size_t count)
> +{
> + u32 __iomem *dst = to;
> + const u32 *src = from;
> + const u32 *end = src + count;
> +
> + while (src < end)
> + __raw_writel(*src++, dst++);
> +}

lib/iomap_copy.c: In function '__iowrite32_copy':
lib/iomap_copy.c:40: error: implicit declaration of function '__raw_writel'

We compile with -Werror-implicit-function-declaration, and s390 does not
have a __raw_writel.
Should it just define __raw_writel to writel, like uml does a few
commits later?

--
short story of a lazy sysadmin:
alias appserv=wotan


2006-02-02 14:57:23

by Heiko Carstens

[permalink] [raw]
Subject: Re: [PATCH] Introduce __iowrite32_copy

> lib/iomap_copy.c: In function '__iowrite32_copy':
> lib/iomap_copy.c:40: error: implicit declaration of function '__raw_writel'
>
> We compile with -Werror-implicit-function-declaration, and s390 does not
> have a __raw_writel.
> Should it just define __raw_writel to writel, like uml does a few
> commits later?

I sent a patch which fixes this for s390 earlier today.
http://lkml.org/lkml/2006/2/2/78

Thanks,
Heiko

2006-02-02 16:50:04

by Bryan O'Sullivan

[permalink] [raw]
Subject: Re: [PATCH] Introduce __iowrite32_copy

On Thu, 2006-02-02 at 15:57 +0100, Heiko Carstens wrote:

> I sent a patch which fixes this for s390 earlier today.
> http://lkml.org/lkml/2006/2/2/78

Thanks.

<b

2006-02-03 06:30:55

by Al Viro

[permalink] [raw]
Subject: Re: [PATCH] Introduce __iowrite32_copy

On Thu, Feb 02, 2006 at 03:57:20PM +0100, Heiko Carstens wrote:
> > lib/iomap_copy.c: In function '__iowrite32_copy':
> > lib/iomap_copy.c:40: error: implicit declaration of function '__raw_writel'
> >
> > We compile with -Werror-implicit-function-declaration, and s390 does not
> > have a __raw_writel.
> > Should it just define __raw_writel to writel, like uml does a few
> > commits later?
>
> I sent a patch which fixes this for s390 earlier today.
> http://lkml.org/lkml/2006/2/2/78

Which leaves mips, m68k and sh64... For m68k cross-builds I've added
#define __raw_writel raw_outl in raw_io.h, but I'm not sure if m68k
folks are OK with that. Comments?

2006-02-03 08:35:30

by Kars de Jong

[permalink] [raw]
Subject: Re: [PATCH] Introduce __iowrite32_copy

On vr, 2006-02-03 at 06:30 +0000, Al Viro wrote:
> On Thu, Feb 02, 2006 at 03:57:20PM +0100, Heiko Carstens wrote:
> > > lib/iomap_copy.c: In function '__iowrite32_copy':
> > > lib/iomap_copy.c:40: error: implicit declaration of function '__raw_writel'
> > >
> > > We compile with -Werror-implicit-function-declaration, and s390 does not
> > > have a __raw_writel.
> > > Should it just define __raw_writel to writel, like uml does a few
> > > commits later?
> >
> > I sent a patch which fixes this for s390 earlier today.
> > http://lkml.org/lkml/2006/2/2/78
>
> Which leaves mips, m68k and sh64... For m68k cross-builds I've added
> #define __raw_writel raw_outl in raw_io.h, but I'm not sure if m68k
> folks are OK with that. Comments?

That's exactly what I have done in my local tree for the 53c700 driver
which uses the interfaces of lib/iomap.c, so it's fine with me.


Kind regards,

Kars.