[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 5/5] hvf: save away type as well as vector so we can reinj
From: |
Paolo Bonzini |
Subject: |
Re: [PATCH v2 5/5] hvf: save away type as well as vector so we can reinject them |
Date: |
Thu, 28 Nov 2019 14:59:27 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
On 28/11/19 14:56, Paolo Bonzini wrote:
> On 26/11/19 21:04, Cameron Esfahani wrote:
>> Our test case was booting many concurrent macOS VMs under heavy
>> system load. I don't know if I could create one to replicate that.
>
> Does this work?
>
> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
> index 1485b95776..26c6c3a49f 100644
> --- a/target/i386/hvf/x86hvf.c
> +++ b/target/i386/hvf/x86hvf.c
> @@ -357,7 +357,11 @@ bool hvf_inject_interrupts(CPUState *cpu_state)
> bool have_event = true;
> if (env->interrupt_injected != -1) {
> vector = env->interrupt_injected;
> - intr_type = VMCS_INTR_T_SWINTR;
> + if (env->ins_len) {
> + intr_type = VMCS_INTR_T_SWINTR;
> + } else {
> + intr_type = VMCS_INTR_T_HWINTR;
> + }
> } else if (env->exception_nr != -1) {
> vector = env->exception_nr;
> if (vector == EXCP03_INT3 || vector == EXCP04_INTO) {
Better include this too:
diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
index 784e67d77e..5dc7515841 100644
--- a/target/i386/hvf/hvf.c
+++ b/target/i386/hvf/hvf.c
@@ -637,6 +637,7 @@ static void hvf_store_events(CPUState *cpu, uint32_t
ins_len, uint64_t idtvec_in
env->exception_injected = 0;
env->interrupt_injected = -1;
env->nmi_injected = false;
+ env->ins_len = 0;
if (idtvec_info & VMCS_IDT_VEC_VALID) {
switch (idtvec_info & VMCS_IDT_VEC_TYPE) {
case VMCS_IDT_VEC_HWINTR:
Paolo
[PATCH v2 1/5] hvf: non-RAM, non-ROMD memory ranges are now correctly mapped in, Cameron Esfahani, 2019/11/24
Re: [PATCH v2 0/5] hvf: stability fixes for HVF, Paolo Bonzini, 2019/11/25