mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-10 03:20:49 +00:00
libata: Protect DMA core code by #ifdef CONFIG_HAS_DMA
If NO_DMA=y: ERROR: "bad_dma_ops" [drivers/ata/libata.ko] undefined! To fix this, protect the DMA code by #ifdef CONFIG_HAS_DMA, and provide dummies of ata_sg_clean() and ata_sg_setup() for the !CONFIG_HAS_DMA case. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
6cf32ed9ee
commit
2874d5ee6c
@ -4813,32 +4813,6 @@ static unsigned int ata_dev_init_params(struct ata_device *dev,
|
|||||||
return err_mask;
|
return err_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ata_sg_clean - Unmap DMA memory associated with command
|
|
||||||
* @qc: Command containing DMA memory to be released
|
|
||||||
*
|
|
||||||
* Unmap all mapped DMA memory associated with this command.
|
|
||||||
*
|
|
||||||
* LOCKING:
|
|
||||||
* spin_lock_irqsave(host lock)
|
|
||||||
*/
|
|
||||||
static void ata_sg_clean(struct ata_queued_cmd *qc)
|
|
||||||
{
|
|
||||||
struct ata_port *ap = qc->ap;
|
|
||||||
struct scatterlist *sg = qc->sg;
|
|
||||||
int dir = qc->dma_dir;
|
|
||||||
|
|
||||||
WARN_ON_ONCE(sg == NULL);
|
|
||||||
|
|
||||||
VPRINTK("unmapping %u sg elements\n", qc->n_elem);
|
|
||||||
|
|
||||||
if (qc->n_elem)
|
|
||||||
dma_unmap_sg(ap->dev, sg, qc->orig_n_elem, dir);
|
|
||||||
|
|
||||||
qc->flags &= ~ATA_QCFLAG_DMAMAP;
|
|
||||||
qc->sg = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* atapi_check_dma - Check whether ATAPI DMA can be supported
|
* atapi_check_dma - Check whether ATAPI DMA can be supported
|
||||||
* @qc: Metadata associated with taskfile to check
|
* @qc: Metadata associated with taskfile to check
|
||||||
@ -4923,6 +4897,34 @@ void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
|
|||||||
qc->cursg = qc->sg;
|
qc->cursg = qc->sg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_HAS_DMA
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ata_sg_clean - Unmap DMA memory associated with command
|
||||||
|
* @qc: Command containing DMA memory to be released
|
||||||
|
*
|
||||||
|
* Unmap all mapped DMA memory associated with this command.
|
||||||
|
*
|
||||||
|
* LOCKING:
|
||||||
|
* spin_lock_irqsave(host lock)
|
||||||
|
*/
|
||||||
|
void ata_sg_clean(struct ata_queued_cmd *qc)
|
||||||
|
{
|
||||||
|
struct ata_port *ap = qc->ap;
|
||||||
|
struct scatterlist *sg = qc->sg;
|
||||||
|
int dir = qc->dma_dir;
|
||||||
|
|
||||||
|
WARN_ON_ONCE(sg == NULL);
|
||||||
|
|
||||||
|
VPRINTK("unmapping %u sg elements\n", qc->n_elem);
|
||||||
|
|
||||||
|
if (qc->n_elem)
|
||||||
|
dma_unmap_sg(ap->dev, sg, qc->orig_n_elem, dir);
|
||||||
|
|
||||||
|
qc->flags &= ~ATA_QCFLAG_DMAMAP;
|
||||||
|
qc->sg = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ata_sg_setup - DMA-map the scatter-gather table associated with a command.
|
* ata_sg_setup - DMA-map the scatter-gather table associated with a command.
|
||||||
* @qc: Command with scatter-gather table to be mapped.
|
* @qc: Command with scatter-gather table to be mapped.
|
||||||
@ -4955,6 +4957,13 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else /* !CONFIG_HAS_DMA */
|
||||||
|
|
||||||
|
static inline void ata_sg_clean(struct ata_queued_cmd *qc) {}
|
||||||
|
static inline int ata_sg_setup(struct ata_queued_cmd *qc) { return -1; }
|
||||||
|
|
||||||
|
#endif /* !CONFIG_HAS_DMA */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* swap_buf_le16 - swap halves of 16-bit words in place
|
* swap_buf_le16 - swap halves of 16-bit words in place
|
||||||
* @buf: Buffer to swap
|
* @buf: Buffer to swap
|
||||||
|
Loading…
Reference in New Issue
Block a user