On Mon, Sep 20, 2021 at 07:23:45PM +0000, Fenghua Yu wrote:
> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
> index a58800973aed..a25d738ae839 100644
> --- a/arch/x86/kernel/traps.c
> +++ b/arch/x86/kernel/traps.c
> @@ -61,6 +61,7 @@
>  #include <asm/insn.h>
>  #include <asm/insn-eval.h>
>  #include <asm/vdso.h>
> +#include <asm/iommu.h>
>  
>  #ifdef CONFIG_X86_64
>  #include <asm/x86_init.h>
> @@ -526,6 +527,14 @@ static enum kernel_gp_hint get_kernel_gp_address(struct 
> pt_regs *regs,
>       return GP_CANONICAL;
>  }
>  
> +static bool fixup_pasid_exception(void)
> +{
> +     if (!cpu_feature_enabled(X86_FEATURE_ENQCMD))
> +             return false;
> +
> +     return __fixup_pasid_exception();
> +}
> +
>  #define GPFSTR "general protection fault"
>  
>  DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)
> @@ -538,6 +547,9 @@ DEFINE_IDTENTRY_ERRORCODE(exc_general_protection)
>  
>       cond_local_irq_enable(regs);
>  
> +     if (user_mode(regs) && fixup_pasid_exception())
> +             goto exit;
> +
>       if (static_cpu_has(X86_FEATURE_UMIP)) {
>               if (user_mode(regs) && fixup_umip_exception(regs))
>                       goto exit;

So you're eating any random #GP that might or might not be PASID
related. And all that witout a comment... Enlighten?
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to