Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: PPC: Book3S: PR: Optimize entry path

By shuffling a few instructions around we can execute more memory
loads in parallel, giving us a small performance boost.

With this patch and a simple priviledged SPR access loop guest, I get
a speed bump from 2013052 to 2035607 exits per second.

Signed-off-by: Alexander Graf <agraf@suse.de>

+7 -6
+7 -6
arch/powerpc/kvm/book3s_segment.S
··· 128 128 /* First clear RI in our current MSR value */ 129 129 li r0, MSR_RI 130 130 andc r6, r6, r0 131 - MTMSR_EERI(r6) 132 - mtsrr0 r9 133 - mtsrr1 r4 134 131 135 132 PPC_LL r0, SVCPU_R0(r3) 136 133 PPC_LL r1, SVCPU_R1(r3) 137 134 PPC_LL r2, SVCPU_R2(r3) 138 - PPC_LL r4, SVCPU_R4(r3) 139 135 PPC_LL r5, SVCPU_R5(r3) 140 - PPC_LL r6, SVCPU_R6(r3) 141 136 PPC_LL r7, SVCPU_R7(r3) 142 137 PPC_LL r8, SVCPU_R8(r3) 143 - PPC_LL r9, SVCPU_R9(r3) 144 138 PPC_LL r10, SVCPU_R10(r3) 145 139 PPC_LL r11, SVCPU_R11(r3) 146 140 PPC_LL r12, SVCPU_R12(r3) 147 141 PPC_LL r13, SVCPU_R13(r3) 148 142 143 + MTMSR_EERI(r6) 144 + mtsrr0 r9 145 + mtsrr1 r4 146 + 147 + PPC_LL r4, SVCPU_R4(r3) 148 + PPC_LL r6, SVCPU_R6(r3) 149 + PPC_LL r9, SVCPU_R9(r3) 149 150 PPC_LL r3, (SVCPU_R3)(r3) 150 151 151 152 RFI