On 11/10/22 06:47, Sergey Shtylyov wrote: > Nobody seems to call ata_sff_busy_sleep(), so we can get rid of it... > > Signed-off-by: Sergey Shtylyov <s.shtylyov@xxxxxx> Applied to for-6.2. Thanks ! > > --- > This patch is against the 'for-next' branch of Damien's 'libata.git' repo. > > drivers/ata/libata-sff.c | 56 ----------------------------------------------- > include/linux/libata.h | 2 - > 2 files changed, 58 deletions(-) > > Index: libata/drivers/ata/libata-sff.c > =================================================================== > --- libata.orig/drivers/ata/libata-sff.c > +++ libata/drivers/ata/libata-sff.c > @@ -184,62 +184,6 @@ void ata_sff_dma_pause(struct ata_port * > } > EXPORT_SYMBOL_GPL(ata_sff_dma_pause); > > -/** > - * ata_sff_busy_sleep - sleep until BSY clears, or timeout > - * @ap: port containing status register to be polled > - * @tmout_pat: impatience timeout in msecs > - * @tmout: overall timeout in msecs > - * > - * Sleep until ATA Status register bit BSY clears, > - * or a timeout occurs. > - * > - * LOCKING: > - * Kernel thread context (may sleep). > - * > - * RETURNS: > - * 0 on success, -errno otherwise. > - */ > -int ata_sff_busy_sleep(struct ata_port *ap, > - unsigned long tmout_pat, unsigned long tmout) > -{ > - unsigned long timer_start, timeout; > - u8 status; > - > - status = ata_sff_busy_wait(ap, ATA_BUSY, 300); > - timer_start = jiffies; > - timeout = ata_deadline(timer_start, tmout_pat); > - while (status != 0xff && (status & ATA_BUSY) && > - time_before(jiffies, timeout)) { > - ata_msleep(ap, 50); > - status = ata_sff_busy_wait(ap, ATA_BUSY, 3); > - } > - > - if (status != 0xff && (status & ATA_BUSY)) > - ata_port_warn(ap, > - "port is slow to respond, please be patient (Status 0x%x)\n", > - status); > - > - timeout = ata_deadline(timer_start, tmout); > - while (status != 0xff && (status & ATA_BUSY) && > - time_before(jiffies, timeout)) { > - ata_msleep(ap, 50); > - status = ap->ops->sff_check_status(ap); > - } > - > - if (status == 0xff) > - return -ENODEV; > - > - if (status & ATA_BUSY) { > - ata_port_err(ap, > - "port failed to respond (%lu secs, Status 0x%x)\n", > - DIV_ROUND_UP(tmout, 1000), status); > - return -EBUSY; > - } > - > - return 0; > -} > -EXPORT_SYMBOL_GPL(ata_sff_busy_sleep); > - > static int ata_sff_check_ready(struct ata_link *link) > { > u8 status = link->ap->ops->sff_check_status(link->ap); > Index: libata/include/linux/libata.h > =================================================================== > --- libata.orig/include/linux/libata.h > +++ libata/include/linux/libata.h > @@ -1918,8 +1918,6 @@ extern void ata_sff_dev_select(struct at > extern u8 ata_sff_check_status(struct ata_port *ap); > extern void ata_sff_pause(struct ata_port *ap); > extern void ata_sff_dma_pause(struct ata_port *ap); > -extern int ata_sff_busy_sleep(struct ata_port *ap, > - unsigned long timeout_pat, unsigned long timeout); > extern int ata_sff_wait_ready(struct ata_link *link, unsigned long deadline); > extern void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); > extern void ata_sff_tf_read(struct ata_port *ap, struct ata_taskfile *tf); -- Damien Le Moal Western Digital Research