All of lore.kernel.org
 help / color / mirror / Atom feed
From: akepner@sgi.com
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Tony Luck <tony.luck@intel.com>,
	Grant Grundler <grundler@parisc-linux.org>,
	Jesse Barnes <jbarnes@virtuousgeek.org>,
	Jes Sorensen <jes@sgi.com>,
	Randy Dunlap <randy.dunlap@oracle.com>,
	Roland Dreier <rdreier@cisco.com>,
	James Bottomley <James.Bottomley@steeleye.com>,
	David Miller <davem@davemloft.net>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] dma: add dma_flags_set/get_*() interfaces
Date: Wed, 17 Oct 2007 09:03:27 -0700	[thread overview]
Message-ID: <20071017160327.GP5601@sgi.com> (raw)
In-Reply-To: <20071016202728.81450e25.akpm@linux-foundation.org>


[reply to the series of three mails below]

On Tue, Oct 16, 2007 at 08:27:28PM -0700, Andrew Morton wrote:
> On Tue, 16 Oct 2007 18:41:28 -0700 akepner@sgi.com wrote:
> 
> > +#define DMA_BARRIER_ATTR	0x1
> > +#ifndef ARCH_USES_DMA_ATTRS
> > +static inline int dma_flags_set_attr(u32 attr, enum dma_data_direction dir) 
> > +{
> > +	return dir;
> > +}
> 
> This function takes an `enum dma_data_direction' as its second arg, but your
> ia64 implementation takes an 'int'.
> 

This is because the dma_data_direction enum type isn't available 
at the point the ia64 implementation is defined. 


> > .....
> >  dma_addr_t sn_dma_map_single(struct device *dev, void *cpu_addr, size_t size,
> > -                          int direction)
> > +                          int flags)
> >  {
> >       dma_addr_t dma_addr;
> >       unsigned long phys_addr;
> >       struct pci_dev *pdev = to_pci_dev(dev);
> >       struct sn_pcibus_provider *provider = SN_PCIDEV_BUSPROVIDER(pdev);
> > +     int dmabarrier = dma_flags_get_attr(flags) & DMA_BARRIER_ATTR;
> 
> So we take an `enum data_direction' and then wedge it into a word alongside
> some extra flags?
> 
> Can we do something nicer than that?

Changing the type of the last argument to dma_map_* functions 
to be a bitmask? Or adding an additional argument? (Both of 
which you mention below.)

> > .....

> > +DMA_BARRIER_ATTR would be set when the memory region is mapped for DMA,
> > +e.g.:
> > +
> > +     int count;
> > +     int flags = dma_flags_set_attr(DMA_BARRIER_ATTR, DMA_BIDIRECTIONAL);
> > +     ....
> > +     count = dma_map_sg(dev, sglist, nents, flags);
> > +
> 
> Isn't this rather a kludge?

I prefer the term "hack".

> 
> What would be the cost of doing this cleanly and either redefining
> dma_data_direction to be a field-of-bits or just leave dma_data_direction
> alone (it is quite unrelated to this work, isn't it?) and adding new
> fields/arguments to manage this new functionality?

It'd be significantly more work to do change or add arguments 
to the dma_map_* functions. But if that's what I need to do to 
get this accepted, I'll back up and have another go at it.

-- 
Arthur


  reply	other threads:[~2007-10-17 16:06 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-17  1:41 [PATCH 1/3] dma: add dma_flags_set/get_*() interfaces akepner
2007-10-17  3:27 ` Andrew Morton
2007-10-17 16:03   ` akepner [this message]
2007-10-17 20:10     ` Andrew Morton

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=20071017160327.GP5601@sgi.com \
    --to=akepner@sgi.com \
    --cc=James.Bottomley@steeleye.com \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=grundler@parisc-linux.org \
    --cc=jbarnes@virtuousgeek.org \
    --cc=jes@sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=randy.dunlap@oracle.com \
    --cc=rdreier@cisco.com \
    --cc=tony.luck@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.