public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: Jes Sorensen <jes@wildopensource.com>
To: linux-ia64@vger.kernel.org
Subject: Re: [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces.
Date: Fri, 16 May 2003 21:02:36 +0000	[thread overview]
Message-ID: <marc-linux-ia64-105590723705911@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590723705823@msgid-missing>

>>>>> "David" = David S Miller <davem@redhat.com> writes:

David> Anyways, now that I understand the problem, merely adding the
David> consistent_dma_mask attribute to the device struct will allow
David> drivers to indicate this capability just fine.  The driver
David> goes:

David> 	if (pci_set_consistent_dma_mask(pdev, ~(u64)0)) goto
David> probe_error;

David> and then the platform pci_alloc_consistent() can do whatever is
David> appropriate.

Hi Dave,

How does this patch look to you? It adds the generic code for setting
the mask, it will then be up to Colin to fix the SGI SN2 specific code
to honor it.

I also added a patch to the tg3 driver to set the mask as it seems to
work just dandy with 64 bit consistent addresses.

Tested on ia64, but I see no reason why it should fail elsewhere.

Cheers,
Jes

diff -urN -X /home/jes/exclude-linux linux-2.5.69-030509-vanilla/drivers/net/tg3.c linux-2.5.69-pci/drivers/net/tg3.c
--- linux-2.5.69-030509-vanilla/drivers/net/tg3.c	Sun May  4 19:53:31 2003
+++ linux-2.5.69-pci/drivers/net/tg3.c	Fri May 16 15:42:55 2003
@@ -6743,6 +6743,12 @@
 	/* Configure DMA attributes. */
 	if (!pci_set_dma_mask(pdev, (u64) 0xffffffffffffffff)) {
 		pci_using_dac = 1;
+		if (pci_set_consistent_dma_mask(pdev,
+						(u64) 0xffffffffffffffff)) {
+			printk(KERN_ERR PFX "Unable to obtain 64 bit DMA "
+			       "for consistent allocations\n");
+			goto err_out_free_res;
+		}
 	} else {
 		err = pci_set_dma_mask(pdev, (u64) 0xffffffff);
 		if (err) {
diff -urN -X /home/jes/exclude-linux linux-2.5.69-030509-vanilla/drivers/pci/pci.c linux-2.5.69-pci/drivers/pci/pci.c
--- linux-2.5.69-030509-vanilla/drivers/pci/pci.c	Sun May  4 19:53:08 2003
+++ linux-2.5.69-pci/drivers/pci/pci.c	Fri May 16 15:43:44 2003
@@ -701,6 +701,17 @@
 	return 0;
 }
 
+int
+pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
+{
+	if (!pci_dma_supported(dev, mask))
+		return -EIO;
+
+	dev->consistent_dma_mask = mask;
+
+	return 0;
+}
+
 static int __devinit pci_init(void)
 {
 	struct pci_dev *dev;
@@ -751,6 +762,7 @@
 EXPORT_SYMBOL(pci_clear_mwi);
 EXPORT_SYMBOL(pci_set_dma_mask);
 EXPORT_SYMBOL(pci_dac_set_dma_mask);
+EXPORT_SYMBOL(pci_set_consistent_dma_mask);
 EXPORT_SYMBOL(pci_assign_resource);
 EXPORT_SYMBOL(pci_find_parent_resource);
 
diff -urN -X /home/jes/exclude-linux linux-2.5.69-030509-vanilla/drivers/pci/probe.c linux-2.5.69-pci/drivers/pci/probe.c
--- linux-2.5.69-030509-vanilla/drivers/pci/probe.c	Sun May  4 19:53:35 2003
+++ linux-2.5.69-pci/drivers/pci/probe.c	Fri May 16 15:44:40 2003
@@ -502,6 +502,7 @@
 	/* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
 	   set this higher, assuming the system even supports it.  */
 	dev->dma_mask = 0xffffffff;
+	dev->consistent_dma_mask = 0xffffffff;
 	if (pci_setup_device(dev) < 0) {
 		kfree(dev);
 		return NULL;
diff -urN -X /home/jes/exclude-linux linux-2.5.69-030509-vanilla/include/linux/pci.h linux-2.5.69-pci/include/linux/pci.h
--- linux-2.5.69-030509-vanilla/include/linux/pci.h	Sun May  4 19:53:14 2003
+++ linux-2.5.69-pci/include/linux/pci.h	Fri May 16 15:42:55 2003
@@ -390,6 +390,11 @@
 					   or supports 64-bit transfers.  */
 	struct list_head pools;		/* pci_pools tied to this device */
 
+	u64		consistent_dma_mask;/* Like dma_mask, but for
+					       pci_alloc_consistent mappings as
+					       not all hardware supports
+					       64 bit addresses for consistent
+					       allocations such descriptors. */
 	u32             current_state;  /* Current operating state. In ACPI-speak,
 					   this is D0-D3, D0 being fully functional,
 					   and D3 being off. */
@@ -614,6 +619,7 @@
 void pci_clear_mwi(struct pci_dev *dev);
 int pci_set_dma_mask(struct pci_dev *dev, u64 mask);
 int pci_dac_set_dma_mask(struct pci_dev *dev, u64 mask);
+int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask);
 int pci_assign_resource(struct pci_dev *dev, int i);
 
 /* Power management related routines */


  parent reply	other threads:[~2003-05-16 21:02 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-15 14:44 [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Colin Ngam
2003-05-15 14:44 ` James Bottomley
2003-05-15 15:05 ` Colin Ngam
2003-05-15 15:06 ` David Mosberger
2003-05-15 15:12 ` James Bottomley
2003-05-15 15:47 ` David Mosberger
2003-05-15 15:48 ` David Mosberger
2003-05-15 15:48 ` Colin Ngam
2003-05-15 15:50 ` Colin Ngam
2003-05-15 19:06 ` Grant Grundler
2003-05-15 19:14 ` David Mosberger
2003-05-15 19:16 ` Grant Grundler
2003-05-15 19:29 ` Grant Grundler
2003-05-15 20:07 ` David S. Miller
2003-05-15 20:15 ` David S. Miller
2003-05-15 20:19 ` David S. Miller
2003-05-15 20:24 ` Jesse Barnes
2003-05-15 21:17 ` Grant Grundler
2003-05-15 21:29 ` Matthew Wilcox
2003-05-15 22:14 ` Colin Ngam
2003-05-15 22:44 ` Colin Ngam
2003-05-15 22:47 ` James Bottomley
2003-05-15 23:24 ` James Bottomley
2003-05-15 23:25 ` Colin Ngam
2003-05-15 23:27 ` David S. Miller
2003-05-15 23:32 ` Colin Ngam
2003-05-15 23:39 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent David S. Miller
2003-05-15 23:40 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Colin Ngam
2003-05-15 23:40 ` David S. Miller
2003-05-15 23:41 ` David S. Miller
2003-05-15 23:42 ` David S. Miller
2003-05-15 23:45 ` Colin Ngam
2003-05-15 23:46 ` David S. Miller
2003-05-15 23:51 ` Colin Ngam
2003-05-15 23:53 ` David S. Miller
2003-05-15 23:57 ` Colin Ngam
2003-05-16  0:03 ` David S. Miller
2003-05-16  0:06 ` David S. Miller
2003-05-16  0:11 ` David S. Miller
2003-05-16  0:17 ` David S. Miller
2003-05-16  0:29 ` Jesse Barnes
2003-05-16  0:31 ` James Bottomley
2003-05-16  0:31 ` David S. Miller
2003-05-16  0:32 ` Colin Ngam
2003-05-16  0:32 ` David S. Miller
2003-05-16  0:36 ` Colin Ngam
2003-05-16  0:37 ` Jesse Barnes
2003-05-16  0:48 ` Colin Ngam
2003-05-16  0:59 ` David S. Miller
2003-05-16  1:20 ` Grant Grundler
2003-05-16  1:23 ` David S. Miller
2003-05-16  1:51 ` Grant Grundler
2003-05-16  1:59 ` Colin Ngam
2003-05-16  2:05 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent James Bottomley
2003-05-16  2:08 ` David S. Miller
2003-05-16  2:26 ` James Bottomley
2003-05-16  2:32 ` David S. Miller
2003-05-16  6:47 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Jeremy Higdon
2003-05-16  6:55 ` David S. Miller
2003-05-16  7:15 ` Jeremy Higdon
2003-05-16  7:35 ` Jeremy Higdon
2003-05-16  7:48 ` Jeremy Higdon
2003-05-16  7:53 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent David S. Miller
2003-05-16  8:00 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Jeremy Higdon
2003-05-16 17:36 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent James Bottomley
2003-05-16 17:59 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Grant Grundler
2003-05-16 18:13 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent James Bottomley
2003-05-16 18:18 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Russell King
2003-05-16 18:23 ` Grant Grundler
2003-05-16 18:29 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent James Bottomley
2003-05-16 21:02 ` Jes Sorensen [this message]
2003-05-16 21:06 ` David S. Miller
2003-05-16 22:39 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Jeremy Higdon
2003-05-16 23:40 ` Jeremy Higdon
2003-05-16 23:53 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent David S. Miller
2003-05-17  4:26 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Grant Grundler
2003-05-17  4:34 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent David S. Miller
2003-05-17 16:44 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Jes Sorensen
2003-05-17 17:06 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Colin Ngam
2003-05-17 18:36 ` James Bottomley
2003-05-17 21:09 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces Russell King
2003-05-17 22:17 ` [Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent David S. Miller
2003-05-18 15:53 ` James Bottomley

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=marc-linux-ia64-105590723705911@msgid-missing \
    --to=jes@wildopensource.com \
    --cc=linux-ia64@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox