~myrslint <myrsl...@git.sr.ht> writes:

> From: myrslint <qemu.haziness...@passinbox.com>
>
> Thanks to Alex Bennée <alex.ben...@linaro.org> for the kind code review
> and helpful guidance.

This doesn't belong in the commit message, you can add it bellow the ---
if you want to track the changes while iterating a patch:

  https://qemu.readthedocs.io/en/master/devel/submitting-a-patch.html#id21

> This is a second attempt at addressing this issue:
> https://gitlab.com/qemu-project/qemu/-/issues/2943

This should be a trailer:

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2943

bellow your signed-of-by.

> Most Intel CPUs in current use have self-snoop. The few added lines of
> code also check for availability of the quirk disablement option so if
> some CPU does not have this feature no change of behavior will occur.
>
> Signed-off-by: Myrsky Lintu <qemu.haziness...@passinbox.com>
> ---
> Hopefully, I have improved the patch based on kindly provided code
> review.
>
> The only point of divergence is that per
>
> https://www.kernel.org/doc/html/latest/virt/kvm/api.html
>
> this is a VM capability (section 7), not a VCPU one, so a call is made
> to kvm_vm_enable_cap() rather than kvm_vcpu_enable_cap().
>
>  target/i386/kvm/kvm.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
>
> diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
> index 369626f8c8..124818bf94 100644
> --- a/target/i386/kvm/kvm.c
> +++ b/target/i386/kvm/kvm.c
> @@ -16,6 +16,7 @@
>  #include "qapi/qapi-events-run-state.h"
>  #include "qapi/error.h"
>  #include "qapi/visitor.h"
> +#include <asm-x86/kvm.h>
>  #include <math.h>
>  #include <sys/ioctl.h>
>  #include <sys/utsname.h>
> @@ -3367,6 +3368,24 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
>          }
>      }
>  
> +/* if kernel version does not have it there is no point compiling this in */
> +#ifdef KVM_X86_QUIRK_IGNORE_GUEST_PAT
> +    /* rationale: most x86 cpus in current use have self-snoop so honoring
> +     * guest pat is preferrable. as well, the bochs video driver bug which
> +     * motivated making this a default enabled quirk in kvm was fixed long 
> ago
> +     * */
> +    /* check if disabling this quirk is feasible and allowed */
> +    ret = kvm_check_extension(s, KVM_CAP_DISABLE_QUIRKS2);
> +    if (ret & KVM_X86_QUIRK_IGNORE_GUEST_PAT) {
> +        ret = kvm_vm_enable_cap(s, KVM_CAP_DISABLE_QUIRKS2, 0, \
> +                                KVM_X86_QUIRK_IGNORE_GUEST_PAT);
> +        if (ret < 0) {
> +            error_report("KVM_X86_QUIRK_IGNORE_GUEST_PAT available and "
> +                         "modifiable but we failed to disable it\n");
> +        }
> +    }
> +#endif

This looks good now, I'll leave it to the x86 maintainers to decide on
the automatic enabling of this feature.

> +
>      return 0;
>  }

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro

Reply via email to