[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader |
Date: |
Thu, 22 Sep 2016 13:50:15 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Paolo Bonzini <address@hidden> writes:
> On 22/09/2016 11:19, Markus Armbruster wrote:
>>> > I think -device is okay for something that isn't a "backend" but is
>>> > directly guest-visible.
>> Well, the contents of a block device is just as guest-visible. We split
>> the device in a frontend and a backend, and the contents comes from the
>> backend.
>>
>> We traditionally don't model memory as a split device. Perhaps we
>> should. Regardless of whether we actually do, "contents of a memory
>> device that you need to create by some other means (explicit or
>> implicit)" feels much more like -object than like -device to me.
>
> The closest precedents here are "-bios" (not an object at all), PCI ROMs
> (a property points to the file), and "-pflash" (split into backend and
> frontend, the frontend being a device).
-pflash ARG is sugar for -drive if=pflash,file=ARG. Like all -drive
other than drive if=none, it creates a block backend and asks the board
to create a block frontend. Some boards create a modern QOMified device
such as "cfi.pflash01", some create just a ROM memory region, which
isn't a device (in the same way RAM normally isn't), and some ignore the
request silently.
The modern, fully general form for QOMified devices would be to define
the backend with -drive if=none, and the frontend with -device.
-bios ARG is sugar for -machine firmware=ARG. This asks the board to
load firmware from file ARG. Again, boards could create a modern
QOMified ROM device (theoretical, not sure there are any), a non-device
ROM memory region, or ignore the request. The difference to pflash is
that we don't wrap a full-blown block backend around the file, simply
because that would complicate things for no gain. But that's detail;
it's playing the role of a backend all the same.
A (QOMified) PCI may have a PCI ROM. To configure its contents, you use
a PCI device property naming a file.
In all cases, QOMified devices get bits from the host via a backend.
The backend can be an explicit object (e.g. a block backend) or, if the
backend is trivial, folded into the frontend.
> I think there is a device concept in here, the question is whether you
> want to split the backend and frontend. For read-only data the
> precedents favor not splitting it.
Yes, we sometimes choose to fold trivial backends into the frontends
instead of doing a split device. That's fine.
However, in the case we're discussing, we're not doing that! There is
no RAM device with a trivial backend folded in. There's only a weird
pseudo-device that copies the contents of a file into memory, then sits
around doing absolutely nothing.
For me, that's an abuse of -device. It's certainly no worse than some
other parts of the QEMU command line / QMP. Not exactly a good excuse,
though :)
- [Qemu-devel] [PATCH v11 2/8] loader: Use the specified MemoryRegion, (continued)
- [Qemu-devel] [PATCH v11 2/8] loader: Use the specified MemoryRegion, Alistair Francis, 2016/09/20
- [Qemu-devel] [PATCH v11 3/8] loader: Allow a custom AddressSpace when loading ROMs, Alistair Francis, 2016/09/20
- [Qemu-devel] [PATCH v11 8/8] docs: Add a generic loader explanation document, Alistair Francis, 2016/09/20
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Peter Maydell, 2016/09/20
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Markus Armbruster, 2016/09/21
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Alistair Francis, 2016/09/21
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Paolo Bonzini, 2016/09/21
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Markus Armbruster, 2016/09/22
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Paolo Bonzini, 2016/09/22
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader,
Markus Armbruster <=
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Peter Maydell, 2016/09/22
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Markus Armbruster, 2016/09/23
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Paolo Bonzini, 2016/09/23
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Markus Armbruster, 2016/09/27
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Paolo Bonzini, 2016/09/27
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Markus Armbruster, 2016/09/27
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Alistair Francis, 2016/09/27
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Markus Armbruster, 2016/09/27
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Alistair Francis, 2016/09/28
- Re: [Qemu-devel] [PATCH v11 0/8] Add a generic loader, Peter Maydell, 2016/09/27