Really strange, I sent out this email last night, but it didn't appear on the list.
-Xin >-----Original Message----- >From: Li, Xin B >Sent: Tuesday, June 12, 2007 12:47 AM >To: kvm-devel@lists.sourceforge.net >Subject: cpuid should be VM wide instead of vCPU wide. > >cpuid should be VM wide instead of vCPU wide. > >Signed-off-by: Xin Li <[EMAIL PROTECTED]> > >diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h >index b08272b..eb9a594 100644 >--- a/drivers/kvm/kvm.h >+++ b/drivers/kvm/kvm.h >@@ -355,9 +355,6 @@ struct kvm_vcpu { > } tr, es, ds, fs, gs; > } rmode; > int halt_request; /* real mode on Intel only */ >- >- int cpuid_nent; >- struct kvm_cpuid_entry cpuid_entries[KVM_MAX_CPUID_ENTRIES]; > }; > > struct kvm_mem_alias { >@@ -393,6 +390,9 @@ struct kvm { > unsigned long rmap_overflow; > struct list_head vm_list; > struct file *filp; >+ >+ int cpuid_nent; >+ struct kvm_cpuid_entry cpuid_entries[KVM_MAX_CPUID_ENTRIES]; > }; > > struct descriptor_table { >diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c >index 633c2ed..098dc03 100644 >--- a/drivers/kvm/kvm_main.c >+++ b/drivers/kvm/kvm_main.c >@@ -1698,8 +1698,8 @@ void kvm_emulate_cpuid(struct kvm_vcpu *vcpu) > vcpu->regs[VCPU_REGS_RCX] = 0; > vcpu->regs[VCPU_REGS_RDX] = 0; > best = NULL; >- for (i = 0; i < vcpu->cpuid_nent; ++i) { >- e = &vcpu->cpuid_entries[i]; >+ for (i = 0; i < vcpu->kvm->cpuid_nent; ++i) { >+ e = &vcpu->kvm->cpuid_entries[i]; > if (e->function == function) { > best = e; > break; >@@ -2461,8 +2461,8 @@ static void cpuid_fix_nx_cap(struct >kvm_vcpu *vcpu) > > rdmsrl(MSR_EFER, efer); > entry = NULL; >- for (i = 0; i < vcpu->cpuid_nent; ++i) { >- e = &vcpu->cpuid_entries[i]; >+ for (i = 0; i < vcpu->kvm->cpuid_nent; ++i) { >+ e = &vcpu->kvm->cpuid_entries[i]; > if (e->function == 0x80000001) { > entry = e; > break; >@@ -2484,10 +2484,10 @@ static int >kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu, > if (cpuid->nent > KVM_MAX_CPUID_ENTRIES) > goto out; > r = -EFAULT; >- if (copy_from_user(&vcpu->cpuid_entries, entries, >+ if (copy_from_user(&vcpu->kvm->cpuid_entries, entries, > cpuid->nent * sizeof(struct >kvm_cpuid_entry))) > goto out; >- vcpu->cpuid_nent = cpuid->nent; >+ vcpu->kvm->cpuid_nent = cpuid->nent; > cpuid_fix_nx_cap(vcpu); > return 0; > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel