All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: linux-kernel@vger.kernel.org
Cc: linux-pci@vger.kernel.org,
	James Bottomley <James.Bottomley@HansenPartnership.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Julia Lawall <julia@diku.dk>
Subject: should struct device.dma_mask still be a pointer?
Date: Tue, 22 Jun 2010 12:52:33 +0200	[thread overview]
Message-ID: <20100622105233.GA4755@pengutronix.de> (raw)

Hello,

IMHO it's strange that struct device.dma_mask is a pointer instead of a
plain u64.  The reason this was done back then is described in
8ab1bc19e974fdebe76c065fe444979c84ba2f74[1]:

	Attached is a patch which moves dma_mask into struct device and cleans up the
	scsi mid-layer to use it (instead of using struct pci_dev).  The advantage to
	doing this is probably most apparent on non-pci bus architectures where
	currently you have to construct a fake pci_dev just so you can get the bounce
	buffers to work correctly.

	The patch tries to perturb the minimum amount of code, so dma_mask in struct
	device is simply a pointer to the one in pci_dev.  However, it will make it
	easy for me now to add generic device to MCA without having to go the fake pci
	route.

As I work on such a non-pci bus architecture it's still ugly that this
is a pointer because I have to allocate extra memory for that.

Is there a reason not to get rid of struct pci_dev.dma_mask and use
struct pci_dev.dev.dma_mask instead?  (Well apart from the needed
effort of course.)

If not, the following would be needed:

	- remove struct pci.dma_mask
	- make struct device.dma_mask an u64 (instead of u64*)
	- substitue var.dma_mask by var.dev.dma_mask for all
	  struct pci_dev var
	- substitue var.dma_mask by &(var.dma_mask) for all
	  struct device var

and note that there are statically initialized struct device (and maybe
struct pci_dev?) that need fixing, too.  (e.g.
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=arch/arm/mach-mx2/devices.c;h=a0aeb8a4adc19ef419a0a045ad3b882131597106;hb=HEAD#l265
)

Additionally this could be done for struct device.dma_parms.

Julia: help!

Best regards
Uwe

[1] as this is pre-2.6.12 it's only available in tglx' histroy tree,
e.g.  http://git.kernel.org/?p=linux/kernel/git/tglx/history.git;a=commitdiff;h=8ab1bc19e974fdebe76c065fe444979c84ba2f74

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

             reply	other threads:[~2010-06-22 10:52 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-22 10:52 Uwe Kleine-König [this message]
2010-06-30 18:07 ` should struct device.dma_mask still be a pointer? Konrad Rzeszutek Wilk
2010-07-01  1:35 ` FUJITA Tomonori
2010-11-02 10:41   ` Uwe Kleine-König
2010-11-02 13:03     ` FUJITA Tomonori
2010-11-02 13:45       ` Uwe Kleine-König
2010-11-02 14:43         ` FUJITA Tomonori

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=20100622105233.GA4755@pengutronix.de \
    --to=u.kleine-koenig@pengutronix.de \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=akpm@linux-foundation.org \
    --cc=julia@diku.dk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    /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.