aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kvm
diff options
context:
space:
mode:
authorChristian Borntraeger <borntraeger@de.ibm.com>2014-03-19 06:18:29 -0400
committerChristian Borntraeger <borntraeger@de.ibm.com>2014-03-25 08:27:10 -0400
commitf6c137ff00a478ae619deea8650829dd2f8e71b9 (patch)
tree6bdaf9f3273aba64328345918fa42900f0054282 /arch/s390/kvm
parent94b3ffcd41a90d2cb0b32ca23aa58a01111d5dc0 (diff)
KVM: s390: randomize sca address
We allocate a page for the 2k sca, so lets use the space to improve hit rate of some internal cpu caches. No need to change the freeing of the page, as this will shift away the page offset bits anyway. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Diffstat (limited to 'arch/s390/kvm')
-rw-r--r--arch/s390/kvm/kvm-s390.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 7337c577e949..a02979f1e1af 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -215,6 +215,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
215{ 215{
216 int rc; 216 int rc;
217 char debug_name[16]; 217 char debug_name[16];
218 static unsigned long sca_offset;
218 219
219 rc = -EINVAL; 220 rc = -EINVAL;
220#ifdef CONFIG_KVM_S390_UCONTROL 221#ifdef CONFIG_KVM_S390_UCONTROL
@@ -236,6 +237,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
236 kvm->arch.sca = (struct sca_block *) get_zeroed_page(GFP_KERNEL); 237 kvm->arch.sca = (struct sca_block *) get_zeroed_page(GFP_KERNEL);
237 if (!kvm->arch.sca) 238 if (!kvm->arch.sca)
238 goto out_err; 239 goto out_err;
240 spin_lock(&kvm_lock);
241 sca_offset = (sca_offset + 16) & 0x7f0;
242 kvm->arch.sca = (struct sca_block *) ((char *) kvm->arch.sca + sca_offset);
243 spin_unlock(&kvm_lock);
239 244
240 sprintf(debug_name, "kvm-%u", current->pid); 245 sprintf(debug_name, "kvm-%u", current->pid);
241 246