Skip to content

Commit

Permalink
[PATCH] libata: kill @verbose from ata_reset_fn_t
Browse files Browse the repository at this point in the history
@verbose was added to ata_reset_fn_t because AHCI complained during
probing if no device was attached to the port.  However, muting
failure message isn't the correct approach.  Reset methods are
responsible for detecting no device condition and finishing
successfully.  Now that AHCI softreset is fixed, kill @verbose.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Apr 11, 2006
1 parent db70fef commit 2bf2cb2
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 46 deletions.
13 changes: 5 additions & 8 deletions drivers/scsi/ahci.c
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ static int ahci_poll_register(void __iomem *reg, u32 mask, u32 val,
return -1;
}

static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class)
static int ahci_softreset(struct ata_port *ap, unsigned int *class)
{
struct ahci_host_priv *hpriv = ap->host_set->private_data;
struct ahci_port_priv *pp = ap->private_data;
Expand Down Expand Up @@ -646,22 +646,19 @@ static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class)
fail_restart:
ahci_start_engine(ap);
fail:
if (verbose)
printk(KERN_ERR "ata%u: softreset failed (%s)\n",
ap->id, reason);
else
DPRINTK("EXIT, rc=%d reason=\"%s\"\n", rc, reason);
printk(KERN_ERR "ata%u: softreset failed (%s)\n",
ap->id, reason);
return rc;
}

static int ahci_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
static int ahci_hardreset(struct ata_port *ap, unsigned int *class)
{
int rc;

DPRINTK("ENTER\n");

ahci_stop_engine(ap);
rc = sata_std_hardreset(ap, verbose, class);
rc = sata_std_hardreset(ap, class);
ahci_start_engine(ap);

if (rc == 0)
Expand Down
36 changes: 12 additions & 24 deletions drivers/scsi/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2387,7 +2387,6 @@ void ata_std_probeinit(struct ata_port *ap)
/**
* ata_std_softreset - reset host port via ATA SRST
* @ap: port to reset
* @verbose: fail verbosely
* @classes: resulting classes of attached devices
*
* Reset host port using ATA SRST. This function is to be used
Expand All @@ -2399,7 +2398,7 @@ void ata_std_probeinit(struct ata_port *ap)
* RETURNS:
* 0 on success, -errno otherwise.
*/
int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
int ata_std_softreset(struct ata_port *ap, unsigned int *classes)
{
unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
unsigned int devmask = 0, err_mask;
Expand All @@ -2425,12 +2424,8 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
DPRINTK("about to softreset, devmask=%x\n", devmask);
err_mask = ata_bus_softreset(ap, devmask);
if (err_mask) {
if (verbose)
printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n",
ap->id, err_mask);
else
DPRINTK("EXIT, softreset failed (err_mask=0x%x)\n",
err_mask);
printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n",
ap->id, err_mask);
return -EIO;
}

Expand All @@ -2447,7 +2442,6 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
/**
* sata_std_hardreset - reset host port via SATA phy reset
* @ap: port to reset
* @verbose: fail verbosely
* @class: resulting class of attached device
*
* SATA phy-reset host port using DET bits of SControl register.
Expand All @@ -2460,7 +2454,7 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
* RETURNS:
* 0 on success, -errno otherwise.
*/
int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
int sata_std_hardreset(struct ata_port *ap, unsigned int *class)
{
u32 scontrol;

Expand Down Expand Up @@ -2500,11 +2494,8 @@ int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
}

if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
if (verbose)
printk(KERN_ERR "ata%u: COMRESET failed "
"(device not ready)\n", ap->id);
else
DPRINTK("EXIT, device not ready\n");
printk(KERN_ERR "ata%u: COMRESET failed "
"(device not ready)\n", ap->id);
return -EIO;
}

Expand Down Expand Up @@ -2592,16 +2583,15 @@ int ata_std_probe_reset(struct ata_port *ap, unsigned int *classes)
ata_std_postreset, classes);
}

int ata_do_reset(struct ata_port *ap,
ata_reset_fn_t reset, ata_postreset_fn_t postreset,
int verbose, unsigned int *classes)
int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset,
ata_postreset_fn_t postreset, unsigned int *classes)
{
int i, rc;

for (i = 0; i < ATA_MAX_DEVICES; i++)
classes[i] = ATA_DEV_UNKNOWN;

rc = reset(ap, verbose, classes);
rc = reset(ap, classes);
if (rc)
return rc;

Expand Down Expand Up @@ -2645,8 +2635,6 @@ int ata_do_reset(struct ata_port *ap,
* - If classification is supported, fill classes[] with
* recognized class codes.
* - If classification is not supported, leave classes[] alone.
* - If verbose is non-zero, print error message on failure;
* otherwise, shut up.
*
* LOCKING:
* Kernel thread context (may sleep)
Expand All @@ -2666,7 +2654,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit,
probeinit(ap);

if (softreset && !ata_set_sata_spd_needed(ap)) {
rc = ata_do_reset(ap, softreset, postreset, 0, classes);
rc = ata_do_reset(ap, softreset, postreset, classes);
if (rc == 0 && classes[0] != ATA_DEV_UNKNOWN)
goto done;
printk(KERN_INFO "ata%u: softreset failed, will try "
Expand All @@ -2678,7 +2666,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit,
goto done;

while (1) {
rc = ata_do_reset(ap, hardreset, postreset, 0, classes);
rc = ata_do_reset(ap, hardreset, postreset, classes);
if (rc == 0) {
if (classes[0] != ATA_DEV_UNKNOWN)
goto done;
Expand All @@ -2699,7 +2687,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit,
ap->id);
ssleep(5);

rc = ata_do_reset(ap, softreset, postreset, 0, classes);
rc = ata_do_reset(ap, softreset, postreset, classes);
}

done:
Expand Down
6 changes: 2 additions & 4 deletions drivers/scsi/libata.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,8 @@ extern int ata_set_sata_spd_needed(struct ata_port *ap);
extern int ata_down_xfermask_limit(struct ata_port *ap, struct ata_device *dev,
int force_pio0);
extern int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev);
extern int ata_do_reset(struct ata_port *ap,
ata_reset_fn_t reset,
ata_postreset_fn_t postreset,
int verbose, unsigned int *classes);
extern int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset,
ata_postreset_fn_t postreset, unsigned int *classes);
extern void ata_qc_free(struct ata_queued_cmd *qc);
extern void ata_qc_issue(struct ata_queued_cmd *qc);
extern int ata_check_atapi_dma(struct ata_queued_cmd *qc);
Expand Down
8 changes: 3 additions & 5 deletions drivers/scsi/sata_sil24.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,8 +426,7 @@ static void sil24_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
*tf = pp->tf;
}

static int sil24_softreset(struct ata_port *ap, int verbose,
unsigned int *class)
static int sil24_softreset(struct ata_port *ap, unsigned int *class)
{
void __iomem *port = (void __iomem *)ap->ioaddr.cmd_addr;
struct sil24_port_priv *pp = ap->private_data;
Expand Down Expand Up @@ -489,13 +488,12 @@ static int sil24_softreset(struct ata_port *ap, int verbose,
return 0;
}

static int sil24_hardreset(struct ata_port *ap, int verbose,
unsigned int *class)
static int sil24_hardreset(struct ata_port *ap, unsigned int *class)
{
unsigned int dummy_class;

/* sil24 doesn't report device signature after hard reset */
return sata_std_hardreset(ap, verbose, &dummy_class);
return sata_std_hardreset(ap, &dummy_class);
}

static int sil24_probe_reset(struct ata_port *ap, unsigned int *classes)
Expand Down
8 changes: 3 additions & 5 deletions include/linux/libata.h
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ struct ata_queued_cmd;
/* typedefs */
typedef void (*ata_qc_cb_t) (struct ata_queued_cmd *qc);
typedef void (*ata_probeinit_fn_t)(struct ata_port *);
typedef int (*ata_reset_fn_t)(struct ata_port *, int, unsigned int *);
typedef int (*ata_reset_fn_t)(struct ata_port *, unsigned int *);
typedef void (*ata_postreset_fn_t)(struct ata_port *ap, unsigned int *);

struct ata_ioports {
Expand Down Expand Up @@ -509,10 +509,8 @@ extern int ata_drive_probe_reset(struct ata_port *ap,
ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
ata_postreset_fn_t postreset, unsigned int *classes);
extern void ata_std_probeinit(struct ata_port *ap);
extern int ata_std_softreset(struct ata_port *ap, int verbose,
unsigned int *classes);
extern int sata_std_hardreset(struct ata_port *ap, int verbose,
unsigned int *class);
extern int ata_std_softreset(struct ata_port *ap, unsigned int *classes);
extern int sata_std_hardreset(struct ata_port *ap, unsigned int *class);
extern void ata_std_postreset(struct ata_port *ap, unsigned int *classes);
extern int ata_dev_revalidate(struct ata_port *ap, struct ata_device *dev,
int post_reset);
Expand Down

0 comments on commit 2bf2cb2

Please sign in to comment.