Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Aug 2017 14:03:27 +0000 (UTC)
From:      Toomas Soome <tsoome@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r322542 - head/sys/boot/efi/loader/arch/amd64
Message-ID:  <201708151403.v7FE3R9P075952@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201708151403.v7FE3R9P075952>