diff options
author | Avi Kivity <avi@redhat.com> | 2010-04-28 08:39:01 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-05-19 04:36:29 -0400 |
commit | 0ee75bead83da4791e5cbf659806c54d8ee40f12 (patch) | |
tree | 3b3856aac1fc94d153f9e6c27f383f81be06185a /virt/kvm/kvm_main.c | |
parent | 884a0ff0b68b3ece5987507de168215e14ef7849 (diff) |
KVM: Let vcpu structure alignment be determined at runtime
vmx and svm vcpus have different contents and therefore may have different
alignmment requirements. Let each specify its required alignment.
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'virt/kvm/kvm_main.c')
-rw-r--r-- | virt/kvm/kvm_main.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 9ab1a77941ef..f032806a212f 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -2178,7 +2178,7 @@ static void kvm_sched_out(struct preempt_notifier *pn, | |||
2178 | kvm_arch_vcpu_put(vcpu); | 2178 | kvm_arch_vcpu_put(vcpu); |
2179 | } | 2179 | } |
2180 | 2180 | ||
2181 | int kvm_init(void *opaque, unsigned int vcpu_size, | 2181 | int kvm_init(void *opaque, unsigned vcpu_size, unsigned vcpu_align, |
2182 | struct module *module) | 2182 | struct module *module) |
2183 | { | 2183 | { |
2184 | int r; | 2184 | int r; |
@@ -2228,8 +2228,9 @@ int kvm_init(void *opaque, unsigned int vcpu_size, | |||
2228 | goto out_free_4; | 2228 | goto out_free_4; |
2229 | 2229 | ||
2230 | /* A kmem cache lets us meet the alignment requirements of fx_save. */ | 2230 | /* A kmem cache lets us meet the alignment requirements of fx_save. */ |
2231 | kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, | 2231 | if (!vcpu_align) |
2232 | __alignof__(struct kvm_vcpu), | 2232 | vcpu_align = __alignof__(struct kvm_vcpu); |
2233 | kvm_vcpu_cache = kmem_cache_create("kvm_vcpu", vcpu_size, vcpu_align, | ||
2233 | 0, NULL); | 2234 | 0, NULL); |
2234 | if (!kvm_vcpu_cache) { | 2235 | if (!kvm_vcpu_cache) { |
2235 | r = -ENOMEM; | 2236 | r = -ENOMEM; |