mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Tom Tucker <tom@opengridcomputing.com>
To: Andrew Morton <akpm@osdl.org>
Cc: Roland Dreier <rdreier@cisco.com>, Adrian Bunk <bunk@stusta.de>,
	Steve Wise <swise@opengridcomputing.com>,
	Roland Dreier <rolandd@cisco.com>,
	linux-kernel@vger.kernel.org, openib-general@openib.org,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: 2.6.18-rc5-mm1: drivers/infiniband/hw/amso1100/c2.c compile error
Date: Fri, 01 Sep 2006 15:20:59 -0500	[thread overview]
Message-ID: <1157142059.22301.74.camel@trinity.ogc.int> (raw)
In-Reply-To: <20060901130444.48f19457.akpm@osdl.org>


So to make sure I understand all this...

The purpose of these services is to provide a platform independent API
for reading and writing 16, 32 and 64b values to MMIO devices. The
rationale for needing these services is that there is currently no
platform independent API for efficiently reading and writing these
values to BE devices on MMIO PCI devices. Examples are the mthca and
amso1100 devices.

Two classes of service are needed, atomic services that are interrupt
safe and services that either don't require atomicity or are called with
a suitable lock already held.

Does the API look something like this?

void mmio_wr_be16(__be16 val, void __iomem *addr);
void mmio_wr_be32(__be32 val, void __iomem *addr);
void mmio_wr_be64(__be64 val, void __iomem *addr);

void mmio_atomic_wr_be16(__be16 val, void __iomem *addr);
void mmio_atomic_wr_be32(__be32 val, void __iomem *addr);
void mmio_atomic_wr_be64(__be64 val, void __iomem *addr);

__be16 mmio_rd_be16(void __iomem *addr);
__be32 mmio_rd_be32(void __iomem *addr);
__be64 mmio_rd_be64(void __iomem *addr);

__be16 mmio_atomic_wr_be16(void __iomem *addr);
__be32 mmio_atomic_wr_be32(void __iomem *addr);
__be64 mmio_atomic_wr_be64(void __iomem *addr);


On Fri, 2006-09-01 at 13:04 -0700, Andrew Morton wrote:
> On Fri, 01 Sep 2006 12:53:47 -0700
> Roland Dreier <rdreier@cisco.com> wrote:
> 
> >     Roland> My understanding is that __raw_writeq() is like writeq()
> >     Roland> except not strongly ordered and without the byte-swap on
> >     Roland> big-endian architectures.  The __raw_writeX() variants are
> >     Roland> convenient to avoid having to write inefficient code like
> >     Roland> writel(swab32(foo), ...) when talking to a PCI device that
> >     Roland> wants big-endian data.  Without the raw variant, you end
> >     Roland> up with a double swap on big-endian architectures.
> > 
> > Oh, I left one other thing out: writeq() and __raw_writeq() shold be
> > atomic in the sense that no other transactions should be able to get
> > onto the IO bus in the middle -- so implementing writeq() as two
> > writel()s in a row is not allowed
> > 
> >     Andrew> OK.  Can we please stop hacking around this in drivers and
> > 
> >     Andrew> a) work out what it's supposed to do
> > 
> >     Andrew> b) document that (Documentation/DocBook/deviceiobook.tmpl
> >     Andrew> or code comment or whatever)
> > 
> >     Andrew> c) tell arch maintainers?
> > 
> > Yes, I agree that's a good plan, especially the documentation part.
> > However I would argue that what's in drivers/infiniband/hw/mthca/mthca_doorbell.h 
> > is legitimate: the driver uses __raw_writeq() when it exists and uses
> > two __raw_writel()s properly serialized with a device-specific lock to
> > get exactly the atomicity it needs on 32-bit archs.
> 
> No, driver-specific workarounds are not legitimate, sorry.
> 
> The driver should simply fail to compile on architectures which do not
> implement __raw_writeq().
> 
> We can speed up the process by sending helpful emails to architecture
> maintainers, but they'll notice either way.
> 
> Let's fix it once, and in the correct place.
> 
> > It's an open question what drivers that don't actually need atomicity
> > but just want a convenient way to write 64 bits at time should do.
> 
> Well yeah.  We should sort out the design issues before implementing
> things ;)
> 


-- 
VGER BF report: H 0

  reply	other threads:[~2006-09-01 20:21 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-01  8:58 2.6.18-rc5-mm1 Andrew Morton
2006-09-01  9:53 ` 2.6.18-rc5-mm1 Manuel Lauss
2006-09-01 10:44 ` 2.6.18-rc5-mm1 Grant Wilson
2006-09-01 13:50   ` [-mm patch] drivers/md/Kconfig: fix BLOCK dependency Adrian Bunk
2006-09-01 14:15   ` David Howells
2006-09-01 14:26     ` Jens Axboe
2006-09-01 16:00 ` 2.6.18-rc5-mm1: drivers/infiniband/hw/amso1100/c2.c compile error Adrian Bunk
2006-09-01 17:13   ` Andrew Morton
2006-09-01 17:34     ` Roland Dreier
2006-09-01 18:23       ` Andrew Morton
2006-09-01 19:53         ` Roland Dreier
2006-09-01 20:04           ` Andrew Morton
2006-09-01 20:20             ` Tom Tucker [this message]
2006-09-01 20:43             ` Russell King
2006-09-01 20:54               ` Roland Dreier
2006-09-01 21:01                 ` [openib-general] " Bryan O'Sullivan
2006-09-01 20:59               ` Andrew Morton
2006-09-01 21:05                 ` Roland Dreier
2006-09-01 21:26                   ` Andrew Morton
2006-09-01 22:42                     ` Roland Dreier
2006-09-01 20:51             ` Roland Dreier
2006-09-01 21:03               ` Andrew Morton
2006-09-01 20:45           ` [openib-general] " Bryan O'Sullivan
2006-09-01 20:59             ` Roland Dreier
2006-09-01 21:03               ` Bryan O'Sullivan
2006-09-01 16:40 ` 2.6.18-rc5-mm1 Maciej Rutecki
2006-09-05 16:16   ` 2.6.18-rc5-mm1 Bjorn Helgaas
2006-09-06 16:55     ` 2.6.18-rc5-mm1 Maciej Rutecki
2006-09-07  3:08       ` 2.6.18-rc5-mm1 Andrew Morton
2006-09-07 17:33         ` 2.6.18-rc5-mm1 keith mannthey
2006-09-01 19:58 ` [-mm patch] fs/reiser4/: possible cleanups Adrian Bunk
2006-09-01 23:13 ` 2.6.18-rc5-mm1 (IDE resume regression) Rafael J. Wysocki
2006-09-02  0:08   ` Andrew Morton
2006-09-02  1:00 ` 2.6.18-rc5-mm1 Matthias Hentges
2006-09-02  1:30   ` 2.6.18-rc5-mm1 Andrew Morton
     [not found]     ` <44F93EB3.8050500@goop.org>
2006-09-02  8:37       ` 2.6.18-rc5-mm1 Jeremy Fitzhardinge
2006-09-02  8:44         ` 2.6.18-rc5-mm1 Greg KH
2006-09-02  8:47           ` 2.6.18-rc5-mm1 Jeremy Fitzhardinge
2006-09-02  8:52             ` 2.6.18-rc5-mm1 Greg KH
2006-09-02  9:36               ` 2.6.18-rc5-mm1 Jeremy Fitzhardinge
2006-09-02  9:38                 ` 2.6.18-rc5-mm1 Jeff Garzik
2006-09-02  9:47                   ` 2.6.18-rc5-mm1 Jeremy Fitzhardinge
2006-09-02  9:56                   ` 2.6.18-rc5-mm1 Jeremy Fitzhardinge
2006-09-09 23:47           ` 2.6.18-rc5-mm1 Jeremy Fitzhardinge
2006-09-10 16:24             ` 2.6.18-rc5-mm1 Matthias Hentges
2006-09-02  1:06 ` 2.6.18-rc5-mm1 Grant Coady
2006-09-02  1:12   ` 2.6.18-rc5-mm1 Dmitry Torokhov
2006-09-02  1:33     ` 2.6.18-rc5-mm1 Dmitry Torokhov
2006-09-02  2:10     ` 2.6.18-rc5-mm1 Grant Coady
2006-09-02  1:39   ` 2.6.18-rc5-mm1 Andrew Morton
2006-09-02  3:51     ` 2.6.18-rc5-mm1 Grant Coady
2006-09-02 20:20       ` 2.6.18-rc5-mm1 Grant Coady
2006-09-02 20:38         ` "VGER BF report:.." ? Matti Aarnio
2006-09-03 15:06           ` Jan Engelhardt
2006-09-03 19:59             ` Grant Coady
2006-09-02  9:05 ` 2.6.18-rc5-mm1 Philippe Gramoullé
2006-09-02 11:40   ` 2.6.18-rc5-mm1 Stefan Richter
2006-09-02 11:51     ` 2.6.18-rc5-mm1 Philippe Gramoullé
2006-09-03  9:09 ` [2.6.18-rc5-mm1 ACPI] Unknown exception code: 0xFFFFFFEA Mike Galbraith
2006-09-05 16:18   ` Bjorn Helgaas
2006-09-03 17:25 ` 2.6.18-rc5-mm1: sysfs_init() related compile error Adrian Bunk
2006-09-03 22:17 ` 2.6.18-rc5-mm1: MMU=n " Adrian Bunk
2006-09-04  7:44   ` Peter Zijlstra
2006-09-04 15:44     ` Adrian Bunk
2006-09-03 23:34 ` Lost DVD-RW [Was Re: 2.6.18-rc5-mm1] J.A. Magallón
2006-09-04  1:12   ` Andrew Morton
2006-09-04  2:42     ` Tejun Heo
2006-09-04 22:26       ` J.A. Magallón
2006-09-07  9:34         ` Tejun Heo
2006-09-07 11:13           ` J.A. Magallón
2006-09-07 11:32             ` [PATCH libata-dev#upstream-fixes] libata: ignore CFA signature while sanity-checking an ATAPI device Tejun Heo
2006-09-07 20:27               ` Andrew Morton
2006-09-07 21:03                 ` Jeff Garzik
2006-09-08  7:56                   ` Tejun Heo
2006-09-09 14:46           ` Lost DVD-RW [Was Re: 2.6.18-rc5-mm1] Alan Cox
2006-09-04 11:41 ` 2.6.18-rc5-mm1: is_init() parisc compile error Adrian Bunk
2006-09-04 13:48   ` [parisc-linux] " Matthew Wilcox
2006-09-04 18:24     ` [PATCH] Fix conflict with the is_init identifier on parisc Eric W. Biederman
2006-09-04 18:41       ` Adrian Bunk
2006-09-04 19:18       ` Andrew Morton
2006-09-04 17:03 ` [-mm patch] drivers/infiniband/hw/amso1100/: possible cleanups Adrian Bunk
2006-09-04 17:03 ` [-mm patch] make fs/lockd/host.c:nlm_lookup_host() static Adrian Bunk
2006-09-04 17:04 ` 2.6.18-rc5-mm1: ARCH_DISCONTIGMEM_ENABLE=y, SMP=n compile error Adrian Bunk
2006-09-04 19:04   ` Andrew Morton
2006-09-04 19:24     ` Adrian Bunk
2006-09-04 17:04 ` [-mm patch] fix kernel_execve() related compile errors Adrian Bunk
2006-09-04 17:04 ` [-mm patch] lib/ioremap.c must #include <linux/mm.h> Adrian Bunk
2006-09-04 18:41 ` [-mm patch] mm/memory_hotplug.c must #include <linux/cpuset.h> Adrian Bunk
2006-09-04 22:17 ` [-mm patch] arch/m68knommu/kernel/sys_m68k.c must #include <asm/unistd.h> Adrian Bunk
2006-09-05 13:03 ` lockdep oddity Heiko Carstens
2006-09-05 18:12   ` Ingo Molnar
2006-09-05 18:57     ` Hua Zhong
2006-09-05 18:52       ` Ingo Molnar
2006-09-05 19:08     ` Ingo Molnar
2006-09-05 19:37       ` Ingo Molnar
2006-09-06  6:54         ` Heiko Carstens
2006-09-06 10:05           ` Ingo Molnar
2006-09-06  7:20     ` Heiko Carstens
2006-09-06  7:47       ` Andrew Morton
2006-09-06  8:01         ` Heiko Carstens
2006-09-06  8:23           ` Hua Zhong
2006-09-06  8:40             ` Ingo Molnar
2006-09-06 14:19               ` Daniel Walker
2006-09-06 14:29                 ` Heiko Carstens
2006-09-06 14:34                   ` Daniel Walker
2006-09-05 20:07   ` Daniel Walker
2006-09-06  7:18     ` Heiko Carstens
2006-09-06 11:58     ` Heiko Carstens
2006-09-05 13:25 ` 2.6.18-rc5-mm1: {dis,en}able_irq_lockdep_irqrestore compile error Adrian Bunk
2006-09-05 15:21 ` [PATCH] FRV: Fix " David Howells
2006-09-06 12:50   ` Ingo Molnar
2006-09-05 15:27 ` [PATCH] NOMMU: Move the fallback arch_vma_name() to a sensible place David Howells
2006-09-05 15:29 ` [PATCH] NOMMU: Provide page_mkclean() for NOMMU David Howells
2006-09-05 15:31 ` [PATCH] NOMMU: Make lib/ioremap.c conditional David Howells
2006-09-05 15:35 ` [PATCH] FRV: do_gettimeofday() should no longer use tickadj David Howells
2006-09-06  1:46   ` john stultz
2006-09-06  9:27   ` David Howells
2006-09-06  9:43     ` Ingo Molnar
2006-09-06 12:30     ` David Howells
2006-09-06 12:56       ` Ingo Molnar
2006-09-06 14:46       ` David Howells
2006-09-06 23:01         ` Benjamin Herrenschmidt
2006-09-07  9:55         ` David Howells
2006-09-07 10:26           ` Ingo Molnar
2006-09-07 13:34           ` David Howells
2006-09-07 22:53           ` Benjamin Herrenschmidt
2006-09-08 10:25           ` David Howells
2006-09-08 11:05             ` Benjamin Herrenschmidt
2006-09-08 12:24             ` David Howells
2006-09-08 12:29           ` David Howells
2006-09-11  4:06             ` Benjamin Herrenschmidt
2006-09-09  5:46         ` Ingo Molnar
2006-09-11 10:46         ` David Howells
2006-09-05 16:00 ` 2.6.18-rc5-mm1 dependency on curses devel still there Steve Fox
2006-09-06 23:06 ` [-mm patch] ATA_JMICRON: remove the superfluous ATA dependency Adrian Bunk
2006-09-06 23:07 ` [-mm patch] ACPI_SONY shouldn't default m Adrian Bunk
2006-09-07  3:30   ` Andrew Morton
2006-09-07  4:41     ` Randy.Dunlap

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=1157142059.22301.74.camel@trinity.ogc.int \
    --to=tom@opengridcomputing.com \
    --cc=akpm@osdl.org \
    --cc=bunk@stusta.de \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=openib-general@openib.org \
    --cc=rdreier@cisco.com \
    --cc=rolandd@cisco.com \
    --cc=swise@opengridcomputing.com \
    /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

Powered by JetHome