svn commit: r322542 - head/sys/boot/efi/loader/arch/amd64

Toomas Soome tsoome at FreeBSD.org
Tue Aug 15 14:03:28 UTC 2017


Author: tsoome
Date: Tue Aug 15 14:03:26 2017
New Revision: 322542
URL: https://svnweb.freebsd.org/changeset/base/322542

Log:
  loader.efi: repace XXX with real comments in trap.c
  
  There are two missing comments marked as XXX in trap.c, fix this.
  
  Reviewed by:	kib
  Differential Revision:	https://reviews.freebsd.org/D12035

Modified:
  head/sys/boot/efi/loader/arch/amd64/trap.c

Modified: head/sys/boot/efi/loader/arch/amd64/trap.c
==============================================================================
--- head/sys/boot/efi/loader/arch/amd64/trap.c	Tue Aug 15 14:02:57 2017	(r322541)
+++ head/sys/boot/efi/loader/arch/amd64/trap.c	Tue Aug 15 14:03:26 2017	(r322542)
@@ -84,7 +84,11 @@ void
 report_exc(struct trapframe *tf)
 {
 
-	/* XXX using printf */
+	/*
+	 * printf() depends on loader runtime and UEFI firmware health
+	 * to produce the console output, in case of exception, the
+	 * loader or firmware runtime may fail to support the printf().
+	 */
 	printf("===================================================="
 	    "============================\n");
 	printf("Exception %u\n", tf->tf_trapno);
@@ -122,7 +126,13 @@ prepare_exception(unsigned idx, uint64_t my_handler,
 	ist_use_table[fw_idt_e->gd_ist]++;
 	loader_idt_e->gd_looffset = my_handler;
 	loader_idt_e->gd_hioffset = my_handler >> 16;
-	loader_idt_e->gd_selector = fw_idt_e->gd_selector; /* XXX */
+	/*
+	 * We reuse uefi selector for the code segment for the exception
+	 * handler code, while the reason for the fault might be the
+	 * corruption of that gdt entry. On the other hand, allocating
+	 * our own descriptor might be not much better, if gdt is corrupted.
+	 */
+	loader_idt_e->gd_selector = fw_idt_e->gd_selector;
 	loader_idt_e->gd_ist = 0;
 	loader_idt_e->gd_type = SDT_SYSIGT;
 	loader_idt_e->gd_dpl = 0;


More information about the svn-src-all mailing list