libata: remove ata_sff_data_xfer_noirq()
ata_sff_data_xfer_noirq() is invoked via the ->sff_data_xfer hook. The latter is invoked by ata_pio_sector(), atapi_send_cdb() and __atapi_pio_bytes() which in turn is invoked by ata_sff_hsm_move(). The latter function requires that the "ap->lock" lock is held which needs to be taken with disabled interrupts. There is no need have to have ata_sff_data_xfer_noirq() which invokes ata_sff_data_xfer32() with disabled interrupts because at this point the interrupts are already disabled. Remove the function and its references to it and replace all callers with ata_sff_data_xfer32(). Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
aece27a2f0
commit
23ebda2fc7
|
@ -118,8 +118,7 @@ PIO data read/write
|
|||
All bmdma-style drivers must implement this hook. This is the low-level
|
||||
operation that actually copies the data bytes during a PIO data
|
||||
transfer. Typically the driver will choose one of
|
||||
:c:func:`ata_sff_data_xfer_noirq`, :c:func:`ata_sff_data_xfer`, or
|
||||
:c:func:`ata_sff_data_xfer32`.
|
||||
:c:func:`ata_sff_data_xfer`, or :c:func:`ata_sff_data_xfer32`.
|
||||
|
||||
ATA command execute
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
@ -657,36 +657,6 @@ unsigned int ata_sff_data_xfer32(struct ata_queued_cmd *qc, unsigned char *buf,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(ata_sff_data_xfer32);
|
||||
|
||||
/**
|
||||
* ata_sff_data_xfer_noirq - Transfer data by PIO
|
||||
* @qc: queued command
|
||||
* @buf: data buffer
|
||||
* @buflen: buffer length
|
||||
* @rw: read/write
|
||||
*
|
||||
* Transfer data from/to the device data register by PIO. Do the
|
||||
* transfer with interrupts disabled.
|
||||
*
|
||||
* LOCKING:
|
||||
* Inherited from caller.
|
||||
*
|
||||
* RETURNS:
|
||||
* Bytes consumed.
|
||||
*/
|
||||
unsigned int ata_sff_data_xfer_noirq(struct ata_queued_cmd *qc, unsigned char *buf,
|
||||
unsigned int buflen, int rw)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned int consumed;
|
||||
|
||||
local_irq_save(flags);
|
||||
consumed = ata_sff_data_xfer32(qc, buf, buflen, rw);
|
||||
local_irq_restore(flags);
|
||||
|
||||
return consumed;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ata_sff_data_xfer_noirq);
|
||||
|
||||
/**
|
||||
* ata_pio_sector - Transfer a sector of data.
|
||||
* @qc: Command on going
|
||||
|
|
|
@ -178,7 +178,7 @@ static struct scsi_host_template cmd640_sht = {
|
|||
static struct ata_port_operations cmd640_port_ops = {
|
||||
.inherits = &ata_sff_port_ops,
|
||||
/* In theory xfer_noirq is not needed once we kill the prefetcher */
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
.sff_irq_check = cmd640_sff_irq_check,
|
||||
.qc_issue = cmd640_qc_issue,
|
||||
.cable_detect = ata_cable_40wire,
|
||||
|
|
|
@ -324,7 +324,7 @@ static struct ata_port_operations pata_icside_port_ops = {
|
|||
.inherits = &ata_bmdma_port_ops,
|
||||
/* no need to build any PRD tables for DMA */
|
||||
.qc_prep = ata_noop_qc_prep,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
.bmdma_setup = pata_icside_bmdma_setup,
|
||||
.bmdma_start = pata_icside_bmdma_start,
|
||||
.bmdma_stop = pata_icside_bmdma_stop,
|
||||
|
|
|
@ -102,7 +102,7 @@ static struct scsi_host_template pata_imx_sht = {
|
|||
|
||||
static struct ata_port_operations pata_imx_port_ops = {
|
||||
.inherits = &ata_sff_port_ops,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
.cable_detect = ata_cable_unknown,
|
||||
.set_piomode = pata_imx_set_piomode,
|
||||
};
|
||||
|
|
|
@ -246,12 +246,12 @@ static const struct ata_port_operations legacy_base_port_ops = {
|
|||
|
||||
static struct ata_port_operations simple_port_ops = {
|
||||
.inherits = &legacy_base_port_ops,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
};
|
||||
|
||||
static struct ata_port_operations legacy_port_ops = {
|
||||
.inherits = &legacy_base_port_ops,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
.set_mode = legacy_set_mode,
|
||||
};
|
||||
|
||||
|
@ -341,7 +341,7 @@ static unsigned int pdc_data_xfer_vlb(struct ata_queued_cmd *qc,
|
|||
}
|
||||
local_irq_restore(flags);
|
||||
} else
|
||||
buflen = ata_sff_data_xfer_noirq(qc, buf, buflen, rw);
|
||||
buflen = ata_sff_data_xfer32(qc, buf, buflen, rw);
|
||||
|
||||
return buflen;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ static struct scsi_host_template palmld_sht = {
|
|||
|
||||
static struct ata_port_operations palmld_port_ops = {
|
||||
.inherits = &ata_sff_port_ops,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
.cable_detect = ata_cable_40wire,
|
||||
};
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ static struct scsi_host_template pcmcia_sht = {
|
|||
|
||||
static struct ata_port_operations pcmcia_port_ops = {
|
||||
.inherits = &ata_sff_port_ops,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
.cable_detect = ata_cable_40wire,
|
||||
.set_mode = pcmcia_set_mode,
|
||||
};
|
||||
|
|
|
@ -49,7 +49,7 @@ static struct scsi_host_template pata_platform_sht = {
|
|||
|
||||
static struct ata_port_operations pata_platform_port_ops = {
|
||||
.inherits = &ata_sff_port_ops,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
.cable_detect = ata_cable_unknown,
|
||||
.set_mode = pata_platform_set_mode,
|
||||
};
|
||||
|
|
|
@ -471,7 +471,7 @@ static struct ata_port_operations via_port_ops = {
|
|||
|
||||
static struct ata_port_operations via_port_ops_noirq = {
|
||||
.inherits = &via_port_ops,
|
||||
.sff_data_xfer = ata_sff_data_xfer_noirq,
|
||||
.sff_data_xfer = ata_sff_data_xfer32,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -1832,8 +1832,6 @@ extern unsigned int ata_sff_data_xfer(struct ata_queued_cmd *qc,
|
|||
unsigned char *buf, unsigned int buflen, int rw);
|
||||
extern unsigned int ata_sff_data_xfer32(struct ata_queued_cmd *qc,
|
||||
unsigned char *buf, unsigned int buflen, int rw);
|
||||
extern unsigned int ata_sff_data_xfer_noirq(struct ata_queued_cmd *qc,
|
||||
unsigned char *buf, unsigned int buflen, int rw);
|
||||
extern void ata_sff_irq_on(struct ata_port *ap);
|
||||
extern void ata_sff_irq_clear(struct ata_port *ap);
|
||||
extern int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
|
||||
|
|
Loading…
Reference in a new issue