From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: Bugs on MacBook, and proposed code change Date: Mon, 11 Dec 2006 11:35:29 +0200 Message-ID: <457D2661.9060006@qumranet.com> References: <20061211044746.1006.qmail@web34308.mail.mud.yahoo.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Return-path: To: Huihong Luo In-Reply-To: <20061211044746.1006.qmail-jCIPyZ9Nm/SvuULXzWHTWIglqE1Y4D90QQ4Iyu8u01E@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 Huihong Luo wrote: > I tried to compile kvm on an Intel Mac (MacBook laptop > runing Linux 2.6.17). It does not work, qemu simply > hangs. > > I spent sometime to fix the issues, can you correct > the issues? There are to do with the kernel module. > After the following 2 corrections, I can launch > windows XP SP2 on a MacBook. > > (1) hvm_main.c > > There seems to be extra put_cpu() > static void vcpu_put(struct kvm_vcpu *vcpu) > { > kvm_arch_ops->vcpu_put(vcpu); > /* put_cpu(); extra one Huihong */ > mutex_unlock(&vcpu->mutex); > } > Yup, a bug. Will fix. > (2) in vmx.c: > > static __init void hardware_enable(void *garbage) > { > int cpu = raw_smp_processor_id(); > u64 phys_addr = __pa(per_cpu(vmxarea, cpu)); > u32 eax, edx; > > rdmsr(MSR_IA32_FEATURE_CONTROL, eax, edx); > > if (eax & 1) { > if ((eax & 4) == 0) { > printk("VMX disabled by Feature Control MSR.\n"); > return; > } > } > else { > /* enable and lock */ > wrmsr(MSR_IA32_FEATURE_CONTROL, 5, 0); > } > I don't understand this one. There are 4 possible values of [FEATURE_CONTROL.2, FEATURE_CONTROL.]: 00: disabled, unlocked: handled correctly by the original code 01: disabled, locked: cannot be handled, but should be caught by vmx_disabled_by_bios(). 10: enabled, unlocked: handled correctly by the original code 11: enabled, locked: handled correctly by the original code No? > #if 0 /* Huihong, original */ > if ((old & 5) == 0) > /* enable and lock */ > wrmsrl(MSR_IA32_FEATURE_CONTROL, old | 5); > #endif > > Huihong > > > -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV