All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Laszlo Ersek <lersek@redhat.com>
Cc: qemu-devel@nongnu.org, libvir-list@redhat.com,
	Peter Krempa <pkrempa@redhat.com>,
	qemu-block@nongnu.org
Subject: Re: [Qemu-devel] Configuring pflash devices for OVMF firmware
Date: Thu, 07 Feb 2019 14:49:25 +0100	[thread overview]
Message-ID: <87sgwzd7yy.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <4675f707-1215-80ac-fc27-362688e51df9@redhat.com> (Laszlo Ersek's message of "Thu, 7 Feb 2019 13:31:13 +0100")

Laszlo Ersek <lersek@redhat.com> writes:

> Hi Markus,
>
> On 02/07/19 10:30, Markus Armbruster wrote:
>> The thread got long, let me try to summarize, and elaborate a few
>> points.
>> 
>> * The problem at hand is configuring firmware residing in flash memory
>>   (OVMF requires this) without legacy -drive.
>> 
>> * The wider problem is configuring onboard devices.  Our general device
>>   configuration interface doesn't cover them.  Instead, we have a zoo of
>>   ad hoc interfaces that are much more limited.  Some of them we'd
>>   rather deprecate (-drive, -net), but can't until we have a suitable
>>   replacements.
>> 
>>   I think a board should be a composite object that exposes properties
>>   of its own and its parts, just like other composite devices, so that
>>   "create, set properties, realize" just works.  That would extend our
>>   common device configuration mechanism naturally to onboard devices.
>> 
>>   A PC board's flash memory device would be just another part.  It could
>>   be something like /machine/q35/cfi.pflash01/ in the QOM tree.  To
>>   configure it, you'd set its properties, such as
>>   /machine/q35/cfi.pflash01/drive.
>> 
>>   Note that this requires a way to set an existing device's properties.
>>   Perhaps qom-set already works.
>> 
>> * While I do believe we should tackle the wider problem, I'd rather not
>>   sit on the narrow problem until we crack it.  So, what can we do about
>>   it?
>> 
>>   - Paolo proposed to add block backend properties to the PC machine,
>>     settable like -machine pflash0=BLOCK-BACKEND.
>> 
>>     Possible drawback: if we add /machine/q35/pflash0 to the QOM tree
>>     now, and later replace it by /machine/q35/cfi.pflash01/drive, we'll
>>     have to deal with yet another machine type variation.  We'll live.
>> 
>>   - I proposed to sidestep our onboard device configuration problem by
>>     adding the cfi.pflash01 devices with our existing general device
>>     configuration interface: -device.  Possible since the onboard
>>     cfi.pflash01 devices are optional.  Requires a small extension to
>>     the firmware descriptors, and a bit of extra work in libvirt to
>>     process that extension.  I think it's workable, but Paolo's idea is
>>     simpler.
>> 
>>   I can give Paolo's idea a try.  Objections?
>> 
>> * A flash device supporting multiple regions is desirable, because it's
>>   what physical hardware has.  We currently use multiple flash devices
>>   instead.  We'll be stuck with them for existing machine types due to
>>   guest ABI and migration compatibility.
>> 
>> * cfi.pflash01 currently requires users to opt out of "bad, do not use".
>>   It should require opt in, to guard against accidental new uses of
>>   "bad".
>> 
>> 
>> PS: Big thanks to László, whose patient guidance helped me map this part
>> of the jungle.
>> 
>
> I've read the above carefully.
>
> At the QEMU design level, I don't have any opinion or preference; there
> I simply don't know enough -- and don't suffer from bad decisions enough
> -- to make sensible comments.
>
> Regarding the choice betwen "-machine pflash0=BLOCK-BACKEND" and
> "-device pflash": I don't object to exploring the former first.
>
> I'd just like to note that "-machine pflash0=BLOCK-BACKEND" will also
> require changes to the firmware descriptor schema. Not to the types that
> the schema defines -- and therefore concrete descriptor *documents* that
> already conform to the schema wouldn't be affected --, but to the
> documentation that the schema directs at management applications.
>
> The schema is supposed to specify (in the documentation) QEMU command
> line options for management applications. If we add "-machine
> pflash0=BLOCK-BACKEND", then even if the types in the schema stay the
> same, some mappings to the QEMU cmdline will have to be re-documented.

Good point.

> Of course, that's still easier / less intrusive than changing the types!
> ... Which does make me prefer "-machine pflash0=BLOCK-BACKEND", if I'm
> being honest.
>
> (I hope my followup isn't totally useless. I certainly didn't want to
> ignore your summary.)

Pointing out the need to update these comments is anything but useless.

Thanks!

      reply	other threads:[~2019-02-07 13:49 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-25 15:03 [Qemu-devel] Configuring pflash devices for OVMF firmware Markus Armbruster
2019-01-28  7:58 ` Laszlo Ersek
2019-01-28 10:39 ` Peter Maydell
2019-01-28 12:40   ` [Qemu-devel] [libvirt] " Gerd Hoffmann
2019-01-28 13:06     ` Peter Maydell
2019-01-28 14:55       ` Laszlo Ersek
2019-01-28 14:58         ` Peter Maydell
2019-01-28 15:03           ` Laszlo Ersek
2019-01-30  7:36       ` Markus Armbruster
2019-01-30  8:00         ` Gerd Hoffmann
2019-01-30  7:24   ` [Qemu-devel] " Markus Armbruster
2019-01-30 15:24     ` Peter Maydell
2019-01-30 16:44       ` Laszlo Ersek
2019-01-30 17:24         ` Peter Maydell
2019-01-31  8:52           ` Markus Armbruster
2019-01-31 10:01             ` Peter Maydell
2019-01-31 10:24               ` Markus Armbruster
2019-01-31 10:34                 ` Peter Maydell
2019-01-31 12:05                   ` Markus Armbruster
2019-01-30 14:13   ` Markus Armbruster
2019-01-30 14:33     ` Paolo Bonzini
2019-01-30 16:38       ` Laszlo Ersek
2019-01-31  8:33         ` Markus Armbruster
2019-01-31  9:19           ` Paolo Bonzini
2019-01-31  9:37             ` Markus Armbruster
2019-01-31 12:02               ` Laszlo Ersek
2019-01-31 12:10               ` Paolo Bonzini
2019-01-31 12:51                 ` Markus Armbruster
2019-01-31  8:40       ` Markus Armbruster
2019-01-31  9:19         ` Paolo Bonzini
2019-01-31  9:41           ` Markus Armbruster
2019-01-31 10:12             ` Paolo Bonzini
2019-01-31 12:12               ` Markus Armbruster
2019-01-31 22:57                 ` Paolo Bonzini
2019-01-31 23:28                   ` Alexandro Sanchez Bach
2019-01-31 23:54                     ` Paolo Bonzini
2019-02-01  2:49                       ` Ning, Yu
2019-02-04 10:00                         ` Paolo Bonzini
2019-02-01  8:58                   ` Markus Armbruster
2019-01-31 11:57           ` Laszlo Ersek
2019-02-19  7:19       ` Markus Armbruster
2019-02-22 13:28         ` Markus Armbruster
2019-02-07  9:30 ` Markus Armbruster
2019-02-07 12:31   ` Laszlo Ersek
2019-02-07 13:49     ` Markus Armbruster [this message]

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=87sgwzd7yy.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=lersek@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=pkrempa@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.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 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.