[digging through old mail] On 07/17/2010 10:58 AM, John Lumby wrote: >>> I am wondering about > the extent to which "old" qemu-0.11.1 >>> and kqemu-1.4.0 are > supported by virt-manager. >>> >>> >> >> It looks for presence of /dev/kqemu and a -no-kqemu arg in >> > QEMU's help. I had no idea that arg had been changed to >> be > -enable-kqemu. Patches welcome to support that new >> arg. See > qemudBuildCommandLine() & qemudComputeCmdFlags() >> methods in > src/qemu/qemu_conf.c >> >> Daniel >> > Thanks Daniel for the pointer to the source code . Interesting "interface". > > Here's my patch - works for me but tested only on my own qemu-1.11.1 I never saw a reply to this. Is this a patch that should be revived and rebased onto the latest git? > > --- src/qemu/qemu_conf.h.orig 2010-04-23 11:52:47.000000000 -0400 > +++ src/qemu/qemu_conf.h 2010-07-15 15:27:44.000000000 -0400 > @@ -88,6 +88,13 @@ enum qemud_cmd_flags { > QEMUD_CMD_FLAG_NO_HPET = (1LL << 33), /* -no-hpet flag is supported */ > QEMUD_CMD_FLAG_NO_KVM_PIT = (1LL << 34), /* -no-kvm-pit-reinjection supported */ > QEMUD_CMD_FLAG_TDF = (1LL << 35), /* -tdf flag (user-mode pit catchup) */ > + > + /* features added in qemu-0.11.x jel */ > + QEMUD_CMD_FLAG_KQEMU_EXPLICIT = (1LL << 36) /* KQEMU is available but must be explicitly requested > + ** using options -enable-kqemu -kernel-kqemu > + ** note we either specify both or neither > + ** since qemu domain is always system mode (I think?) jel > + */ > }; > > /* Main driver state */ > --- src/qemu/qemu_conf.c.orig 2010-04-30 08:46:09.000000000 -0400 > +++ src/qemu/qemu_conf.c 2010-07-15 21:15:12.000000000 -0400 > @@ -1130,6 +1130,14 @@ static unsigned long long qemudComputeCm > > if (strstr(help, "-no-kqemu")) > flags |= QEMUD_CMD_FLAG_KQEMU; > + /* here we check for qemu version of *exactly* 0.11.x, > + ** which requires different options to select kqemu jel */ > + if ( ( version >= 11000 ) && ( version <= 11999 ) > + && ( ( strstr(help, "-enable-kqemu") ) > + || ( strstr(help, "-kernel-kqemu") ) > + ) > + ) > + flags |= ( QEMUD_CMD_FLAG_KQEMU | QEMUD_CMD_FLAG_KQEMU_EXPLICIT ); > if (strstr(help, "-no-kvm")) > flags |= QEMUD_CMD_FLAG_KVM; > if (strstr(help, "-enable-kvm")) > @@ -3431,7 +3439,10 @@ int qemudBuildCommandLine(virConnectPtr > char memory[50]; > char boot[VIR_DOMAIN_BOOT_LAST]; > struct utsname ut; > - int disableKQEMU = 0; > + int disableKQEMU = 0; /* 0 means don't enable or disable > + ** +1 means do explicitly disable > + ** -1 means do explicitly enable (double-negative) > + */ > int disableKVM = 0; > int enableKVM = 0; > int qargc = 0, qarga = 0; > @@ -3484,10 +3495,24 @@ int qemudBuildCommandLine(virConnectPtr > /* Need to explicitly disable KQEMU if > * 1. Guest domain is 'qemu' > * 2. The qemu binary has the -no-kqemu flag > + * > + * and need to explicitly enable KQEMU if > + * 1. Guest domain is 'kqemu' > + * 2. The qemu binary has the -enable-kqemu flag > */ > - if ((qemuCmdFlags & QEMUD_CMD_FLAG_KQEMU) && > - def->virtType == VIR_DOMAIN_VIRT_QEMU) > - disableKQEMU = 1; > + > + if (qemuCmdFlags & QEMUD_CMD_FLAG_KQEMU) { > + /* we need to decide whether to explictly enable, > + ** explicitly disable, or neither (default) */ > + if (def->virtType == VIR_DOMAIN_VIRT_QEMU) { > + disableKQEMU = 1; > + } else > + if ( ( def->virtType == VIR_DOMAIN_VIRT_KQEMU ) > + && ( qemuCmdFlags & QEMUD_CMD_FLAG_KQEMU_EXPLICIT ) > + ) { > + disableKQEMU = -1; /* explicitly enable */ > + } > + } > > /* Need to explicitly disable KVM if > * 1. Guest domain is 'qemu' > @@ -3617,8 +3642,12 @@ int qemudBuildCommandLine(virConnectPtr > VIR_FREE(cpu); > } > > - if (disableKQEMU) > + if (disableKQEMU == 1) > ADD_ARG_LIT("-no-kqemu"); > + else if (disableKQEMU == -1) { > + ADD_ARG_LIT("-enable-kqemu"); > + ADD_ARG_LIT("-kernel-kqemu"); > + } > if (disableKVM) > ADD_ARG_LIT("-no-kvm"); > if (enableKVM) > > -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list