linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0 of 3] 32-bit MMIO copy routine
@ 2006-01-06 20:26 Bryan O'Sullivan
  2006-01-06 20:26 ` [PATCH 1 of 3] Introduce __raw_memcpy_toio32 Bryan O'Sullivan
                   ` (2 more replies)
  0 siblings, 3 replies; 32+ messages in thread
From: Bryan O'Sullivan @ 2006-01-06 20:26 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 915 bytes --]

Following some discussion with Roland, and patterned after the style
anointed by Linus last week, here is a new version of the 32-bit MMIO
copy routine needed by our InfiniPath device.

The name of the routine has changed from memcpy_toio32 to
__raw_memcpy_toio32.  This reflects the basic nature of the routine;
it dodes not guarantee the order in which writes are performed, nor does
it perform a memory barrier after it is done.

The reason for this is that our chip treats the first and last writes
to some MMIO regions specially; our driver performs those directly using
writel, and uses __raw_memcpy_toio32 for the bits in between.

Regarding the specialised x86_64 implementation, Andi Kleen asked me
to perform some measurements of its performance impact.  It makes a
difference of about 5% in performance on moderately large copies over
the HyperTransport bus, compared to the generic implementation.

	<b

^ permalink raw reply	[flat|nested] 32+ messages in thread
* [PATCH 0 of 3] 32-bit MMIO copy routines, reworked
@ 2006-01-10 19:53 Bryan O'Sullivan
  2006-01-10 19:53 ` [PATCH 1 of 3] Introduce __raw_memcpy_toio32 Bryan O'Sullivan
  0 siblings, 1 reply; 32+ messages in thread
From: Bryan O'Sullivan @ 2006-01-10 19:53 UTC (permalink / raw)
  To: akpm; +Cc: linux-kernel, hch, ak, rdreier

[-- Attachment #1: Type: text/plain, Size: 752 bytes --]

After some more review comments from Roland, Andrew and Chris Hellwig,
here is a reworked set of 32-bit MMIO copy patches.

These use CONFIG_RAW_MEMCPY_IO to determine whether an arch should use
the generic __raw_memcpy_toio32 routine or its own specialised version.
We provide a specialised implementation for x86_64.

These patches should apply cleanly against current -git, and have been
tested on i386 and x86_64.

The patch series is as follows:

raw_memcpy_io.patch
  Introduce the generic MMIO 32-bit copy routine.

x86_64-memcpy32.patch
  Add memcpy32 routine to x86_64.

arch-specific-raw_memcpy_io.patch
  Get each arch to use generic memcpy_io code, except x86_64, which
  uses memcpy32.

Signed-off-by: Bryan O'Sullivan <bos@pathscale.com>

^ permalink raw reply	[flat|nested] 32+ messages in thread
* [PATCH 0 of 3] MMIO 32-bit copy routine, the final frontier
@ 2006-01-11 22:39 Bryan O'Sullivan
  2006-01-11 22:39 ` [PATCH 1 of 3] Introduce __raw_memcpy_toio32 Bryan O'Sullivan
  0 siblings, 1 reply; 32+ messages in thread
From: Bryan O'Sullivan @ 2006-01-11 22:39 UTC (permalink / raw)
  To: akpm; +Cc: linux-kernel, hch, ak

[-- Attachment #1: Type: text/plain, Size: 722 bytes --]

After yet more review comments from several people, here is a reworked
set of 32-bit MMIO copy patches.  This may even be the final set.

These define the generic __raw_memcpy_toio32 as a weak symbol, which
arches are free to override.  We provide a specialised implementation
for x86_64.

These patches should apply cleanly against current -git, and have been
tested on i386 and x86_64.

The patch series is as follows:

raw_memcpy_io.patch
  Introduce the generic MMIO 32-bit copy routine.

x86_64-memcpy32.patch
  Add memcpy32 routine to x86_64.

arch-specific-raw_memcpy_io.patch
  Get each arch to use generic memcpy_io code, except x86_64, which
  uses memcpy32.

Signed-off-by: Bryan O'Sullivan <bos@pathscale.com>

^ permalink raw reply	[flat|nested] 32+ messages in thread
[parent not found: <5s6p8-1O3-29@gated-at.bofh.it>]

end of thread, other threads:[~2006-01-15 15:28 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-06 20:26 [PATCH 0 of 3] 32-bit MMIO copy routine Bryan O'Sullivan
2006-01-06 20:26 ` [PATCH 1 of 3] Introduce __raw_memcpy_toio32 Bryan O'Sullivan
2006-01-10  9:18   ` Andrew Morton
2006-01-10 14:55     ` Roland Dreier
2006-01-10 16:07       ` Bryan O'Sullivan
2006-01-10 16:56         ` [PATCH] [RFC] Generic 32-bit MMIO copy, out of line Bryan O'Sullivan
2006-01-10 17:07         ` [PATCH 1 of 3] Introduce __raw_memcpy_toio32 Christoph Hellwig
2006-01-10 17:13           ` Bryan O'Sullivan
2006-01-10 17:49           ` Bryan O'Sullivan
2006-01-10 17:51             ` Christoph Hellwig
2006-01-10 17:55               ` Bryan O'Sullivan
2006-01-10 22:05                 ` Andrew Morton
2006-01-10 22:29                   ` Bryan O'Sullivan
2006-01-10 23:32                     ` Andrew Morton
2006-01-11 17:20                       ` Bryan O'Sullivan
2006-01-11 17:22                         ` Sam Ravnborg
2006-01-11 17:30                           ` Andrew Morton
2006-01-11 17:43                             ` Bryan O'Sullivan
2006-01-11 18:49                               ` Roland Dreier
2006-01-11 18:57                                 ` Bryan O'Sullivan
2006-01-11 19:01                                   ` Roland Dreier
2006-01-11 19:08                                     ` Bryan O'Sullivan
2006-01-13 15:19                       ` Adrian Bunk
2006-01-10 18:02               ` Randy.Dunlap
2006-01-10 20:04         ` Sam Ravnborg
2006-01-10 15:59     ` Bryan O'Sullivan
2006-01-06 20:26 ` [PATCH 2 of 3] memcpy32 for x86_64 Bryan O'Sullivan
2006-01-06 20:26 ` [PATCH 3 of 3] Add __raw_memcpy_toio32 to each arch Bryan O'Sullivan
2006-01-10 19:53 [PATCH 0 of 3] 32-bit MMIO copy routines, reworked Bryan O'Sullivan
2006-01-10 19:53 ` [PATCH 1 of 3] Introduce __raw_memcpy_toio32 Bryan O'Sullivan
2006-01-11 22:39 [PATCH 0 of 3] MMIO 32-bit copy routine, the final frontier Bryan O'Sullivan
2006-01-11 22:39 ` [PATCH 1 of 3] Introduce __raw_memcpy_toio32 Bryan O'Sullivan
2006-01-11 23:43   ` Andrew Morton
     [not found] <5s6p8-1O3-29@gated-at.bofh.it>
     [not found] ` <5s6p8-1O3-27@gated-at.bofh.it>
     [not found]   ` <5tnZx-1lb-17@gated-at.bofh.it>
     [not found]     ` <5tt8U-xV-5@gated-at.bofh.it>
     [not found]       ` <5tueu-2mb-9@gated-at.bofh.it>
     [not found]         ` <5tvaH-3MA-55@gated-at.bofh.it>
     [not found]           ` <5tvX6-4MO-13@gated-at.bofh.it>
     [not found]             ` <5tvX6-4MO-11@gated-at.bofh.it>
     [not found]               ` <5tvXa-4MO-23@gated-at.bofh.it>
     [not found]                 ` <5tzQR-2zH-11@gated-at.bofh.it>
2006-01-15 15:33                   ` Bodo Eggert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).