xen/x86-64: clean up warnings about IST-using traps
Ignore known IST-using traps. Aside from the debugger traps, they're low-level faults which Xen will handle for us, so the kernel needn't worry about them. Keep warning in case unknown trap starts using IST. Impact: suppress spurious warnings Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
This commit is contained in:
parent
6cac5a9246
commit
b80119bb35
@ -439,14 +439,32 @@ static int cvt_gate_to_trap(int vector, const gate_desc *val,
|
||||
|
||||
addr = gate_offset(*val);
|
||||
#ifdef CONFIG_X86_64
|
||||
/*
|
||||
* Look for known traps using IST, and substitute them
|
||||
* appropriately. The debugger ones are the only ones we care
|
||||
* about. Xen will handle faults like double_fault and
|
||||
* machine_check, so we should never see them. Warn if
|
||||
* there's an unexpected IST-using fault handler.
|
||||
*/
|
||||
if (addr == (unsigned long)debug)
|
||||
addr = (unsigned long)xen_debug;
|
||||
else if (addr == (unsigned long)int3)
|
||||
addr = (unsigned long)xen_int3;
|
||||
else if (addr == (unsigned long)stack_segment)
|
||||
addr = (unsigned long)xen_stack_segment;
|
||||
else
|
||||
WARN_ON(val->ist != 0);
|
||||
else if (addr == (unsigned long)double_fault ||
|
||||
addr == (unsigned long)nmi) {
|
||||
/* Don't need to handle these */
|
||||
return 0;
|
||||
#ifdef CONFIG_X86_MCE
|
||||
} else if (addr == (unsigned long)machine_check) {
|
||||
return 0;
|
||||
#endif
|
||||
} else {
|
||||
/* Some other trap using IST? */
|
||||
if (WARN_ON(val->ist != 0))
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_X86_64 */
|
||||
info->address = addr;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user