On Tue, Feb 21 2006, Thiemo Seufer wrote: > Hello All, > > this fixes Harddisk initialization (s->nsector is initially 0x100, which > is supposed to get handled as zero). > > > Thiemo > > > Index: qemu-work/hw/ide.c > =================================================================== > --- qemu-work.orig/hw/ide.c 2006-02-18 22:12:56.000000000 +0000 > +++ qemu-work/hw/ide.c 2006-02-19 02:34:13.000000000 +0000 > @@ -1550,12 +1550,12 @@ > ide_set_irq(s); > break; > case WIN_SETMULT: > - if (s->nsector > MAX_MULT_SECTORS || > + if ((s->nsector & 0xFF) > MAX_MULT_SECTORS || > s->nsector == 0 || > (s->nsector & (s->nsector - 1)) != 0) { > ide_abort_command(s); > } else { > - s->mult_sectors = s->nsector; > + s->mult_sectors = s->nsector & 0xFF; > s->status = READY_STAT; > } > ide_set_irq(s);
I think the much better patch would be to fix qemu not to put 256 unconditionally in ->nsector if it is written as zero. It's really a special case for only the read/write commands, not a generel fixup. I'd suggest adding a nsector_internal to fixup this internally in the read/write path so all register correctly reflect what was actually written by the OS. -- Jens Axboe _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel