[PATCH] IB/ipath: use vmalloc to allocate struct ipath_devdata
This is not a DMA target, so no need to use dma_alloc_coherent on it. Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com> Cc: "Michael S. Tsirkin" <mst@mellanox.co.il> Cc: Roland Dreier <rolandd@cisco.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
0ed9a4a0b6
Коммит
06993ca6bc
|
@ -171,14 +171,13 @@ static void ipath_free_devdata(struct pci_dev *pdev,
|
||||||
list_del(&dd->ipath_list);
|
list_del(&dd->ipath_list);
|
||||||
spin_unlock_irqrestore(&ipath_devs_lock, flags);
|
spin_unlock_irqrestore(&ipath_devs_lock, flags);
|
||||||
}
|
}
|
||||||
dma_free_coherent(&pdev->dev, sizeof(*dd), dd, dd->ipath_dma_addr);
|
vfree(dd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct ipath_devdata *ipath_alloc_devdata(struct pci_dev *pdev)
|
static struct ipath_devdata *ipath_alloc_devdata(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct ipath_devdata *dd;
|
struct ipath_devdata *dd;
|
||||||
dma_addr_t dma_addr;
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!idr_pre_get(&unit_table, GFP_KERNEL)) {
|
if (!idr_pre_get(&unit_table, GFP_KERNEL)) {
|
||||||
|
@ -186,15 +185,12 @@ static struct ipath_devdata *ipath_alloc_devdata(struct pci_dev *pdev)
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
dd = dma_alloc_coherent(&pdev->dev, sizeof(*dd), &dma_addr,
|
dd = vmalloc(sizeof(*dd));
|
||||||
GFP_KERNEL);
|
|
||||||
|
|
||||||
if (!dd) {
|
if (!dd) {
|
||||||
dd = ERR_PTR(-ENOMEM);
|
dd = ERR_PTR(-ENOMEM);
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
memset(dd, 0, sizeof(*dd));
|
||||||
dd->ipath_dma_addr = dma_addr;
|
|
||||||
dd->ipath_unit = -1;
|
dd->ipath_unit = -1;
|
||||||
|
|
||||||
spin_lock_irqsave(&ipath_devs_lock, flags);
|
spin_lock_irqsave(&ipath_devs_lock, flags);
|
||||||
|
|
|
@ -163,7 +163,6 @@ struct ipath_devdata {
|
||||||
* only written to by the chip, not the driver.
|
* only written to by the chip, not the driver.
|
||||||
*/
|
*/
|
||||||
volatile __le64 *ipath_hdrqtailptr;
|
volatile __le64 *ipath_hdrqtailptr;
|
||||||
dma_addr_t ipath_dma_addr;
|
|
||||||
/* ipath_cfgports pointers */
|
/* ipath_cfgports pointers */
|
||||||
struct ipath_portdata **ipath_pd;
|
struct ipath_portdata **ipath_pd;
|
||||||
/* sk_buffs used by port 0 eager receive queue */
|
/* sk_buffs used by port 0 eager receive queue */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче