diff --git a/.cvsignore b/.cvsignore
index 3e16177..d7cbda4 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-qemu-1.0.tar.gz
+kvm-84.git-snapshot-20090303.tar.gz
diff --git a/kvm-fix-strayR.patch b/kvm-fix-strayR.patch
new file mode 100644
index 0000000..a2d3f85
--- /dev/null
+++ b/kvm-fix-strayR.patch
@@ -0,0 +1,87 @@
+Newer gcc versions support a R"..." construct, so we can't use
+"abc"R"def" constructs without any space between R and the quotes,
+when using -std=gnu99 (that is used by the user/test code).
+
+This fixes this error:
+
+  test/x86/vmexit.c:34:26: error: invalid character ' ' in raw string
+  delimiter
+  test/x86/vmexit.c: In function ‘main’:
+  test/x86/vmexit.c:34: error: stray ‘R’ in program
+  test/x86/vmexit.c:34:46: error: invalid character '
+  ' in raw string delimiter
+  test/x86/vmexit.c:34: error: expected ‘:’ or ‘)’ before string constant
+  test/x86/vmexit.c:34: error: stray ‘R’ in program
+
+Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
+---
+ user/test/x86/apic.c   |   32 ++++++++++++++++----------------
+ user/test/x86/vmexit.c |    2 +-
+ 2 files changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/user/test/x86/apic.c b/user/test/x86/apic.c
+index 9c6205b..2d963dc 100644
+--- a/user/test/x86/apic.c
++++ b/user/test/x86/apic.c
+@@ -54,14 +54,14 @@ asm (
+     "push %r9  \n\t"
+     "push %r8  \n\t"
+ #endif
+-    "push %"R"di \n\t"
+-    "push %"R"si \n\t"
+-    "push %"R"bp \n\t"
+-    "push %"R"sp \n\t"
+-    "push %"R"bx \n\t"
+-    "push %"R"dx \n\t"
+-    "push %"R"cx \n\t"
+-    "push %"R"ax \n\t"
++    "push %" R "di \n\t"
++    "push %" R "si \n\t"
++    "push %" R "bp \n\t"
++    "push %" R "sp \n\t"
++    "push %" R "bx \n\t"
++    "push %" R "dx \n\t"
++    "push %" R "cx \n\t"
++    "push %" R "ax \n\t"
+ #ifdef __x86_64__
+     "mov %rsp, %rdi \n\t"
+     "callq *8*16(%rsp) \n\t"
+@@ -70,14 +70,14 @@ asm (
+     "calll *4+4*8(%esp) \n\t"
+     "add $4, %esp \n\t"
+ #endif
+-    "pop %"R"ax \n\t"
+-    "pop %"R"cx \n\t"
+-    "pop %"R"dx \n\t"
+-    "pop %"R"bx \n\t"
+-    "pop %"R"bp \n\t"
+-    "pop %"R"bp \n\t"
+-    "pop %"R"si \n\t"
+-    "pop %"R"di \n\t"
++    "pop %" R "ax \n\t"
++    "pop %" R "cx \n\t"
++    "pop %" R "dx \n\t"
++    "pop %" R "bx \n\t"
++    "pop %" R "bp \n\t"
++    "pop %" R "bp \n\t"
++    "pop %" R "si \n\t"
++    "pop %" R "di \n\t"
+ #ifdef __x86_64__
+     "pop %r8  \n\t"
+     "pop %r9  \n\t"
+diff --git a/user/test/x86/vmexit.c b/user/test/x86/vmexit.c
+index bd57bfa..7339e2b 100644
+--- a/user/test/x86/vmexit.c
++++ b/user/test/x86/vmexit.c
+@@ -31,7 +31,7 @@ int main()
+ 
+ 	t1 = rdtsc();
+ 	for (i = 0; i < N; ++i)
+-		asm volatile ("push %%"R"bx; cpuid; pop %%"R"bx"
++		asm volatile ("push %%" R "bx; cpuid; pop %%" R "bx"
+ 			      : : : "eax", "ecx", "edx");
+ 	t2 = rdtsc();
+ 	printf("vmexit latency: %d\n", (int)((t2 - t1) / N));
+-- 
+1.6.0.2.GIT
+
diff --git a/kvm-upstream-ppc.patch b/kvm-upstream-ppc.patch
new file mode 100644
index 0000000..723999a
--- /dev/null
+++ b/kvm-upstream-ppc.patch
@@ -0,0 +1,58 @@
+From 1efd319579c8f34974d654b0a5ac5144424e693e Mon Sep 17 00:00:00 2001
+From: Glauber Costa <glommer@redhat.com>
+Date: Fri, 13 Feb 2009 13:00:31 -0500
+Subject: [PATCH] use KVM_UPSTREAM for ppc.
+
+ppc should compile with upstream qemu code, so, put these
+defines in ppc specific code that references kvm functions.
+
+We don put them in config.h in this case, since there are
+files (like vl.c) that includes both kvm.h and qemu-kvm.h,
+and would break compilation.
+
+Signed-off-by: Glauber Costa <glommer@redhat.com>
+---
+ qemu/hw/ppc440.c         |    1 +
+ qemu/hw/ppc440_bamboo.c  |    1 +
+ qemu/target-ppc/helper.c |    1 +
+ 3 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/qemu/hw/ppc440.c b/qemu/hw/ppc440.c
+index 00d82e4..164c326 100644
+--- a/qemu/hw/ppc440.c
++++ b/qemu/hw/ppc440.c
+@@ -18,6 +18,7 @@
+ #include "ppc440.h"
+ #include "ppc405.h"
+ #include "sysemu.h"
++#define KVM_UPSTREAM
+ #include "kvm.h"
+ 
+ #define PPC440EP_PCI_CONFIG     0xeec00000
+diff --git a/qemu/hw/ppc440_bamboo.c b/qemu/hw/ppc440_bamboo.c
+index fbd447c..60ddaf4 100644
+--- a/qemu/hw/ppc440_bamboo.c
++++ b/qemu/hw/ppc440_bamboo.c
+@@ -21,6 +21,7 @@
+ #include "boards.h"
+ #include "sysemu.h"
+ #include "ppc440.h"
++#define KVM_UPSTREAM
+ #include "kvm.h"
+ #include "kvm_ppc.h"
+ #include "device_tree.h"
+diff --git a/qemu/target-ppc/helper.c b/qemu/target-ppc/helper.c
+index fc62a63..d49acaf 100644
+--- a/qemu/target-ppc/helper.c
++++ b/qemu/target-ppc/helper.c
+@@ -29,6 +29,7 @@
+ #include "exec-all.h"
+ #include "helper_regs.h"
+ #include "qemu-common.h"
++#define KVM_UPSTREAM
+ #include "kvm.h"
+ 
+ //#define DEBUG_MMU
+-- 
+1.5.6.5
+
diff --git a/qemu-sasl-01-tls-handshake-fix.patch b/qemu-sasl-01-tls-handshake-fix.patch
index 6cc39c9..ded8e4d 100644
--- a/qemu-sasl-01-tls-handshake-fix.patch
+++ b/qemu-sasl-01-tls-handshake-fix.patch
@@ -22,9 +22,10 @@ this patch.
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r ff004fb525e7 vnc.c
---- a/vnc.c	Thu Feb 19 11:26:55 2009 +0000
-+++ b/vnc.c	Thu Feb 19 11:27:44 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -2096,14 +2096,6 @@ static int protocol_client_vencrypt_auth
  	    VNC_DEBUG("Failed to complete TLS\n");
  	    return 0;
diff --git a/qemu-sasl-02-vnc-monitor-info.patch b/qemu-sasl-02-vnc-monitor-info.patch
index a5dd517..3af5b99 100644
--- a/qemu-sasl-02-vnc-monitor-info.patch
+++ b/qemu-sasl-02-vnc-monitor-info.patch
@@ -38,9 +38,10 @@ important.
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r 4dbf24b567c4 vnc.c
---- a/vnc.c	Thu Feb 19 11:27:44 2009 +0000
-+++ b/vnc.c	Thu Feb 19 11:53:31 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -166,19 +166,136 @@ struct VncState
  static VncDisplay *vnc_display; /* needed for info vnc */
  static DisplayChangeListener *dcl;
@@ -158,16 +159,17 @@ diff -r 4dbf24b567c4 vnc.c
 -	term_printf("VNC server active on: ");
 -	term_print_filename(vnc_display->display);
 -	term_printf("\n");
+-
+-	if (vnc_display->clients == NULL)
+-	    term_printf("No client connected\n");
+-	else
+-	    term_printf("Client connected\n");
 +    if (vnc_display == NULL || vnc_display->display == NULL) {
 +	term_printf("Server: disabled\n");
 +    } else {
 +	char *serverAddr = vnc_socket_local_addr("     address: %s:%s\n",
 +						 vnc_display->lsock);
- 
--	if (vnc_display->clients == NULL)
--	    term_printf("No client connected\n");
--	else
--	    term_printf("Client connected\n");
++
 +	if (!serverAddr)
 +	    return;
 +
diff --git a/qemu-sasl-03-display-keymaps.patch b/qemu-sasl-03-display-keymaps.patch
index 4303760..250deee 100644
--- a/qemu-sasl-03-display-keymaps.patch
+++ b/qemu-sasl-03-display-keymaps.patch
@@ -20,10 +20,11 @@ causing clashing definitions.
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r 9ccd7a5b0382 Makefile
---- a/Makefile	Thu Feb 19 11:54:21 2009 +0000
-+++ b/Makefile	Thu Feb 19 13:15:19 2009 +0000
-@@ -137,6 +137,7 @@ endif
+Index: kvm-84.git-snapshot-20090303/qemu/Makefile
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/Makefile
++++ kvm-84.git-snapshot-20090303/qemu/Makefile
+@@ -141,6 +141,7 @@ endif
  AUDIO_OBJS+= wavcapture.o
  OBJS+=$(addprefix audio/, $(AUDIO_OBJS))
  
@@ -31,7 +32,7 @@ diff -r 9ccd7a5b0382 Makefile
  ifdef CONFIG_SDL
  OBJS+=sdl.o x_keymap.o
  endif
-@@ -161,15 +162,17 @@ LIBS+=$(VDE_LIBS)
+@@ -165,15 +166,17 @@ LIBS+=$(VDE_LIBS)
  
  cocoa.o: cocoa.m
  
@@ -52,9 +53,10 @@ diff -r 9ccd7a5b0382 Makefile
  
  bt-host.o: CFLAGS += $(CONFIG_BLUEZ_CFLAGS)
  
-diff -r 9ccd7a5b0382 curses.c
---- a/curses.c	Thu Feb 19 11:54:21 2009 +0000
-+++ b/curses.c	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/curses.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/curses.c
++++ kvm-84.git-snapshot-20090303/qemu/curses.c
 @@ -158,7 +158,6 @@ static void curses_cursor_position(Displ
  /* generic keyboard conversion */
  
@@ -72,9 +74,10 @@ diff -r 9ccd7a5b0382 curses.c
          if (!kbd_layout)
              exit(1);
      }
-diff -r 9ccd7a5b0382 curses_keys.h
---- a/curses_keys.h	Thu Feb 19 11:54:21 2009 +0000
-+++ b/curses_keys.h	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/curses_keys.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/curses_keys.h
++++ kvm-84.git-snapshot-20090303/qemu/curses_keys.h
 @@ -21,6 +21,10 @@
   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   * THE SOFTWARE.
@@ -98,9 +101,10 @@ diff -r 9ccd7a5b0382 curses_keys.h
  static const name2keysym_t name2keysym[] = {
      /* Plain ASCII */
      { "space", 0x020 },
-diff -r 9ccd7a5b0382 keymaps.c
---- a/keymaps.c	Thu Feb 19 11:54:21 2009 +0000
-+++ b/keymaps.c	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/keymaps.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/keymaps.c
++++ kvm-84.git-snapshot-20090303/qemu/keymaps.c
 @@ -22,34 +22,20 @@
   * THE SOFTWARE.
   */
@@ -206,9 +210,10 @@ diff -r 9ccd7a5b0382 keymaps.c
  {
      kbd_layout_t *k = kbd_layout;
      struct key_range *kr;
-diff -r 9ccd7a5b0382 keymaps.h
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/keymaps.h	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/keymaps.h
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/keymaps.h
 @@ -0,0 +1,60 @@
 +/*
 + * QEMU keysym to keycode conversion using rdesktop keymaps
@@ -270,9 +275,10 @@ diff -r 9ccd7a5b0382 keymaps.h
 +int keysym_is_numlock(void *kbd_layout, int keysym);
 +
 +#endif /* __QEMU_KEYMAPS_H__ */
-diff -r 9ccd7a5b0382 sdl.c
---- a/sdl.c	Thu Feb 19 11:54:21 2009 +0000
-+++ b/sdl.c	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/sdl.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/sdl.c
++++ kvm-84.git-snapshot-20090303/qemu/sdl.c
 @@ -107,7 +107,6 @@ static void sdl_resize(DisplayState *ds)
  /* generic keyboard conversion */
  
@@ -290,9 +296,10 @@ diff -r 9ccd7a5b0382 sdl.c
          if (!kbd_layout)
              exit(1);
      }
-diff -r 9ccd7a5b0382 sdl_keysym.h
---- a/sdl_keysym.h	Thu Feb 19 11:54:21 2009 +0000
-+++ b/sdl_keysym.h	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/sdl_keysym.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/sdl_keysym.h
++++ kvm-84.git-snapshot-20090303/qemu/sdl_keysym.h
 @@ -1,7 +1,6 @@
 -typedef struct {
 -	const char* name;
@@ -304,9 +311,10 @@ diff -r 9ccd7a5b0382 sdl_keysym.h
  static const name2keysym_t name2keysym[]={
  /* ascii */
      { "space",                0x020},
-diff -r 9ccd7a5b0382 vnc.c
---- a/vnc.c	Thu Feb 19 11:54:21 2009 +0000
-+++ b/vnc.c	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -35,7 +35,6 @@
  
  #include "vnc.h"
@@ -327,9 +335,10 @@ diff -r 9ccd7a5b0382 vnc.c
  
      if (!vs->kbd_layout)
  	exit(1);
-diff -r 9ccd7a5b0382 vnc_keysym.h
---- a/vnc_keysym.h	Thu Feb 19 11:54:21 2009 +0000
-+++ b/vnc_keysym.h	Thu Feb 19 13:15:19 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc_keysym.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc_keysym.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc_keysym.h
 @@ -1,7 +1,6 @@
 -typedef struct {
 -	const char* name;
diff --git a/qemu-sasl-04-vnc-struct.patch b/qemu-sasl-04-vnc-struct.patch
index a5937c6..0863596 100644
--- a/qemu-sasl-04-vnc-struct.patch
+++ b/qemu-sasl-04-vnc-struct.patch
@@ -9,9 +9,10 @@ and SASL auth mechanisms to be moved out of the main vnc.c file.
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r 216ec7d1e30f vnc.c
---- a/vnc.c	Thu Feb 19 13:15:19 2009 +0000
-+++ b/vnc.c	Thu Feb 19 13:25:09 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -3,6 +3,7 @@
   *
   * Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws>
@@ -151,9 +152,10 @@ diff -r 216ec7d1e30f vnc.c
  
  static VncDisplay *vnc_display; /* needed for info vnc */
  static DisplayChangeListener *dcl;
-diff -r 216ec7d1e30f vnc.h
---- a/vnc.h	Thu Feb 19 13:15:19 2009 +0000
-+++ b/vnc.h	Thu Feb 19 13:25:09 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc.h
 @@ -1,5 +1,148 @@
 -#ifndef __VNCTIGHT_H
 -#define __VNCTIGHT_H
diff --git a/qemu-sasl-05-vnc-tls-vencrypt.patch b/qemu-sasl-05-vnc-tls-vencrypt.patch
index ab110c4..c9fadea 100644
--- a/qemu-sasl-05-vnc-tls-vencrypt.patch
+++ b/qemu-sasl-05-vnc-tls-vencrypt.patch
@@ -35,10 +35,11 @@ gnutls_send/recv.
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r dfa890dd7417 Makefile
---- a/Makefile	Mon Feb 23 13:05:49 2009 +0000
-+++ b/Makefile	Mon Feb 23 13:06:22 2009 +0000
-@@ -145,6 +145,9 @@ ifdef CONFIG_CURSES
+Index: kvm-84.git-snapshot-20090303/qemu/Makefile
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/Makefile
++++ kvm-84.git-snapshot-20090303/qemu/Makefile
+@@ -149,6 +149,9 @@ ifdef CONFIG_CURSES
  OBJS+=curses.o
  endif
  OBJS+=vnc.o d3des.o
@@ -48,7 +49,7 @@ diff -r dfa890dd7417 Makefile
  
  ifdef CONFIG_COCOA
  OBJS+=cocoa.o
-@@ -168,10 +171,16 @@ sdl.o: sdl.c keymaps.h sdl_keysym.h
+@@ -172,10 +175,16 @@ sdl.o: sdl.c keymaps.h sdl_keysym.h
  
  sdl.o audio/sdlaudio.o: CFLAGS += $(SDL_CFLAGS)
  
@@ -66,9 +67,10 @@ diff -r dfa890dd7417 Makefile
  curses.o: curses.c keymaps.h curses_keys.h
  
  bt-host.o: CFLAGS += $(CONFIG_BLUEZ_CFLAGS)
-diff -r dfa890dd7417 vnc-auth-vencrypt.c
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/vnc-auth-vencrypt.c	Mon Feb 23 13:06:22 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-auth-vencrypt.c
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/vnc-auth-vencrypt.c
 @@ -0,0 +1,167 @@
 +/*
 + * QEMU VNC display driver: VeNCrypt authentication setup
@@ -237,9 +239,10 @@ diff -r dfa890dd7417 vnc-auth-vencrypt.c
 +    vnc_read_when(vs, protocol_client_vencrypt_init, 2);
 +}
 +
-diff -r dfa890dd7417 vnc-auth-vencrypt.h
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/vnc-auth-vencrypt.h	Mon Feb 23 13:06:22 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-auth-vencrypt.h
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/vnc-auth-vencrypt.h
 @@ -0,0 +1,33 @@
 +/*
 + * QEMU VNC display driver
@@ -274,9 +277,10 @@ diff -r dfa890dd7417 vnc-auth-vencrypt.h
 +void start_auth_vencrypt(VncState *vs);
 +
 +#endif /* __QEMU_VNC_AUTH_VENCRYPT_H__ */
-diff -r dfa890dd7417 vnc-tls.c
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/vnc-tls.c	Mon Feb 23 13:06:22 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-tls.c
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/vnc-tls.c
 @@ -0,0 +1,414 @@
 +/*
 + * QEMU VNC display driver: TLS helpers
@@ -692,9 +696,10 @@ diff -r dfa890dd7417 vnc-tls.c
 +    return -1;
 +}
 +
-diff -r dfa890dd7417 vnc-tls.h
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/vnc-tls.h	Mon Feb 23 13:06:22 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-tls.h
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/vnc-tls.h
 @@ -0,0 +1,70 @@
 +/*
 + * QEMU VNC display driver. TLS helpers
@@ -766,9 +771,10 @@ diff -r dfa890dd7417 vnc-tls.h
 +
 +#endif /* __QEMU_VNC_TLS_H__ */
 +
-diff -r dfa890dd7417 vnc.c
---- a/vnc.c	Mon Feb 23 13:05:49 2009 +0000
-+++ b/vnc.c	Mon Feb 23 13:06:22 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -34,21 +34,6 @@
  #include "vnc_keysym.h"
  #include "d3des.h"
@@ -1016,9 +1022,9 @@ diff -r dfa890dd7417 vnc.c
  
      vnc_read_when(vs, protocol_client_auth_vnc, sizeof(vs->challenge));
 -    return 0;
- }
- 
- 
+-}
+-
+-
 -#ifdef CONFIG_VNC_TLS
 -#define DH_BITS 1024
 -static gnutls_dh_params_t dh_params;
@@ -1062,9 +1068,9 @@ diff -r dfa890dd7417 vnc.c
 -    gnutls_anon_set_server_dh_params(anon_cred, dh_params);
 -
 -    return anon_cred;
--}
--
--
+ }
+ 
+ 
 -static gnutls_certificate_credentials_t vnc_tls_initialize_x509_cred(VncState *vs)
 -{
 -    gnutls_certificate_credentials_t x509_cred;
@@ -1544,10 +1550,11 @@ diff -r dfa890dd7417 vnc.c
  		    fprintf(stderr, "Failed to find x509 certificates/keys in %s\n", path);
  		    qemu_free(path);
  		    qemu_free(vs->display);
-diff -r dfa890dd7417 vnc.h
---- a/vnc.h	Mon Feb 23 13:05:49 2009 +0000
-+++ b/vnc.h	Mon Feb 23 13:06:22 2009 +0000
-@@ -32,12 +32,15 @@
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc.h
+@@ -32,13 +32,16 @@
  #include "audio/audio.h"
  #include <zlib.h>
  
@@ -1555,9 +1562,9 @@ diff -r dfa890dd7417 vnc.h
 -#include <gnutls/gnutls.h>
 -#include <gnutls/x509.h>
 -#endif /* CONFIG_VNC_TLS */
-+#include "keymaps.h"
+-
+ #include "keymaps.h"
  
--#include "keymaps.h"
 +// #define _VNC_DEBUG 1
 +
 +#ifdef _VNC_DEBUG
@@ -1565,9 +1572,10 @@ diff -r dfa890dd7417 vnc.h
 +#else
 +#define VNC_DEBUG(fmt, ...) do { } while (0)
 +#endif
- 
++
  /*****************************************************************************
   *
+  * Core data structures
 @@ -72,6 +75,11 @@ typedef void VncSendHextileTile(VncState
  
  typedef struct VncDisplay VncDisplay;
diff --git a/qemu-sasl-06-vnc-sasl.patch b/qemu-sasl-06-vnc-sasl.patch
index 23fe780..388d6c6 100644
--- a/qemu-sasl-06-vnc-sasl.patch
+++ b/qemu-sasl-06-vnc-sasl.patch
@@ -75,10 +75,11 @@ if found, unless --disable-vnc-sasl was given to override it.
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r 6981d4d832a9 Makefile
---- a/Makefile	Mon Mar 02 11:13:33 2009 +0000
-+++ b/Makefile	Mon Mar 02 11:13:38 2009 +0000
-@@ -148,6 +148,9 @@ OBJS+=vnc.o d3des.o
+Index: kvm-84.git-snapshot-20090303/qemu/Makefile
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/Makefile
++++ kvm-84.git-snapshot-20090303/qemu/Makefile
+@@ -152,6 +152,9 @@ OBJS+=vnc.o d3des.o
  ifdef CONFIG_VNC_TLS
  OBJS+=vnc-tls.o vnc-auth-vencrypt.o
  endif
@@ -88,7 +89,7 @@ diff -r 6981d4d832a9 Makefile
  
  ifdef CONFIG_COCOA
  OBJS+=cocoa.o
-@@ -171,7 +174,7 @@ sdl.o: sdl.c keymaps.h sdl_keysym.h
+@@ -175,7 +178,7 @@ sdl.o: sdl.c keymaps.h sdl_keysym.h
  
  sdl.o audio/sdlaudio.o: CFLAGS += $(SDL_CFLAGS)
  
@@ -97,7 +98,7 @@ diff -r 6981d4d832a9 Makefile
  
  vnc.o: vnc.c vnc.h vnc_keysym.h vnchextile.h d3des.c d3des.h
  
-@@ -181,6 +184,8 @@ vnc-tls.o: vnc-tls.c vnc.h
+@@ -185,6 +188,8 @@ vnc-tls.o: vnc-tls.c vnc.h
  
  vnc-auth-vencrypt.o: vnc-auth-vencrypt.c vnc.h
  
@@ -106,10 +107,11 @@ diff -r 6981d4d832a9 Makefile
  curses.o: curses.c keymaps.h curses_keys.h
  
  bt-host.o: CFLAGS += $(CONFIG_BLUEZ_CFLAGS)
-diff -r 6981d4d832a9 Makefile.target
---- a/Makefile.target	Mon Mar 02 11:13:33 2009 +0000
-+++ b/Makefile.target	Mon Mar 02 11:13:38 2009 +0000
-@@ -554,6 +554,11 @@ CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
+Index: kvm-84.git-snapshot-20090303/qemu/Makefile.target
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/Makefile.target
++++ kvm-84.git-snapshot-20090303/qemu/Makefile.target
+@@ -613,6 +613,11 @@ CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
  LIBS += $(CONFIG_VNC_TLS_LIBS)
  endif
  
@@ -121,9 +123,10 @@ diff -r 6981d4d832a9 Makefile.target
  ifdef CONFIG_BLUEZ
  LIBS += $(CONFIG_BLUEZ_LIBS)
  endif
-diff -r 6981d4d832a9 configure
---- a/configure	Mon Mar 02 11:13:33 2009 +0000
-+++ b/configure	Mon Mar 02 11:13:38 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/configure
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/configure
++++ kvm-84.git-snapshot-20090303/qemu/configure
 @@ -164,6 +164,7 @@ fmod_lib=""
  fmod_inc=""
  oss_lib=""
@@ -132,7 +135,7 @@ diff -r 6981d4d832a9 configure
  bsd="no"
  linux="no"
  solaris="no"
-@@ -387,6 +388,8 @@ for opt do
+@@ -403,6 +404,8 @@ for opt do
    ;;
    --disable-vnc-tls) vnc_tls="no"
    ;;
@@ -141,7 +144,7 @@ diff -r 6981d4d832a9 configure
    --disable-slirp) slirp="no"
    ;;
    --disable-vde) vde="no"
-@@ -544,6 +547,7 @@ echo "                           Availab
+@@ -562,6 +565,7 @@ echo "                           Availab
  echo "  --enable-mixemu          enable mixer emulation"
  echo "  --disable-brlapi         disable BrlAPI"
  echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
@@ -149,7 +152,7 @@ diff -r 6981d4d832a9 configure
  echo "  --disable-curses         disable curses output"
  echo "  --disable-bluez          disable bluez stack connectivity"
  echo "  --disable-kvm            disable KVM acceleration support"
-@@ -823,6 +827,25 @@ EOF
+@@ -874,6 +878,25 @@ EOF
  fi
  
  ##########################################
@@ -175,7 +178,7 @@ diff -r 6981d4d832a9 configure
  # vde libraries probe
  if test "$vde" = "yes" ; then
    cat > $TMPC << EOF
-@@ -1130,6 +1153,11 @@ if test "$vnc_tls" = "yes" ; then
+@@ -1208,6 +1231,11 @@ if test "$vnc_tls" = "yes" ; then
      echo "    TLS CFLAGS    $vnc_tls_cflags"
      echo "    TLS LIBS      $vnc_tls_libs"
  fi
@@ -187,7 +190,7 @@ diff -r 6981d4d832a9 configure
  if test -n "$sparc_cpu"; then
      echo "Target Sparc Arch $sparc_cpu"
  fi
-@@ -1371,6 +1399,12 @@ if test "$vnc_tls" = "yes" ; then
+@@ -1451,6 +1479,12 @@ if test "$vnc_tls" = "yes" ; then
    echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
    echo "#define CONFIG_VNC_TLS 1" >> $config_h
  fi
@@ -200,10 +203,11 @@ diff -r 6981d4d832a9 configure
  qemu_version=`head $source_path/VERSION`
  echo "VERSION=$qemu_version" >>$config_mak
  echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
-diff -r 6981d4d832a9 qemu-doc.texi
---- a/qemu-doc.texi	Mon Mar 02 11:13:33 2009 +0000
-+++ b/qemu-doc.texi	Mon Mar 02 11:13:38 2009 +0000
-@@ -616,6 +616,21 @@ path following this option specifies whe
+Index: kvm-84.git-snapshot-20090303/qemu/qemu-doc.texi
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/qemu-doc.texi
++++ kvm-84.git-snapshot-20090303/qemu/qemu-doc.texi
+@@ -624,6 +624,21 @@ path following this option specifies whe
  be loaded from. See the @ref{vnc_security} section for details on generating
  certificates.
  
@@ -225,7 +229,7 @@ diff -r 6981d4d832a9 qemu-doc.texi
  @end table
  
  @end table
-@@ -2061,7 +2076,10 @@ considerations depending on the deployme
+@@ -2058,7 +2073,10 @@ considerations depending on the deployme
  * vnc_sec_certificate::
  * vnc_sec_certificate_verify::
  * vnc_sec_certificate_pw::
@@ -236,7 +240,7 @@ diff -r 6981d4d832a9 qemu-doc.texi
  @end menu
  @node vnc_sec_none
  @subsection Without passwords
-@@ -2144,6 +2162,41 @@ Password: ********
+@@ -2141,6 +2159,41 @@ Password: ********
  (qemu)
  @end example
  
@@ -278,7 +282,7 @@ diff -r 6981d4d832a9 qemu-doc.texi
  @node vnc_generate_cert
  @subsection Generating certificates for VNC
  
-@@ -2255,6 +2308,50 @@ EOF
+@@ -2252,6 +2305,50 @@ EOF
  The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
  copied to the client for which they were generated.
  
@@ -329,9 +333,10 @@ diff -r 6981d4d832a9 qemu-doc.texi
  @node gdb_usage
  @section GDB usage
  
-diff -r 6981d4d832a9 qemu.sasl
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/qemu.sasl	Mon Mar 02 11:13:38 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/qemu.sasl
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/qemu.sasl
 @@ -0,0 +1,34 @@
 +# If you want to use the non-TLS socket, then you *must* include
 +# the GSSAPI or DIGEST-MD5 mechanisms, because they are the only
@@ -367,9 +372,10 @@ diff -r 6981d4d832a9 qemu.sasl
 +
 +auxprop_plugin: sasldb
 +
-diff -r 6981d4d832a9 vnc-auth-sasl.c
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/vnc-auth-sasl.c	Mon Mar 02 11:13:38 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.c
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.c
 @@ -0,0 +1,626 @@
 +/*
 + * QEMU VNC display driver: SASL auth protocol
@@ -997,9 +1003,10 @@ diff -r 6981d4d832a9 vnc-auth-sasl.c
 +}
 +
 +
-diff -r 6981d4d832a9 vnc-auth-sasl.h
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/vnc-auth-sasl.h	Mon Mar 02 11:13:38 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.h
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.h
 @@ -0,0 +1,67 @@
 +/*
 + * QEMU VNC display driver: SASL auth protocol
@@ -1068,9 +1075,10 @@ diff -r 6981d4d832a9 vnc-auth-sasl.h
 +
 +#endif /* __QEMU_VNC_AUTH_SASL_H__ */
 +
-diff -r 6981d4d832a9 vnc-auth-vencrypt.c
---- a/vnc-auth-vencrypt.c	Mon Mar 02 11:13:33 2009 +0000
-+++ b/vnc-auth-vencrypt.c	Mon Mar 02 11:13:38 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-auth-vencrypt.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc-auth-vencrypt.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc-auth-vencrypt.c
 @@ -43,8 +43,15 @@ static void start_auth_vencrypt_subauth(
         start_auth_vnc(vs);
         break;
@@ -1098,9 +1106,10 @@ diff -r 6981d4d832a9 vnc-auth-vencrypt.c
  
  
  static int protocol_client_vencrypt_auth(VncState *vs, uint8_t *data, size_t len)
-diff -r 6981d4d832a9 vnc.c
---- a/vnc.c	Mon Mar 02 11:13:33 2009 +0000
-+++ b/vnc.c	Mon Mar 02 11:13:38 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -68,7 +68,8 @@ static char *addr_to_string(const char *
      return addr;
  }
@@ -1340,17 +1349,19 @@ diff -r 6981d4d832a9 vnc.c
  	if (ret < 0) {
  	    if (ret == GNUTLS_E_AGAIN)
  		errno = EAGAIN;
-@@ -932,13 +1025,53 @@ void vnc_client_read(void *opaque)
+@@ -932,12 +1025,52 @@ void vnc_client_read(void *opaque)
  	}
      } else
  #endif /* CONFIG_VNC_TLS */
 -	ret = recv(vs->csock, buffer_end(&vs->input), 4096, 0);
 -    ret = vnc_client_io_error(vs, ret, socket_error());
+-    if (!ret)
+-	return;
 +	ret = recv(vs->csock, data, datalen, 0);
 +    VNC_DEBUG("Read wire %p %d -> %ld\n", data, datalen, ret);
 +    return vnc_client_io_error(vs, ret, socket_error());
 +}
-+
+ 
 +
 +/*
 + * Called to read data from the client socket to the input buffer,
@@ -1369,7 +1380,7 @@ diff -r 6981d4d832a9 vnc.c
 +    ret = vnc_client_read_buf(vs, buffer_end(&vs->input), 4096);
 +    if (!ret)
 +        return 0;
-+    vs->input.offset += ret;
+     vs->input.offset += ret;
 +    return ret;
 +}
 +
@@ -1390,14 +1401,11 @@ diff -r 6981d4d832a9 vnc.c
 +    else
 +#endif /* CONFIG_VNC_SASL */
 +        ret = vnc_client_read_plain(vs);
-     if (!ret)
- 	return;
++    if (!ret)
++	return;
  
--    vs->input.offset += ret;
--
      while (vs->read_handler && vs->input.offset >= vs->read_handler_expect) {
  	size_t len = vs->read_handler_expect;
- 	int ret;
 @@ -1722,6 +1855,13 @@ static int protocol_client_auth(VncState
             break;
  #endif /* CONFIG_VNC_TLS */
@@ -1511,9 +1519,10 @@ diff -r 6981d4d832a9 vnc.c
      if (reverse) {
          /* connect to viewer */
          if (strncmp(display, "unix:", 5) == 0)
-diff -r 6981d4d832a9 vnc.h
---- a/vnc.h	Mon Mar 02 11:13:33 2009 +0000
-+++ b/vnc.h	Mon Mar 02 11:13:38 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc.h
 @@ -79,6 +79,10 @@ typedef struct VncDisplay VncDisplay;
  #include "vnc-tls.h"
  #include "vnc-auth-vencrypt.h"
diff --git a/qemu-sasl-07-vnc-monitor-authinfo.patch b/qemu-sasl-07-vnc-monitor-authinfo.patch
index be053e2..2c80faa 100644
--- a/qemu-sasl-07-vnc-monitor-authinfo.patch
+++ b/qemu-sasl-07-vnc-monitor-authinfo.patch
@@ -29,9 +29,10 @@ Auth can be stacked, so both username & x509 dname may be shown.
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r 440be37a35ea vnc-tls.c
---- a/vnc-tls.c	Fri Feb 20 11:46:26 2009 +0000
-+++ b/vnc-tls.c	Fri Feb 20 11:47:52 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-tls.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc-tls.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc-tls.c
 @@ -241,6 +241,22 @@ int vnc_tls_validate_certificate(struct 
  	    return -1;
  	}
@@ -63,9 +64,10 @@ diff -r 440be37a35ea vnc-tls.c
  }
  
  
-diff -r 440be37a35ea vnc-tls.h
---- a/vnc-tls.h	Fri Feb 20 11:46:26 2009 +0000
-+++ b/vnc-tls.h	Fri Feb 20 11:47:52 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-tls.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc-tls.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc-tls.h
 @@ -55,6 +55,9 @@ struct VncStateTLS {
      /* Whether data is being TLS encrypted yet */
      int wiremode;
@@ -76,9 +78,10 @@ diff -r 440be37a35ea vnc-tls.h
  };
  
  int vnc_tls_client_setup(VncState *vs, int x509Creds);
-diff -r 440be37a35ea vnc.c
---- a/vnc.c	Fri Feb 20 11:46:26 2009 +0000
-+++ b/vnc.c	Fri Feb 20 11:47:52 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -156,6 +156,21 @@ static void do_info_vnc_client(VncState 
      term_puts("Client:\n");
      term_puts(clientAddr);
diff --git a/qemu-sasl-08-vnc-acl-mgmt.patch b/qemu-sasl-08-vnc-acl-mgmt.patch
index f02aae6..271925f 100644
--- a/qemu-sasl-08-vnc-acl-mgmt.patch
+++ b/qemu-sasl-08-vnc-acl-mgmt.patch
@@ -78,10 +78,11 @@ starting up
 
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
 
-diff -r b1008c5c6c16 Makefile
---- a/Makefile	Mon Mar 02 11:13:40 2009 +0000
-+++ b/Makefile	Mon Mar 02 12:11:04 2009 +0000
-@@ -144,7 +144,7 @@ endif
+Index: kvm-84.git-snapshot-20090303/qemu/Makefile
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/Makefile
++++ kvm-84.git-snapshot-20090303/qemu/Makefile
+@@ -148,7 +148,7 @@ endif
  ifdef CONFIG_CURSES
  OBJS+=curses.o
  endif
@@ -90,7 +91,7 @@ diff -r b1008c5c6c16 Makefile
  ifdef CONFIG_VNC_TLS
  OBJS+=vnc-tls.o vnc-auth-vencrypt.o
  endif
-@@ -174,9 +174,11 @@ sdl.o: sdl.c keymaps.h sdl_keysym.h
+@@ -178,9 +178,11 @@ sdl.o: sdl.c keymaps.h sdl_keysym.h
  
  sdl.o audio/sdlaudio.o: CFLAGS += $(SDL_CFLAGS)
  
@@ -103,9 +104,10 @@ diff -r b1008c5c6c16 Makefile
  
  vnc.o: CFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
  
-diff -r b1008c5c6c16 acl.c
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/acl.c	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/acl.c
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/acl.c
 @@ -0,0 +1,185 @@
 +/*
 + * QEMU access control list management
@@ -292,9 +294,10 @@ diff -r b1008c5c6c16 acl.c
 + *  tab-width: 8
 + * End:
 + */
-diff -r b1008c5c6c16 acl.h
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/acl.h	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/acl.h
+===================================================================
+--- /dev/null
++++ kvm-84.git-snapshot-20090303/qemu/acl.h
 @@ -0,0 +1,74 @@
 +/*
 + * QEMU access control list management
@@ -370,10 +373,11 @@ diff -r b1008c5c6c16 acl.h
 + *  tab-width: 8
 + * End:
 + */
-diff -r b1008c5c6c16 configure
---- a/configure	Mon Mar 02 11:13:40 2009 +0000
-+++ b/configure	Mon Mar 02 12:11:04 2009 +0000
-@@ -846,6 +846,21 @@ EOF
+Index: kvm-84.git-snapshot-20090303/qemu/configure
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/configure
++++ kvm-84.git-snapshot-20090303/qemu/configure
+@@ -897,6 +897,21 @@ EOF
  fi
  
  ##########################################
@@ -395,7 +399,7 @@ diff -r b1008c5c6c16 configure
  # vde libraries probe
  if test "$vde" = "yes" ; then
    cat > $TMPC << EOF
-@@ -1405,6 +1420,9 @@ if test "$vnc_sasl" = "yes" ; then
+@@ -1485,6 +1500,9 @@ if test "$vnc_sasl" = "yes" ; then
    echo "CONFIG_VNC_SASL_LIBS=$vnc_sasl_libs" >> $config_mak
    echo "#define CONFIG_VNC_SASL 1" >> $config_h
  fi
@@ -405,18 +409,19 @@ diff -r b1008c5c6c16 configure
  qemu_version=`head $source_path/VERSION`
  echo "VERSION=$qemu_version" >>$config_mak
  echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
-diff -r b1008c5c6c16 monitor.c
---- a/monitor.c	Mon Mar 02 11:13:40 2009 +0000
-+++ b/monitor.c	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/monitor.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/monitor.c
++++ kvm-84.git-snapshot-20090303/qemu/monitor.c
 @@ -39,6 +39,7 @@
  #include "qemu-timer.h"
  #include "migration.h"
  #include "kvm.h"
 +#include "acl.h"
  
- //#define DEBUG
- //#define DEBUG_COMPLETION
-@@ -1425,6 +1426,85 @@ static void do_info_balloon(void)
+ #include "qemu-kvm.h"
+ 
+@@ -1452,6 +1453,85 @@ static void do_info_balloon(void)
          term_printf("balloon: actual=%d\n", (int)(actual >> 20));
  }
  
@@ -502,20 +507,20 @@ diff -r b1008c5c6c16 monitor.c
  /* Please update qemu-doc.texi when adding or changing commands */
  static const term_cmd_t term_cmds[] = {
      { "help|?", "s?", do_help,
-@@ -1529,6 +1609,12 @@ static const term_cmd_t term_cmds[] = {
-       "target", "request VM to change it's memory allocation (in MB)" },
+@@ -1557,6 +1637,12 @@ static const term_cmd_t term_cmds[] = {
      { "set_link", "ss", do_set_link,
        "name [up|down]", "change the link status of a network adapter" },
+     { "set_link", "ss", do_set_link, "name [up|down]" },
 +    { "acl", "sss?i?", do_acl, "<command> <aclname> [<match>] [<index>]\n",
 +                               "acl show vnc.username\n"
 +                               "acl policy vnc.username deny\n"
 +                               "acl allow vnc.username fred\n"
 +                               "acl deny vnc.username bob\n"
 +                               "acl reset vnc.username\n" },
-     { NULL, NULL, },
- };
- 
-@@ -2891,3 +2977,12 @@ void monitor_readline(const char *prompt
+     { "cpu_set", "is", do_cpu_set_nr, "cpu [online|offline]", "change cpu state" },
+ #if defined(TARGET_I386) || defined(TARGET_X86_64)
+     { "drive_add", "iss", drive_hot_add, "pcibus pcidevfn [file=file][,if=type][,bus=n]\n"
+@@ -2927,3 +3013,12 @@ void monitor_readline(const char *prompt
                  monitor_hd[i]->focus = old_focus[i];
      }
  }
@@ -528,10 +533,11 @@ diff -r b1008c5c6c16 monitor.c
 + *  tab-width: 8
 + * End:
 + */
-diff -r b1008c5c6c16 qemu-doc.texi
---- a/qemu-doc.texi	Mon Mar 02 11:13:40 2009 +0000
-+++ b/qemu-doc.texi	Mon Mar 02 12:11:04 2009 +0000
-@@ -631,6 +631,19 @@ ensures a data encryption preventing com
+Index: kvm-84.git-snapshot-20090303/qemu/qemu-doc.texi
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/qemu-doc.texi
++++ kvm-84.git-snapshot-20090303/qemu/qemu-doc.texi
+@@ -639,6 +639,19 @@ ensures a data encryption preventing com
  credentials. See the @ref{vnc_security} section for details on using
  SASL authentication.
  
@@ -551,7 +557,7 @@ diff -r b1008c5c6c16 qemu-doc.texi
  @end table
  
  @end table
-@@ -1392,6 +1405,42 @@ Password: ********
+@@ -1389,6 +1402,42 @@ Password: ********
  
  @end table
  
@@ -594,9 +600,10 @@ diff -r b1008c5c6c16 qemu-doc.texi
  @item screendump @var{filename}
  Save screen into PPM image @var{filename}.
  
-diff -r b1008c5c6c16 vnc-auth-sasl.c
---- a/vnc-auth-sasl.c	Mon Mar 02 11:13:40 2009 +0000
-+++ b/vnc-auth-sasl.c	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc-auth-sasl.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.c
 @@ -120,22 +120,32 @@ static int vnc_auth_sasl_check_access(Vn
  {
      const void *val;
@@ -633,9 +640,10 @@ diff -r b1008c5c6c16 vnc-auth-sasl.c
  }
  
  static int vnc_auth_sasl_check_ssf(VncState *vs)
-diff -r b1008c5c6c16 vnc-auth-sasl.h
---- a/vnc-auth-sasl.h	Mon Mar 02 11:13:40 2009 +0000
-+++ b/vnc-auth-sasl.h	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc-auth-sasl.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc-auth-sasl.h
 @@ -30,6 +30,9 @@
  #include <sasl/sasl.h>
  
@@ -657,9 +665,10 @@ diff -r b1008c5c6c16 vnc-auth-sasl.h
  void vnc_sasl_client_cleanup(VncState *vs);
  
  long vnc_client_read_sasl(VncState *vs);
-diff -r b1008c5c6c16 vnc-tls.c
---- a/vnc-tls.c	Mon Mar 02 11:13:40 2009 +0000
-+++ b/vnc-tls.c	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-tls.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc-tls.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc-tls.c
 @@ -255,6 +255,25 @@ int vnc_tls_validate_certificate(struct 
  			  gnutls_strerror (ret));
  		return -1;
@@ -686,9 +695,10 @@ diff -r b1008c5c6c16 vnc-tls.c
  	}
  
  	gnutls_x509_crt_deinit (cert);
-diff -r b1008c5c6c16 vnc-tls.h
---- a/vnc-tls.h	Mon Mar 02 11:13:40 2009 +0000
-+++ b/vnc-tls.h	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc-tls.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc-tls.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc-tls.h
 @@ -31,6 +31,8 @@
  #include <gnutls/gnutls.h>
  #include <gnutls/x509.h>
@@ -706,9 +716,10 @@ diff -r b1008c5c6c16 vnc-tls.h
  
      /* Paths to x509 certs/keys */
      char *x509cacert;
-diff -r b1008c5c6c16 vnc.c
---- a/vnc.c	Mon Mar 02 11:13:40 2009 +0000
-+++ b/vnc.c	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.c
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.c
++++ kvm-84.git-snapshot-20090303/qemu/vnc.c
 @@ -28,6 +28,7 @@
  #include "sysemu.h"
  #include "qemu_socket.h"
@@ -754,9 +765,10 @@ diff -r b1008c5c6c16 vnc.c
      /*
       * Combinations we support here:
       *
-diff -r b1008c5c6c16 vnc.h
---- a/vnc.h	Mon Mar 02 11:13:40 2009 +0000
-+++ b/vnc.h	Mon Mar 02 12:11:04 2009 +0000
+Index: kvm-84.git-snapshot-20090303/qemu/vnc.h
+===================================================================
+--- kvm-84.git-snapshot-20090303.orig/qemu/vnc.h
++++ kvm-84.git-snapshot-20090303/qemu/vnc.h
 @@ -98,6 +98,9 @@ struct VncDisplay
      int subauth; /* Used by VeNCrypt */
      VncDisplayTLS tls;
diff --git a/qemu.spec b/qemu.spec
index e2eabe8..bf014da 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -1,12 +1,18 @@
 Summary: QEMU is a FAST! processor emulator
 Name: qemu
-Version: 1.0
-Release: 0.5.svn6666%{?dist}
+Version: 0.10
+Release: 0.1.kvm20090303git%{?dist}
+# I have mistakenly thought the revision name would be 1.0.
+# So 0.10 series get Epoch = 1
+Epoch: 1
 License: GPLv2+ and LGPLv2+
 Group: Development/Tools
 URL: http://www.qemu.org/
-Source0: http://www.qemu.org/%{name}-%{version}.tar.gz
+#Source0: http://www.qemu.org/%{name}-%{version}.tar.gz
+# FIXME: Say how to get the sources
+Source0: kvm-84.git-snapshot-20090303.tar.gz
 Source1: qemu.init
+Source2: kvm.modules
 
 # VNC SASL authentication support
 # Not upstream yet, but approved for commit immediately
@@ -19,11 +25,14 @@ Patch5: qemu-sasl-05-vnc-tls-vencrypt.patch
 Patch6: qemu-sasl-06-vnc-sasl.patch
 Patch7: qemu-sasl-07-vnc-monitor-authinfo.patch
 Patch8: qemu-sasl-08-vnc-acl-mgmt.patch
+Patch9: kvm-upstream-ppc.patch
+Patch10: kvm-fix-strayR.patch
 # NB, delibrately not including patch 09 which is not
 # intended for commit
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: SDL-devel zlib-devel which texi2html gnutls-devel cyrus-sasl-devel
+BuildRequires: rsync
 Requires: %{name}-user = %{version}-%{release}
 Requires: %{name}-system-x86 = %{version}-%{release}
 Requires: %{name}-system-sparc = %{version}-%{release}
@@ -35,6 +44,9 @@ Requires: %{name}-system-mips = %{version}-%{release}
 Requires: %{name}-system-ppc = %{version}-%{release}
 Requires: %{name}-img = %{version}-%{release}
 
+# sorry dudes, one step at a time
+ExcludeArch: ppc ppc64
+
 #ExclusiveArch: %{ix86} x86_64 ppc alpha sparcv9 sparc64 armv4l
 
 %define qemudocdir %{_docdir}/%{name}-%{version}
@@ -107,7 +119,7 @@ Requires: bochs-bios-data
 %qemupkgdesc system-sh4 {system emulator for sh4}
 
 %prep
-%setup -q
+%setup -q -n kvm-84.git-snapshot-20090303
 # 01-tls-handshake-fix
 %patch1 -p1
 # 02-vnc-monitor-info
@@ -124,6 +136,8 @@ Requires: bochs-bios-data
 %patch7 -p1
 # 08-vnc-acl-mgmt
 %patch8 -p1
+%patch9 -p1
+%patch10 -p1
 
 %build
 # systems like rhel build system does not have a recent enough linker so 
@@ -135,19 +149,43 @@ build_id_available() {
 }
 
 if build_id_available; then
- extraldflags="--extra-ldflags=-Wl,--build-id"
+ extraldflags="-Wl,--build-id";
  buildldflags="VL_LDFLAGS=-Wl,--build-id"
 else
  extraldflags=""
  buildldflags=""
 fi
 
+%ifarch %{ix86} x86_64
+# build kvm
+echo "%{name}-%{version}" > $(pwd)/kernel/.kernelrelease
+./configure --with-patched-kernel --target-list=x86_64-softmmu \
+            --kerneldir=$(pwd)/kernel --prefix=%{_prefix} \
+            --qemu-ldflags=$extraldflags
+
+make %{?_smp_mflags} $buildldflags
+cp qemu/x86_64-softmmu/qemu-system-x86_64 qemu-kvm
+make clean
+%endif
+
+echo "%{name}-%{version}" > $(pwd)/kernel/.kernelrelease
+cd qemu
 ./configure \
+    --target-list="i386-softmmu x86_64-softmmu arm-softmmu cris-softmmu m68k-softmmu \
+                mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu ppc-softmmu \
+                ppcemb-softmmu ppc64-softmmu sh4-softmmu sh4eb-softmmu sparc-softmmu \
+                i386-linux-user x86_64-linux-user alpha-linux-user arm-linux-user \
+                armeb-linux-user cris-linux-user m68k-linux-user mips-linux-user \
+                mipsel-linux-user ppc-linux-user ppc64-linux-user ppc64abi32-linux-user \
+                sh4-linux-user sh4eb-linux-user sparc-linux-user sparc64-linux-user \
+                sparc32plus-linux-user" \
     --prefix=%{_prefix} \
     --interp-prefix=%{_prefix}/qemu-%%M \
-    $extraldflags;
-make %{?_smp_mflags} $buildldflags
+            --kerneldir=$(pwd)/../kernel --prefix=%{_prefix} \
+    --disable-kvm \
+    --extra-ldflags=$extraldflags
 
+make %{?_smp_mflags} $buildldflags
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -160,7 +198,14 @@ make prefix="${RPM_BUILD_ROOT}%{_prefix}" \
      datadir="${RPM_BUILD_ROOT}%{_prefix}/share/qemu" install
 chmod -x ${RPM_BUILD_ROOT}%{_mandir}/man1/*
 
+%ifarch %{ix86} x86_64
+mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/modules
+install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/modules/kvm.modules
+%endif
+
+cd qemu
 install -D -p -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/qemu
+install -D -p -m 0755 ../qemu-kvm $RPM_BUILD_ROOT%{_bindir}/
 install -D -p -m 0644 -t ${RPM_BUILD_ROOT}/%{qemudocdir} Changelog README TODO COPYING COPYING.LIB LICENSE
 
 install -D -p -m 0644 qemu.sasl $RPM_BUILD_ROOT%{_sysconfdir}/sasl2/qemu.conf
@@ -188,6 +233,13 @@ ln -s ../bochs/BIOS-bochs-latest %{buildroot}/usr/share/qemu/bios.bin
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+%post system-x86
+%ifarch %{ix86}
+# load kvm modules now, so we can make sure no reboot is needed.
+# If there's already a kvm module installed, we don't mess with it
+sh /%{_sysconfdir}/sysconfig/modules/kvm.modules
+%endif
+
 %post
 /sbin/chkconfig --add qemu
 
@@ -245,6 +297,10 @@ fi
 %defattr(-,root,root)
 %{_bindir}/qemu
 %{_bindir}/qemu-system-x86_64
+%ifarch %{ix86} x86_64
+%{_bindir}/qemu-kvm
+%{_sysconfdir}/sysconfig/modules/kvm.modules
+%endif
 %{_prefix}/share/qemu/bios.bin
 %{_prefix}/share/qemu/vgabios.bin
 %{_prefix}/share/qemu/vgabios-cirrus.bin
@@ -284,6 +340,12 @@ fi
 %{_mandir}/man1/qemu-img.1*
 
 %changelog
+* Tue Mar 03 2009 Glauber Costa <glommer@redhat.com> - 0.10-0.1.kvm20090303git
+- Set Epoch to 1
+- Build KVM (basic build, no tools yet)
+- Set ppc in ExcludeArch. This is temporary, just to fix one issue at a time.
+  ppc users (IBM ? ;-)) please wait a little bit.
+
 * Tue Mar  3 2009 Daniel P. Berrange <berrange@redhat.com> - 1.0-0.5.svn6666
 - Support VNC SASL authentication protocol
 - Fix dep on bochs-bios-data
diff --git a/sources b/sources
index acefb0d..0877184 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8394aa871af278efcdec46c37f913533  qemu-1.0.tar.gz
+b81c0982015b21e01fe93a1d9405def8  kvm-84.git-snapshot-20090303.tar.gz