diff for duplicates of <87o8fh21iq.fsf@linux.ibm.com> diff --git a/a/1.txt b/N1/1.txt index 10de220..17c8cf7 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -60,8 +60,8 @@ The comment above needs to be updated I think. > for (i = 0; i < 9; ++i) > @@ -3740,15 +3746,36 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit, > /* H_CEDE has to be handled now, not later */ -> if (trap = BOOK3S_INTERRUPT_SYSCALL && !vcpu->arch.nested && -> kvmppc_get_gpr(vcpu, 3) = H_CEDE) { +> if (trap == BOOK3S_INTERRUPT_SYSCALL && !vcpu->arch.nested && +> kvmppc_get_gpr(vcpu, 3) == H_CEDE) { > - kvmppc_nested_cede(vcpu); > + kvmppc_cede(vcpu); > kvmppc_set_gpr(vcpu, 3, 0); @@ -73,19 +73,19 @@ The comment above needs to be updated I think. > - kvmppc_xive_pull_vcpu(vcpu); > + /* H_CEDE has to be handled now, not later */ > + /* XICS hcalls must be handled before xive is pulled */ -> + if (trap = BOOK3S_INTERRUPT_SYSCALL && +> + if (trap == BOOK3S_INTERRUPT_SYSCALL && > + !(vcpu->arch.shregs.msr & MSR_PR)) { > + unsigned long req = kvmppc_get_gpr(vcpu, 3); > -> + if (req = H_CEDE) { +> + if (req == H_CEDE) { > + kvmppc_cede(vcpu); > + kvmppc_xive_cede_vcpu(vcpu); /* may un-cede */ > + kvmppc_set_gpr(vcpu, 3, 0); > + trap = 0; > + } -> + if (req = H_EOI || req = H_CPPR || -> + req = H_IPI || req = H_IPOLL || -> + req = H_XIRR || req = H_XIRR_X) { +> + if (req == H_EOI || req == H_CPPR || +> + req == H_IPI || req == H_IPOLL || +> + req == H_XIRR || req == H_XIRR_X) { > + unsigned long ret; > + > + ret = kvmppc_xive_xics_hcall(vcpu, req); @@ -119,9 +119,9 @@ code above that runs after H_ENTER_NESTED by setting trap to 0 here. > else > r = kvmppc_run_vcpu(vcpu); > -> - if (run->exit_reason = KVM_EXIT_PAPR_HCALL && +> - if (run->exit_reason == KVM_EXIT_PAPR_HCALL && > - !(vcpu->arch.shregs.msr & MSR_PR)) { -> + if (run->exit_reason = KVM_EXIT_PAPR_HCALL) { +> + if (run->exit_reason == KVM_EXIT_PAPR_HCALL) { > + if (WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_PR)) { > + r = RESUME_GUEST; > + continue; diff --git a/a/content_digest b/N1/content_digest index 5360851..7db78bd 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -2,7 +2,7 @@ "ref\020210305150638.2675513-20-npiggin@gmail.com\0" "From\0Fabiano Rosas <farosas@linux.ibm.com>\0" "Subject\0Re: [PATCH v3 19/41] KVM: PPC: Book3S HV P9: Stop handling hcalls in real-mode in the P9 path\0" - "Date\0Wed, 17 Mar 2021 16:22:37 +0000\0" + "Date\0Wed, 17 Mar 2021 13:22:37 -0300\0" "To\0Nicholas Piggin <npiggin@gmail.com>" " kvm-ppc@vger.kernel.org\0" "Cc\0linuxppc-dev@lists.ozlabs.org" @@ -71,8 +71,8 @@ "> \t\tfor (i = 0; i < 9; ++i)\n" "> @@ -3740,15 +3746,36 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit,\n" "> \t\t/* H_CEDE has to be handled now, not later */\n" - "> \t\tif (trap = BOOK3S_INTERRUPT_SYSCALL && !vcpu->arch.nested &&\n" - "> \t\t kvmppc_get_gpr(vcpu, 3) = H_CEDE) {\n" + "> \t\tif (trap == BOOK3S_INTERRUPT_SYSCALL && !vcpu->arch.nested &&\n" + "> \t\t kvmppc_get_gpr(vcpu, 3) == H_CEDE) {\n" "> -\t\t\tkvmppc_nested_cede(vcpu);\n" "> +\t\t\tkvmppc_cede(vcpu);\n" "> \t\t\tkvmppc_set_gpr(vcpu, 3, 0);\n" @@ -84,19 +84,19 @@ "> -\t\tkvmppc_xive_pull_vcpu(vcpu);\n" "> +\t\t/* H_CEDE has to be handled now, not later */\n" "> +\t\t/* XICS hcalls must be handled before xive is pulled */\n" - "> +\t\tif (trap = BOOK3S_INTERRUPT_SYSCALL &&\n" + "> +\t\tif (trap == BOOK3S_INTERRUPT_SYSCALL &&\n" "> +\t\t !(vcpu->arch.shregs.msr & MSR_PR)) {\n" "> +\t\t\tunsigned long req = kvmppc_get_gpr(vcpu, 3);\n" ">\n" - "> +\t\t\tif (req = H_CEDE) {\n" + "> +\t\t\tif (req == H_CEDE) {\n" "> +\t\t\t\tkvmppc_cede(vcpu);\n" "> +\t\t\t\tkvmppc_xive_cede_vcpu(vcpu); /* may un-cede */\n" "> +\t\t\t\tkvmppc_set_gpr(vcpu, 3, 0);\n" "> +\t\t\t\ttrap = 0;\n" "> +\t\t\t}\n" - "> +\t\t\tif (req = H_EOI || req = H_CPPR ||\n" - "> +\t\t\t req = H_IPI || req = H_IPOLL ||\n" - "> +\t\t\t req = H_XIRR || req = H_XIRR_X) {\n" + "> +\t\t\tif (req == H_EOI || req == H_CPPR ||\n" + "> +\t\t\t req == H_IPI || req == H_IPOLL ||\n" + "> +\t\t\t req == H_XIRR || req == H_XIRR_X) {\n" "> +\t\t\t\tunsigned long ret;\n" "> +\n" "> +\t\t\t\tret = kvmppc_xive_xics_hcall(vcpu, req);\n" @@ -130,9 +130,9 @@ "> \t\telse\n" "> \t\t\tr = kvmppc_run_vcpu(vcpu);\n" ">\n" - "> -\t\tif (run->exit_reason = KVM_EXIT_PAPR_HCALL &&\n" + "> -\t\tif (run->exit_reason == KVM_EXIT_PAPR_HCALL &&\n" "> -\t\t !(vcpu->arch.shregs.msr & MSR_PR)) {\n" - "> +\t\tif (run->exit_reason = KVM_EXIT_PAPR_HCALL) {\n" + "> +\t\tif (run->exit_reason == KVM_EXIT_PAPR_HCALL) {\n" "> +\t\t\tif (WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_PR)) {\n" "> +\t\t\t\tr = RESUME_GUEST;\n" "> +\t\t\t\tcontinue;\n" @@ -238,4 +238,4 @@ "> {\n" "> \tstruct kvmppc_xive_vcpu *xc = vcpu->arch.xive_vcpu;" -7ed4b7ca90ca61da5e48f8ec2debdc45898bb1110bf16fedac4847ced19fa42b +4bbf5e0ede7ddd087a1711edbca2e7d99212f4b74bc552d47dc1b8fb212d9d6a
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.