From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Simon Kagstrom <simon.kagstrom-6Uc+yI3S9P8@public.gmane.org>
Cc: KVM <kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
Baruch Even <baruch-6P1Dz+XQpLLYtjvyW6yDsg@public.gmane.org>
Subject: Re: [PATCH] 2/2: Fall back to plain Qemu if KVM is not present, report errors from libkvm
Date: Tue, 14 Nov 2006 14:24:20 +0200 [thread overview]
Message-ID: <4559B574.5000000@qumranet.com> (raw)
In-Reply-To: <87y7qe8c43.wl%simon.kagstrom-6Uc+yI3S9P8@public.gmane.org>
Simon Kagstrom wrote:
> (I've edited the patch comments to show the reasoning)
>
> At Tue, 14 Nov 2006 13:44:31 +0200,
> Avi Kivity wrote:
>
>> /* Initialize kvm */
>> if (kvm_allowed) {
>> if (kvm_qemu_init() < 0) {
>> fprintf(stderr, "Could not initialize KVM\n");
>> kvm_allowed = 0;
>> }
>> }
>> /* Fall back to normal qemu if KVM fails */
>> if (!kvm_allowed) {
>> phys_ram_base = qemu_vmalloc(phys_ram_size);
>> if (!phys_ram_base) {
>> fprintf(stderr, "Could not allocate physical memory\n");
>> exit(1);
>> }
>> }
>>
>> This bit is rather awkward, since it disabled kvm after it has been
>> enabled. It's a cleaner to never enable kvm_allowed in the first place
>> (i.e. during argument parsing).
>>
>
> OK. My reasoning was this: qemu with KVM defaults to use kvm and
> therefore tries to enable it (kvm_qemu_init), if it cannot be
> initialized, it will disable it again.
>
Yes, but it leads to code duplication (there's a qemu_vmalloc() outside
USE_KVM). Also, if some code prior to this depended on kvm_allowed, it
would be invalidated.
Best to set kvm_allowed once you're sure it's really allowed, and then
don't touch it.
> I can submit a new patch where kvm_init and kvm_create is separated
> and kvm_init is done at argument-parsing time if you like, but
> personally I think this way is clearer :-)
>
>
>> How about a
>>
>> int libkvm_init(kvm_libcontext_t *libcontext);
>> void libkvm_exit(kvm_libcontext_t libcontext);
>>
>> int kvm_create(kvm_libcontext_t libcontext, kvm_context_t* vm);
>> void kvm_destroy(kvm_context_t *vm);
>>
I meant kvm_destroy(kvm_context_t vm);
>> at present, libkvm_init() can just call access(2) on /dev/kvm. In the
>> future, it is planned that open("/dev/kvm") will not create a VM (it
>> just opens a communication channel to the driver), so that libkvm_init()
>> will open the device and store the fd.
>>
>
> Personally, I would prefer something like
>
> int kvm_open(kvm_t *kvm;)
> void kvm_close(kvm_t *kvm);
>
> int kvm_create_vm(kvm_t *kvm, kvm_context_t *vm);
> void kvm_destroy_vm(kvm_t *kvm, kvm_context_t *vm);
>
That means that if sizeof(kvm_t) changes, we need to recompile
everything. With kvm_context_t and kvm_t as opaque pointers, we preserve
binary compatibility when their definitions change.
--
error compiling committee.c: too many arguments to function
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
next prev parent reply other threads:[~2006-11-14 12:24 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-14 7:26 qemu-kvm Baruch Even
[not found] ` <20061114072601.GD28027-xGn4Jn0woyz+OtfAA3OxFg@public.gmane.org>
2006-11-14 8:28 ` qemu-kvm Simon Kagstrom
2006-11-14 8:50 ` qemu-kvm Avi Kivity
[not found] ` <4559834F.80905-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-14 9:28 ` qemu-kvm Simon Kagstrom
[not found] ` <8764di9y30.wl%simon.kagstrom-6Uc+yI3S9P8@public.gmane.org>
2006-11-14 9:35 ` qemu-kvm Baruch Even
[not found] ` <20061114093537.GH28027-xGn4Jn0woyz+OtfAA3OxFg@public.gmane.org>
2006-11-14 10:30 ` [PATCH] 1/2: Fall back to plain Qemu if KVM is not present, report errors from libkvm Simon Kagstrom
2006-11-14 9:41 ` qemu-kvm Avi Kivity
[not found] ` <45598F42.5090400-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-14 10:36 ` [PATCH] 2/2: Fall back to plain Qemu if KVM is not present, report errors from libkvm Simon Kagstrom
[not found] ` <871wo69uxb.wl%simon.kagstrom-6Uc+yI3S9P8@public.gmane.org>
2006-11-14 11:44 ` Avi Kivity
[not found] ` <4559AC1F.9080304-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-14 12:08 ` Simon Kagstrom
[not found] ` <87y7qe8c43.wl%simon.kagstrom-6Uc+yI3S9P8@public.gmane.org>
2006-11-14 12:24 ` Avi Kivity [this message]
[not found] ` <4559B574.5000000-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-14 13:04 ` Simon Kagstrom
[not found] ` <87wt5y89ik.wl%simon.kagstrom-6Uc+yI3S9P8@public.gmane.org>
2006-11-14 13:24 ` Avi Kivity
[not found] ` <4559C393.70001-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2006-11-14 13:39 ` Simon Kagstrom
[not found] ` <87veli87vf.wl%simon.kagstrom-6Uc+yI3S9P8@public.gmane.org>
2006-11-14 13:55 ` Avi Kivity
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4559B574.5000000@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=baruch-6P1Dz+XQpLLYtjvyW6yDsg@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=simon.kagstrom-6Uc+yI3S9P8@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.