All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Thomas Huth <thuth@redhat.com>, Michael Tokarev <mjt@tls.msk.ru>,
	qemu-devel qemu-devel <qemu-devel@nongnu.org>
Subject: Re: qemu broke booting of old RedHat floppies
Date: Fri, 12 Mar 2021 01:23:04 -0500	[thread overview]
Message-ID: <a72265ef-979d-e23d-f6a4-3f950b1d50c0@redhat.com> (raw)
In-Reply-To: <b7f858e1-5fdf-44c5-cc4e-033c43df9c4e@redhat.com>

On 1/20/21 10:41 AM, Thomas Huth wrote:
> On 20/01/2021 16.11, Michael Tokarev wrote:
>> As someone noticed on IRC, old (2.x) RedHat floppies does not boot
>> in current qemu.  When qemu is booted from floppy image at
>>   https://archive.org/details/RedHatLinuxBootDisk521998
>> (download the "ISO image" link there, it really is an 1.44 floppy),
>> seabios says Boot failed and that's it.
>>
>> I run git bisect with it, knowing that qemu 2.1 works fine, and
>> it pointed out to this commit which is oldish qemu-2.5+:
> [...]
>> Now, I don't even know where to put that "type=144/288/auto" thing,
>> I tried this:
>>
>>   -drive 
>> file=RedHatLinuxBootDisk521998.disk1of1.img,if=floppy,format=raw,type=144
>>
>> but it says that format=raw does not support "type=144" option.
> 
> Try:
> 
>   qemu-system-x86_64 -drive 
> if=none,file=RedHatLinuxBootDisk521998.disk1of1.img,format=raw,id=dr1 
> -device floppy,drive-type=144,drive=dr1
> 
>> And it's even more: I don't remember which size should be an 1.44Mb 
>> floppy :))
>> The file size of that image is 1492992 bytes which does not look like 
>> it is of
>> standard size, but I can't find which size it should be.
> 
> As mentioned on IRC already, it's likely a disk with 81 tracks instead 
> of 80 tracks, so it's bigger than the usual 1.44 MB floppy disk images 
> and thus QEMU likely misdetects it by default.
> 
>   Thomas
> 
> 

Whoops, yes, the auto-detection doesn't really seem to understand what's 
going on here.

./i386-softmmu/qemu-system-i386 -drive 
if=none,format=raw,file=../../../../Downloads/RedHatLinuxBootDisk521998.disk1of1.img,id=dr1 
-device floppy,drive-type=auto,drive=dr1

this fails, as does drive-type=288.
drive-type=144 works, though.

Digging a tiny bit:

- auto chooses a (36, 80, 1) geometry (It assumes the 288 type.)
- 288 chooses the same geometry.
- 144 chooses (18, 80, 1) => 2880 sectors

None of these choices actually get the geometry right, because the 
fd_formats[] table just ... doesn't have that geometry in the table. It 
only works under the 144 type because when it just gives up and picks a 
geometry, it picks the first geometry under the 1.44MB section.

When it defaults to 2.88 instead, it picks the first geometry under the 
2.88MB section.

Adding an explicit (18, 81, 1) choice improves our mileage:

- auto -> (18, 81, 1)
- 144 -> (18, 81, 1)
- 288 -> (18, 81, 1)

and fixes the boot.


diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 198940e737..4269c0c754 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -122,6 +122,7 @@ static const FDFormat fd_formats[] = {
      /* First entry is default format */
      /* 1.44 MB 3"1/2 floppy disks */
      { FLOPPY_DRIVE_TYPE_144, 18, 80, 1, FDRIVE_RATE_500K, }, /* 3.5" 
2880 */
+    { FLOPPY_DRIVE_TYPE_144, 18, 81, 1, FDRIVE_RATE_500K, },
      { FLOPPY_DRIVE_TYPE_144, 20, 80, 1, FDRIVE_RATE_500K, }, /* 3.5" 
3200 */
      { FLOPPY_DRIVE_TYPE_144, 21, 80, 1, FDRIVE_RATE_500K, },
      { FLOPPY_DRIVE_TYPE_144, 21, 82, 1, FDRIVE_RATE_500K, },



Do you have the name of the person who reported this on IRC so I can add 
a credit?

--js



  reply	other threads:[~2021-03-12  6:27 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-20 15:11 qemu broke booting of old RedHat floppies Michael Tokarev
2021-01-20 15:39 ` Alexander Bulekov
2021-01-20 15:41 ` Thomas Huth
2021-03-12  6:23   ` John Snow [this message]
2021-02-03 16:30 ` Philippe Mathieu-Daudé
     [not found] <0bca1cd0-69c3-c07a-b4cf-015dcdbc6d61@tls.msk.ru>
2021-01-20 15:20 ` Michael Tokarev
     [not found] ` <098ce1c2-e304-bf37-c3f9-f8cd81028020@tls.msk.ru>
2021-01-20 16:02   ` Michael Tokarev

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=a72265ef-979d-e23d-f6a4-3f950b1d50c0@redhat.com \
    --to=jsnow@redhat.com \
    --cc=mjt@tls.msk.ru \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.