Messages in this thread Patch in this message | | | Date | Wed, 22 Sep 2021 23:07:22 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 4/8] x86/traps: Demand-populate PASID MSR via #GP |
| |
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?
| |