On Mon, 17 Sep 2007 07:53:50 -0700 (PDT) Linus Torvalds wrote: > On Mon, 17 Sep 2007, Randy Dunlap wrote: > > > > OK, I haven't done the microcode update yet. I ran crashme overnight > > with your newer patch and it crashed: > > Well, duh. > > That's because I forgot to do the "error_code & PF_USER" => > "user_mode_vm(regs)" thing in the most common case - the > "bad_area_nosemaphore" if-statement. > > But thinking more about it, it's actually just easier and more > straightforward to just take the same approach that my original hack did, > namely to just set PF_USER if the register state implies it was in user > mode. > > So ignore that patch. You're better off with my original one that also > gave debugging info, and if we decide that this really looks like a CPU > buglet, the patch to actually commit would be a simplified version of that > (appended, just FYI).
[switched email address due to some unknown problems] Reverted that patch. Loaded new microcode update file. Ran test for 3 hours without a fault. It all seems rather inconclusive to me, still, the new patch (below) makes sense. > Also, I changed my mind on the microcode update - if you have a newer > microcode, go ahead and try it, because if that fixes the issue, then we > can really just close this as a "unimportant CPU bug" with the patch > below. > > Linus > > --- > arch/x86_64/mm/fault.c | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c > index 327c9f2..54816ad 100644 > --- a/arch/x86_64/mm/fault.c > +++ b/arch/x86_64/mm/fault.c > @@ -374,6 +374,13 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs > *regs, > if (unlikely(in_atomic() || !mm)) > goto bad_area_nosemaphore; > > + /* > + * User-mode registers count as a user access even for any > + * potential system fault or CPU buglet. > + */ > + if (user_mode_vm(regs)) > + error_code |= PF_USER; > + > again: > /* When running in the kernel we expect faults to occur only to > * addresses in user space. All other faults represent errors in the > - --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/