From: Ian Jackson Date: Fri, 28 Mar 2008 09:36:36 +0000 (+0000) Subject: Move WIN_SETFEATURES 0x02 and 0x82 write_cache manipulation to correct place X-Git-Tag: xen-3.3.0-rc1~242 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=9c2f4d468e1653f8f73a215ca2b375875c68748d;p=qemu-xen-3.3-testing.git Move WIN_SETFEATURES 0x02 and 0x82 write_cache manipulation to correct place Thanks to Paul Brook for spotting the problem, which was introduced by me when I merged these changes from xen-unstable. --- diff --git a/hw/ide.c b/hw/ide.c index acb2139f..0fb58e79 100644 --- a/hw/ide.c +++ b/hw/ide.c @@ -2114,18 +2114,6 @@ static void ide_ioport_write(void *opaque, uint32_t addr, uint32_t val) switch(s->feature) { case 0xcc: /* reverting to power-on defaults enable */ case 0x66: /* reverting to power-on defaults disable */ - case 0x02: /* write cache enable */ - s->write_cache = 1; - s->status = READY_STAT | SEEK_STAT; - ide_set_irq(s); - break; - case 0x82: /* write cache disable */ - s->write_cache = 0; - ret = bdrv_flush(s->bs); - if (ret != 0) goto abort_cmd; - s->status = READY_STAT | SEEK_STAT; - ide_set_irq(s); - break; case 0xaa: /* read look-ahead enable */ case 0x55: /* read look-ahead disable */ case 0x05: /* set advanced power management mode */ @@ -2139,6 +2127,18 @@ static void ide_ioport_write(void *opaque, uint32_t addr, uint32_t val) s->status = READY_STAT | SEEK_STAT; ide_set_irq(s); break; + case 0x02: /* write cache enable */ + s->write_cache = 1; + s->status = READY_STAT | SEEK_STAT; + ide_set_irq(s); + break; + case 0x82: /* write cache disable */ + s->write_cache = 0; + ret = bdrv_flush(s->bs); + if (ret != 0) goto abort_cmd; + s->status = READY_STAT | SEEK_STAT; + ide_set_irq(s); + break; case 0x03: { /* set transfer mode */ uint8_t val = s->nsector & 0x07;