Re: [PATCH] next-20080218 build failure at pmac_ide_macio_attach ()

2008-02-18 Thread Andreas Schwab
Kamalesh Babulal [EMAIL PROTECTED] writes:

 --- linux-2.6.25-rc1/drivers/ide/ppc/pmac.c   2008-02-18 18:41:48.0 
 +0530
 +++ linux-2.6.25-rc1/drivers/ide/ppc/~pmac.c  2008-02-18 19:20:37.0 
 +0530
 @@ -1091,7 +1091,7 @@ pmac_ide_macio_attach(struct macio_dev *
   int irq, rc;
   hw_regs_t hw;
  
 - pmif = (struct pmac_ide_hwif)kzalloc(sizeof(*pmif), GFP_KERNEL);
 + pmif = (struct pmac_ide_hwif*)kzalloc(sizeof(*pmif), GFP_KERNEL);

Just remove the cast.

Andreas.

-- 
Andreas Schwab, SuSE Labs, [EMAIL PROTECTED]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
And now for something completely different.
-
To unsubscribe from this list: send the line unsubscribe linux-ide in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] next-20080218 build failure at pmac_ide_macio_attach ()

2008-02-18 Thread Bartlomiej Zolnierkiewicz
On Monday 18 February 2008, Kamalesh Babulal wrote:
 Hi,
 
 The next-20080218 kernel build fails on the powerpc(s)
 
 drivers/ide/ppc/pmac.c: In function ‘pmac_ide_macio_attach’:
 drivers/ide/ppc/pmac.c:1094: error: conversion to non-scalar type requested
 drivers/ide/ppc/pmac.c: In function ‘pmac_ide_pci_attach’:
 drivers/ide/ppc/pmac.c:1232: error: conversion to non-scalar type requested
 make[3]: *** [drivers/ide/ppc/pmac.o] Error 1
 make[2]: *** [drivers/ide/ppc] Error 2
 make[1]: *** [drivers/ide] Error 2
 make: *** [drivers] Error 2
 
 I Have tested this patch for build failure only.
 
 Signed-off-by: Kamalesh Babulal [EMAIL PROTECTED]
 ---
 --- linux-2.6.25-rc1/drivers/ide/ppc/pmac.c   2008-02-18 18:41:48.0 
 +0530
 +++ linux-2.6.25-rc1/drivers/ide/ppc/~pmac.c  2008-02-18 19:20:37.0 
 +0530
 @@ -1091,7 +1091,7 @@ pmac_ide_macio_attach(struct macio_dev *
   int irq, rc;
   hw_regs_t hw;
  
 - pmif = (struct pmac_ide_hwif)kzalloc(sizeof(*pmif), GFP_KERNEL);
 + pmif = (struct pmac_ide_hwif*)kzalloc(sizeof(*pmif), GFP_KERNEL);
   if (pmif == NULL)
   return -ENOMEM;
  
 @@ -1229,7 +1229,7 @@ pmac_ide_pci_attach(struct pci_dev *pdev
   return -ENODEV;
   }
  
 - pmif = (struct pmac_ide_hwif)kzalloc(sizeof(*pmif), GFP_KERNEL);
 + pmif = (struct pmac_ide_hwif*)kzalloc(sizeof(*pmif), GFP_KERNEL);
   if (pmif == NULL)
   return -ENOMEM;
  

Thanks, I integrated it with the guilty patch to preserve bisectability.

From: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED]
Subject: [PATCH] ide-pmac: dynamically allocate struct pmac_ide_hwif instances 
(take 2)

* Dynamically allocate struct pmac_ide_hwif instances in pmac_ide_macio_attach()
  and pmac_ide_pci_attach(), then remove no longer needed pmac_ide[].

v2:
* Build fix from Kamalesh Babulal.

Cc: Benjamin Herrenschmidt [EMAIL PROTECTED]
Cc: Kamalesh Babulal [EMAIL PROTECTED]
Signed-off-by: Bartlomiej Zolnierkiewicz [EMAIL PROTECTED]
---
 drivers/ide/ppc/pmac.c |   49 +
 1 file changed, 33 insertions(+), 16 deletions(-)

Index: b/drivers/ide/ppc/pmac.c
===
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -79,8 +79,6 @@ typedef struct pmac_ide_hwif {

 } pmac_ide_hwif_t;
 
-static pmac_ide_hwif_t pmac_ide[MAX_HWIFS];
-
 enum {
controller_ohare,   /* OHare based */
controller_heathrow,/* Heathrow/Paddington */
@@ -1094,29 +1092,34 @@ pmac_ide_macio_attach(struct macio_dev *
int i, rc;
hw_regs_t hw;
 
+   pmif = kzalloc(sizeof(*pmif), GFP_KERNEL);
+   if (pmif == NULL)
+   return -ENOMEM;
+
i = 0;
-   while (i  MAX_HWIFS  (ide_hwifs[i].io_ports[IDE_DATA_OFFSET] != 0
-   || pmac_ide[i].node != NULL))
+   while (i  MAX_HWIFS  (ide_hwifs[i].io_ports[IDE_DATA_OFFSET] != 0))
++i;
if (i = MAX_HWIFS) {
printk(KERN_ERR ide-pmac: MacIO interface attach with no 
slot\n);
printk(KERN_ERR   %s\n, mdev-ofdev.node-full_name);
-   return -ENODEV;
+   rc = -ENODEV;
+   goto out_free_pmif;
}
 
-   pmif = pmac_ide[i];
hwif = ide_hwifs[i];
 
if (macio_resource_count(mdev) == 0) {
printk(KERN_WARNING ide%d: no address for %s\n,
   i, mdev-ofdev.node-full_name);
-   return -ENXIO;
+   rc = -ENXIO;
+   goto out_free_pmif;
}
 
/* Request memory resource for IO ports */
if (macio_request_resource(mdev, 0, ide-pmac (ports))) {
printk(KERN_ERR ide%d: can't request mmio resource !\n, i);
-   return -EBUSY;
+   rc = -EBUSY;
+   goto out_free_pmif;
}

/* XXX This is bogus. Should be fixed in the registry by checking
@@ -1166,11 +1169,15 @@ pmac_ide_macio_attach(struct macio_dev *
iounmap(pmif-dma_regs);
macio_release_resource(mdev, 1);
}
-   memset(pmif, 0, sizeof(*pmif));
macio_release_resource(mdev, 0);
+   kfree(pmif);
}
 
return rc;
+
+out_free_pmif:
+   kfree(pmif);
+   return rc;
 }
 
 static int
@@ -1223,30 +1230,36 @@ pmac_ide_pci_attach(struct pci_dev *pdev
printk(KERN_ERR ide-pmac: cannot find MacIO node for Kauai ATA 
interface\n);
return -ENODEV;
}
+
+   pmif = kzalloc(sizeof(*pmif), GFP_KERNEL);
+   if (pmif == NULL)
+   return -ENOMEM;
+
i = 0;
-   while (i  MAX_HWIFS  (ide_hwifs[i].io_ports[IDE_DATA_OFFSET] != 0
-   || pmac_ide[i].node != NULL))
+   while (i  MAX_HWIFS  (ide_hwifs[i].io_ports[IDE_DATA_OFFSET] != 0))
++i;
if (i = MAX_HWIFS)