|
@@ -437,6 +437,14 @@ static inline void mce_gather_info(struct mce *m, struct pt_regs *regs)
|
|
if (m->mcgstatus & (MCG_STATUS_RIPV|MCG_STATUS_EIPV)) {
|
|
if (m->mcgstatus & (MCG_STATUS_RIPV|MCG_STATUS_EIPV)) {
|
|
m->ip = regs->ip;
|
|
m->ip = regs->ip;
|
|
m->cs = regs->cs;
|
|
m->cs = regs->cs;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * When in VM86 mode make the cs look like ring 3
|
|
|
|
+ * always. This is a lie, but it's better than passing
|
|
|
|
+ * the additional vm86 bit around everywhere.
|
|
|
|
+ */
|
|
|
|
+ if (v8086_mode(regs))
|
|
|
|
+ m->cs |= 3;
|
|
}
|
|
}
|
|
/* Use accurate RIP reporting if available. */
|
|
/* Use accurate RIP reporting if available. */
|
|
if (rip_msr)
|
|
if (rip_msr)
|