qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: seabios@seabios.org,
	Nikolay Nikolov <nickysn@users.sourceforge.net>,
	John Snow <jsnow@redhat.com>,
	QEMU Developers <qemu-devel@nongnu.org>
Cc: Alex <coderain@sdf.org>
Subject: [Qemu-devel] Regression with floppy drive controller
Date: Tue, 20 Aug 2019 12:25:52 +0200	[thread overview]
Message-ID: <fccac7fa-888e-6ac5-458d-688808f3b282@redhat.com> (raw)

[cross posting QEMU & SeaBIOS]

Hello,

I'v been looking at a QEMU bug report [1] which bisection resulted in a
SeaBIOS commit:

4a6dbcea3e412fe12effa2f812f50dd7eae90955 is the first bad commit
commit 4a6dbcea3e412fe12effa2f812f50dd7eae90955
Author: Nikolay Nikolov <nickysn@users.sourceforge.net>
Date:   Sun Feb 4 17:27:01 2018 +0200

    floppy: Use timer_check() in floppy_wait_irq()

    Use timer_check() instead of using floppy_motor_counter in BDA for the
    timeout check in floppy_wait_irq().

    The problem with using floppy_motor_counter was that, after it reaches
    0, it immediately stops the floppy motors, which is not what is
    supposed to happen on real hardware. Instead, after a timeout (like in
    the end of every floppy operation, regardless of the result - success,
    timeout or error), the floppy motors must be kept spinning for
    additional 2 seconds (the FLOPPY_MOTOR_TICKS). So, now the
    floppy_motor_counter is initialized to 255 (the max value) in the
    beginning of the floppy operation. For IRQ timeouts, a different
    timeout is used, specified by the new FLOPPY_IRQ_TIMEOUT constant
    (currently set to 5 seconds - a fairly conservative value, but should
    work reliably on most floppies).

    After the floppy operation, floppy_drive_pio() resets the
    floppy_motor_counter to 2 seconds (FLOPPY_MOTOR_TICKS).

    This is also consistent with what other PC BIOSes do.


This commit improve behavior with real hardware, so maybe QEMU is not
modelling something or modelling it incorrectly?


Regards,

Phil.


PD: How to reproduce:

- Download Windows 98 SE floppy image from [2]

- Run QEMU using the 'isapc' machine:

  $ qemu-system-i386 -M isapc \
     -fda Windows\ 98\ Second\ Edition\ Boot.img

  SeaBIOS (version rel-1.11.0-11-g4a6dbce-prebuilt.qemu.org)
  Booting from Floppy...
  Boot failed: could not read the boot disk

[1] https://bugs.launchpad.net/qemu/+bug/1840719
[2] https://winworldpc.com/download/417d71c2-ae18-c39a-11c3-a4e284a2c3a5


             reply	other threads:[~2019-08-20 10:27 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-20 10:25 Philippe Mathieu-Daudé [this message]
2019-08-20 13:12 ` [Qemu-devel] Regression with floppy drive controller John Snow
2019-08-20 13:38   ` Philippe Mathieu-Daudé
2019-08-20 14:00     ` Philippe Mathieu-Daudé
2019-08-20 14:36       ` [Qemu-devel] [SeaBIOS] " Dr. David Alan Gilbert
2019-08-20 14:54         ` Philippe Mathieu-Daudé
2019-08-20 15:02           ` Philippe Mathieu-Daudé
2019-08-20 15:04           ` Dr. David Alan Gilbert
2019-08-20 16:21     ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-08-20 20:37       ` Eduardo Habkost
2019-08-21  6:42       ` Gerd Hoffmann
2019-08-21  7:45         ` Paolo Bonzini
2019-08-21 13:31         ` [Qemu-devel] [SeaBIOS] " Kevin O'Connor
2019-08-22  8:32           ` Gerd Hoffmann
2019-08-22  8:42             ` Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fccac7fa-888e-6ac5-458d-688808f3b282@redhat.com \
    --to=philmd@redhat.com \
    --cc=coderain@sdf.org \
    --cc=jsnow@redhat.com \
    --cc=nickysn@users.sourceforge.net \
    --cc=qemu-devel@nongnu.org \
    --cc=seabios@seabios.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).