From: Jan Kiszka <jan.kiszka@web.de>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Blue Swirl <blauwirbel@gmail.com>,
Anthony Liguori <aliguori@us.ibm.com>,
qemu-devel <qemu-devel@nongnu.org>,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 06/16] apic: Introduce backend/frontend infrastructure for KVM reuse
Date: Tue, 20 Dec 2011 00:32:00 +0100 [thread overview]
Message-ID: <4EEFC970.9030205@web.de> (raw)
In-Reply-To: <4EEFB72E.7030508@codemonkey.ws>
[-- Attachment #1: Type: text/plain, Size: 1654 bytes --]
[ Please strip your replies a bit. I always worry to miss a comment when
scrolling down dozens of pages. ]
On 2011-12-19 23:14, Anthony Liguori wrote:
>> +
>> +struct APICBackend {
>> + const char *name;
>> + void (*init)(APICState *s);
>> + void (*set_base)(APICState *s, uint64_t val);
>> + void (*set_tpr)(APICState *s, uint8_t val);
>> + void (*external_nmi)(APICState *s);
>> +
>> + QSIMPLEQ_ENTRY(APICBackend) entry;
>> +};
>
>
> Wouldn't this be more naturally modeled by making APICBackend be a base
> class?
>
> In qdev today, this would look like:
>
> struct APICCommon {
> SysBusDevice qdev;
> ...
> };
>
> struct APICCommonInfo {
> DeviceInfo qdev;
> void (*init)(APICState *s);
> void (*set_base)(APICState *s, uint64_t val);
> void (*set_tpr)(APICState *s, uint8_t val);
> void (*external_nmi)(APICState *s);
> };
>
> Take a look at SCSIDevice for an example of this in practice. This is
> nicer because as we move save/load into devices methods, it becomes
> natural to define the state and save/load function in the base class.
> Provided it only uses base class state, it lets save/load be compatible
> between both in-kernel and in-qemu device model.
The difference is (unless I completely miss your point) that a common
SCSI base class is used by different derived classes. Here we have a
common frontend class but different base classes, so to say. And we have
a mechanism to chose where to inherit from on instantiation. Precisely
this allows to keep the compatibility between in-kernel and user space
model in this series.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kiszka <jan.kiszka@web.de>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>,
Blue Swirl <blauwirbel@gmail.com>, Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 06/16] apic: Introduce backend/frontend infrastructure for KVM reuse
Date: Tue, 20 Dec 2011 00:32:00 +0100 [thread overview]
Message-ID: <4EEFC970.9030205@web.de> (raw)
In-Reply-To: <4EEFB72E.7030508@codemonkey.ws>
[-- Attachment #1: Type: text/plain, Size: 1654 bytes --]
[ Please strip your replies a bit. I always worry to miss a comment when
scrolling down dozens of pages. ]
On 2011-12-19 23:14, Anthony Liguori wrote:
>> +
>> +struct APICBackend {
>> + const char *name;
>> + void (*init)(APICState *s);
>> + void (*set_base)(APICState *s, uint64_t val);
>> + void (*set_tpr)(APICState *s, uint8_t val);
>> + void (*external_nmi)(APICState *s);
>> +
>> + QSIMPLEQ_ENTRY(APICBackend) entry;
>> +};
>
>
> Wouldn't this be more naturally modeled by making APICBackend be a base
> class?
>
> In qdev today, this would look like:
>
> struct APICCommon {
> SysBusDevice qdev;
> ...
> };
>
> struct APICCommonInfo {
> DeviceInfo qdev;
> void (*init)(APICState *s);
> void (*set_base)(APICState *s, uint64_t val);
> void (*set_tpr)(APICState *s, uint8_t val);
> void (*external_nmi)(APICState *s);
> };
>
> Take a look at SCSIDevice for an example of this in practice. This is
> nicer because as we move save/load into devices methods, it becomes
> natural to define the state and save/load function in the base class.
> Provided it only uses base class state, it lets save/load be compatible
> between both in-kernel and in-qemu device model.
The difference is (unless I completely miss your point) that a common
SCSI base class is used by different derived classes. Here we have a
common frontend class but different base classes, so to say. And we have
a mechanism to chose where to inherit from on instantiation. Precisely
this allows to keep the compatibility between in-kernel and user space
model in this series.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]
next prev parent reply other threads:[~2011-12-19 23:32 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-15 12:33 [PATCH v5 00/16] uq/master: Introduce basic irqchip support Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 01/16] msi: Generalize msix_supported to msi_supported Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 02/16] kvm: Move kvmclock into hw/kvm folder Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 03/16] apic: Stop timer on reset Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 04/16] apic: Inject external NMI events via LINT1 Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 05/16] apic: Introduce apic_report_irq_delivered Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 06/16] apic: Introduce backend/frontend infrastructure for KVM reuse Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-19 22:14 ` Anthony Liguori
2011-12-19 22:14 ` Anthony Liguori
2011-12-19 23:32 ` Jan Kiszka [this message]
2011-12-19 23:32 ` Jan Kiszka
2011-12-20 0:28 ` Anthony Liguori
2011-12-20 0:32 ` Jan Kiszka
2011-12-20 0:38 ` Anthony Liguori
2011-12-20 9:56 ` Avi Kivity
2011-12-20 9:56 ` Avi Kivity
2011-12-20 13:41 ` Anthony Liguori
2011-12-20 13:51 ` Paolo Bonzini
2011-12-20 13:51 ` Paolo Bonzini
2011-12-20 13:54 ` Anthony Liguori
2011-12-20 13:57 ` Paolo Bonzini
2011-12-20 14:07 ` Anthony Liguori
2011-12-20 17:02 ` Jan Kiszka
2011-12-20 17:02 ` Jan Kiszka
2011-12-20 19:14 ` Anthony Liguori
2011-12-20 21:23 ` Jan Kiszka
2011-12-20 21:38 ` Anthony Liguori
2011-12-20 21:45 ` Jan Kiszka
2011-12-20 21:55 ` Anthony Liguori
2011-12-20 22:20 ` Jan Kiszka
2011-12-20 22:20 ` [Qemu-devel] " Jan Kiszka
2011-12-20 23:41 ` Anthony Liguori
2011-12-20 23:45 ` Jan Kiszka
2011-12-20 14:07 ` Avi Kivity
2011-12-20 14:07 ` Avi Kivity
2011-12-15 12:33 ` [PATCH v5 07/16] apic: Open-code timer save/restore Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-19 22:21 ` Anthony Liguori
2011-12-19 22:21 ` [Qemu-devel] " Anthony Liguori
2011-12-19 23:45 ` Jan Kiszka
2011-12-19 23:45 ` [Qemu-devel] " Jan Kiszka
2011-12-20 0:31 ` Anthony Liguori
2011-12-20 0:34 ` Jan Kiszka
2011-12-20 0:34 ` [Qemu-devel] " Jan Kiszka
2011-12-20 0:53 ` Anthony Liguori
2011-12-20 0:53 ` [Qemu-devel] " Anthony Liguori
2011-12-20 1:24 ` Jan Kiszka
2011-12-20 1:24 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 08/16] i8259: Introduce backend/frontend infrastructure for KVM reuse Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 09/16] ioapic: " Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 10/16] memory: Introduce memory_region_init_reservation Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 11/16] kvm: Introduce core services for in-kernel irqchip support Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 12/16] kvm: x86: Establish IRQ0 override control Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 13/16] kvm: x86: Add user space part for in-kernel APIC Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 14/16] kvm: x86: Add user space part for in-kernel i8259 Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 15/16] kvm: x86: Add user space part for in-kernel IOAPIC Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 16/16] kvm: Arm in-kernel irqchip support Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-19 21:17 ` [PATCH v5 00/16] uq/master: Introduce basic " Marcelo Tosatti
2011-12-19 21:17 ` [Qemu-devel] " Marcelo Tosatti
2011-12-19 22:24 ` Anthony Liguori
2011-12-19 22:24 ` Anthony Liguori
2011-12-19 23:49 ` Jan Kiszka
2011-12-19 23:49 ` [Qemu-devel] " Jan Kiszka
2011-12-20 0:32 ` Anthony Liguori
2011-12-20 0:37 ` Jan Kiszka
2011-12-20 0:42 ` Anthony Liguori
2011-12-20 0:42 ` [Qemu-devel] " Anthony Liguori
2011-12-20 10:01 ` Avi Kivity
2011-12-20 10:01 ` Avi Kivity
2011-12-20 1:08 ` Anthony Liguori
2011-12-20 1:19 ` Jan Kiszka
2011-12-20 1:19 ` [Qemu-devel] " Jan Kiszka
2011-12-20 1:28 ` Jan Kiszka
2011-12-20 1:28 ` [Qemu-devel] " Jan Kiszka
2011-12-20 2:46 ` Anthony Liguori
2011-12-20 3:10 ` Anthony Liguori
2011-12-20 8:34 ` Jan Kiszka
2011-12-20 8:34 ` [Qemu-devel] " Jan Kiszka
2011-12-20 10:03 ` Avi Kivity
2011-12-20 10:03 ` [Qemu-devel] " Avi Kivity
2011-12-20 10:08 ` Avi Kivity
2011-12-20 10:08 ` Avi Kivity
2011-12-20 13:45 ` Anthony Liguori
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=4EEFC970.9030205@web.de \
--to=jan.kiszka@web.de \
--cc=aliguori@us.ibm.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--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.