RELEASE=2.2
# also update debian/changelog
-KVMVER=1.2
-KVMPKGREL=7
+KVMVER=1.3
+KVMPKGREL=1
KVMPACKAGE=pve-qemu-kvm
KVMDIR=qemu-kvm
.PHONY: download
download:
rm -rf ${KVMDIR} ${KVMSRC}
- git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git -b master ${KVMDIR}
- #git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git -b stable-1.1 ${KVMDIR}
+ git clone git://git.qemu-project.org/qemu.git -b master ${KVMDIR}
tar czf ${KVMSRC} --exclude CVS --exclude .git --exclude .svn ${KVMDIR}
${KVM_DEB} kvm: ${KVMSRC}
+pve-qemu-kvm (1.3-1) unstable; urgency=low
+
+ * update to qemu 1.3 rc1
+
+ * we now use qemu sources directly
+
+ * remove update-cpus-x86_64.conf-to-rhel6.2-version.patch
+
+ * remove ahci-properly-reset-pxcmd.patch (upstream)
+
+ * remove sheepdog-fix-savevm-loadvm.patch (upstream)
+
+ -- Proxmox Support Team <support@proxmox.com> Wed, 21 Nov 2012 12:48:56 +0100
+
pve-qemu-kvm (1.2-7) unstable; urgency=low
* cleanup snapshot support patches
Index: new/net.h
===================================================================
---- new.orig/net.h 2012-09-24 07:15:00.000000000 +0200
-+++ new/net.h 2012-09-24 07:15:16.000000000 +0200
+--- new.orig/net.h 2012-11-21 11:11:22.000000000 +0100
++++ new/net.h 2012-11-21 11:17:51.000000000 +0100
@@ -161,8 +161,9 @@
void netdev_add(QemuOpts *opts, Error **errp);
int qmp_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret);
#define DEFAULT_BRIDGE_HELPER CONFIG_QEMU_HELPERDIR "/qemu-bridge-helper"
#define DEFAULT_BRIDGE_INTERFACE "br0"
-Index: new/configure
-===================================================================
---- new.orig/configure 2012-09-24 07:15:00.000000000 +0200
-+++ new/configure 2012-09-24 07:15:16.000000000 +0200
-@@ -195,7 +195,7 @@
- libdir="\${prefix}/lib"
- includedir="\${prefix}/include"
- sysconfdir="\${prefix}/etc"
--confsuffix="/qemu"
-+confsuffix="/kvm"
- slirp="yes"
- fmod_lib=""
- fmod_inc=""
Index: new/net/tap.h
===================================================================
---- new.orig/net/tap.h 2012-09-24 07:15:00.000000000 +0200
-+++ new/net/tap.h 2012-09-24 07:15:16.000000000 +0200
+--- new.orig/net/tap.h 2012-11-21 11:11:22.000000000 +0100
++++ new/net/tap.h 2012-11-21 11:17:51.000000000 +0100
@@ -29,8 +29,6 @@
#include "qemu-common.h"
#include "qapi-types.h"
-#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
-#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
- int net_init_tap(const NetClientOptions *opts, const char *name,
- NetClientState *peer);
+ int tap_open(char *ifname, int ifname_size, int *vnet_hdr, int vnet_hdr_required);
+
+++ /dev/null
-While testing q35, I found that windows 7 (specifically, windows 7 ultimate
-with sp1 x64), wouldn't install because it can't find the cdrom or disk drive.
-The failure message is: 'A required cd/dvd device driver is missing. If you
-have a driver floppy disk, CD, DVD, or USB flash drive, please insert it now.'
-This can also be reproduced on piix by adding an ahci controller, and
-observing that windows 7 does not see any devices behind it.
-
-The problem is that when windows issues a HBA reset, qemu does not reset the
-individual ports' PxCMD register. Windows 7 then reads back the PxCMD register
-and presumably assumes that the ahci controller has already been initialized.
-Windows then never sets up the PxIE register to enable interrupts, and thus it
-never gets irqs back when it sends ata device inquiry commands.
-
-I believe this change brings qemu into ahci 1.3 specification compliance.
-
-Section 10.4.3 HBA Reset:
-
-"
-When GHC.HR is set to '1', GHC.AE, GHC.IE, the IS register, and all port
-register fields (except PxFB/PxFBU/PxCLB/PxCLBU) that are not HwInit in the
-HBA's register memory space are reset.
-"
-
-I've also re-tested Fedora 16 and 17 to verify that they continue to work with
-this change.
-
-Signed-off-by: Jason Baron <address@hidden>
----
- hw/ide/ahci.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-Index: new/hw/ide/ahci.c
-===================================================================
---- new.orig/hw/ide/ahci.c 2012-09-24 07:15:28.000000000 +0200
-+++ new/hw/ide/ahci.c 2012-09-24 07:15:29.000000000 +0200
-@@ -1199,6 +1199,7 @@
- pr->irq_stat = 0;
- pr->irq_mask = 0;
- pr->scr_ctl = 0;
-+ pr->cmd = 0;
- ahci_reset_port(s, i);
- }
- }
--- /dev/null
+Index: new/hw/pc_piix.c
+===================================================================
+--- new.orig/hw/pc_piix.c 2012-11-22 10:10:56.000000000 +0100
++++ new/hw/pc_piix.c 2012-11-22 10:16:29.000000000 +0100
+@@ -352,6 +352,8 @@
+ }
+ #endif
+
++#define KVM_MACHINE_OPTIONS "accel=kvm"
++
+ static QEMUMachine pc_machine_v1_3 = {
+ .name = "pc-1.3",
+ .alias = "pc",
+@@ -359,6 +361,7 @@
+ .init = pc_init_pci_1_3,
+ .max_cpus = 255,
+ .is_default = 1,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ };
+
+ #define PC_COMPAT_1_2 \
+@@ -393,6 +396,7 @@
+ .desc = "Standard PC",
+ .init = pc_init_pci,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_1_2,
+ { /* end of list */ }
+@@ -436,6 +440,7 @@
+ .desc = "Standard PC",
+ .init = pc_init_pci,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_1_1,
+ { /* end of list */ }
+@@ -471,6 +476,7 @@
+ .desc = "Standard PC",
+ .init = pc_init_pci,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_1_0,
+ { /* end of list */ }
+@@ -486,6 +492,7 @@
+ .desc = "Standard PC",
+ .init = pc_init_pci,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_0_15,
+ { /* end of list */ }
+@@ -518,6 +525,7 @@
+ .desc = "Standard PC",
+ .init = pc_init_pci,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_0_14,
+ {
+@@ -551,6 +559,7 @@
+ .desc = "Standard PC",
+ .init = pc_init_pci_no_kvmclock,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_0_13,
+ {
+@@ -588,6 +597,7 @@
+ .desc = "Standard PC",
+ .init = pc_init_pci_no_kvmclock,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_0_12,
+ {
+@@ -621,6 +631,7 @@
+ .desc = "Standard PC, qemu 0.11",
+ .init = pc_init_pci_no_kvmclock,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_0_11,
+ {
+@@ -642,6 +653,7 @@
+ .desc = "Standard PC, qemu 0.10",
+ .init = pc_init_pci_no_kvmclock,
+ .max_cpus = 255,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_0_11,
+ {
+@@ -675,6 +687,7 @@
+ .desc = "ISA-only PC",
+ .init = pc_init_isa,
+ .max_cpus = 1,
++ .default_machine_opts = KVM_MACHINE_OPTIONS,
+ .compat_props = (GlobalProperty[]) {
+ {
+ .driver = "pc-sysfw",
Index: new/qemu-options.hx
===================================================================
---- new.orig/qemu-options.hx 2012-09-24 07:15:00.000000000 +0200
-+++ new/qemu-options.hx 2012-09-24 07:15:20.000000000 +0200
-@@ -102,6 +102,12 @@
+--- new.orig/qemu-options.hx 2012-11-21 11:11:22.000000000 +0100
++++ new/qemu-options.hx 2012-11-21 11:25:23.000000000 +0100
+@@ -103,6 +103,12 @@
are split equally.
ETEXI
DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
Index: new/vl.c
===================================================================
---- new.orig/vl.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/vl.c 2012-09-24 07:15:20.000000000 +0200
+--- new.orig/vl.c 2012-11-21 11:11:22.000000000 +0100
++++ new/vl.c 2012-11-21 11:25:23.000000000 +0100
@@ -154,6 +154,8 @@
#endif
#include "qtest.h"
#include "qemu_socket.h"
@@ -205,6 +207,7 @@
+ CharDriverState *virtcon_hds[MAX_VIRTIO_CONSOLES];
int win2k_install_hack = 0;
- int usb_enabled = 0;
int singlestep = 0;
+int fairsched_id = 0;
int smp_cpus = 1;
int max_cpus = 0;
int smp_cores = 1;
-@@ -2135,7 +2138,7 @@
+@@ -2275,7 +2278,7 @@
}
static int debugcon_parse(const char *devname)
QemuOpts *opts;
if (!qemu_chr_new("debugcon", devname, NULL)) {
-@@ -2345,6 +2348,9 @@
+@@ -2527,6 +2530,9 @@
int main(int argc, char **argv, char **envp)
{
int i;
int snapshot, linux_boot;
const char *icount_option = NULL;
const char *initrd_filename;
-@@ -3120,6 +3126,21 @@
+@@ -3306,6 +3312,21 @@
exit(1);
}
break;
case QEMU_OPTION_vnc:
#ifdef CONFIG_VNC
display_remote++;
-@@ -3191,8 +3212,8 @@
+@@ -3377,8 +3398,8 @@
}
p += 8;
os_set_proc_name(p);
break;
case QEMU_OPTION_prom_env:
if (nb_prom_envs >= MAX_PROM_ENVS) {
-@@ -3552,6 +3573,39 @@
+@@ -3765,6 +3786,39 @@
}
}
Index: new/vzsyscalls.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ new/vzsyscalls.h 2012-09-24 07:15:20.000000000 +0200
++++ new/vzsyscalls.h 2012-11-21 11:25:23.000000000 +0100
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2000-2008, Parallels, Inc. All rights reserved.
Index: new/qemu-img.c
===================================================================
---- new.orig/qemu-img.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/qemu-img.c 2012-09-24 07:15:31.000000000 +0200
-@@ -1288,7 +1288,9 @@
+--- new.orig/qemu-img.c 2012-11-21 11:11:22.000000000 +0100
++++ new/qemu-img.c 2012-11-21 11:51:19.000000000 +0100
+@@ -1580,7 +1580,9 @@
error_report("Could not delete snapshot '%s': %d (%s)",
snapshot_name, ret, strerror(-ret));
}
Index: new/qapi-schema.json
===================================================================
---- new.orig/qapi-schema.json 2012-09-24 07:15:44.000000000 +0200
-+++ new/qapi-schema.json 2012-09-24 07:15:58.000000000 +0200
-@@ -358,6 +358,40 @@
- '*total-time': 'int'} }
+--- new.orig/qapi-schema.json 2012-11-21 11:11:22.000000000 +0100
++++ new/qapi-schema.json 2012-11-21 12:44:30.000000000 +0100
+@@ -461,6 +461,40 @@
+ '*downtime': 'int'} }
##
+# @SaveVMInfo
# @query-migrate
#
# Returns information about current migration process.
-@@ -2493,3 +2527,12 @@
- # Since: 1.2.0
+@@ -2902,6 +2936,14 @@
##
{ 'command': 'query-target', 'returns': 'TargetInfo' }
-+
-+
+
+{ 'command': 'savevm-start' 'data': { '*statefile': 'str' } }
+
+{ 'command': 'snapshot-drive', 'data': { 'device': 'str', 'name': 'str' } }
+{ 'command': 'delete-drive-snapshot', 'data': { 'device': 'str', 'name': 'str' } }
+
+{ 'command': 'savevm-end' }
++
+ ##
+ # @QKeyCode:
+ #
Index: new/qmp-commands.hx
===================================================================
---- new.orig/qmp-commands.hx 2012-09-24 07:15:44.000000000 +0200
-+++ new/qmp-commands.hx 2012-09-24 08:58:56.000000000 +0200
-@@ -2514,3 +2514,34 @@
+--- new.orig/qmp-commands.hx 2012-11-21 11:11:22.000000000 +0100
++++ new/qmp-commands.hx 2012-11-21 12:41:51.000000000 +0100
+@@ -2654,3 +2654,34 @@
.args_type = "",
.mhandler.cmd_new = qmp_marshal_input_query_target,
},
+
Index: new/hmp.c
===================================================================
---- new.orig/hmp.c 2012-09-24 07:15:44.000000000 +0200
-+++ new/hmp.c 2012-09-24 07:15:58.000000000 +0200
-@@ -1102,3 +1102,60 @@
- qmp_closefd(fdname, &errp);
+--- new.orig/hmp.c 2012-11-21 11:11:22.000000000 +0100
++++ new/hmp.c 2012-11-21 12:41:51.000000000 +0100
+@@ -1335,3 +1335,60 @@
+ qmp_nbd_server_stop(&errp);
hmp_handle_error(mon, &errp);
}
+
+}
Index: new/hmp.h
===================================================================
---- new.orig/hmp.h 2012-09-24 07:15:44.000000000 +0200
-+++ new/hmp.h 2012-09-24 07:15:58.000000000 +0200
+--- new.orig/hmp.h 2012-11-21 11:11:22.000000000 +0100
++++ new/hmp.h 2012-11-21 12:43:32.000000000 +0100
@@ -25,6 +25,7 @@
void hmp_info_uuid(Monitor *mon);
void hmp_info_chardev(Monitor *mon);
void hmp_info_migrate(Monitor *mon);
void hmp_info_migrate_capabilities(Monitor *mon);
void hmp_info_migrate_cache_size(Monitor *mon);
-@@ -71,5 +72,9 @@
+@@ -75,6 +76,10 @@
void hmp_netdev_del(Monitor *mon, const QDict *qdict);
void hmp_getfd(Monitor *mon, const QDict *qdict);
void hmp_closefd(Monitor *mon, const QDict *qdict);
+void hmp_snapshot_drive(Monitor *mon, const QDict *qdict);
+void hmp_delete_drive_snapshot(Monitor *mon, const QDict *qdict);
+void hmp_savevm_end(Monitor *mon, const QDict *qdict);
-
- #endif
+ void hmp_send_key(Monitor *mon, const QDict *qdict);
+ void hmp_screen_dump(Monitor *mon, const QDict *qdict);
+ void hmp_nbd_server_start(Monitor *mon, const QDict *qdict);
Index: new/hmp-commands.hx
===================================================================
---- new.orig/hmp-commands.hx 2012-09-24 07:15:44.000000000 +0200
-+++ new/hmp-commands.hx 2012-09-24 07:15:58.000000000 +0200
-@@ -1468,6 +1468,8 @@
+--- new.orig/hmp-commands.hx 2012-11-21 11:11:22.000000000 +0100
++++ new/hmp-commands.hx 2012-11-21 12:41:51.000000000 +0100
+@@ -1562,6 +1562,8 @@
show current migration capabilities
@item info migrate_cache_size
show current migration XBZRLE cache size
@item info balloon
show balloon information
@item info qtree
-@@ -1494,3 +1496,35 @@
+@@ -1581,3 +1583,35 @@
STEXI
@end table
ETEXI
Index: new/savevm-async.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ new/savevm-async.c 2012-09-24 09:17:54.000000000 +0200
++++ new/savevm-async.c 2012-11-21 12:41:51.000000000 +0100
@@ -0,0 +1,441 @@
+#include "qemu-common.h"
+#include "qerror.h"
+}
Index: new/Makefile.objs
===================================================================
---- new.orig/Makefile.objs 2012-09-24 07:15:44.000000000 +0200
-+++ new/Makefile.objs 2012-09-24 07:15:58.000000000 +0200
-@@ -78,6 +78,7 @@
- common-obj-y += pflib.o
+--- new.orig/Makefile.objs 2012-11-21 11:11:22.000000000 +0100
++++ new/Makefile.objs 2012-11-21 12:41:51.000000000 +0100
+@@ -84,6 +84,7 @@
+ common-obj-y += block-migration.o iohandler.o
common-obj-y += bitmap.o bitops.o
common-obj-y += page_cache.o
+common-obj-y += savevm-async.o
common-obj-$(CONFIG_WIN32) += version.o
Index: new/sysemu.h
===================================================================
---- new.orig/sysemu.h 2012-09-24 07:15:44.000000000 +0200
-+++ new/sysemu.h 2012-09-24 07:15:58.000000000 +0200
-@@ -72,6 +72,7 @@
+--- new.orig/sysemu.h 2012-11-21 11:11:22.000000000 +0100
++++ new/sysemu.h 2012-11-21 12:41:51.000000000 +0100
+@@ -67,6 +67,7 @@
void do_savevm(Monitor *mon, const QDict *qdict);
int load_vmstate(const char *name);
Index: new/qemu-options.hx
===================================================================
---- new.orig/qemu-options.hx 2012-09-24 07:15:51.000000000 +0200
-+++ new/qemu-options.hx 2012-09-24 07:15:58.000000000 +0200
-@@ -2477,6 +2477,19 @@
+--- new.orig/qemu-options.hx 2012-11-21 11:25:23.000000000 +0100
++++ new/qemu-options.hx 2012-11-21 12:41:51.000000000 +0100
+@@ -2575,6 +2575,19 @@
Start right away with a saved state (@code{loadvm} in monitor)
ETEXI
"-daemonize daemonize QEMU after initializing\n", QEMU_ARCH_ALL)
Index: new/vl.c
===================================================================
---- new.orig/vl.c 2012-09-24 07:15:53.000000000 +0200
-+++ new/vl.c 2012-09-24 07:15:58.000000000 +0200
-@@ -2364,6 +2364,7 @@
+--- new.orig/vl.c 2012-11-21 11:26:06.000000000 +0100
++++ new/vl.c 2012-11-21 12:41:51.000000000 +0100
+@@ -2545,6 +2545,7 @@
int optind;
const char *optarg;
const char *loadvm = NULL;
QEMUMachine *machine;
const char *cpu_model;
const char *vga_model = "none";
-@@ -2998,6 +2999,9 @@
+@@ -3185,6 +3186,9 @@
case QEMU_OPTION_loadvm:
loadvm = optarg;
break;
case QEMU_OPTION_full_screen:
full_screen = 1;
break;
-@@ -3821,6 +3825,10 @@
+@@ -4038,6 +4042,10 @@
if (load_vmstate(loadvm) < 0) {
autostart = 0;
}
if (incoming) {
Index: new/monitor.c
===================================================================
---- new.orig/monitor.c 2012-09-24 09:21:18.000000000 +0200
-+++ new/monitor.c 2012-09-24 09:21:32.000000000 +0200
-@@ -2952,6 +2952,13 @@
+--- new.orig/monitor.c 2012-11-21 11:11:22.000000000 +0100
++++ new/monitor.c 2012-11-21 12:41:51.000000000 +0100
+@@ -2701,6 +2701,13 @@
.mhandler.info = hmp_info_migrate_cache_size,
},
{
Index: new/ui/vnc.c
===================================================================
---- new.orig/ui/vnc.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/ui/vnc.c 2012-09-24 07:15:22.000000000 +0200
-@@ -1496,6 +1496,10 @@
+--- new.orig/ui/vnc.c 2012-11-21 11:11:22.000000000 +0100
++++ new/ui/vnc.c 2012-11-21 11:25:33.000000000 +0100
+@@ -1497,6 +1497,10 @@
static void do_key_event(VncState *vs, int down, int keycode, int sym)
{
/* QEMU console switch */
switch(keycode) {
case 0x2a: /* Left Shift */
-@@ -1566,12 +1570,42 @@
+@@ -1567,12 +1571,42 @@
}
if (is_graphic_console()) {
} else {
bool numlock = vs->modifiers_state[0x45];
bool control = (vs->modifiers_state[0x1d] ||
-@@ -1708,7 +1742,8 @@
+@@ -1709,7 +1743,8 @@
lsym = lsym - 'A' + 'a';
}
Index: new/block.c
===================================================================
---- new.orig/block.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/block.c 2012-09-24 07:15:32.000000000 +0200
-@@ -2724,6 +2724,28 @@
+--- new.orig/block.c 2012-11-21 11:11:22.000000000 +0100
++++ new/block.c 2012-11-21 11:51:35.000000000 +0100
+@@ -3137,6 +3137,28 @@
return -ENOTSUP;
}
{
Index: new/block.h
===================================================================
---- new.orig/block.h 2012-09-24 07:15:00.000000000 +0200
-+++ new/block.h 2012-09-24 07:15:32.000000000 +0200
-@@ -302,6 +302,8 @@
+--- new.orig/block.h 2012-11-21 11:11:22.000000000 +0100
++++ new/block.h 2012-11-21 11:51:35.000000000 +0100
+@@ -327,6 +327,8 @@
int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id);
int bdrv_snapshot_list(BlockDriverState *bs,
QEMUSnapshotInfo **psn_info);
char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn);
Index: new/savevm.c
===================================================================
---- new.orig/savevm.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/savevm.c 2012-09-24 07:15:32.000000000 +0200
-@@ -2015,28 +2015,6 @@
+--- new.orig/savevm.c 2012-11-21 11:11:22.000000000 +0100
++++ new/savevm.c 2012-11-21 11:51:35.000000000 +0100
+@@ -2061,28 +2061,6 @@
return ret;
}
Index: new/ui/vnc.c
===================================================================
---- new.orig/ui/vnc.c 2012-09-24 07:15:22.000000000 +0200
-+++ new/ui/vnc.c 2012-09-24 07:15:24.000000000 +0200
+--- new.orig/ui/vnc.c 2012-11-21 11:25:33.000000000 +0100
++++ new/ui/vnc.c 2012-11-21 11:32:25.000000000 +0100
@@ -43,6 +43,125 @@
#include "vnc_keysym.h"
#include "d3des.h"
static VncDisplay *vnc_display; /* needed for info vnc */
static DisplayChangeListener *dcl;
-@@ -1891,7 +2010,7 @@
- static void set_pixel_conversion(VncState *vs)
- {
- if ((vs->clientds.flags & QEMU_BIG_ENDIAN_FLAG) ==
-- (vs->ds->surface->flags & QEMU_BIG_ENDIAN_FLAG) &&
-+ (vs->ds->surface->flags & QEMU_BIG_ENDIAN_FLAG) &&
- !memcmp(&(vs->clientds.pf), &(vs->ds->surface->pf), sizeof(PixelFormat))) {
- vs->write_pixels = vnc_write_pixels_copy;
- vnc_hextile_set_pixel_conversion(vs, 0);
-@@ -1980,7 +2099,7 @@
+@@ -1982,7 +2101,7 @@
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
vnc_write_u8(vs, 0);
vnc_write_u16(vs, 1); /* number of rects */
ds_get_height(vs->ds), VNC_ENCODING_WMVi);
pixel_format_message(vs);
vnc_unlock_output(vs);
-@@ -2875,7 +2994,7 @@
+@@ -2892,7 +3011,7 @@
char *vnc_display_local_addr(DisplayState *ds)
{
VncDisplay *vs = ds ? (VncDisplay *)ds->opaque : vnc_display;
return vnc_socket_local_addr("%s:%s", vs->lsock);
}
-@@ -2934,6 +3053,7 @@
+@@ -2950,6 +3069,7 @@
tls = 1; /* Require TLS */
} else if (strncmp(options, "x509", 4) == 0) {
char *start, *end;
x509 = 1; /* Require x509 certificates */
if (strncmp(options, "x509verify", 10) == 0)
vs->tls.x509verify = 1; /* ...and verify client certs */
-@@ -2956,10 +3076,12 @@
+@@ -2970,8 +3090,10 @@
}
g_free(path);
} else {
-- fprintf(stderr, "No certificate path provided\n");
-- g_free(vs->display);
-- vs->display = NULL;
-- return -1;
+- error_setg(errp, "No certificate path provided");
+- goto fail;
+ if (pve_tls_set_x509_creds_dir(vs) < 0) {
-+ fprintf(stderr, "No certificate path provided\n");
-+ g_free(vs->display);
-+ vs->display = NULL;
-+ return -1;
-+ }
++ error_setg(errp, "No certificate path provided");
++ goto fail;
++ }
}
#endif
#if defined(CONFIG_VNC_TLS) || defined(CONFIG_VNC_SASL)
-@@ -3025,10 +3147,10 @@
+@@ -3035,10 +3157,10 @@
vs->auth = VNC_AUTH_VENCRYPT;
if (x509) {
VNC_DEBUG("Initializing VNC server with x509 password auth\n");
#endif /* CONFIG_VNC_TLS */
Index: new/ui/vnc-auth-vencrypt.c
===================================================================
---- new.orig/ui/vnc-auth-vencrypt.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/ui/vnc-auth-vencrypt.c 2012-09-24 07:15:24.000000000 +0200
+--- new.orig/ui/vnc-auth-vencrypt.c 2012-11-21 11:11:22.000000000 +0100
++++ new/ui/vnc-auth-vencrypt.c 2012-11-21 11:26:06.000000000 +0100
@@ -25,7 +25,107 @@
*/
VNC_DEBUG("Start TLS auth VNC\n");
Index: new/ui/vnc.h
===================================================================
---- new.orig/ui/vnc.h 2012-09-24 07:15:00.000000000 +0200
-+++ new/ui/vnc.h 2012-09-24 07:15:24.000000000 +0200
-@@ -263,6 +263,8 @@
+--- new.orig/ui/vnc.h 2012-11-21 11:11:22.000000000 +0100
++++ new/ui/vnc.h 2012-11-21 11:26:06.000000000 +0100
+@@ -264,6 +264,8 @@
char challenge[VNC_AUTH_CHALLENGE_SIZE];
#ifdef CONFIG_VNC_TLS
int subauth; /* Used by VeNCrypt */
VncStateTLS tls;
#endif
#ifdef CONFIG_VNC_SASL
-@@ -554,4 +556,6 @@
+@@ -560,4 +562,6 @@
int vnc_zywrle_send_framebuffer_update(VncState *vs, int x, int y, int w, int h);
void vnc_zrle_clear(VncState *vs);
#endif /* __QEMU_VNC_H */
Index: new/ui/vnc-tls.c
===================================================================
---- new.orig/ui/vnc-tls.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/ui/vnc-tls.c 2012-09-24 07:15:24.000000000 +0200
+--- new.orig/ui/vnc-tls.c 2012-11-21 11:11:22.000000000 +0100
++++ new/ui/vnc-tls.c 2012-11-21 11:26:06.000000000 +0100
@@ -302,6 +302,14 @@
static int vnc_set_gnutls_priority(gnutls_session_t s, int x509)
const char *certdir)
Index: new/ui/vnc-tls.h
===================================================================
---- new.orig/ui/vnc-tls.h 2012-09-24 07:15:00.000000000 +0200
-+++ new/ui/vnc-tls.h 2012-09-24 07:15:24.000000000 +0200
+--- new.orig/ui/vnc-tls.h 2012-11-21 11:11:22.000000000 +0100
++++ new/ui/vnc-tls.h 2012-11-21 11:26:06.000000000 +0100
@@ -68,6 +68,8 @@
int vnc_tls_validate_certificate(VncState *vs);
Index: new/vl.c
===================================================================
---- new.orig/vl.c 2012-09-24 07:15:20.000000000 +0200
-+++ new/vl.c 2012-09-24 07:15:24.000000000 +0200
-@@ -3133,6 +3133,7 @@
+--- new.orig/vl.c 2012-11-21 11:25:23.000000000 +0100
++++ new/vl.c 2012-11-21 11:26:06.000000000 +0100
+@@ -3319,6 +3319,7 @@
fprintf(stderr, "Invalid ID\n");
exit(1);
}
cpuunits = atoi(optarg);
Index: new/console.h
===================================================================
---- new.orig/console.h 2012-09-24 07:15:00.000000000 +0200
-+++ new/console.h 2012-09-24 07:15:24.000000000 +0200
-@@ -374,6 +374,7 @@
+--- new.orig/console.h 2012-11-21 11:11:22.000000000 +0100
++++ new/console.h 2012-11-21 11:26:06.000000000 +0100
+@@ -448,6 +448,7 @@
void cocoa_display_init(DisplayState *ds, int full_screen);
/* vnc.c */
+void pve_auth_setup(int vmid);
void vnc_display_init(DisplayState *ds);
- void vnc_display_close(DisplayState *ds);
- int vnc_display_open(DisplayState *ds, const char *display);
+ void vnc_display_open(DisplayState *ds, const char *display, Error **errp);
+ void vnc_display_add_client(DisplayState *ds, int csock, int skipauth);
qemu-img.c | 36 +++++++++++++++++++++---------------
1 file changed, 21 insertions(+), 15 deletions(-)
-diff --git a/qemu-img.c b/qemu-img.c
-index b41e670..d399ccd 100644
---- a/qemu-img.c
-+++ b/qemu-img.c
-@@ -654,7 +654,7 @@ static int compare_sectors(const uint8_t *buf1, const uint8_t *buf2, int n,
+Index: new/qemu-img.c
+===================================================================
+--- new.orig/qemu-img.c 2012-11-21 11:51:19.000000000 +0100
++++ new/qemu-img.c 2012-11-21 12:45:10.000000000 +0100
+@@ -660,7 +660,7 @@
static int img_convert(int argc, char **argv)
{
int progress = 0, flags;
const char *fmt, *out_fmt, *cache, *out_baseimg, *out_filename;
BlockDriver *drv, *proto_drv;
-@@ -676,8 +676,9 @@ static int img_convert(int argc, char **argv)
+@@ -682,8 +682,9 @@
cache = "unsafe";
out_baseimg = NULL;
compress = 0;
if (c == -1) {
break;
}
-@@ -698,6 +699,9 @@ static int img_convert(int argc, char **argv)
+@@ -704,6 +705,9 @@
case 'c':
compress = 1;
break;
case 'e':
error_report("option -e is deprecated, please use \'-o "
"encryption\' instead!");
-@@ -858,20 +862,22 @@ static int img_convert(int argc, char **argv)
+@@ -864,20 +868,22 @@
}
}
}
flags = BDRV_O_RDWR;
---
-1.7.10.4
-
Index: new/savevm-async.c
===================================================================
---- new.orig/savevm-async.c 2012-09-24 07:59:38.000000000 +0200
-+++ new/savevm-async.c 2012-09-24 08:03:38.000000000 +0200
-@@ -151,6 +151,8 @@
+--- new.orig/savevm-async.c 2012-11-22 10:44:32.000000000 +0100
++++ new/savevm-async.c 2012-11-22 12:15:20.000000000 +0100
+@@ -7,7 +7,7 @@
+ #include "buffered_file.h"
+ #include "migration.h"
- static void block_state_put_ready(void *opaque)
+-//#define DEBUG_SAVEVM_STATE
++/* #define DEBUG_SAVEVM_STATE */
+
+ #ifdef DEBUG_SAVEVM_STATE
+ #define DPRINTF(fmt, ...) \
+@@ -86,11 +86,11 @@
+ }
+
+ if (snap_state.bs) {
+- // try to truncate, but ignore errors (will fail on block devices).
+- // note: bdrv_read() need whole blocks, so we round up
++ /* try to truncate, but ignore errors (will fail on block devices).
++ * note: bdrv_read() need whole blocks, so we round up
++ */
+ size_t size = (snap_state.bs_pos + BDRV_SECTOR_SIZE) & BDRV_SECTOR_MASK;
+ bdrv_truncate(snap_state.bs, size);
+-
+ bdrv_delete(snap_state.bs);
+ snap_state.bs = NULL;
+ }
+@@ -137,11 +137,13 @@
+ return bdrv_flush(snap_state.bs);
+ }
+
+-static ssize_t block_state_put_buffer(void *opaque, const void *buf,
+- size_t size)
++static int block_state_put_buffer(void *opaque, const uint8_t *buf,
++ int64_t pos, int size)
{
-+ uint64_t remaining;
-+ int64_t maxlen;
int ret;
- if (snap_state.state != SAVE_STATE_ACTIVE) {
-@@ -158,16 +160,25 @@
- return;
++ assert(pos == snap_state.bs_pos);
++
+ if ((ret = bdrv_pwrite(snap_state.bs, snap_state.bs_pos, buf, size)) > 0) {
+ snap_state.bs_pos += ret;
}
+@@ -149,50 +151,74 @@
+ return ret;
+ }
+
+-static void block_state_put_ready(void *opaque)
++static void process_savevm_co(void *opaque)
+ {
+ int ret;
++ uint64_t remaining;
++ int64_t maxlen;
++ MigrationParams params = {
++ .blk = 0,
++ .shared = 0
++ };
+
+- if (snap_state.state != SAVE_STATE_ACTIVE) {
+- save_snapshot_error("put_ready returning because of non-active state");
+- return;
+- }
++ snap_state.state = SAVE_STATE_ACTIVE;
- if (!runstate_check(RUN_STATE_SAVE_VM)) {
- save_snapshot_error("put_ready returning because of wrong run state");
-- return;
-+ ret = qemu_savevm_state_iterate(snap_state.file);
-+ remaining = ram_bytes_remaining();
-+
-+ // stop if we get to the end of available space,
-+ // or if remaining is just a few MB
-+ maxlen = bdrv_getlength(snap_state.bs) - 30*1024*1024;
-+ if ((remaining < 100000) || ((snap_state.bs_pos + remaining) >= maxlen)) {
-+ if (runstate_is_running()) {
-+ vm_stop(RUN_STATE_SAVE_VM);
-+ }
++ ret = qemu_savevm_state_begin(snap_state.file, ¶ms);
++ if (ret < 0) {
++ save_snapshot_error("qemu_savevm_state_begin failed");
+ return;
}
- ret = qemu_savevm_state_iterate(snap_state.file);
- if (ret < 0) {
- save_snapshot_error("qemu_savevm_state_iterate error %d", ret);
- return;
- } else if (ret == 1) {
-+ if (runstate_is_running()) {
-+ vm_stop(RUN_STATE_SAVE_VM);
+- if (ret < 0) {
+- save_snapshot_error("qemu_savevm_state_iterate error %d", ret);
+- return;
+- } else if (ret == 1) {
+- DPRINTF("savevm inerate finished\n");
+- if ((ret = qemu_savevm_state_complete(snap_state.file)) < 0) {
+- save_snapshot_error("qemu_savevm_state_complete error %d", ret);
+- return;
+- } else {
+- DPRINTF("save complete\n");
+- save_snapshot_completed();
++ while (snap_state.state == SAVE_STATE_ACTIVE) {
++
++ ret = qemu_savevm_state_iterate(snap_state.file);
++ remaining = ram_bytes_remaining();
++
++ DPRINTF("savevm inerate %zd %d\n", remaining, ret);
++
++ if (ret < 0) {
++ save_snapshot_error("qemu_savevm_state_iterate error %d", ret);
+ return;
+ }
++
++ /* stop the VM if we get to the end of available space,
++ * or if remaining is just a few MB
++ */
++ maxlen = bdrv_getlength(snap_state.bs) - 30*1024*1024;
++ if ((remaining < 100000) ||
++ ((snap_state.bs_pos + remaining) >= maxlen)) {
++ if (runstate_is_running()) {
++ vm_stop(RUN_STATE_SAVE_VM);
++ }
+ }
- DPRINTF("savevm inerate finished\n");
- if ((ret = qemu_savevm_state_complete(snap_state.file)) < 0) {
- save_snapshot_error("qemu_savevm_state_complete error %d", ret);
-@@ -211,10 +222,8 @@
++
++ if (ret == 1) { /* finished */
++ if (runstate_is_running()) {
++ vm_stop(RUN_STATE_SAVE_VM);
++ }
++ DPRINTF("savevm inerate finished\n");
++ if ((ret = qemu_savevm_state_complete(snap_state.file)) < 0) {
++ save_snapshot_error("qemu_savevm_state_complete error %d", ret);
++ return;
++ } else {
++ DPRINTF("save complete\n");
++ save_snapshot_completed();
++ return;
++ }
++ }
+ }
+ }
+
+-static void block_state_wait_for_unfreeze(void *opaque)
+-{
+- /* do nothing here - should not be called */
+-}
++static const QEMUFileOps block_file_ops = {
++ .put_buffer = block_state_put_buffer,
++ .close = block_state_close,
++};
++
+
+ void qmp_savevm_start(bool has_statefile, const char *statefile, Error **errp)
+ {
+ BlockDriver *drv = NULL;
+ int bdrv_oflags = BDRV_O_CACHE_WB | BDRV_O_RDWR;
+- MigrationParams params = {
+- .blk = 0,
+- .shared = 0
+- };
+ int ret;
+
+ if (snap_state.state != SAVE_STATE_DONE) {
+@@ -211,10 +237,8 @@
snap_state.error = NULL;
}
snap_state.state = SAVE_STATE_COMPLETED;
return;
}
+@@ -231,27 +255,15 @@
+ goto restart;
+ }
+
+- snap_state.file = qemu_fopen_ops_buffered(&snap_state, 1000000000,
+- block_state_put_buffer,
+- block_state_put_ready,
+- block_state_wait_for_unfreeze,
+- block_state_close);
++ snap_state.file = qemu_fopen_ops(&snap_state, &block_file_ops);
+
+ if (!snap_state.file) {
+ error_set(errp, QERR_OPEN_FILE_FAILED, statefile);
+ goto restart;
+ }
+
+- snap_state.state = SAVE_STATE_ACTIVE;
+-
+- ret = qemu_savevm_state_begin(snap_state.file, ¶ms);
+- if (ret < 0) {
+- error_set(errp, ERROR_CLASS_GENERIC_ERROR,
+- "qemu_savevm_state_begin failed\n");
+- goto restart;
+- }
+-
+- block_state_put_ready(&snap_state);
++ Coroutine *co = qemu_coroutine_create(process_savevm_co);
++ qemu_coroutine_enter(co, NULL);
+
+ return;
+
+@@ -384,7 +396,8 @@
+ }
+ }
+
+-static int loadstate_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
++static int loadstate_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
++ int size)
+ {
+ BlockDriverState *bs = (BlockDriverState *)opaque;
+ int64_t maxlen = bdrv_getlength(bs);
+@@ -400,6 +413,10 @@
+ return bdrv_pread(bs, pos, buf, size);
+ }
+
++static const QEMUFileOps loadstate_file_ops = {
++ .get_buffer = loadstate_get_buffer,
++};
++
+ int load_state_from_blockdev(const char *filename)
+ {
+ BlockDriverState *bs = NULL;
+@@ -415,7 +432,7 @@
+ }
+
+ /* restore the VM state */
+- f = qemu_fopen_ops(bs, NULL, loadstate_get_buffer, NULL, NULL, NULL, NULL);
++ f = qemu_fopen_ops(bs, &loadstate_file_ops);
+ if (!f) {
+ error_report("Could not open VM state file");
+ ret = -EINVAL;
keymap.diff
set-max-nics.patch
pve-auth.patch
-update-cpus-x86_64.conf-to-rhel6.2-version.patch
vencrypt-auth-plain.patch
ahci-add_migration-support.patch
-ahci-properly-reset-pxcmd.patch
-sheepdog-fix-savevm-loadvm.patch
fix-qemu-img-snapshot-removal.patch
move-bdrv-snapshot-find.patch
internal-snapshot-async.patch
savevm-live.patch
stream-fix-ratelimit_set_speed.patch
qemu-img-convert-skipcreate-option.patch
+enable-kvm-by-default.patch
+++ /dev/null
-From 1f7a48de4467f31afc51169122453318efdb0f33 Mon Sep 17 00:00:00 2001
-From: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
-Date: Thu, 30 Aug 2012 03:39:45 +0900
-Subject: [PATCH] sheepdog: fix savevm and loadvm
-
-This patch sets data to be sent to Sheepdog correctly and fixes savevm
-and loadvm operations on a Sheepdog image.
-
-Signed-off-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
-Signed-off-by: Kevin Wolf <kwolf@redhat.com>
----
- block/sheepdog.c | 3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-Index: new/block/sheepdog.c
-===================================================================
---- new.orig/block/sheepdog.c 2012-09-24 07:15:00.000000000 +0200
-+++ new/block/sheepdog.c 2012-09-24 07:15:30.000000000 +0200
-@@ -1986,7 +1986,7 @@
- vdi_index = pos / SD_DATA_OBJ_SIZE;
- offset = pos % SD_DATA_OBJ_SIZE;
-
-- data_len = MIN(remaining, SD_DATA_OBJ_SIZE);
-+ data_len = MIN(remaining, SD_DATA_OBJ_SIZE - offset);
-
- vmstate_oid = vid_to_vmstate_oid(s->inode.vdi_id, vdi_index);
-
-@@ -2007,6 +2007,7 @@
- }
-
- pos += data_len;
-+ data += data_len;
- remaining -= data_len;
- }
- ret = size;
+++ /dev/null
-From 861cf626eca5abb2fe7bc3be719acbf7086b94bb Mon Sep 17 00:00:00 2001
-From: Derumier Alexandre <aderumier@odiso.com>
-Date: Thu, 1 Mar 2012 17:00:30 +0100
-Subject: [PATCH] update target to rhel 6.2 version
-
-
-Signed-off-by: Derumier Alexandre <aderumier@odiso.com>
----
- sysconfigs/target/cpus-x86_64.conf | 36 ++++++++++++++++++++++++++++++---
- 1 files changed, 32 insertions(+), 4 deletions(-)
-
-Index: new/sysconfigs/target/cpus-x86_64.conf
-===================================================================
---- new.orig/sysconfigs/target/cpus-x86_64.conf 2012-09-24 07:15:00.000000000 +0200
-+++ new/sysconfigs/target/cpus-x86_64.conf 2012-09-24 07:15:25.000000000 +0200
-@@ -1,11 +1,39 @@
- # x86 CPU MODELS
-
- [cpudef]
-+ name = "cpu64-rhel6"
-+ level = "4"
-+ vendor = "AuthenticAMD"
-+ family = "6"
-+ model = "13"
-+ stepping = "3"
-+ feature_edx = "sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu"
-+ feature_ecx = "cx16 sse3 x2apic"
-+ extfeature_edx = "lm fxsr mmx nx pat cmov pge syscall apic cx8 mce pae msr tsc pse de fpu"
-+ extfeature_ecx = "sse4a abm svm lahf_lm"
-+ xlevel = "0x8000000A"
-+ model_id = "QEMU Virtual CPU version (cpu64-rhel6)"
-+
-+[cpudef]
-+ name = "cpu64-rhel5"
-+ level = "4"
-+ vendor = "AuthenticAMD"
-+ family = "6"
-+ model = "6"
-+ stepping = "3"
-+ feature_edx = "sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu"
-+ feature_ecx = "sse3"
-+ extfeature_edx = "3dnow 3dnowext lm fxsr mmx nx pat cmov pge syscall apic cx8 mce pae msr tsc pse de fpu"
-+ extfeature_ecx = "svm"
-+ xlevel = "0x8000000A"
-+ model_id = "QEMU Virtual CPU version (cpu64-rhel5)"
-+
-+[cpudef]
- name = "Conroe"
- level = "2"
- vendor = "GenuineIntel"
- family = "6"
-- model = "2"
-+ model = "15"
- stepping = "3"
- feature_edx = "sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu"
- feature_ecx = "ssse3 sse3"
-@@ -19,7 +47,7 @@
- level = "2"
- vendor = "GenuineIntel"
- family = "6"
-- model = "2"
-+ model = "23"
- stepping = "3"
- feature_edx = "sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu"
- feature_ecx = "sse4.1 cx16 ssse3 sse3"
-@@ -33,7 +61,7 @@
- level = "2"
- vendor = "GenuineIntel"
- family = "6"
-- model = "2"
-+ model = "26"
- stepping = "3"
- feature_edx = "sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu"
- feature_ecx = "popcnt sse4.2 sse4.1 cx16 ssse3 sse3"
-@@ -44,7 +72,7 @@
-
- [cpudef]
- name = "Westmere"
-- level = "11"
-+ level = "2"
- vendor = "GenuineIntel"
- family = "6"
- model = "44"
config.status: configure
dh_testdir
# Add here commands to configure the package.
- ./configure --prefix=/usr --datadir=/usr/share --docdir=/usr/share/doc/pve-qemu-kvm --sysconfdir=/etc --disable-xen --enable-vnc-tls --enable-sdl --enable-uuid --enable-linux-aio --enable-rbd --enable-libiscsi --audio-drv-list="alsa"
+ ./configure --with-confsuffix="/kvm" --target-list=x86_64-softmmu --prefix=/usr --datadir=/usr/share --docdir=/usr/share/doc/pve-qemu-kvm --sysconfdir=/etc --disable-xen --enable-vnc-tls --enable-sdl --enable-uuid --enable-linux-aio --enable-rbd --enable-libiscsi --audio-drv-list="alsa"
build: patch build-stamp
clean: unpatch
dh_testdir
dh_testroot
- rm -f build-stamp
+ rm -f build-stamp
# Add here commands to clean up after the build process.
-$(MAKE) distclean
endif
- dh_clean
+ dh_clean
install: build
dh_testdir
dh_testroot
- dh_clean -k
+ dh_clean -k
dh_installdirs
# Add here commands to install the package into debian/pve-kvm.
install -D -m 0755 $(CURDIR)/debian/kvm-ifup $(destdir)/etc/kvm/kvm-ifup
install -D -m 0755 $(CURDIR)/debian/kvm-ifdown $(destdir)/etc/kvm/kvm-ifdown
- # do not install empty file (now in /usr/share/kvm/cpus-x86_64.conf)
+ # do not install empty file (now in /usr/share/kvm/cpus-x86_64.conf)
rm $(destdir)/etc/kvm/target-x86_64.conf
# we do not need openbios files (sparc/ppc)
binary-arch: build install
dh_testdir
dh_testroot
- dh_installchangelogs
+ dh_installchangelogs
dh_installdocs
dh_installexamples
# dh_install
# dh_installmenu
-# dh_installdebconf
+# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
dh_builddeb
binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install
+.PHONY: build clean binary-indep binary-arch binary install