From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [PATCH v10 15/18] KVM: arm64: Remove eager host SVE state saving Date: Thu, 24 May 2018 15:54:16 +0100 Message-ID: <87zi0prtnr.fsf@linaro.org> References: <1527005119-6842-1-git-send-email-Dave.Martin@arm.com> <1527005119-6842-16-git-send-email-Dave.Martin@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1527005119-6842-16-git-send-email-Dave.Martin@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Dave Martin Cc: Christoffer Dall , Ard Biesheuvel , Marc Zyngier , Catalin Marinas , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org List-Id: kvmarm@lists.cs.columbia.edu CkRhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPiB3cml0ZXM6Cgo+IE5vdyB0aGF0IHRo ZSBob3N0IFNWRSBjb250ZXh0IGNhbiBiZSBzYXZlZCBvbiBkZW1hbmQgZnJvbSBIeXAsCj4gdGhl cmUgaXMgbm8gbG9uZ2VyIGFueSBuZWVkIHRvIHNhdmUgdGhpcyBzdGF0ZSBpbiBhZHZhbmNlIGJl Zm9yZQo+IGVudGVyaW5nIHRoZSBndWVzdC4KPgo+IFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgcmVs ZXZhbnQgY2FsbCB0bwo+IGt2bV9mcHNpbWRfZmx1c2hfY3B1X3N0YXRlKCkuCj4KPiBTaW5jZSB0 aGUgcHJvYmxlbSB0aGF0IGZ1bmN0aW9uIHdhcyBpbnRlbmRlZCB0byBzb2x2ZSBub3cgbm8gbG9u Z2VyCj4gZXhpc3RzLCB0aGUgZnVuY3Rpb24gYW5kIGl0cyBkZXBlbmRlbmNpZXMgYXJlIGFsc28g ZGVsZXRlZC4KPgo+IFNpZ25lZC1vZmYtYnk6IERhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0u Y29tPgo+IEFja2VkLWJ5OiBDaHJpc3RvZmZlciBEYWxsIDxjaHJpc3RvZmZlci5kYWxsQGFybS5j b20+Cj4gQWNrZWQtYnk6IE1hcmMgWnluZ2llciA8bWFyYy56eW5naWVyQGFybS5jb20+Cj4gQWNr ZWQtYnk6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+CgpSZXZpZXdl ZC1ieTogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgoKPiAtLS0KPiAgYXJj aC9hcm0vaW5jbHVkZS9hc20va3ZtX2hvc3QuaCAgIHwgIDMgLS0tCj4gIGFyY2gvYXJtNjQvaW5j bHVkZS9hc20va3ZtX2hvc3QuaCB8IDEwIC0tLS0tLS0tLS0KPiAgYXJjaC9hcm02NC9rZXJuZWwv ZnBzaW1kLmMgICAgICAgIHwgMjEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIHZpcnQva3ZtL2Fy bS9hcm0uYyAgICAgICAgICAgICAgICB8ICAzIC0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDM3IGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2t2bV9ob3N0 LmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gaW5kZXggM2I4NWJiYi4uZjA3 OWEyMCAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gKysr IGIvYXJjaC9hcm0vaW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+IEBAIC0zMTIsOSArMzEyLDYgQEAg c3RhdGljIGlubGluZSB2b2lkIGt2bV9hcmNoX3ZjcHVfbG9hZF9mcChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpIHt9Cj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJjaF92Y3B1X2N0eHN5bmNfZnAo c3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQo+ICBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2FyY2hf dmNwdV9wdXRfZnAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQo+Cj4gLS8qIEFsbCBob3N0IEZQ L1NJTUQgc3RhdGUgaXMgcmVzdG9yZWQgb24gZ3Vlc3QgZXhpdCwgc28gbm90aGluZyB0byBzYXZl OiAqLwo+IC1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX2Zwc2ltZF9mbHVzaF9jcHVfc3RhdGUodm9p ZCkge30KPiAtCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJtX3ZoZV9ndWVzdF9lbnRlcih2 b2lkKSB7fQo+ICBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2FybV92aGVfZ3Vlc3RfZXhpdCh2b2lk KSB7fQo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBi L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+IGluZGV4IDA2ZDVhNjEuLmNlN2Vk OTIgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gKysr IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gQEAgLTQ1NywxNiArNDU3LDYg QEAgc3RhdGljIGlubGluZSBpbnQga3ZtX2FyY2hfdmNwdV9ydW5fcGlkX2NoYW5nZShzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpCj4gIH0KPiAgI2VuZGlmCj4KPiAtLyoKPiAtICogQWxsIGhvc3QgRlAv U0lNRCBzdGF0ZSBpcyByZXN0b3JlZCBvbiBndWVzdCBleGl0LCBzbyBub3RoaW5nIG5lZWRzCj4g LSAqIGRvaW5nIGhlcmUgZXhjZXB0IGluIHRoZSBTVkUgY2FzZToKPiAtKi8KPiAtc3RhdGljIGlu bGluZSB2b2lkIGt2bV9mcHNpbWRfZmx1c2hfY3B1X3N0YXRlKHZvaWQpCj4gLXsKPiAtCWlmIChz eXN0ZW1fc3VwcG9ydHNfc3ZlKCkpCj4gLQkJc3ZlX2ZsdXNoX2NwdV9zdGF0ZSgpOwo+IC19Cj4g LQo+ICBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2FybV92aGVfZ3Vlc3RfZW50ZXIodm9pZCkKPiAg ewo+ICAJbG9jYWxfZGFpZl9tYXNrKCk7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVs L2Zwc2ltZC5jIGIvYXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmMKPiBpbmRleCBmMzlkM2IwLi5l YTVkNzgwIDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQva2VybmVsL2Zwc2ltZC5jCj4gKysrIGIv YXJjaC9hcm02NC9rZXJuZWwvZnBzaW1kLmMKPiBAQCAtMTIwLDcgKzEyMCw2IEBACj4gICAqLwo+ ICBzdHJ1Y3QgZnBzaW1kX2xhc3Rfc3RhdGVfc3RydWN0IHsKPiAgCXN0cnVjdCB1c2VyX2Zwc2lt ZF9zdGF0ZSAqc3Q7Cj4gLQlib29sIHN2ZV9pbl91c2U7Cj4gIH07Cj4KPiAgc3RhdGljIERFRklO RV9QRVJfQ1BVKHN0cnVjdCBmcHNpbWRfbGFzdF9zdGF0ZV9zdHJ1Y3QsIGZwc2ltZF9sYXN0X3N0 YXRlKTsKPiBAQCAtMTAwMyw3ICsxMDAyLDYgQEAgdm9pZCBmcHNpbWRfYmluZF90YXNrX3RvX2Nw dSh2b2lkKQo+ICAJCXRoaXNfY3B1X3B0cigmZnBzaW1kX2xhc3Rfc3RhdGUpOwo+Cj4gIAlsYXN0 LT5zdCA9ICZjdXJyZW50LT50aHJlYWQudXcuZnBzaW1kX3N0YXRlOwo+IC0JbGFzdC0+c3ZlX2lu X3VzZSA9IHRlc3RfdGhyZWFkX2ZsYWcoVElGX1NWRSk7Cj4gIAljdXJyZW50LT50aHJlYWQuZnBz aW1kX2NwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKPgo+ICAJaWYgKHN5c3RlbV9zdXBwb3J0c19z dmUoKSkgewo+IEBAIC0xMDI1LDcgKzEwMjMsNiBAQCB2b2lkIGZwc2ltZF9iaW5kX3N0YXRlX3Rv X2NwdShzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUgKnN0KQo+ICAJV0FSTl9PTighaW5fc29mdGly cSgpICYmICFpcnFzX2Rpc2FibGVkKCkpOwo+Cj4gIAlsYXN0LT5zdCA9IHN0Owo+IC0JbGFzdC0+ c3ZlX2luX3VzZSA9IGZhbHNlOwo+ICB9Cj4KPiAgLyoKPiBAQCAtMTA4NiwyNCArMTA4Myw2IEBA IHZvaWQgZnBzaW1kX2ZsdXNoX2NwdV9zdGF0ZSh2b2lkKQo+ICAJc2V0X3RocmVhZF9mbGFnKFRJ Rl9GT1JFSUdOX0ZQU1RBVEUpOwo+ICB9Cj4KPiAtLyoKPiAtICogSW52YWxpZGF0ZSBhbnkgdGFz ayBTVkUgc3RhdGUgY3VycmVudGx5IGhlbGQgaW4gdGhpcyBDUFUncyByZWdzLgo+IC0gKgo+IC0g KiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudCB0aGUga2VybmVsIGZyb20gdHJ5aW5nIHRvIHJldXNl IFNWRSByZWdpc3RlciBkYXRhCj4gLSAqIHRoYXQgaXMgZGV0cm95ZWQgYnkgS1ZNIGd1ZXN0IGVu dGVyL2V4aXQuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBnbyBhd2F5IHdoZW4KPiAtICogS1ZNIFNW RSBzdXBwb3J0IGlzIGltcGxlbWVudGVkLiAgRG9uJ3QgdXNlIGl0IGZvciBhbnl0aGluZyBlbHNl Lgo+IC0gKi8KPiAtI2lmZGVmIENPTkZJR19BUk02NF9TVkUKPiAtdm9pZCBzdmVfZmx1c2hfY3B1 X3N0YXRlKHZvaWQpCj4gLXsKPiAtCXN0cnVjdCBmcHNpbWRfbGFzdF9zdGF0ZV9zdHJ1Y3QgY29u c3QgKmxhc3QgPQo+IC0JCXRoaXNfY3B1X3B0cigmZnBzaW1kX2xhc3Rfc3RhdGUpOwo+IC0KPiAt CWlmIChsYXN0LT5zdCAmJiBsYXN0LT5zdmVfaW5fdXNlKQo+IC0JCWZwc2ltZF9mbHVzaF9jcHVf c3RhdGUoKTsKPiAtfQo+IC0jZW5kaWYgLyogQ09ORklHX0FSTTY0X1NWRSAqLwo+IC0KPiAgI2lm ZGVmIENPTkZJR19LRVJORUxfTU9ERV9ORU9OCj4KPiAgREVGSU5FX1BFUl9DUFUoYm9vbCwga2Vy bmVsX25lb25fYnVzeSk7Cj4gZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2FybS9hcm0uYyBiL3ZpcnQv a3ZtL2FybS9hcm0uYwo+IGluZGV4IGNlN2M2ZjMuLjM5ZTc3NzEgMTAwNjQ0Cj4gLS0tIGEvdmly dC9rdm0vYXJtL2FybS5jCj4gKysrIGIvdmlydC9rdm0vYXJtL2FybS5jCj4gQEAgLTY4Miw5ICs2 ODIsNiBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+ICAJCSAqLwo+ICAJCXByZWVtcHRfZGlzYWJsZSgpOwo+ Cj4gLQkJLyogRmx1c2ggRlAvU0lNRCBzdGF0ZSB0aGF0IGNhbid0IHN1cnZpdmUgZ3Vlc3QgZW50 cnkvZXhpdCAqLwo+IC0JCWt2bV9mcHNpbWRfZmx1c2hfY3B1X3N0YXRlKCk7Cj4gLQo+ICAJCWt2 bV9wbXVfZmx1c2hfaHdzdGF0ZSh2Y3B1KTsKPgo+ICAJCWxvY2FsX2lycV9kaXNhYmxlKCk7CgoK LS0KQWxleCBCZW5uw6llCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: alex.bennee@linaro.org (Alex =?utf-8?Q?Benn=C3=A9e?=) Date: Thu, 24 May 2018 15:54:16 +0100 Subject: [PATCH v10 15/18] KVM: arm64: Remove eager host SVE state saving In-Reply-To: <1527005119-6842-16-git-send-email-Dave.Martin@arm.com> References: <1527005119-6842-1-git-send-email-Dave.Martin@arm.com> <1527005119-6842-16-git-send-email-Dave.Martin@arm.com> Message-ID: <87zi0prtnr.fsf@linaro.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Dave Martin writes: > Now that the host SVE context can be saved on demand from Hyp, > there is no longer any need to save this state in advance before > entering the guest. > > This patch removes the relevant call to > kvm_fpsimd_flush_cpu_state(). > > Since the problem that function was intended to solve now no longer > exists, the function and its dependencies are also deleted. > > Signed-off-by: Dave Martin > Acked-by: Christoffer Dall > Acked-by: Marc Zyngier > Acked-by: Catalin Marinas Reviewed-by: Alex Benn?e > --- > arch/arm/include/asm/kvm_host.h | 3 --- > arch/arm64/include/asm/kvm_host.h | 10 ---------- > arch/arm64/kernel/fpsimd.c | 21 --------------------- > virt/kvm/arm/arm.c | 3 --- > 4 files changed, 37 deletions(-) > > diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h > index 3b85bbb..f079a20 100644 > --- a/arch/arm/include/asm/kvm_host.h > +++ b/arch/arm/include/asm/kvm_host.h > @@ -312,9 +312,6 @@ static inline void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu) {} > static inline void kvm_arch_vcpu_ctxsync_fp(struct kvm_vcpu *vcpu) {} > static inline void kvm_arch_vcpu_put_fp(struct kvm_vcpu *vcpu) {} > > -/* All host FP/SIMD state is restored on guest exit, so nothing to save: */ > -static inline void kvm_fpsimd_flush_cpu_state(void) {} > - > static inline void kvm_arm_vhe_guest_enter(void) {} > static inline void kvm_arm_vhe_guest_exit(void) {} > > diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h > index 06d5a61..ce7ed92 100644 > --- a/arch/arm64/include/asm/kvm_host.h > +++ b/arch/arm64/include/asm/kvm_host.h > @@ -457,16 +457,6 @@ static inline int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu) > } > #endif > > -/* > - * All host FP/SIMD state is restored on guest exit, so nothing needs > - * doing here except in the SVE case: > -*/ > -static inline void kvm_fpsimd_flush_cpu_state(void) > -{ > - if (system_supports_sve()) > - sve_flush_cpu_state(); > -} > - > static inline void kvm_arm_vhe_guest_enter(void) > { > local_daif_mask(); > diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c > index f39d3b0..ea5d780 100644 > --- a/arch/arm64/kernel/fpsimd.c > +++ b/arch/arm64/kernel/fpsimd.c > @@ -120,7 +120,6 @@ > */ > struct fpsimd_last_state_struct { > struct user_fpsimd_state *st; > - bool sve_in_use; > }; > > static DEFINE_PER_CPU(struct fpsimd_last_state_struct, fpsimd_last_state); > @@ -1003,7 +1002,6 @@ void fpsimd_bind_task_to_cpu(void) > this_cpu_ptr(&fpsimd_last_state); > > last->st = ¤t->thread.uw.fpsimd_state; > - last->sve_in_use = test_thread_flag(TIF_SVE); > current->thread.fpsimd_cpu = smp_processor_id(); > > if (system_supports_sve()) { > @@ -1025,7 +1023,6 @@ void fpsimd_bind_state_to_cpu(struct user_fpsimd_state *st) > WARN_ON(!in_softirq() && !irqs_disabled()); > > last->st = st; > - last->sve_in_use = false; > } > > /* > @@ -1086,24 +1083,6 @@ void fpsimd_flush_cpu_state(void) > set_thread_flag(TIF_FOREIGN_FPSTATE); > } > > -/* > - * Invalidate any task SVE state currently held in this CPU's regs. > - * > - * This is used to prevent the kernel from trying to reuse SVE register data > - * that is detroyed by KVM guest enter/exit. This function should go away when > - * KVM SVE support is implemented. Don't use it for anything else. > - */ > -#ifdef CONFIG_ARM64_SVE > -void sve_flush_cpu_state(void) > -{ > - struct fpsimd_last_state_struct const *last = > - this_cpu_ptr(&fpsimd_last_state); > - > - if (last->st && last->sve_in_use) > - fpsimd_flush_cpu_state(); > -} > -#endif /* CONFIG_ARM64_SVE */ > - > #ifdef CONFIG_KERNEL_MODE_NEON > > DEFINE_PER_CPU(bool, kernel_neon_busy); > diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c > index ce7c6f3..39e7771 100644 > --- a/virt/kvm/arm/arm.c > +++ b/virt/kvm/arm/arm.c > @@ -682,9 +682,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) > */ > preempt_disable(); > > - /* Flush FP/SIMD state that can't survive guest entry/exit */ > - kvm_fpsimd_flush_cpu_state(); > - > kvm_pmu_flush_hwstate(vcpu); > > local_irq_disable(); -- Alex Benn?e