Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Feb 2016 09:39:30 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r295429 - head/sys/boot/common
Message-ID:  <201602090939.u199dUnl058388@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Tue Feb  9 09:39:30 2016
New Revision: 295429
URL: https://svnweb.freebsd.org/changeset/base/295429

Log:
  Don't set the offset when loading the kernel on the arm loader.efi. The
  copyin and copyout code handle virtual addresses such that they will take
  a virtual address and convert it into a valid physical address. It may
  also mean we fail to boot as the elf files load address could be 0.
  
  Sponsored by:	ABT Systems Ltd

Modified:
  head/sys/boot/common/load_elf.c

Modified: head/sys/boot/common/load_elf.c
==============================================================================
--- head/sys/boot/common/load_elf.c	Tue Feb  9 09:38:05 2016	(r295428)
+++ head/sys/boot/common/load_elf.c	Tue Feb  9 09:39:30 2016	(r295429)
@@ -353,7 +353,7 @@ __elfN(loadimage)(struct preloaded_file 
 #endif
 	} else
 	    off = 0;
-#elif defined(__arm__)
+#elif defined(__arm__) && !defined(EFI)
 	/*
 	 * The elf headers in arm kernels specify virtual addresses in all
 	 * header fields, even the ones that should be physical addresses.
@@ -364,6 +364,11 @@ __elfN(loadimage)(struct preloaded_file 
 	 * translates it to a physical address.  We do the va->pa conversion on
 	 * the entry point address in the header now, so that later we can
 	 * launch the kernel by just jumping to that address.
+	 *
+	 * When booting from UEFI the copyin and copyout functions handle
+	 * adjusting the location relative to the first virtual address.
+	 * Because of this there is no need to adjust the offset or entry
+	 * point address as these will both be handled by the efi code.
 	 */
 	off -= ehdr->e_entry & ~PAGE_MASK;
 	ehdr->e_entry += off;



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