From: Anthony Liguori <anthony@codemonkey.ws>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: Luiz Capitulino <lcapitulino@redhat.com>,
qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] Re: [PATCH] vhost: fix features ack
Date: Wed, 31 Mar 2010 14:42:27 -0500 [thread overview]
Message-ID: <4BB3A5A3.7000106@codemonkey.ws> (raw)
In-Reply-To: <r2yf43fc5581003311238le9a3e6a6pb82403c96e37b133@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2886 bytes --]
On 03/31/2010 02:38 PM, Blue Swirl wrote:
> On 3/31/10, Michael S. Tsirkin<mst@redhat.com> wrote:
>
>> On Wed, Mar 31, 2010 at 03:38:05PM -0300, Luiz Capitulino wrote:
>> > On Wed, 31 Mar 2010 13:26:23 -0500
>> > Anthony Liguori<anthony@codemonkey.ws> wrote:
>> >
>> > > On 03/31/2010 01:20 PM, Michael S. Tsirkin wrote:
>> > > > From: David L Stevens<dlstevens@us.ibm.com>
>> > > >
>> > > > vhost driver in qemu didn't ack features, and this happens
>> > > > to work because we don't really require any features. However,
>> > > > it's better not to rely on this. This patch passes features to
>> > > > vhost as guest acks them.
>> > > >
>> > > > Signed-off-by: David L Stevens<dlstevens@us.ibm.com>
>> > > > Signed-off-by: Michael S. Tsirkin<mst@redhat.com>
>> > > > ---
>> > > >
>> > > > Anthony, here's a fixup patch to address an issue in vhost
>> > > > patches. Incidentially, what's the status of the vhost patchset?
>> > > >
>> > >
>> > > http://repo.or.cz/w/qemu/aliguori-queue.git vhost
>> > >
>> > > Is what I'm currently testing. With vhost disabled, the following seg
>> > > faults:
>> > >
>> > > qemu-system-x86_64 -hda ~/images/linux.img -net tap -net
>> > > nic,model=virtio -enable-kvm
>> > >
>> > > But not when using TCG. I'm not sure that it's your patches at fault
>> > > and I'm attempting to bisect now to figure that out.
>> >
>> > Probably this is the same segfault I'm getting right now in master,
>> > bisect says it's:
>> >
>> > """
>> > commit ad96090a01d848df67d70c5259ed8aa321fa8716
>> > Author: Blue Swirl<blauwirbel@gmail.com>
>> > Date: Mon Mar 29 19:23:52 2010 +0000
>> >
>> > Refactor target specific handling, compile vl.c only once
>> > """
>>
>> Why are the compile once patches helpful? They seem to introduce
>> churn and bugs, they actively make it harder to extend qemu as you can't use
>> target-specific code in code that is compiled once, they might have
>> performance penalty - and what do we gain? Any given user is unlikely to
>> need to build on more than one target, distros have enough computing
>> power to build in parallel.
>>
> As has been explained many times, knowledge about CPU specific
> features has no place in devices. Actively removing CPU specifics from
> devices is good but preventing new bad code to be committed is better.
>
> I don't have distro computing powers (unless some distro's compute
> center only has two low power machines) and I guess some other
> developers don't have either. All developers and patch submitters are
> expected to compile all targets. This patch set has decreased the
> number of files compiled by about 20%.
>
BTW, this seems to do it. I'll commit after some testing.
Regards,
Anthony Liguori
[-- Attachment #2: 0001-Fix-enable-kvm.patch --]
[-- Type: text/plain, Size: 4387 bytes --]
From 7c1920d330fcf7ed5b477bc8e22ca4f7e5e2b343 Mon Sep 17 00:00:00 2001
From: Anthony Liguori <aliguori@us.ibm.com>
Date: Wed, 31 Mar 2010 14:20:11 -0500
Subject: [PATCH] Fix -enable-kvm
commit ad96090a01d848df67d70c5259ed8aa321fa8716
Author: Blue Swirl <blauwirbel@gmail.com>
Date: Mon Mar 29 19:23:52 2010 +0000
Refactor target specific handling, compile vl.c only once
Introduced a regression in -enable-kvm because it left CONFIG_KVM in kvm.h
while allowing compiled-once objects to use kvm.h. CONFIG_KVM is set on a
per-target basis.
commit 53b67b3052f39b049bc7c79ae1ce132c90098c6c
Author: Blue Swirl <blauwirbel@gmail.com>
Date: Mon Mar 29 19:23:52 2010 +0000
Compile acpi only once
Also regressed -enable-kvm because of a thinko.
Once we make these changes, the if(0) magic of kvm_enabled() no longer works
so we need empty stub functions.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
hw/acpi.c | 3 +-
kvm-generic.c | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
kvm.h | 9 ++--
3 files changed, 139 insertions(+), 6 deletions(-)
create mode 100644 kvm-generic.c
diff --git a/hw/acpi.c b/hw/acpi.c
index 33c6bc8..5c01c2e 100644
--- a/hw/acpi.c
+++ b/hw/acpi.c
@@ -529,7 +529,8 @@ i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
register_ioport_write(ACPI_DBG_IO_ADDR, 4, 4, acpi_dbg_writel, s);
- if (kvm_enabled) {
+ s->kvm_enabled = kvm_enabled;
+ if (s->kvm_enabled) {
/* Mark SMM as already inited to prevent SMM from running. KVM does not
* support SMM mode. */
pci_conf[0x5B] = 0x02;
diff --git a/kvm-generic.c b/kvm-generic.c
new file mode 100644
index 0000000..c67fb55
--- /dev/null
+++ b/kvm-generic.c
@@ -0,0 +1,133 @@
+/*
+ * QEMU KVM support
+ *
+ * Copyright IBM, Corp. 2010
+ * Red Hat, Inc. 2008
+ *
+ * Authors:
+ * Anthony Liguori <aliguori@us.ibm.com>
+ * Glauber Costa <gcosta@redhat.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include "qemu-common.h"
+#include "cpu.h"
+#include "kvm.h"
+
+int kvm_init(int smp_cpus)
+{
+ return -ENOSYS;
+}
+
+int kvm_init_vcpu(CPUState *env)
+{
+ return -ENOSYS;
+}
+
+int kvm_cpu_exec(CPUState *env)
+{
+ return -ENOSYS;
+}
+
+int kvm_log_start(target_phys_addr_t phys_addr, ram_addr_t size)
+{
+ return -ENOSYS;
+}
+
+int kvm_log_stop(target_phys_addr_t phys_addr, ram_addr_t size)
+{
+ return -ENOSYS;
+}
+
+int kvm_has_sync_mmu(void)
+{
+ return -ENOSYS;
+}
+
+int kvm_has_vcpu_events(void)
+{
+ return -ENOSYS;
+}
+
+int kvm_has_robust_singlestep(void)
+{
+ return -ENOSYS;
+}
+
+void kvm_setup_guest_memory(void *start, size_t size)
+{
+}
+
+int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
+{
+ return -ENOSYS;
+}
+
+int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
+{
+ return -ENOSYS;
+}
+
+void kvm_flush_coalesced_mmio_buffer(void)
+{
+}
+
+int kvm_insert_breakpoint(CPUState *current_env, target_ulong addr,
+ target_ulong len, int type)
+{
+ return -ENOSYS;
+}
+
+int kvm_remove_breakpoint(CPUState *current_env, target_ulong addr,
+ target_ulong len, int type)
+{
+ return -ENOSYS;
+}
+
+void kvm_remove_all_breakpoints(CPUState *current_env)
+{
+}
+
+int kvm_update_guest_debug(CPUState *env, unsigned long reinject_trap)
+{
+ return -ENOSYS;
+}
+
+#ifndef _WIN32
+int kvm_set_signal_mask(CPUState *env, const sigset_t *sigset)
+{
+ return -ENOSYS;
+}
+#endif
+
+int kvm_pit_in_kernel(void)
+{
+ return -ENOSYS;
+}
+
+int kvm_irqchip_in_kernel(void)
+{
+ return -ENOSYS;
+}
+
+void kvm_cpu_synchronize_state(CPUState *env)
+{
+}
+
+void kvm_cpu_synchronize_post_reset(CPUState *env)
+{
+}
+
+void kvm_cpu_synchronize_post_init(CPUState *env)
+{
+}
+
+/* This is evil but the KVM PPC code needs refactoring */
+void kvmppc_init(void);
+
+void kvmppc_init(void)
+{
+}
diff --git a/kvm.h b/kvm.h
index 4f77188..9f57fd5 100644
--- a/kvm.h
+++ b/kvm.h
@@ -19,11 +19,10 @@
extern int kvm_allowed;
-#ifdef CONFIG_KVM
-#define kvm_enabled() (kvm_allowed)
-#else
-#define kvm_enabled() (0)
-#endif
+static inline int kvm_enabled(void)
+{
+ return kvm_allowed;
+}
struct kvm_run;
--
1.6.5.2
next prev parent reply other threads:[~2010-03-31 19:42 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-31 18:20 [Qemu-devel] [PATCH] vhost: fix features ack Michael S. Tsirkin
2010-03-31 18:26 ` [Qemu-devel] " Anthony Liguori
2010-03-31 18:38 ` Luiz Capitulino
2010-03-31 19:07 ` Michael S. Tsirkin
2010-03-31 19:24 ` Anthony Liguori
2010-03-31 19:25 ` Michael S. Tsirkin
2010-03-31 19:37 ` Anthony Liguori
2010-03-31 19:54 ` Blue Swirl
2010-03-31 19:55 ` Anthony Liguori
2010-03-31 20:06 ` Nathan Froyd
2010-03-31 19:46 ` Blue Swirl
2010-03-31 22:45 ` Aurelien Jarno
2010-04-01 2:45 ` Anthony Liguori
2010-04-01 2:46 ` Anthony Liguori
2010-04-01 15:54 ` Blue Swirl
2010-04-01 16:08 ` Anthony Liguori
2010-04-01 16:08 ` Blue Swirl
2010-03-31 19:38 ` Blue Swirl
2010-03-31 19:42 ` Anthony Liguori [this message]
2010-03-31 20:03 ` Blue Swirl
2010-04-01 12:09 ` Paul Brook
2010-04-01 14:53 ` Michael S. Tsirkin
2010-04-04 12:14 ` Michael S. Tsirkin
2010-04-13 21:58 ` [Qemu-devel] " Aurelien Jarno
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=4BB3A5A3.7000106@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=blauwirbel@gmail.com \
--cc=lcapitulino@redhat.com \
--cc=mst@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.