diff mbox

[1/2] ide: remove deprecated use of pci api

Message ID 1428579988-10167-2-git-send-email-lambert.quentin@gmail.com
State Superseded
Delegated to: David Miller
Headers show

Commit Message

Quentin Lambert April 9, 2015, 11:46 a.m. UTC
Replace occurences of the pci api by appropriate call to the dma api.

A simplified version of the semantic patch that finds this problem is as
follows: (http://coccinelle.lip6.fr)

@deprecated@
idexpression id;
position p;
@@

(
  pci_dma_supported@p ( id, ...)
|
  pci_alloc_consistent@p ( id, ...)
)

@bad1@
idexpression id;
position deprecated.p;
@@
...when != &id->dev
   when != pci_get_drvdata ( id )
   when != pci_enable_device ( id )
(
  pci_dma_supported@p ( id, ...)
|
  pci_alloc_consistent@p ( id, ...)
)

@depends on !bad1@
idexpression id;
expression direction;
position deprecated.p;
@@

(
- pci_dma_supported@p ( id,
+ dma_supported ( &id->dev,
...
+ , GFP_ATOMIC
  )
|
- pci_alloc_consistent@p ( id,
+ dma_alloc_coherent ( &id->dev,
...
+ , GFP_ATOMIC
  )
)

Signed-off-by: Quentin Lambert <lambert.quentin@gmail.com>
---
 drivers/ide/cs5520.c    |    2 +-
 drivers/ide/pmac.c      |    5 ++---
 drivers/ide/setup-pci.c |    2 +-
 drivers/ide/sgiioc4.c   |    4 ++--
 4 files changed, 6 insertions(+), 7 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Dan Carpenter April 9, 2015, 12:35 p.m. UTC | #1
Why are these GFP_ATOMIC allocations?

regards,
dan carpenter

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alan Cox April 13, 2015, 12:25 p.m. UTC | #2
On Thu,  9 Apr 2015 13:46:27 +0200
Quentin Lambert <lambert.quentin@gmail.com> wrote:

> Replace occurences of the pci api by appropriate call to the dma api.
> 

Drivers/ide is obsolete. It probably ought to go at this point but even
so it exists solely in case of a problem or compatibility issue with
drivers/ata. Cleaning it up without testing all the drivers makes no
sense IMHO. Cleaning it up and testing them doesn't make much sense
either.

Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller April 13, 2015, 5:08 p.m. UTC | #3
From: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
Date: Mon, 13 Apr 2015 13:25:30 +0100

> On Thu,  9 Apr 2015 13:46:27 +0200
> Quentin Lambert <lambert.quentin@gmail.com> wrote:
> 
>> Replace occurences of the pci api by appropriate call to the dma api.
>> 
> 
> Drivers/ide is obsolete. It probably ought to go at this point but even
> so it exists solely in case of a problem or compatibility issue with
> drivers/ata. Cleaning it up without testing all the drivers makes no
> sense IMHO. Cleaning it up and testing them doesn't make much sense
> either.

It's a straightforward transformation, that actually evaluates to what
the definitions of the deprecated pci DMA interfaces are defined to.

So I intend to apply this patch, especially for the sake of allowing
these PCI DMA interfaces to be removed.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dan Carpenter April 13, 2015, 5:23 p.m. UTC | #4
On Mon, Apr 13, 2015 at 01:08:13PM -0400, David Miller wrote:
> From: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
> Date: Mon, 13 Apr 2015 13:25:30 +0100
> 
> > On Thu,  9 Apr 2015 13:46:27 +0200
> > Quentin Lambert <lambert.quentin@gmail.com> wrote:
> > 
> >> Replace occurences of the pci api by appropriate call to the dma api.
> >> 
> > 
> > Drivers/ide is obsolete. It probably ought to go at this point but even
> > so it exists solely in case of a problem or compatibility issue with
> > drivers/ata. Cleaning it up without testing all the drivers makes no
> > sense IMHO. Cleaning it up and testing them doesn't make much sense
> > either.
> 
> It's a straightforward transformation, that actually evaluates to what
> the definitions of the deprecated pci DMA interfaces are defined to.

Almost, except that it uses GFP_KERNEL instead of GFP_DMA.  But I
reviewed it and I think it's fine. Quentin sent a GFP_ATOMIC patch as
the first version and I asked him to redo it.  Maybe I shouldn't have
done that...

regards,
dan carpenter

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller April 13, 2015, 5:39 p.m. UTC | #5
From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Mon, 13 Apr 2015 20:23:24 +0300

> On Mon, Apr 13, 2015 at 01:08:13PM -0400, David Miller wrote:
>> From: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
>> Date: Mon, 13 Apr 2015 13:25:30 +0100
>> 
>> > On Thu,  9 Apr 2015 13:46:27 +0200
>> > Quentin Lambert <lambert.quentin@gmail.com> wrote:
>> > 
>> >> Replace occurences of the pci api by appropriate call to the dma api.
>> >> 
>> > 
>> > Drivers/ide is obsolete. It probably ought to go at this point but even
>> > so it exists solely in case of a problem or compatibility issue with
>> > drivers/ata. Cleaning it up without testing all the drivers makes no
>> > sense IMHO. Cleaning it up and testing them doesn't make much sense
>> > either.
>> 
>> It's a straightforward transformation, that actually evaluates to what
>> the definitions of the deprecated pci DMA interfaces are defined to.
> 
> Almost, except that it uses GFP_KERNEL instead of GFP_DMA.  But I
> reviewed it and I think it's fine. Quentin sent a GFP_ATOMIC patch as
> the first version and I asked him to redo it.  Maybe I shouldn't have
> done that...

No, I'm fine with that part too, don't worry.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- a/drivers/ide/cs5520.c
+++ b/drivers/ide/cs5520.c
@@ -123,7 +123,7 @@  static int cs5520_init_one(struct pci_de
 		return -ENODEV;
 	}
 	pci_set_master(dev);
-	if (pci_set_dma_mask(dev, DMA_BIT_MASK(32))) {
+	if (dma_set_mask(&dev->dev, DMA_BIT_MASK(32))) {
 		printk(KERN_WARNING "%s: No suitable DMA available.\n",
 			d->name);
 		return -ENODEV;
--- a/drivers/ide/pmac.c
+++ b/drivers/ide/pmac.c
@@ -1689,10 +1689,9 @@  static int pmac_ide_init_dma(ide_hwif_t
 	 * The +2 is +1 for the stop command and +1 to allow for
 	 * aligning the start address to a multiple of 16 bytes.
 	 */
-	pmif->dma_table_cpu = pci_alloc_consistent(
-		dev,
+	pmif->dma_table_cpu = dma_alloc_coherent(&dev->dev,
 		(MAX_DCMDS + 2) * sizeof(struct dbdma_cmd),
-		&hwif->dmatable_dma);
+		&hwif->dmatable_dma, GFP_ATOMIC);
 	if (pmif->dma_table_cpu == NULL) {
 		printk(KERN_ERR "%s: unable to allocate DMA command list\n",
 		       hwif->name);
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -209,7 +209,7 @@  static int ide_pci_enable(struct pci_dev
 	 * a DMA mask field to the struct ide_port_info if we need it
 	 * (or let lower level driver set the DMA mask)
 	 */
-	ret = pci_set_dma_mask(dev, DMA_BIT_MASK(32));
+	ret = dma_set_mask(&dev->dev, DMA_BIT_MASK(32));
 	if (ret < 0) {
 		printk(KERN_ERR "%s %s: can't set DMA mask\n",
 			d->name, pci_name(dev));
--- a/drivers/ide/sgiioc4.c
+++ b/drivers/ide/sgiioc4.c
@@ -334,8 +334,8 @@  static int ide_dma_sgiioc4(ide_hwif_t *h
 	if (ide_allocate_dma_engine(hwif))
 		goto dma_pci_alloc_failure;
 
-	pad = pci_alloc_consistent(dev, IOC4_IDE_CACHELINE_SIZE,
-				   (dma_addr_t *)&hwif->extra_base);
+	pad = dma_alloc_coherent(&dev->dev, IOC4_IDE_CACHELINE_SIZE,
+				   (dma_addr_t *)&hwif->extra_base, GFP_ATOMIC);
 	if (pad) {
 		ide_set_hwifdata(hwif, pad);
 		return 0;