On 12/16/15, Jeff Merkey <[email protected]> wrote: > On 12/16/15, Jeff Merkey <[email protected]> wrote: >> Setting the (trap flag | resume flag) inside of an nmi handler results >> in a hard lockup while setting the resume flag works fine. >> >> The watchdog detector fails to detect the lockup. I am currently >> examining the trap gate and interrupt gate setup on Linux and if >> anyone has any ideas it would be nice to be able to debug and step >> through the nmi handlers. I got breakpoints to work. I noticed >> kgdb/kdb just punts here and refuses to allow someone to step inside >> an nmi handler. >> >> There is no reason Linux should not allow this to work since windows >> does and every other OS out there. I have seen this across some rex64 >> sysret calls as well this lockup behavior. >> >> Anyone who is an intel expert with any clues would love some input if >> you know about this problem. >> >> Jeff >> > > More info. Linux is getting a trap and it looks like the IDT is > getting swapped when it gets it -- POW - Dead Linux. > > Damn ... Well, it will be long night and lots of builds ... > > Jeff >
>He is stepping into native_safe_halt() when this bug occurs (processor >has halted). I am starting to wonder is this is a linux bug or intel >bug. I am starting to lean towards intel bug possibly. I will go and >review intels documentation about what happens when a processor has >been halted, is triggered with an NMI, then someone reloads the >processor with the trap flag set then returns to a hlt instruction. >Wow, this fucking cool .. I can debug Linus' "I halt when idle" core >function in the linux scheduler. There is still a bug in there and its not that instruction. I got the halt instruction to work. It has something to do with how linux handles trap and interrupt gates if someone sets a trap flag. Seems pretty random as to where I see it. Still working. I will submit a patch when I find it. -- 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/

