From: Jan Kiszka <jan.kiszka@web.de>
To: Avi Kivity <avi@redhat.com>, Marcelo Tosatti <mtosatti@redhat.com>
Cc: kvm@vger.kernel.org, qemu-devel <qemu-devel@nongnu.org>,
Anthony Liguori <aliguori@us.ibm.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Blue Swirl <blauwirbel@gmail.com>
Subject: [RFC][PATCH 00/16] uq/master: Introduce basic irqchip support
Date: Sat, 3 Dec 2011 12:17:25 +0100 [thread overview]
Message-ID: <cover.1322910904.git.jan.kiszka@web.de> (raw)
Some weeks back I posted my MSI rework for qemu-kvm that shall once help
integrating those bits into upstream. After that I wondered how a
rewritten in-kernel irqchip model could look like and make use of this.
But then I realized that there is actually no technical need to role out
a first version of kvm irqchips that already support MSI. As the MSI
thing will likely take a few more iterations, I now decided to rush
forward with basic kvm irqchip for QEMU upstream. Here we go.
My idea was always to create proper alternatives to the existing user
space device models while keeping the vmstates 100% compatible. I think
I succeeded in this, tests worked fine so far. The kvm and the user
space models now have a common core where they share logic and specific
code modules where they differ. Also, I moved all kvm devices into
hw/kvm.
The in-kernel irqchip support can be controlled via a machine property
(-machine ...,kernel_irqchip=on), in contrast to qemu-kvm's dedicated
command line switch. This series keeps the support off by default
because we still lack the MSI bits as I explained. Also, in-kernel PIT
is not yet implemented and TPR patching/VAPIC (for Windows guests).
The merge story would basically look similar to what we did before with
the clean-room reimplementation of kvm for QEMU: Merge into upstream,
merge back into qemu-kvm, disabling the new bits for now, then gradually
switching over to the new services, specifically once they are
feature-equivalent. Of course, I will support these steps as usual.
So, feedback and review welcome!
Jan Kiszka (16):
msi: Generalize msix_supported to msi_supported
kvm: Move kvmclock into hw/kvm folder
apic: Stop timer on reset
apic: Factor out core for KVM reuse
apic: Open-code timer save/restore
i8259: Factor out core for KVM reuse
ioapic: Convert to memory API
ioapic: Reject non-dword accesses to IOWIN register
ioapic: Factor out core for KVM reuse
memory: Introduce memory_region_init_reservation
kvm: Introduce core services for in-kernel irqchip support
kvm: x86: Establish IRQ0 override control
kvm: x86: Add user space part for in-kernel APIC
kvm: x86: Add user space part for in-kernel i8259
kvm: x86: Add user space part for in-kernel IOAPIC
kvm: Arm in-kernel irqchip support
Makefile.objs | 2 +-
Makefile.target | 6 +-
configure | 1 +
hw/apic.c | 288 ++++------------------------------------
hw/apic_common.c | 262 ++++++++++++++++++++++++++++++++++++
hw/apic_internal.h | 111 +++++++++++++++
hw/i8259.c | 78 +-----------
hw/i8259_common.c | 103 ++++++++++++++
hw/i8259_internal.h | 67 +++++++++
hw/ioapic.c | 136 +++----------------
hw/ioapic_common.c | 89 ++++++++++++
hw/ioapic_internal.h | 94 +++++++++++++
hw/kvm/apic.c | 147 ++++++++++++++++++++
hw/{kvmclock.c => kvm/clock.c} | 10 +-
hw/{kvmclock.h => kvm/clock.h} | 0
hw/kvm/i8259.c | 154 +++++++++++++++++++++
hw/kvm/ioapic.c | 120 +++++++++++++++++
hw/msi.c | 8 +
hw/msi.h | 2 +
hw/msix.c | 9 +-
hw/msix.h | 2 -
hw/pc.c | 20 ++-
hw/pc.h | 1 +
hw/pc_piix.c | 67 +++++++++-
kvm-all.c | 154 +++++++++++++++++++++
kvm-stub.c | 5 +
kvm.h | 13 ++
memory.c | 35 +++++
memory.h | 15 ++
qemu-config.c | 4 +
qemu-options.hx | 5 +-
sysemu.h | 1 -
target-i386/kvm.c | 19 +++
trace-events | 2 +-
vl.c | 1 -
35 files changed, 1548 insertions(+), 483 deletions(-)
create mode 100644 hw/apic_common.c
create mode 100644 hw/apic_internal.h
create mode 100644 hw/i8259_common.c
create mode 100644 hw/i8259_internal.h
create mode 100644 hw/ioapic_common.c
create mode 100644 hw/ioapic_internal.h
create mode 100644 hw/kvm/apic.c
rename hw/{kvmclock.c => kvm/clock.c} (96%)
rename hw/{kvmclock.h => kvm/clock.h} (100%)
create mode 100644 hw/kvm/i8259.c
create mode 100644 hw/kvm/ioapic.c
--
1.7.3.4
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kiszka <jan.kiszka@web.de>
To: Avi Kivity <avi@redhat.com>, Marcelo Tosatti <mtosatti@redhat.com>
Cc: 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: [Qemu-devel] [RFC][PATCH 00/16] uq/master: Introduce basic irqchip support
Date: Sat, 3 Dec 2011 12:17:25 +0100 [thread overview]
Message-ID: <cover.1322910904.git.jan.kiszka@web.de> (raw)
Some weeks back I posted my MSI rework for qemu-kvm that shall once help
integrating those bits into upstream. After that I wondered how a
rewritten in-kernel irqchip model could look like and make use of this.
But then I realized that there is actually no technical need to role out
a first version of kvm irqchips that already support MSI. As the MSI
thing will likely take a few more iterations, I now decided to rush
forward with basic kvm irqchip for QEMU upstream. Here we go.
My idea was always to create proper alternatives to the existing user
space device models while keeping the vmstates 100% compatible. I think
I succeeded in this, tests worked fine so far. The kvm and the user
space models now have a common core where they share logic and specific
code modules where they differ. Also, I moved all kvm devices into
hw/kvm.
The in-kernel irqchip support can be controlled via a machine property
(-machine ...,kernel_irqchip=on), in contrast to qemu-kvm's dedicated
command line switch. This series keeps the support off by default
because we still lack the MSI bits as I explained. Also, in-kernel PIT
is not yet implemented and TPR patching/VAPIC (for Windows guests).
The merge story would basically look similar to what we did before with
the clean-room reimplementation of kvm for QEMU: Merge into upstream,
merge back into qemu-kvm, disabling the new bits for now, then gradually
switching over to the new services, specifically once they are
feature-equivalent. Of course, I will support these steps as usual.
So, feedback and review welcome!
Jan Kiszka (16):
msi: Generalize msix_supported to msi_supported
kvm: Move kvmclock into hw/kvm folder
apic: Stop timer on reset
apic: Factor out core for KVM reuse
apic: Open-code timer save/restore
i8259: Factor out core for KVM reuse
ioapic: Convert to memory API
ioapic: Reject non-dword accesses to IOWIN register
ioapic: Factor out core for KVM reuse
memory: Introduce memory_region_init_reservation
kvm: Introduce core services for in-kernel irqchip support
kvm: x86: Establish IRQ0 override control
kvm: x86: Add user space part for in-kernel APIC
kvm: x86: Add user space part for in-kernel i8259
kvm: x86: Add user space part for in-kernel IOAPIC
kvm: Arm in-kernel irqchip support
Makefile.objs | 2 +-
Makefile.target | 6 +-
configure | 1 +
hw/apic.c | 288 ++++------------------------------------
hw/apic_common.c | 262 ++++++++++++++++++++++++++++++++++++
hw/apic_internal.h | 111 +++++++++++++++
hw/i8259.c | 78 +-----------
hw/i8259_common.c | 103 ++++++++++++++
hw/i8259_internal.h | 67 +++++++++
hw/ioapic.c | 136 +++----------------
hw/ioapic_common.c | 89 ++++++++++++
hw/ioapic_internal.h | 94 +++++++++++++
hw/kvm/apic.c | 147 ++++++++++++++++++++
hw/{kvmclock.c => kvm/clock.c} | 10 +-
hw/{kvmclock.h => kvm/clock.h} | 0
hw/kvm/i8259.c | 154 +++++++++++++++++++++
hw/kvm/ioapic.c | 120 +++++++++++++++++
hw/msi.c | 8 +
hw/msi.h | 2 +
hw/msix.c | 9 +-
hw/msix.h | 2 -
hw/pc.c | 20 ++-
hw/pc.h | 1 +
hw/pc_piix.c | 67 +++++++++-
kvm-all.c | 154 +++++++++++++++++++++
kvm-stub.c | 5 +
kvm.h | 13 ++
memory.c | 35 +++++
memory.h | 15 ++
qemu-config.c | 4 +
qemu-options.hx | 5 +-
sysemu.h | 1 -
target-i386/kvm.c | 19 +++
trace-events | 2 +-
vl.c | 1 -
35 files changed, 1548 insertions(+), 483 deletions(-)
create mode 100644 hw/apic_common.c
create mode 100644 hw/apic_internal.h
create mode 100644 hw/i8259_common.c
create mode 100644 hw/i8259_internal.h
create mode 100644 hw/ioapic_common.c
create mode 100644 hw/ioapic_internal.h
create mode 100644 hw/kvm/apic.c
rename hw/{kvmclock.c => kvm/clock.c} (96%)
rename hw/{kvmclock.h => kvm/clock.h} (100%)
create mode 100644 hw/kvm/i8259.c
create mode 100644 hw/kvm/ioapic.c
--
1.7.3.4
next reply other threads:[~2011-12-03 11:17 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-03 11:17 Jan Kiszka [this message]
2011-12-03 11:17 ` [Qemu-devel] [RFC][PATCH 00/16] uq/master: Introduce basic irqchip support Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 01/16] msi: Generalize msix_supported to msi_supported Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-04 10:42 ` Michael S. Tsirkin
2011-12-04 10:42 ` [Qemu-devel] " Michael S. Tsirkin
2011-12-04 10:42 ` Jan Kiszka
2011-12-04 10:42 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:12 ` Avi Kivity
2011-12-04 13:12 ` [Qemu-devel] " Avi Kivity
2011-12-04 13:16 ` Jan Kiszka
2011-12-04 13:16 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:26 ` Avi Kivity
2011-12-04 13:26 ` [Qemu-devel] " Avi Kivity
2011-12-03 11:17 ` [RFC][PATCH 02/16] kvm: Move kvmclock into hw/kvm folder Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 19:00 ` Andreas Färber
2011-12-03 19:00 ` Andreas Färber
2011-12-03 22:33 ` Jan Kiszka
2011-12-03 22:33 ` [Qemu-devel] " Jan Kiszka
2011-12-04 10:43 ` Avi Kivity
2011-12-04 10:43 ` Avi Kivity
2011-12-04 10:46 ` Jan Kiszka
2011-12-04 10:46 ` Jan Kiszka
2011-12-05 10:43 ` Andreas Färber
2011-12-03 11:17 ` [RFC][PATCH 03/16] apic: Stop timer on reset Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 04/16] apic: Factor out core for KVM reuse Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 05/16] apic: Open-code timer save/restore Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 06/16] i8259: Factor out core for KVM reuse Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 07/16] ioapic: Convert to memory API Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 08/16] ioapic: Reject non-dword accesses to IOWIN register Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 09/16] ioapic: Factor out core for KVM reuse Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 10/16] memory: Introduce memory_region_init_reservation Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:20 ` Avi Kivity
2011-12-04 13:20 ` [Qemu-devel] " Avi Kivity
2011-12-04 13:24 ` Jan Kiszka
2011-12-04 13:24 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 11/16] kvm: Introduce core services for in-kernel irqchip support Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:23 ` Avi Kivity
2011-12-04 13:23 ` [Qemu-devel] " Avi Kivity
2011-12-04 13:27 ` Jan Kiszka
2011-12-04 13:27 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:28 ` Avi Kivity
2011-12-04 13:28 ` [Qemu-devel] " Avi Kivity
2011-12-04 13:30 ` Jan Kiszka
2011-12-04 13:30 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:32 ` Avi Kivity
2011-12-04 13:32 ` [Qemu-devel] " Avi Kivity
2011-12-03 11:17 ` [RFC][PATCH 12/16] kvm: x86: Establish IRQ0 override control Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 13/16] kvm: x86: Add user space part for in-kernel APIC Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:24 ` Avi Kivity
2011-12-04 13:24 ` [Qemu-devel] " Avi Kivity
2011-12-03 11:17 ` [RFC][PATCH 14/16] kvm: x86: Add user space part for in-kernel i8259 Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:31 ` Avi Kivity
2011-12-04 13:31 ` [Qemu-devel] " Avi Kivity
2011-12-04 13:42 ` Jan Kiszka
2011-12-04 13:42 ` [Qemu-devel] " Jan Kiszka
2011-12-04 13:49 ` Avi Kivity
2011-12-04 13:49 ` [Qemu-devel] " Avi Kivity
2011-12-04 13:51 ` Jan Kiszka
2011-12-04 13:51 ` [Qemu-devel] " Jan Kiszka
2011-12-04 14:04 ` Avi Kivity
2011-12-04 14:04 ` [Qemu-devel] " Avi Kivity
2011-12-04 14:06 ` Jan Kiszka
2011-12-04 14:06 ` [Qemu-devel] " Jan Kiszka
2011-12-04 15:12 ` Avi Kivity
2011-12-04 15:12 ` [Qemu-devel] " Avi Kivity
2011-12-04 15:19 ` Jan Kiszka
2011-12-04 15:19 ` [Qemu-devel] " Jan Kiszka
2011-12-04 16:35 ` Avi Kivity
2011-12-04 16:35 ` [Qemu-devel] " Avi Kivity
2011-12-04 21:31 ` Blue Swirl
2011-12-04 21:31 ` [Qemu-devel] " Blue Swirl
2011-12-04 21:38 ` Jan Kiszka
2011-12-04 21:38 ` [Qemu-devel] " Jan Kiszka
2011-12-05 10:01 ` Avi Kivity
2011-12-05 10:01 ` [Qemu-devel] " Avi Kivity
2011-12-05 11:37 ` Jan Kiszka
2011-12-05 11:37 ` [Qemu-devel] " Jan Kiszka
2011-12-05 12:36 ` Avi Kivity
2011-12-05 12:36 ` [Qemu-devel] " Avi Kivity
2011-12-05 12:47 ` Jan Kiszka
2011-12-05 12:47 ` [Qemu-devel] " Jan Kiszka
2011-12-05 13:14 ` Avi Kivity
2011-12-05 13:14 ` [Qemu-devel] " Avi Kivity
2011-12-05 13:29 ` Jan Kiszka
2011-12-05 13:29 ` [Qemu-devel] " Jan Kiszka
2011-12-05 13:36 ` Avi Kivity
2011-12-05 13:36 ` [Qemu-devel] " Avi Kivity
2011-12-05 13:55 ` Jan Kiszka
2011-12-05 13:55 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 15/16] kvm: x86: Add user space part for in-kernel IOAPIC Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
2011-12-03 11:17 ` [RFC][PATCH 16/16] kvm: Arm in-kernel irqchip support Jan Kiszka
2011-12-03 11:17 ` [Qemu-devel] " Jan Kiszka
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=cover.1322910904.git.jan.kiszka@web.de \
--to=jan.kiszka@web.de \
--cc=aliguori@us.ibm.com \
--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.