mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
x86/tboot: disable interrupts after map_pages_to_xen() in tboot_shutdown()
Move the point where interrupts are disabled in tboot_shutdown to slightly later, to after the call to map_pages_to_xen. This patch originated in OpenXT with the following report: "Disabling interrupts early causes debug assertions. This is only seen with debug builds but since it causes assertions it is probably a bigger problem. It clearly says in map_pages_to_xen that it should not be called with interrupts disabled. Moved disabling to just after that call." The Xen code comment ahead of map_pages_to_xen notes that the CPU cache flushing in map_pages_to_xen differs depending on whether interrupts are enabled or not. The flush logic with interrupts enabled is more conservative, flushing all CPUs' TLBs/caches, rather than just local. This is just before the tboot memory integrity MAC calculation is performed in the case of entering S3. Original patch author credit: Ross Philipson. Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
7c275549f4
commit
80eb3da01b
1 file changed
+4
-2
@@ -341,8 +341,6 @@ void tboot_shutdown(uint32_t shutdown_type)
|
||||
|
||||
g_tboot_shared->shutdown_type = shutdown_type;
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
/* Create identity map for tboot shutdown code. */
|
||||
/* do before S3 integrity because mapping tboot may change xenheap */
|
||||
map_base = PFN_DOWN(g_tboot_shared->tboot_base);
|
||||
@@ -357,6 +355,10 @@ void tboot_shutdown(uint32_t shutdown_type)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Disable interrupts as early as possible but not prior to */
|
||||
/* calling map_pages_to_xen */
|
||||
local_irq_disable();
|
||||
|
||||
/* if this is S3 then set regions to MAC */
|
||||
if ( shutdown_type == TB_SHUTDOWN_S3 )
|
||||
{
|
||||
|
||||