From: Markus Armbruster <arm...@redhat.com> Testing dev is more obvious than testing bs, in my opinion.
Signed-off-by: Markus Armbruster <arm...@redhat.com> --- hw/ide/ahci.c | 8 ++++---- hw/ide/core.c | 56 ++++++++++++++++++++++++++++------------------------- hw/ide/microdrive.c | 2 +- hw/ide/qdev.c | 2 +- 4 files changed, 36 insertions(+), 32 deletions(-) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index fbea9e8..eb6a6fe 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -85,7 +85,7 @@ static uint32_t ahci_port_read(AHCIState *s, int port, int offset) val = pr->sig; break; case PORT_SCR_STAT: - if (s->dev[port].port.ifs[0].bs) { + if (s->dev[port].port.ifs[0].dev) { val = SATA_SCR_SSTATUS_DET_DEV_PRESENT_PHY_UP | SATA_SCR_SSTATUS_SPD_GEN1 | SATA_SCR_SSTATUS_IPM_ACTIVE; } else { @@ -497,7 +497,7 @@ static void ahci_reset_port(AHCIState *s, int port) d->init_d2h_sent = false; ide_state = &s->dev[port].port.ifs[0]; - if (!ide_state->bs) { + if (!ide_state->dev) { return; } @@ -523,7 +523,7 @@ static void ahci_reset_port(AHCIState *s, int port) } s->dev[port].port_state = STATE_RUN; - if (!ide_state->bs) { + if (!ide_state->dev) { s->dev[port].port_regs.sig = 0; ide_state->status = SEEK_STAT | WRERR_STAT; } else if (ide_state->drive_kind == IDE_CD) { @@ -851,7 +851,7 @@ static int handle_cmd(AHCIState *s, int port, int slot) /* The device we are working for */ ide_state = &s->dev[port].port.ifs[0]; - if (!ide_state->bs) { + if (!ide_state->dev) { DPRINTF(port, "error: guest accessed unused port"); goto out; } diff --git a/hw/ide/core.c b/hw/ide/core.c index 2d382b2..0022cc5 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -312,7 +312,7 @@ static void ide_set_signature(IDEState *s) if (s->drive_kind == IDE_CD) { s->lcyl = 0x14; s->hcyl = 0xeb; - } else if (s->bs) { + } else if (s->dev) { s->lcyl = 0; s->hcyl = 0; } else { @@ -818,7 +818,7 @@ static void ide_flush_cb(void *opaque, int ret) void ide_flush_cache(IDEState *s) { - if (s->bs == NULL) { + if (!s->dev) { ide_flush_cb(s, 0); return; } @@ -1022,7 +1022,7 @@ static bool cmd_data_set_management(IDEState *s, uint8_t cmd) { switch (s->feature) { case DSM_TRIM: - if (s->bs) { + if (s->dev) { ide_sector_start_dma(s, IDE_DMA_TRIM); return false; } @@ -1035,7 +1035,7 @@ static bool cmd_data_set_management(IDEState *s, uint8_t cmd) static bool cmd_identify(IDEState *s, uint8_t cmd) { - if (s->bs && s->drive_kind != IDE_CD) { + if (s->dev && s->drive_kind != IDE_CD) { if (s->drive_kind != IDE_CFATA) { ide_identify(s); } else { @@ -1085,7 +1085,7 @@ static bool cmd_read_multiple(IDEState *s, uint8_t cmd) { bool lba48 = (cmd == WIN_MULTREAD_EXT); - if (!s->bs || !s->mult_sectors) { + if (!s->dev || !s->mult_sectors) { ide_abort_command(s); return true; } @@ -1101,7 +1101,7 @@ static bool cmd_write_multiple(IDEState *s, uint8_t cmd) bool lba48 = (cmd == WIN_MULTWRITE_EXT); int n; - if (!s->bs || !s->mult_sectors) { + if (!s->dev || !s->mult_sectors) { ide_abort_command(s); return true; } @@ -1129,7 +1129,7 @@ static bool cmd_read_pio(IDEState *s, uint8_t cmd) return true; } - if (!s->bs) { + if (!s->dev) { ide_abort_command(s); return true; } @@ -1145,7 +1145,7 @@ static bool cmd_write_pio(IDEState *s, uint8_t cmd) { bool lba48 = (cmd == WIN_WRITE_EXT); - if (!s->bs) { + if (!s->dev) { ide_abort_command(s); return true; } @@ -1165,7 +1165,7 @@ static bool cmd_read_dma(IDEState *s, uint8_t cmd) { bool lba48 = (cmd == WIN_READDMA_EXT); - if (!s->bs) { + if (!s->dev) { ide_abort_command(s); return true; } @@ -1180,7 +1180,7 @@ static bool cmd_write_dma(IDEState *s, uint8_t cmd) { bool lba48 = (cmd == WIN_WRITEDMA_EXT); - if (!s->bs) { + if (!s->dev) { ide_abort_command(s); return true; } @@ -1231,7 +1231,7 @@ static bool cmd_set_features(IDEState *s, uint8_t cmd) { uint16_t *identify_data; - if (!s->bs) { + if (!s->dev) { ide_abort_command(s); return true; } @@ -1710,8 +1710,9 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val) #endif s = idebus_active_if(bus); /* ignore commands to non existent slave */ - if (s != bus->ifs && !s->bs) + if (s != bus->ifs && !s->dev) { return; + } /* Only DEVICE RESET is allowed while BSY or/and DRQ are set */ if ((s->status & (BUSY_STAT|DRQ_STAT)) && val != WIN_DEVICE_RESET) @@ -1755,8 +1756,8 @@ uint32_t ide_ioport_read(void *opaque, uint32_t addr1) ret = 0xff; break; case 1: - if ((!bus->ifs[0].bs && !bus->ifs[1].bs) || - (s != bus->ifs && !s->bs)) + if ((!bus->ifs[0].dev && !bus->ifs[1].dev) || + (s != bus->ifs && !s->dev)) ret = 0; else if (!hob) ret = s->error; @@ -1764,7 +1765,7 @@ uint32_t ide_ioport_read(void *opaque, uint32_t addr1) ret = s->hob_feature; break; case 2: - if (!bus->ifs[0].bs && !bus->ifs[1].bs) + if (!bus->ifs[0].dev && !bus->ifs[1].dev) ret = 0; else if (!hob) ret = s->nsector & 0xff; @@ -1772,7 +1773,7 @@ uint32_t ide_ioport_read(void *opaque, uint32_t addr1) ret = s->hob_nsector; break; case 3: - if (!bus->ifs[0].bs && !bus->ifs[1].bs) + if (!bus->ifs[0].dev && !bus->ifs[1].dev) ret = 0; else if (!hob) ret = s->sector; @@ -1780,7 +1781,7 @@ uint32_t ide_ioport_read(void *opaque, uint32_t addr1) ret = s->hob_sector; break; case 4: - if (!bus->ifs[0].bs && !bus->ifs[1].bs) + if (!bus->ifs[0].dev && !bus->ifs[1].dev) ret = 0; else if (!hob) ret = s->lcyl; @@ -1788,7 +1789,7 @@ uint32_t ide_ioport_read(void *opaque, uint32_t addr1) ret = s->hob_lcyl; break; case 5: - if (!bus->ifs[0].bs && !bus->ifs[1].bs) + if (!bus->ifs[0].dev && !bus->ifs[1].dev) ret = 0; else if (!hob) ret = s->hcyl; @@ -1796,18 +1797,20 @@ uint32_t ide_ioport_read(void *opaque, uint32_t addr1) ret = s->hob_hcyl; break; case 6: - if (!bus->ifs[0].bs && !bus->ifs[1].bs) + if (!bus->ifs[0].dev && !bus->ifs[1].dev) { ret = 0; - else + } else { ret = s->select; + } break; default: case 7: - if ((!bus->ifs[0].bs && !bus->ifs[1].bs) || - (s != bus->ifs && !s->bs)) + if ((!bus->ifs[0].dev && !bus->ifs[1].dev) || + (s != bus->ifs && !s->dev)) { ret = 0; - else + } else { ret = s->status; + } qemu_irq_lower(bus->irq); break; } @@ -1823,11 +1826,12 @@ uint32_t ide_status_read(void *opaque, uint32_t addr) IDEState *s = idebus_active_if(bus); int ret; - if ((!bus->ifs[0].bs && !bus->ifs[1].bs) || - (s != bus->ifs && !s->bs)) + if ((!bus->ifs[0].dev && !bus->ifs[1].dev) || + (s != bus->ifs && !s->dev)) { ret = 0; - else + } else { ret = s->status; + } #ifdef DEBUG_IDE printf("ide: read status addr=0x%x val=%02x\n", addr, ret); #endif diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c index 21d6495..29f0d64 100644 --- a/hw/ide/microdrive.c +++ b/hw/ide/microdrive.c @@ -247,7 +247,7 @@ static uint16_t md_common_read(PCMCIACardState *card, uint32_t at) return ide_ioport_read(&s->bus, 0x1); case 0xe: /* Alternate Status */ ifs = idebus_active_if(&s->bus); - if (ifs->bs) { + if (ifs->dev) { return ifs->status; } else { return 0; diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index 6ea1698..7e8ddc2 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -120,7 +120,7 @@ int ide_get_geometry(BusState *bus, int unit, { IDEState *s = &DO_UPCAST(IDEBus, qbus, bus)->ifs[unit]; - if (s->drive_kind != IDE_HD || !s->bs) { + if (s->drive_kind != IDE_HD || !s->dev) { return -1; } -- 1.8.1.4