qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 48/49] i386: populate floppy drive information in


From: John Snow
Subject: Re: [Qemu-devel] [PULL 48/49] i386: populate floppy drive information in DSDT
Date: Tue, 9 Feb 2016 11:22:01 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0


On 02/09/2016 10:52 AM, Roman Kagan wrote:
> On Mon, Feb 08, 2016 at 03:20:47PM -0500, John Snow wrote:
>> On 02/08/2016 08:14 AM, Roman Kagan wrote:
>>> On Fri, Feb 05, 2016 at 07:25:07PM +0100, Igor Mammedov wrote:
>>>>> +    aml_append(fdi,
>>>>> +        aml_int(cylinders - 1));  /* Maximum Cylinder Number */
>>>> this puts uint64_t(-1) in AML i.e. cylinders == 0 and overflow happens here
>>>>
>>>> CCing Jon
>>>
>>> I guess this is the effect of John's fdc rework.  I used to think zero
>>> geometry was impossible at the time this patch was developed.
>>>
>>> I wonder if it hasn't been fixed already by
>>>
>>>   commit fd9bdbd3459e5b9d51534f0747049bc5b6145e07
>>>   Author: John Snow <address@hidden>
>>>   Date:   Wed Feb 3 11:28:55 2016 -0500
>>>
>>>       fdc: fix detection under Linux
>>
>> Yes, hopefully solved on my end. The geometry values for an empty disk
>> are not well defined (they certainly don't have any *meaning*) so if you
>> are populating tables based on an empty drive, I just hope you also have
>> the mechanisms needed to update said tables when the media changes.
> 
> I don't.  At the time the patch was developed there basically were no
> mechanisms to update the geometry at all (and this was what you patchset
> addressed, in particular, wasn't it?) so I didn't care.
> 

That's not true.

You could swap different 1.44MB-class diskettes for other geometries,
check this out:

static const FDFormat fd_formats[] = {
    /* First entry is default format */
    /* 1.44 MB 3"1/2 floppy disks */
    { FDRIVE_DRV_144, 18, 80, 1, FDRIVE_RATE_500K, },
    { FDRIVE_DRV_144, 20, 80, 1, FDRIVE_RATE_500K, },
    { FDRIVE_DRV_144, 21, 80, 1, FDRIVE_RATE_500K, },
    { FDRIVE_DRV_144, 21, 82, 1, FDRIVE_RATE_500K, },
    { FDRIVE_DRV_144, 21, 83, 1, FDRIVE_RATE_500K, },
    { FDRIVE_DRV_144, 22, 80, 1, FDRIVE_RATE_500K, },
    { FDRIVE_DRV_144, 23, 80, 1, FDRIVE_RATE_500K, },
    { FDRIVE_DRV_144, 24, 80, 1, FDRIVE_RATE_500K, },
...

You absolutely could get different sector and track counts before my
patchset.


> Now if it actually has to be fully dynamic it's gonna be more
> involved...
> 
>> What do the guests use these values for? Are they fixed at boot?
> 
> Only Windows guests use it so it's hard to tell.  I can only claim that
> if I stick bogus values into that ACPI object the guest fails to read
> the floppy.
> 
> Roman.
> 

-- 
—js



reply via email to

[Prev in Thread] Current Thread [Next in Thread]