* [Qemu-devel] KVM developer call minutes (Jan 19)
@ 2010-01-19 17:31 Chris Wright
2010-01-19 21:11 ` [Qemu-devel] " Dustin Kirkland
0 siblings, 1 reply; 2+ messages in thread
From: Chris Wright @ 2010-01-19 17:31 UTC (permalink / raw)
To: kvm; +Cc: qemu-devel
Minutes (please reply w/ corrections or follow-ups):
how is stable branch working (both qemu and kvm)?
- qemu 0.12 cherry picking pretty aggressively
- could use more community involvement
- any distro patches for qemu/kvm packages?
- doesn't sound like it
vhost-net command line syntax
- Anthony not a huge fan of current syntax, but will take it
- long term, 0.13, like to revisit all network syntax
- feature driven UI instead of interface driven UI (user shouldn't
have to know about tun/tap).
- hard to properly express proper raw socket interface
- users confused by subtle differences between raw and tun/
SR-IOV network device status
- require new enough host kernel to allocate VFs
- once allocated, can be used as PCI networking device in the host
- shared device w/ bridge and taps
- assigned device, assigned to guest
- need vhost-net above to get VF dedicated to guest via something like
raw socket
- not capable to manage the embedded bridge, host OS needs these interfaces
todo collection/status updates
- can use this call for some quick status updates on feature development
- could also use this to highlight areas where feature is stuck or the
todo list could use some community help.
- may prove useful as a running todo list...
mmio bug fix
- Avi is adding SSE support (kills 8 byte assumption, can be 16 bytes)
vmchannel integration
- qemu merge status
- buffering should be done by guest not qemu (to avoid using host memory)
- can't inform guest about the size of buffer (can't be infinite)
- makes transport unreliable
- guest driver should not succeed on write until consumed by host
- guest app writes buffer
- put data into ring queue
- move entries to used queue, now complete write (notify guest)
- guest kernel can force guest app to block
- VNC clipboard copy/paste
- working w/ Amit's scripts, but needs proper GNOME integration (d-bus
pointers appreciated)
- virtio console just doing one-byte at a time
- qemu char device will either block when full or drop bytes
- desparately needs to be re-written
SPICE code overview tomorrow (Wed, Jan 20, 15:00 UTC)
- Send email to Dor Laor <dlaor@redhat.com> if interested
QMP status update
- working on feature negotiation, RFC coming tomorrow
- still working on switching libvirt to using QMP handlers
- few series outstanding on libvirt list
- Markus working on self-description for protocol
^ permalink raw reply [flat|nested] 2+ messages in thread
* [Qemu-devel] Re: KVM developer call minutes (Jan 19)
2010-01-19 17:31 [Qemu-devel] KVM developer call minutes (Jan 19) Chris Wright
@ 2010-01-19 21:11 ` Dustin Kirkland
0 siblings, 0 replies; 2+ messages in thread
From: Dustin Kirkland @ 2010-01-19 21:11 UTC (permalink / raw)
To: Chris Wright; +Cc: qemu-devel, kvm
[-- Attachment #1: Type: text/plain, Size: 599 bytes --]
On Wed, Jan 20, 2010 at 6:31 AM, Chris Wright <chrisw@redhat.com> wrote:
> how is stable branch working (both qemu and kvm)?
> - qemu 0.12 cherry picking pretty aggressively
> - could use more community involvement
> - any distro patches for qemu/kvm packages?
> - doesn't sound like it
I'm currently testing a merge of qemu-kvm-0.12.1.2 for Ubuntu.
We're carrying the 3 patches attached here. All of these have been
submitted upstream. One of them is critical to fix our static arm
build. The other two are relatively minor fixes requested by our
users.
Cheers,
:-Dustin
[-- Attachment #2: 0001-Fix-missing-symbols-in-.rel-.rela.plt-sections.patch --]
[-- Type: text/x-diff, Size: 2361 bytes --]
From a3582e37351596119e947b0606021aedb19b6f61 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Minier?= <lool@dooz.org>
Date: Sun, 17 Jan 2010 12:09:38 +0100
Subject: [PATCH] Fix missing symbols in .rel/.rela.plt sections
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix .rel.plt sections in the output to not only include .rel.plt
sections from the input but also the .rel.iplt sections and to define
the hidden symbols __rel_iplt_start and __rel_iplt_end around
.rel.iplt as otherwise we get undefined references to these when
linking statically to a multilib libc.a. This fixes the static build
under i386.
Apply similar logic to rela.plt/.iplt and __rela_iplt/_plt_start/_end to
fix the static build under amd64.
Signed-off-by: Loďc Minier <lool@dooz.org>
---
i386.ld | 16 ++++++++++++++--
x86_64.ld | 16 ++++++++++++++--
2 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/i386.ld b/i386.ld
index f2dafec..f8df7bf 100644
--- a/i386.ld
+++ b/i386.ld
@@ -39,8 +39,20 @@ SECTIONS
.rela.fini : { *(.rela.fini) }
.rel.bss : { *(.rel.bss) }
.rela.bss : { *(.rela.bss) }
- .rel.plt : { *(.rel.plt) }
- .rela.plt : { *(.rela.plt) }
+ .rel.plt :
+ {
+ *(.rel.plt)
+ PROVIDE_HIDDEN (__rel_iplt_start = .);
+ *(.rel.iplt)
+ PROVIDE_HIDDEN (__rel_iplt_end = .);
+ }
+ .rela.plt :
+ {
+ *(.rela.plt)
+ PROVIDE_HIDDEN (__rela_iplt_start = .);
+ *(.rela.iplt)
+ PROVIDE_HIDDEN (__rela_iplt_end = .);
+ }
.init : { *(.init) } =0x47ff041f
.text :
{
diff --git a/x86_64.ld b/x86_64.ld
index 24ea77d..46d8d4d 100644
--- a/x86_64.ld
+++ b/x86_64.ld
@@ -35,8 +35,20 @@ SECTIONS
.rela.got : { *(.rela.got) }
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
- .rel.plt : { *(.rel.plt) }
- .rela.plt : { *(.rela.plt) }
+ .rel.plt :
+ {
+ *(.rel.plt)
+ PROVIDE_HIDDEN (__rel_iplt_start = .);
+ *(.rel.iplt)
+ PROVIDE_HIDDEN (__rel_iplt_end = .);
+ }
+ .rela.plt :
+ {
+ *(.rela.plt)
+ PROVIDE_HIDDEN (__rela_iplt_start = .);
+ *(.rela.iplt)
+ PROVIDE_HIDDEN (__rela_iplt_end = .);
+ }
.init :
{
KEEP (*(.init))
--
1.6.5
[-- Attachment #3: 0001-linux-user-adapt-uname-machine-to-emulated-CPU.patch --]
[-- Type: text/x-diff, Size: 4991 bytes --]
http://lists.gnu.org/archive/html/qemu-devel/2010-01/msg01114.html
From: Loic Minier
Date: Tue, 29 Dec 2009 22:06:13 +0100
Subject: [PATCH] linux-user: adapt uname machine to emulated CPU
---
Makefile.target | 2 +-
linux-user/cpu-uname.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++
linux-user/cpu-uname.h | 1 +
linux-user/syscall.c | 3 +-
4 files changed, 76 insertions(+), 2 deletions(-)
create mode 100644 linux-user/cpu-uname.c
create mode 100644 linux-user/cpu-uname.h
diff --git a/Makefile.target b/Makefile.target
index e661478..9f5bd17 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -95,7 +95,7 @@ $(call set-vpath, $(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR
QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \
- elfload.o linuxload.o uaccess.o gdbstub.o
+ elfload.o linuxload.o uaccess.o gdbstub.o cpu-uname.o
obj-$(TARGET_HAS_BFLT) += flatload.o
obj-$(TARGET_HAS_ELFLOAD32) += elfload32.o
diff --git a/linux-user/cpu-uname.c b/linux-user/cpu-uname.c
new file mode 100644
index 0000000..ddc37be
--- /dev/null
+++ b/linux-user/cpu-uname.c
@@ -0,0 +1,72 @@
+/*
+ * cpu to uname machine name map
+ *
+ * Copyright (c) 2009 Loďc Minier
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+
+#include "qemu.h"
+//#include "qemu-common.h"
+#include "cpu-uname.h"
+
+/* return highest utsname machine name for emulated instruction set
+ *
+ * NB: the default emulated CPU ("any") might not match any existing CPU, e.g.
+ * on ARM it has all features turned on, so there is no perfect arch string to
+ * return here */
+const char *cpu_to_uname_machine(void *cpu_env)
+{
+#ifdef TARGET_ARM
+ /* utsname machine name on linux arm is CPU arch name + endianness, e.g.
+ * armv7l; to get a list of CPU arch names from the linux source, use:
+ * grep arch_name: -A1 linux/arch/arm/mm/proc-*.S
+ * see arch/arm/kernel/setup.c: setup_processor()
+ *
+ * to test by CPU id, compare cpu_env->cp15.c0_cpuid to ARM_CPUID_*
+ * defines and to test by CPU feature, use arm_feature(cpu_env,
+ * ARM_FEATURE_*) */
+
+ /* in theory, endianness is configurable on some ARM CPUs, but this isn't
+ * used in user mode emulation */
+#ifdef TARGET_WORDS_BIGENDIAN
+#define utsname_suffix "b"
+#else
+#define utsname_suffix "l"
+#endif
+ if (arm_feature(cpu_env, ARM_FEATURE_V7))
+ return "armv7" utsname_suffix;
+ if (arm_feature(cpu_env, ARM_FEATURE_V6))
+ return "armv6" utsname_suffix;
+ /* earliest emulated CPU is ARMv5TE; qemu can emulate the 1026, but not its
+ * Jazelle support */
+ return "armv5te" utsname_suffix;
+#elif defined(TARGET_X86_64)
+ return "x86-64";
+#elif defined(TARGET_I386)
+ /* see arch/x86/kernel/cpu/bugs.c: check_bugs(), 386, 486, 586, 686 */
+ uint32_t cpuid_version = ((CPUX86State *)cpu_env)->cpuid_version;
+ int family = ((cpuid_version >> 8) & 0x0f) + ((cpuid_version >> 20) & 0xff);
+ if (family == 4)
+ return "i486";
+ if (family == 5)
+ return "i586";
+ return "i686";
+#else
+ /* default is #define-d in each arch/ subdir */
+ return UNAME_MACHINE;
+#endif
+}
diff --git a/linux-user/cpu-uname.h b/linux-user/cpu-uname.h
new file mode 100644
index 0000000..32492de
--- /dev/null
+++ b/linux-user/cpu-uname.h
@@ -0,0 +1 @@
+const char *cpu_to_uname_machine(void *cpu_env);
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index f2dd39e..9fb493f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -82,6 +82,7 @@
#include <linux/fb.h>
#include <linux/vt.h>
#include "linux_loop.h"
+#include "cpu-uname.h"
#include "qemu.h"
#include "qemu-common.h"
@@ -5739,7 +5740,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
if (!is_error(ret)) {
/* Overrite the native machine name with whatever is being
emulated. */
- strcpy (buf->machine, UNAME_MACHINE);
+ strcpy (buf->machine, cpu_to_uname_machine(cpu_env));
/* Allow the user to override the reported release. */
if (qemu_uname_release && *qemu_uname_release)
strcpy (buf->release, qemu_uname_release);
--
1.6.5
[-- Attachment #4: 05_improve-qemu-img-errors.patch --]
[-- Type: text/x-diff, Size: 792 bytes --]
qemu-img: improve error reporting
Use strerror to provide a better error message when qemu-img fails.
https://bugs.edge.launchpad.net/ubuntu/+source/qemu-kvm/+bug/418112
Signed-off-by: Dustin Kirkland <kirkland@canonical.com>
diff -uprN qemu-kvm-0.11.0~rc2/qemu-img.c qemu-kvm-0.11.0~rc2.new/qemu-img.c
--- qemu-kvm-0.11.0~rc2/qemu-img.c 2009-08-30 04:10:59.000000000 -0500
+++ qemu-kvm-0.11.0~rc2.new/qemu-img.c 2009-09-10 22:30:32.572211443 -0500
@@ -368,7 +368,7 @@ static int img_create(int argc, char **a
} else if (ret == -EFBIG) {
error("The image size is too large for file format '%s'", fmt);
} else {
- error("Error while formatting");
+ error("Error while formatting (%s)", strerror(-ret));
}
}
return 0;
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-01-19 21:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-19 17:31 [Qemu-devel] KVM developer call minutes (Jan 19) Chris Wright
2010-01-19 21:11 ` [Qemu-devel] " Dustin Kirkland
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).