From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] 2/2: Fall back to plain Qemu if KVM is not present, report errors from libkvm Date: Tue, 14 Nov 2006 13:44:31 +0200 Message-ID: <4559AC1F.9080304@qumranet.com> References: <20061114072601.GD28027@galon.ev-en.org> <4559834F.80905@qumranet.com> <8764di9y30.wl%simon.kagstrom@bth.se> <45598F42.5090400@qumranet.com> <871wo69uxb.wl%simon.kagstrom@bth.se> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: KVM , Baruch Even Return-path: To: Simon Kagstrom In-Reply-To: <871wo69uxb.wl%simon.kagstrom-6Uc+yI3S9P8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Simon Kagstrom wrote: > This patch implements fall-back to plain Qemu if KVM is not > present. Some logic has been moved into kvm_qemu_init. > > Signed-off-by: Simon Kagstrom > > [please inline patches in the future for easier reviewing] -#if USE_KVM phys_ram_size = ram_size + vga_ram_size + bios_size; +#if USE_KVM + /* Initialize kvm */ if (kvm_allowed) { - phys_ram_size += KVM_EXTRA_PAGES * 4096; - kvm_qemu_init(); - } else { - phys_ram_base = qemu_vmalloc(phys_ram_size); - if (!phys_ram_base) { - fprintf(stderr, "Could not allocate physical memory\n"); - exit(1); - } + 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); + } } #else - phys_ram_size = ram_size + vga_ram_size + bios_size; 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). 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); 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. -- 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