All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	xen-devel@lists.xensource.com,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	qemu-devel@nongnu.org, pbonzini@redhat.com, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH] Do not emulate a floppy drive when -nodefaults
Date: Fri, 15 May 2015 09:50:11 +0200	[thread overview]
Message-ID: <877fsap9e4.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <5554E166.7050909@redhat.com> (John Snow's message of "Thu, 14 May 2015 13:54:46 -0400")

John Snow <jsnow@redhat.com> writes:

> On 05/14/2015 10:07 AM, Michael S. Tsirkin wrote:
>> On Thu, May 14, 2015 at 02:02:04PM +0200, Markus Armbruster wrote:
>>> Correct.
>>>
>>> Here's how I think it should be done:
>>>
>>> * Create a machine option to control the FDC
>>>
>>>   This is a machine-specific option.  It should only exist for machine
>>>   types that have an optional FDC.
>>>
>>>   Default must be "on" for old machine types.  Default may be "off" for
>>>   new machine types.
>>>
>>>   It should certainly be off for pc-q35-2.4 and newer.  Real Q35 boards
>>>   commonly don't have an FDC (depends on the Super I/O chip used).
>>>
>>>   We may want to keep it off for pc-i440fx-2.4 and newer.  I doubt
>>>   there's a real i440FX without an FDC, but our virtual i440FX is quite
>>>   unlike a real one in other ways already.
>> 
>> I think making it off by default is a bad idea, it will break
>> command-line users.
>> 
>> 
>
> If we can add a flag to disable it, I still think I wouldn't mind that,
> if it could be worked out to not be hacky and gross.
>
>>> * Create the FDC only if the option is "on".
>>>
>>> * Optional: make -drive if=floppy,... auto-enable it
>> 
>> Every time we do such auto hacks, we regret this later.
>> Just do what we are told, fail if=floppy if disabled.
>> 
>
> I agree very much. Just because the current drive/device syntax is
> almost totally hosed doesn't mean we should put more wood on the fire.
>
>>>   I wouldn't bother doing the same for -global isa-fdc.driveA=... and
>>>   such.
>>>
>>> Stefano, if you're willing to tackle this, go right ahead!
>
>
> I'm definitely against a "--seriously-nothing" flag because the line for
> what is embedded or not is fuzzy. Paolo raises some good points against
> where you draw the line for what we decide to allow users to
> include/exclude that is otherwise considered part of the board.

--nodefaults must continue to disable all optional parts of the board.

What exactly is optional is for the board / machine type to define.  It
can't be changed once the machine type is released.

When in doubt, make it optional.  Especially when the device has
user-configurable properties, because optional devices are much nicer to
configure than onboard devices.  For an onboard device, you have to mess
with -global, e.g.

    -global isa-fdc.driveA=fda

Since -global applies to *all* devices of a kind, this has unwanted side
effects when you have more than one.  For instance:

    $ qemu-system-x86 -nodefaults -S -display none -drive if=none,id=fda -global isa-fdc.driveA=fda -device isa-fdc,iobase=370
    qemu-system-x86: -device isa-fdc,iobase=370: Warning: global isa-fdc.driveA=fda ignored (Property 'isa-fdc.driveA' can't take value 'fda', it's in use)

If it was optional, you'd do a perfectly regular

    -device isa-fdc,id=fdc0,driveA=floppyA

which doesn't mess up any subsequent -device isa-fdc.

Since Q35 is just starting to become migratable, the time to painlessly
change its optional parts is *now*.

For i440FX, we'll have to sacrifice some to the compatibility idols.

> Still, given the hype train, if there is an API we could introduce that
> is likely not to make our code gross (or make us belly-ache about how
> dumb we were in 5 years) that disables the FDC, I don't think I would
> mind terribly. I'll leave that to minds more opinionated than mine to
> hash out, though.
>
> Maybe the best option here really is to carefully separate optional from
> non-optional components (FDC vs. Floppy Drive, Floppy Disk code) and
> just give the core FDC code a good scrubbing.

In my not particularly humble opinion, time spent on FDC code is time
stolen from more useful matters.

WARNING: multiple messages have this Message-ID (diff)
From: Markus Armbruster <armbru@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	xen-devel@lists.xensource.com,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	qemu-devel@nongnu.org, pbonzini@redhat.com, rth@twiddle.net
Subject: Re: [PATCH] Do not emulate a floppy drive when -nodefaults
Date: Fri, 15 May 2015 09:50:11 +0200	[thread overview]
Message-ID: <877fsap9e4.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <5554E166.7050909@redhat.com> (John Snow's message of "Thu, 14 May 2015 13:54:46 -0400")

John Snow <jsnow@redhat.com> writes:

> On 05/14/2015 10:07 AM, Michael S. Tsirkin wrote:
>> On Thu, May 14, 2015 at 02:02:04PM +0200, Markus Armbruster wrote:
>>> Correct.
>>>
>>> Here's how I think it should be done:
>>>
>>> * Create a machine option to control the FDC
>>>
>>>   This is a machine-specific option.  It should only exist for machine
>>>   types that have an optional FDC.
>>>
>>>   Default must be "on" for old machine types.  Default may be "off" for
>>>   new machine types.
>>>
>>>   It should certainly be off for pc-q35-2.4 and newer.  Real Q35 boards
>>>   commonly don't have an FDC (depends on the Super I/O chip used).
>>>
>>>   We may want to keep it off for pc-i440fx-2.4 and newer.  I doubt
>>>   there's a real i440FX without an FDC, but our virtual i440FX is quite
>>>   unlike a real one in other ways already.
>> 
>> I think making it off by default is a bad idea, it will break
>> command-line users.
>> 
>> 
>
> If we can add a flag to disable it, I still think I wouldn't mind that,
> if it could be worked out to not be hacky and gross.
>
>>> * Create the FDC only if the option is "on".
>>>
>>> * Optional: make -drive if=floppy,... auto-enable it
>> 
>> Every time we do such auto hacks, we regret this later.
>> Just do what we are told, fail if=floppy if disabled.
>> 
>
> I agree very much. Just because the current drive/device syntax is
> almost totally hosed doesn't mean we should put more wood on the fire.
>
>>>   I wouldn't bother doing the same for -global isa-fdc.driveA=... and
>>>   such.
>>>
>>> Stefano, if you're willing to tackle this, go right ahead!
>
>
> I'm definitely against a "--seriously-nothing" flag because the line for
> what is embedded or not is fuzzy. Paolo raises some good points against
> where you draw the line for what we decide to allow users to
> include/exclude that is otherwise considered part of the board.

--nodefaults must continue to disable all optional parts of the board.

What exactly is optional is for the board / machine type to define.  It
can't be changed once the machine type is released.

When in doubt, make it optional.  Especially when the device has
user-configurable properties, because optional devices are much nicer to
configure than onboard devices.  For an onboard device, you have to mess
with -global, e.g.

    -global isa-fdc.driveA=fda

Since -global applies to *all* devices of a kind, this has unwanted side
effects when you have more than one.  For instance:

    $ qemu-system-x86 -nodefaults -S -display none -drive if=none,id=fda -global isa-fdc.driveA=fda -device isa-fdc,iobase=370
    qemu-system-x86: -device isa-fdc,iobase=370: Warning: global isa-fdc.driveA=fda ignored (Property 'isa-fdc.driveA' can't take value 'fda', it's in use)

If it was optional, you'd do a perfectly regular

    -device isa-fdc,id=fdc0,driveA=floppyA

which doesn't mess up any subsequent -device isa-fdc.

Since Q35 is just starting to become migratable, the time to painlessly
change its optional parts is *now*.

For i440FX, we'll have to sacrifice some to the compatibility idols.

> Still, given the hype train, if there is an API we could introduce that
> is likely not to make our code gross (or make us belly-ache about how
> dumb we were in 5 years) that disables the FDC, I don't think I would
> mind terribly. I'll leave that to minds more opinionated than mine to
> hash out, though.
>
> Maybe the best option here really is to carefully separate optional from
> non-optional components (FDC vs. Floppy Drive, Floppy Disk code) and
> just give the core FDC code a good scrubbing.

In my not particularly humble opinion, time spent on FDC code is time
stolen from more useful matters.

  reply	other threads:[~2015-05-15  7:50 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-13 17:29 [Qemu-devel] [PATCH] Do not emulate a floppy drive when -nodefaults Stefano Stabellini
2015-05-13 17:29 ` Stefano Stabellini
2015-05-13 17:42 ` [Qemu-devel] " Daniel P. Berrange
2015-05-13 17:42   ` Daniel P. Berrange
2015-05-13 18:15   ` [Qemu-devel] " Stefano Stabellini
2015-05-13 18:15     ` Stefano Stabellini
2015-05-13 21:46     ` [Qemu-devel] " John Snow
2015-05-13 21:46       ` John Snow
2015-05-14 11:12       ` [Qemu-devel] " Stefano Stabellini
2015-05-14 11:12         ` Stefano Stabellini
2015-05-14 11:18         ` [Qemu-devel] " Daniel P. Berrange
2015-05-14 11:18           ` Daniel P. Berrange
2015-05-14 11:46           ` [Qemu-devel] " Michael S. Tsirkin
2015-05-14 11:46             ` Michael S. Tsirkin
2015-05-14 12:02           ` [Qemu-devel] " Markus Armbruster
2015-05-14 12:02             ` Markus Armbruster
2015-05-14 12:11             ` [Qemu-devel] " Paolo Bonzini
2015-05-14 12:11               ` Paolo Bonzini
2015-05-14 12:45               ` [Qemu-devel] " Markus Armbruster
2015-05-14 12:45                 ` Markus Armbruster
2015-05-14 12:48                 ` [Qemu-devel] " Daniel P. Berrange
2015-05-14 12:48                   ` Daniel P. Berrange
2015-05-14 12:53                 ` [Qemu-devel] " Paolo Bonzini
2015-05-14 12:53                   ` Paolo Bonzini
2015-05-14 13:25                   ` [Qemu-devel] [Xen-devel] " Sander Eikelenboom
2015-05-14 13:25                     ` Sander Eikelenboom
2015-05-14 13:41                     ` [Qemu-devel] " Daniel P. Berrange
2015-05-14 13:41                       ` Daniel P. Berrange
2015-05-14 13:55                     ` [Qemu-devel] " Paolo Bonzini
2015-05-14 13:55                       ` Paolo Bonzini
2015-05-14 14:39                       ` [Qemu-devel] " Stefano Stabellini
2015-05-14 14:39                         ` Stefano Stabellini
2015-05-14 14:44                         ` [Qemu-devel] " Paolo Bonzini
2015-05-14 14:44                           ` Paolo Bonzini
2015-05-14 14:52                           ` [Qemu-devel] " Stefano Stabellini
2015-05-14 14:52                             ` Stefano Stabellini
2015-05-14 13:57                     ` [Qemu-devel] " Michael S. Tsirkin
2015-05-14 13:57                       ` Michael S. Tsirkin
2015-05-14 14:07             ` [Qemu-devel] " Michael S. Tsirkin
2015-05-14 14:07               ` Michael S. Tsirkin
2015-05-14 17:54               ` [Qemu-devel] " John Snow
2015-05-14 17:54                 ` John Snow
2015-05-15  7:50                 ` Markus Armbruster [this message]
2015-05-15  7:50                   ` Markus Armbruster
2015-05-15  8:19                   ` [Qemu-devel] " Paolo Bonzini
2015-05-15  8:19                     ` Paolo Bonzini
2015-05-15 10:20                     ` [Qemu-devel] " Stefano Stabellini
2015-05-15 10:20                       ` Stefano Stabellini
2015-05-18  9:19                 ` [Qemu-devel] " Kevin Wolf
2015-05-18  9:19                   ` Kevin Wolf
2015-05-14 11:47         ` [Qemu-devel] " Michael S. Tsirkin
2015-05-14 11:47           ` Michael S. Tsirkin
2015-05-14 11:54           ` [Qemu-devel] " Paolo Bonzini
2015-05-14 11:54             ` Paolo Bonzini
2015-05-14 11:56             ` [Qemu-devel] " Michael S. Tsirkin
2015-05-14 11:56               ` Michael S. Tsirkin
2015-05-14 12:47             ` [Qemu-devel] " Markus Armbruster
2015-05-14 12:47               ` Markus Armbruster
2015-05-14  4:38     ` [Qemu-devel] " Stefan Weil
2015-05-14  4:38       ` Stefan Weil
2015-05-14  5:45       ` [Qemu-devel] " Michael S. Tsirkin
2015-05-14  5:45         ` Michael S. Tsirkin
2015-05-13 21:44 ` [Qemu-devel] " Michael S. Tsirkin
2015-05-13 21:44   ` Michael S. Tsirkin

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=877fsap9e4.fsf@blackfin.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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.