295538 |
11-Feb-2016 |
smh |
Fix ia64 build failures in EFI platform
The MFC of the recent EFI work to stable/10 caused build breakage under ia64.
It was not apparent that there was EFI code outside the EFI tree as this is not the case in HEAD, however in stable/10 there is for ia64.
This change does the following: * Re-enables libefi for ia64 under gcc. * Adds the ignore for unsupported pragma's when building libefi for ia64. * Adds the missing parameter to efi_handle_lookup in the ia64 loader.
This is a direct commit as ia64 is no longer supported after 10.x
Approved by: re (marius) Sponsored by: Multiplay |
294460 |
20-Jan-2016 |
emaste |
Leave temporary ia64 loader.sym behind if the build fails
This facilitates investigation of the build failure, and is the same way it's done for other architectures using EFI. |
276486 |
31-Dec-2014 |
ngie |
MFC r264400,r265836:
r264400:
NO_MAN= has been deprecated in favor of MAN= for some time, go ahead and finish the job. ncurses is now the only Makefile in the tree that uses it since it wasn't a simple mechanical change, and will be addressed in a future commit.
r265836:
Remove last two NO_MAN= in the tree. In both of these cases, MAN= is what is needed. |
271132 |
04-Sep-2014 |
emaste |
MFC r263005 by royger: howto_names: unify declaration |
259073 |
07-Dec-2013 |
peter |
Hoist all the mergeinfo up to the root in preparation for enforcing merges to the root only. All MFC's were rerecorded to the root.
Going forward, if an MFC includes mergeinfo, it will need to be made to the root and committed from the root. Merges with --ignore-ancestry or diff | patch can go anywhere.
The mergeinfo in HEAD is in a bad state from years of neglect and manual tampering and this was branched into 10.x. This confuses the coalescing code and prevents it from doing its job.
Approved by: re (gjb, implicit) |
256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
242688 |
07-Nov-2012 |
dteske |
Hook in new files menusets.4th and manual.
Approved by: adrian (co-mentor) (implicit)
|
239377 |
18-Aug-2012 |
marcel |
Don't build the ski loader anymore. The code is not deleted just yet, as it explains the distinction between the common and the platform- specific code.
|
227629 |
17-Nov-2011 |
marcel |
Wire the kernel text RWX, rather than RX. We're not quite ready for having kernel text non-writable, because we still need to apply relocations. On top of that, the PBVM page table has all pages marked as RWX, so it's an inconsistency to begin with.
|
223758 |
04-Jul-2011 |
attilio |
With retirement of cpumask_t and usage of cpuset_t for representing a mask of CPUs, pc_other_cpus and pc_cpumask become highly inefficient.
Remove them and replace their usage with custom pc_cpuid magic (as, atm, pc_cpumask can be easilly represented by (1 << pc_cpuid) and pc_other_cpus by (all_cpus & ~(1 << pc_cpuid))).
This change is not targeted for MFC because of struct pcpu members removal and dependency by cpumask_t retirement.
MD review by: marcel, marius, alc Tested by: pluknet MD testing by: marcel, marius, gonzo, andreast
|
222813 |
07-Jun-2011 |
attilio |
etire the cpumask_t type and replace it with cpuset_t usage.
This is intended to fix the bug where cpu mask objects are capped to 32. MAXCPU, then, can now arbitrarely bumped to whatever value. Anyway, as long as several structures in the kernel are statically allocated and sized as MAXCPU, it is suggested to keep it as low as possible for the time being.
Technical notes on this commit itself: - More functions to handle with cpuset_t objects are introduced. The most notable are cpusetobj_ffs() (which calculates a ffs(3) for a cpuset_t object), cpusetobj_strprint() (which prepares a string representing a cpuset_t object) and cpusetobj_strscan() (which creates a valid cpuset_t starting from a string representation). - pc_cpumask and pc_other_cpus are target to be removed soon. With the moving from cpumask_t to cpuset_t they are now inefficient and not really useful. Anyway, for the time being, please note that access to pcpu datas is protected by sched_pin() in order to avoid migrating the CPU while reading more than one (possible) word - Please note that size of cpuset_t objects may differ between kernel and userland. While this is not directly related to the patch itself, it is good to understand that concept and possibly use the patch as a reference on how to deal with cpuset_t objects in userland, when accessing kernland members. - KTR_CPUMASK is changed and now is represented through a string, to be set as the example reported in NOTES.
Please additively note that no MAXCPU is bumped in this patch, but private testing has been done until to MAXCPU=128 on a real 8x8x2(htt) machine (amd64).
Please note that the FreeBSD version is not yet bumped because of the upcoming pcpu changes. However, note that this patch is not targeted for MFC.
People to thank for the time spent on this patch: - sbruno, pluknet and Nicholas Esborn (nick AT desert DOT net) tested several revision of the patches and really helped in improving stability of this work. - marius fixed several bugs in the sparc64 implementation and reviewed patches related to ktr. - jeff and jhb discussed the basic approach followed. - kib and marcel made targeted review on some specific part of the patch. - marius, art, nwhitehorn and andreast reviewed MD specific part of the patch. - marius, andreast, gonzo, nwhitehorn and jceel tested MD specific implementations of the patch. - Other people have made contributions on other patches that have been already committed and have been listed separately.
Companies that should be mentioned for having participated at several degrees: - Yahoo! for having offered the machines used for testing on big count of CPUs. - The FreeBSD Foundation for having sponsored my devsummit attendance, which has been instrumental. - Sandvine for having offered offices and infrastructure during development.
(I really hope I didn't forget anyone, if it happened I apologize in advance).
|
222799 |
07-Jun-2011 |
marcel |
o Bump the EFI loader version to 3.1. o Add the about, pbvm and reboot commands. o Trim the banner (suppress maker and date).
|
222798 |
07-Jun-2011 |
marcel |
Add ia64_sync_icache() and use it to make the I-cache coherent after loading the kernel's text segment. The kernel will do the same for loaded modules, so don't worry about that.
|
222472 |
30-May-2011 |
julian |
Include forgotten framework changes to get some of the new menu files installed correctly on non x86/amd systems. pointy-hut to devin
|
222417 |
28-May-2011 |
julian |
New boot loader menus from Devin Teske. Discussed on hackers and recommended for inclusion into 9.0 at the devsummit. All support email to devin dteske at vicor dot ignoreme dot com .
Submitted by: dteske at vicor dot ignoreme dot com Reviewed by: me and many others
|
221356 |
03-May-2011 |
marcel |
Fix corner case where the size is a power of two.
|
221269 |
30-Apr-2011 |
marcel |
Turn PBVM page table entries into PTEs so that they can be inserted into the TLB as-is.
While here, have ia64_platform_alloc() return ~0UL on failure.
|
220313 |
04-Apr-2011 |
marcel |
Use the new arch_loadaddr I/F to align ELF objects to PBVM page boundaries. For good measure, align all other objects to cache lines boundaries.
Use the new arch_loadseg I/F to keep track of kernel text and data so that we can wire as much of it as is possible. It is the responsibility of the kernel to link critical (read IVT related) code and data at the front of the respective segment so that it's covered by TRs before the kernel has a chance to add more translations.
Use a better way of determining whether we're loading a legacy kernel or not. We can't check for the presence of the PBVM page table, because we may have unloaded that kernel and loaded an older (legacy) kernel after that. Simply use the latest load address for it.
|
220283 |
03-Apr-2011 |
marcel |
Make the ski loader functional again after the previous set of changes.
|
219691 |
16-Mar-2011 |
marcel |
MFaltix: Add support for Pre-Boot Virtual Memory (PBVM) to the loader.
PBVM allows us to link the kernel at a fixed virtual address without having to make any assumptions about the physical memory layout. On the SGI Altix 350 for example, there's no usuable physical memory below 192GB. Also, the PBVM allows us to control better where we're going to physically load the kernel and its modules so that we can make sure we load the kernel in memory that's close to the BSP.
The PBVM is managed by a simple page table. The minimum size of the page table is 4KB (EFI page size) and the maximum is currently set to 1MB. A page in the PBVM is 64KB, as that's the maximum alignment one can specify in a linker script. The bottom line is that PBVM is between 64KB and 8GB in size.
The loader maps the PBVM page table at a fixed virtual address and using a single translations. The PBVM itself is also mapped using a single translation for a maximum of 32MB.
While here, increase the heap in the EFI loader from 512KB to 2MB and set the stage for supporting relocatable modules.
|
218822 |
18-Feb-2011 |
dim |
Merge binutils 2.17.50 to head. This brings a number of improvements to x86 CPU support, better support for powerpc64, some new directives, and many other things. Bump __FreeBSD_version, and add a note to UPDATING.
Thanks to the many people that have helped to test this.
Obtained from: projects/binutils-2.17
|
211680 |
23-Aug-2010 |
imp |
MF tbemd: Minor tweaks, prefer MACHINE_CPUARCH generally to MACHINE_ARCH (which simplifies some powerpc/powerpc64 ifs)
|
209774 |
07-Jul-2010 |
marcel |
Use the kernel's start address to determine what to map. This allows us to link the kernel at different addresses without needing to build a corresponding loader.
|
202552 |
18-Jan-2010 |
marcel |
Add command-line option -dev to set the default value of the currdev variable. This is to be used by the EFI boot manager.
While here, re-factor the code a little bit and bump the version to 2.1.
|
201966 |
10-Jan-2010 |
marcel |
Remove debugging printf(). There's no need to print the image base address anymore.
|
201941 |
09-Jan-2010 |
marcel |
Remove file system support based on the simple file system protocol as this only allows us to access file systems that EFI knows about. With a loader that can only use EFI-supported file systems, we're forced to put /boot on the EFI system partition. This is suboptimal in the following ways: 1. With /boot a symlink to /efi/boot, mergemaster complains about the mismatch and there's no quick solution. 2. The EFI loader can only boot a single version of FreeBSD. There's no way to install multiple versions of FreeBSD and select one at the loader prompt. 3. ZFS maintains /boot/zfs/zpool.cache and with /boot a symlink we end up with the file on a MSDOS file system. ZFS does not have proper handling of file systems that are under Giant.
Implement a disk device based on the block I/O protocol instead and pull in file system code from libstand. The disk devices are really the partitions that EFI knows about.
This change is backward compatible.
MFC after: 1 week
|
193530 |
05-Jun-2009 |
jkim |
Import ACPICA 20090521.
|
188895 |
21-Feb-2009 |
ru |
Fix build when WITH_SSP is set explicitly.
Submitted by: Jeremie Le Hen
|
180012 |
25-Jun-2008 |
ru |
Enable GCC stack protection (aka Propolice) for userland: - It is opt-out for now so as to give it maximum testing, but it may be turned opt-in for stable branches depending on the consensus. You can turn it off with WITHOUT_SSP. - WITHOUT_SSP was previously used to disable the build of GNU libssp. It is harmless to steal the knob as SSP symbols have been provided by libc for a long time, GNU libssp should not have been much used. - SSP is disabled in a few corners such as system bootstrap programs (sys/boot), process bootstrap code (rtld, csu) and SSP symbols themselves. - It should be safe to use -fstack-protector-all to build world, however libc will be automatically downgraded to -fstack-protector because it breaks rtld otherwise. - This option is unavailable on ia64.
Enable GCC stack protection (aka Propolice) for kernel: - It is opt-out for now so as to give it maximum testing. - Do not compile your kernel with -fstack-protector-all, it won't work.
Submitted by: Jeremie Le Hen <jeremie@le-hen.org>
|
170026 |
27-May-2007 |
marcel |
Have the processor defer all faults and exceptions for control speculative loads. This at least makes control speculative loads work. In the future we should analyze which faults/exceptions we want to handle rather than defer to avoid having to call the recovery code when it's not strictly necessary.
|
167814 |
22-Mar-2007 |
jkim |
Catch up with ACPI-CA 20070320 import.
|
164412 |
19-Nov-2006 |
marcel |
Remove LDR_LOG2_PGSZ, ia64_pgtbl and ia64_pgtblsz. They are part of a WIP and not used yet.
|
164010 |
05-Nov-2006 |
marcel |
Major rework of the ia64 loaders. The two primary objectives are: 1. Make libefi portable by removing ia64 specific code and build it on i386 and amd64 by default to prevent regressions. These changes include fixes and improvements over previous code to establish or improve APIs where none existed or when the amount of kluging was unacceptably high. 2. Increase the amount of sharing between the efi and ski loaders to improve maintainability of the loaders and simplify making changes to the loader-kernel handshaking in the future.
The version of the efi and ski loaders are now both changed to 1.2 as user visible improvements and changes have been made.
|
163927 |
03-Nov-2006 |
marcel |
Properly calculate the checksum of the APIC table.
|
163897 |
02-Nov-2006 |
marcel |
Extend struct devdesc with a unit field, called d_unit. Promote the device (kind) specific unit field to the common field. This change allows a future version of libefi to work without requiring anything more than what is defined in struct devdesc and as such makes it possible to compile said version of libefi for different platforms without requiring that those platforms have identical derivatives of struct devdesc.
|
163893 |
02-Nov-2006 |
marcel |
Don't unconditionally compile-in the bcache code. It's only used on i386/amd64 and pc98. Remove useless calls to bcache_init() from the ia64 and sparc64 loaders, as well as from the OFW common code.
|
158467 |
12-May-2006 |
jhb |
Remove more Alpha bits from the boot code including fixing several stale comments.
|
156813 |
17-Mar-2006 |
ru |
Reimplementation of world/kernel build options. For details, see:
http://lists.freebsd.org/pipermail/freebsd-current/2006-March/061725.html
The src.conf(5) manpage is to follow in a few days.
Brought to you by: imp, jhb, kris, phk, ru (all bugs are mine)
|
154527 |
18-Jan-2006 |
marcel |
Remove ELF dynamic tag definitions that aren't used. Ideally, those that are used should come from <machine/elf.h>.
|
154491 |
17-Jan-2006 |
marcel |
s/R_IA64_/R_IA_64_/g as per the ia64 psABI.
|
150469 |
22-Sep-2005 |
ru |
Add loader(8) variables for RB_DFLTROOT, RB_MUTE, and RB_PAUSE: "boot_dfltroot", "boot_mute", and "boot_pause" respectively.
|
139738 |
05-Jan-2005 |
imp |
Start each of the license/copyright comments with /*-
|
139123 |
21-Dec-2004 |
ru |
NOFORTH -> NO_FORTH
|
139103 |
21-Dec-2004 |
ru |
Start the dreaded NOFOO -> NO_FOO conversion.
OK'ed by: core
|
138249 |
01-Dec-2004 |
scottl |
Remove the last vestiges of the userconfig option. None of this actually did anything, so this commit should be considered a NO-OP.
|
138141 |
28-Nov-2004 |
marcel |
o Introduce efimd_va2pa() to translate addresses in efi_copy{in|out}() and efi_readin(). This removes MD code from copy.c. o Don't unconditionally add pal.S to SRCS. It's specific to ia64.
|
138140 |
28-Nov-2004 |
marcel |
Add efimd.c. This file contains MD code used by the EFI library. While changing the Makefile, fail the creation of loader.efi when there are unresolved symbols in loader.sym. This avoids silently creating a faulty EFI binary.
|
138003 |
23-Nov-2004 |
marcel |
Hookup the efi subdirectory.
|
138002 |
23-Nov-2004 |
marcel |
This file was repocopied from src/sys/boot/efi/loader. Updated for the new build location.
|
137978 |
21-Nov-2004 |
marcel |
Remove struct ia64_itir and use a plain old uint64_t instead.
|
135968 |
30-Sep-2004 |
ru |
Added support for the -D boot option.
|
135702 |
24-Sep-2004 |
marcel |
Remove. This file was repocopied to ../ski.
|
135700 |
24-Sep-2004 |
marcel |
Replace misuse of NULL with 0UL.
|
135699 |
24-Sep-2004 |
marcel |
Remove the dependency on the Intel EFI headers in sys/boot/efi. Instead use <machine/efi.h> for the necessary definitions. This makes the EFI code in sys/boot/efi totally unused, except for pure EFI loaders. As such, maintenance and porting (to IA-32) of the EFI code is made as easy as possible.
|
135698 |
24-Sep-2004 |
marcel |
Unhook libski and skiload and hook up ski.
|
135697 |
24-Sep-2004 |
marcel |
Post repocopy build fixes.
|
135630 |
23-Sep-2004 |
marcel |
Redefine a PTE as a 64-bit integral type instead of a struct of bit-fields. Unify the PTE defines accordingly and update all uses.
|
135442 |
18-Sep-2004 |
marcel |
Remove useless include of <machine/fpu.h>.
|
133420 |
10-Aug-2004 |
marcel |
Catch up with change to <machine/pte.h>.
|
132437 |
20-Jul-2004 |
marcel |
o Support the REL32LSB relocation. It's in the ELF file from which we construct the EFI image. It doesn't seem to actually end up in the EFI image, AFAICT. o Replace .quad, .long and .short with data8, data4 and data2 resp. The former are gnuisms. o Redefine _start_plabel as a data16 with @iplt(_start) as its value. This is the preferred way to create user PLT entries.
|
132435 |
20-Jul-2004 |
marcel |
Fix the creation of EFI images that got broken by the import of binutils 2.15. The linker now creates a .rela.dyn section for dynamic relocations, while our script created a .rela section. Likewise, we copied the .rela section to the EFI image, but not the .rela.dyn section. The fix is to rename .rela to .rela.dyn in the linker script so that all relocations end up in the same section again. This we copy into the EFI image.
|
127919 |
05-Apr-2004 |
imp |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999.
Approved by: core
|
125767 |
13-Feb-2004 |
marcel |
Don't create a mapfile during link. It's not needed for the build.
|
125766 |
13-Feb-2004 |
marcel |
o Don't build with -fpic. It's not needed and inconsistent with how other constributions are compiled. o Remove powerpc specific additions to CFLAGS.
|
125729 |
12-Feb-2004 |
ru |
Tidy up makefiles.
Tested by: marcel
|
124140 |
04-Jan-2004 |
obrien |
Convert to __FBSDID.
|
123343 |
09-Dec-2003 |
marcel |
Fix the build of libski now that we use the "official" MADT table definitions. Those are slightly different than the ones we used before ACPI-CA 20031203 got imported. No structural or functional change.
|
122351 |
09-Nov-2003 |
marcel |
Implement PAL_HALT_LIGHT now that the kernel halts the processor when idle. All we have to do is return.
|
122350 |
09-Nov-2003 |
marcel |
Do not strip skiload when installed. The stripped binary does not load in the simulator.
|
119880 |
08-Sep-2003 |
obrien |
Use __FBSDID(). Also some minor style cleanups.
|
118346 |
02-Aug-2003 |
marcel |
Don't hardcode unit 0 for the current device if we're loaded from an EFI file system. When booting from a CD and there's already an EFI system partition on the disk, setting the current device to unit 0 will select the harddisk. This invariably breaks installing FreeBSD when other operating systems have been installed before.
We obviously want to do the same when we're booting over the network. Maybe later.
Based on a patch (from memory) from: arun
|
117677 |
17-Jul-2003 |
marcel |
Fix the ski loader, broken by the gcc upgrade. Update the linker script to match the one for the EFI loader and rewrite __start() in assembly to have gp defined without getting in the way of the compiler.
|
117676 |
17-Jul-2003 |
marcel |
Have the linker script look more like the default linker script on ia64. This fixes the breakage caused by the gcc upgrade that resulted in a broken executable.
|
117156 |
02-Jul-2003 |
ru |
pal_stub.s has been repo-copied to pal_stub.S.
Approved by: marcel Repocopied by: joe
|
114379 |
01-May-2003 |
peter |
Enable the i386 loader to load and run an amd64 kernel. If this puts things over floppy size limits, I can exclude it for release builds or something like that. Most of the changes are to get the load_elf.c file into a seperate elf32_ or elf64_ namespace so that you can have two ELF loaders present at once. Note that for 64 bit kernels, it actually starts up the kernel already in 64 bit mode with paging enabled. This is really easy because we have a known minimum feature set.
Of note is that for amd64, we have to pass in the bios int 15 0xe821 memory map because once in long mode, you absolutely cannot make VM86 calls. amd64 does not use 'struct bootinfo' at all. It is a pure loader metadata startup, just like sparc64 and powerpc. Much of the infrastructure to support this was adapted from sparc64.
|
113042 |
04-Apr-2003 |
marcel |
Remove `#ifndef lint' left behind after previous change.
|
113038 |
03-Apr-2003 |
obrien |
Use __FBSDID rather than rcsid[].
|
111693 |
01-Mar-2003 |
marcel |
Speed up debugging in the context of unexpected traps by printing the address of the image base of the loader. Given cr.iip, we can use the symbol table to figure out what function caused the trap.
|
111536 |
26-Feb-2003 |
obrien |
Consistently use NOFORTH to control the usage of ficl.
|
111168 |
20-Feb-2003 |
marcel |
Simplify page alignment.
|
110211 |
01-Feb-2003 |
marcel |
Remove special casing for running in the simulator from the kernel and instead add platform, firmware and EFI stubs to the loader. The net effect of this change is that besides a special console and disk driver, the kernel has no knowledge of the simulator. This has the following advantages: o Simulator support is much harder to break, o It's easier to make use of more feature complete simulators. This would only need a change in the simulator specific loader, o Running SMP kernels within the simulator. Note that ski at this time does not simulate IPIs, so there's no way to start APs.
The platform, firmware and EFI stubs describe the following hardware: o 4 CPU Itanium, o 128 MB RAM within the 4GB address space, o 64 MB RAM above the 4GB address space.
NOTE: The stubs in the skiloader describe a machine that should in parts be defined by the simulator. Things like processor interrupt block and AP wakeup vector cannot be choosen at random because they require interpretation by the simulator. Currently the simulator is ignorant of this.
This change introduces an unofficial SSC call SSC_SAL_SET_VECTORS which is ignored by the simulator.
Tested with: ski (version 0.943 for linux)
|
110206 |
01-Feb-2003 |
marcel |
SSC calls use break immediate 0x80000. 0x80001 only works for break.i. Ski is rather broken in this respect.
|
108100 |
19-Dec-2002 |
jake |
Renamed the loader's zipfs to gzipfs. zipfs.c was repo-copied to gzipfs.c.
|
108025 |
18-Dec-2002 |
marcel |
Add command `hcdp'. This command dumps the DIG64 HCDP table if one exists.
|
107733 |
10-Dec-2002 |
marcel |
Pass the HCDP table address to the kernel. If no such table exists, NULL is passed. The address of the HCDP table can be found by iterating over the configuration tables in the EFI system table. To avoid more duplication, a function can be called with the GUID of interest. The function will do the scanning. Use the function in all places where we iterate over the configuration tables in an attempt to find a specific one.
Bump the loader version number as the result of this.
Approved by: re (blanket)
|
107723 |
10-Dec-2002 |
marcel |
Change the startup code to fix a memory leak and to allow us to accept load options (=command line options).
The call graph changes from *entry*->efi_main->efi_init, where efi_main is the EFI equivalent of main to *entry*->efi_main->main, where main is what you'd expect. efi_main now is what efi_init was. The prototype of main follows that of C. The first argument is argc and the second is argv. There is no third argument. Allocation of heap pages is now handled by the EFI library and it now deallocates the pages when main() returns or when exit() is called. This allows us to safely return to the boot manager (or EFI shell) without leaks. EFI applications are responsible to free all memory themselves.
Handling of the load options is a bit tricky. There are either no load options, load options in ASCII or load options in Unicode. The EFI library will translate the ASCII options to Unicode options as to simplify user code. Since the load options are passed as a single string (if present) and main() accepts argc and argv, the startup code also has to split the string into words and build the argv vector. Here the trickiness starts. When the loader is started from the EFI shell, argv[0] will automaticly load the program name. In all other cases (ie through the boot manager), this is not the case. Unfortunately, there's no trivial way to check. Hence, a set of conditions is checked to determine if we need to fill in argv[0] ourselves or not. This checking is not perfect. There are known cases where it fails to do the right thing. The logic works for most expected cases, though. This includes the case where no options are given.
Approved by: re (blanket)
|
107722 |
10-Dec-2002 |
marcel |
o Make all GUID variables global to maximize reuse. o Recognize the HCDP configuration table. o Dump the GUID of tables we don't recognize.
Approved by: re (carte blanche)
|
107720 |
10-Dec-2002 |
marcel |
Remove _putchar, _puts and _puthex. These functions are unused.
Approved by: re (blanket)
|
107683 |
08-Dec-2002 |
marcel |
The boot manager sets the watchdog timer to 5 minutes before invoking a boot option. When the timer expires the machine is rebooted. Disable the watchdog timer for 2 reasons: o We're an interactive program. We cannot guarantee that we've booted the kernel in the time available to us. There have been situations where netbooting the right kernel took 2 tries and more time than given. Not to speak of the normal behaviour to have the loader sitting at the prompt while the user is off doing other things (such as figuring out what to type next ;-) o We may not boot a kernel at all. We may exit as the result of the user typing quit (assuming it took less than 5 minutes to type it :-). It is documented that loaders should have disabled the watchdog timer if they return to the boot manager. Not doing so would cause a reboot while in the boot manager. This appears to be harmless, besides of course the actual reboot.
Approved by: re (weisse karte)
|
107367 |
28-Nov-2002 |
marcel |
Remove a left-over virtual mapping of uncached I/O port space. Previous kernels unwantingly depended on this mapping, but as of version 1.123 of src/sys/ia64/ia64/machdep.c this dependency has been removed. Consequently, one has to update the kernel before updating the loader. The documented/recommended upgrade will suffice in this case.
Due to a visible (from the kernels point of view) change in behaviour, bump the loader version number from 0.3 to 1.0.
Approved by: re (carte blanc)
|
107203 |
24-Nov-2002 |
marcel |
MFp4: o Show the contents of the AP wakeup descriptor when dumping SAL information. o Increase S/N ratio when listing the itr and dtr. Only show valid mappings and give the total number of TRs.
Approved by: re (blanket)
|
105852 |
24-Oct-2002 |
marcel |
o Fix a size calculation based on a 8KB page, while under EFI pages are 4KB. o As a second order fix, don't assume we have enough space after the bootinfo block left in a page to hold the memory map. o A third order fix as that we removed the assumption that a bootinfo block fits in a single 8KB page.
PR: ia64/39415 submitted by: Espen Skoglund <esk@ira.uka.de>
|
103834 |
23-Sep-2002 |
peter |
At great personal risk, add a __packed and __aligned(x) define that expand to __attribute__((packed)) and __attribute__((aligned(x))) respectively. Replace the handful of gcc-ism's that use __attribute__((aligned(16))) etc around the kernel with __aligned(16).
There are over 400 __attribute__((packed)) to deal with, that can come later. I just want to use __packed in new code rather than add more gcc-ism's.
|
100388 |
20-Jul-2002 |
peter |
Disable loader ufs support. It causes the loader to crash on the Itanium2 box that I have. We have no EFI disk drivers yet anyway (maybe that is the problem).
|
100387 |
20-Jul-2002 |
peter |
Fix printf format errors
|
98472 |
20-Jun-2002 |
peter |
Add boot_serial and boot_multicons variables to set RB_SERIAL and RB_MULTIPLE since this seems to be the easiest way to add these flags for non-forth loaders etc.
|
96912 |
19-May-2002 |
marcel |
o Remove namespace pollution from param.h: - Don't include ia64_cpu.h and cpu.h - Guard definitions by _NO_NAMESPACE_POLLUTION - Move definition of KERNBASE to vmparam.h
o Move definitions of IA64_RR_{BASE|MASK} to vmparam.h o Move definitions of IA64_PHYS_TO_RR{6|7} to vmparam.h
o While here, remove some left-over Alpha references.
|
96513 |
13-May-2002 |
ru |
Removed now unused INTERNALSTATICLIB. INTERNALLIB now implies NOPIC and NOPROFILE. Removed gratuitous NOMAN.
|
96455 |
12-May-2002 |
obrien |
Back out last commit. I expect our bsd.*.mk gods to remove the need for defining so many extra things in addition to INTERNALLIB. We don't like repetitive C code and we shouldn't for make code either.
|
96415 |
11-May-2002 |
obrien |
NOPIC, NOPROFILE, NOMAN, and INTERNALSTATICLIB are redundant when using INTERNALLIB now.
|
96342 |
10-May-2002 |
obrien |
-ffreestanding is the word. (also resort some CFLAGS such that the more "important" value are first so they are easier to see)
|
95190 |
21-Apr-2002 |
marcel |
Improve self-relocation: o We don't expect the PLT relocations to follow the .rela section anymore. We still assume that PLT relocations are long formed, o Document register usage, o Improve ILP, o Fix the FPTR relocation by creating unique OPDs per function. Comparing functions is valid now, o The IPLT relocation naturally handles the addend. Deal with it. We ignore the addend for FPTR relocations for now. It's not at all clear what it means anyway.
Fix ABI misinterpretation: o For Elf_Rela relocations, the addend is explicit and should not be loaded from the memory address we're relocating. Only do that for Elf_Rel relocations (ie the short form). o DIR64LSB is not the same as REL64LSB. DIR64LSB applies to a symbol (S+A), whereas REL64LSB applies to the base address (BD+A),
|
95026 |
19-Apr-2002 |
marcel |
Allocate sufficient pages to hold the bootinfo block and stop hardwiring the location.
|
94024 |
07-Apr-2002 |
peter |
We must not let install(1) strip loader.efi when installing it, or the resulting binary will be damaged and no longer work.
|
94023 |
07-Apr-2002 |
peter |
Set BINDIR
|
94022 |
07-Apr-2002 |
peter |
Add loader bootforth infrastructure and install it.
|
93926 |
06-Apr-2002 |
peter |
Make it a bit closer to the EFI build and tie up some loose ends.
|
93925 |
06-Apr-2002 |
peter |
Try and tidy up some very loose ends with paths to various libraries etc.
|
93924 |
06-Apr-2002 |
peter |
Do not add the ficl/alpha subdir to the ia64 include path. Try ficl/ia64 instead.
|
93923 |
06-Apr-2002 |
peter |
Do not assume that ${OBJCOPY} variable exists. It was hidden by the fact that the 'ia64-make' wrapper explicitly set it.
|
93921 |
06-Apr-2002 |
peter |
Fix self hosted loader building. When you use a self configured gcc, it detects and uses the gas section merge support. As a result, a whole bunch of new sections arrive, including .rodata.str1.8, which was not included in our custom ldscript.ia64. The result was a loader binary that EFI rejected.
While here, collect the loader shell commands linker set and include it in the data area rather than having its own section.
/boot/loader.efi was the last holdout for having a 100% self built ia64 system.
|
93753 |
04-Apr-2002 |
peter |
Use a relative path to libstand.. /usr/src/lib/libstand may not exist or may have the wrong header files.
|
93485 |
31-Mar-2002 |
marcel |
Only install the help file if we can find it. Use ${BASE}.help in both the condition and for the install. We expect to find the help file in ${.OBJDIR}.
|
93459 |
30-Mar-2002 |
marcel |
Pass the address of the bootinfo block to the kernel in register r8. Keep it at the hardwired address for now. Bump the version.
|
93454 |
30-Mar-2002 |
marcel |
Pass the physical address of the bootinfo block to the kernel in register r8. We continue to write the bootinfo block at the same hardwired address, because the kernel still expects it there. It is expected that future kernels use register r8 to get to the bootinfo block and don't depend on the hardwired address anymore.
Bump the loader version once again due to the interface change.
|
93411 |
30-Mar-2002 |
marcel |
Add a quick and dirty way to determine where we're loaded from. We only care if it's network or not at this time. If we're loaded from the network, we set currdev (=loaddev) so that the kernel is loaded from the network as well. In all other cases we initialize to disk. This makes netbooting more convenient and can easily be enhanced to do more elaborate checking.
|
93410 |
30-Mar-2002 |
marcel |
The EFI loader has been improved a lot since it was first added. Most significantly (from an interfacing point of view) is the support for the FPSWA pointer passing. Even though that was added 4 months ago, it's probably not a bad idea to bump the version number to reflect this.
|
93400 |
29-Mar-2002 |
marcel |
Fix the beforeinstall target. We install ${PROG}.help if loader.help exists, otherwise we install it anyway. I interpret this as a very high desire to install ${PROG}.help. Alas, ${PROG}.help doesn't exist at the moment and neither does loader.help, so in practice this just doesn't work, no matter how you interpret it. The compromise is to install ${PROG}.help IFF it exists. I realize we lost creativity with this commit, but style should have been preserved, AFAICT :-)
|
93321 |
28-Mar-2002 |
marcel |
o Don't include sys/cdefs.h
|
93320 |
28-Mar-2002 |
marcel |
o Add -L${DESTDIR}${LIBDIR} on the link line for -lstand. o Add -j .dynstr to objcopy. This makes .efi binaries work when built with a 3.x based toolchain.
|
93319 |
28-Mar-2002 |
marcel |
Duplicate the logic used elsewhere to define LIBSTAND.
|
92658 |
19-Mar-2002 |
peter |
Add -ffreestanding to avoid printf/puts/putchar conversions
|
92657 |
19-Mar-2002 |
peter |
Boot from efifs first.
|
86588 |
19-Nov-2001 |
peter |
Lookup the EFI_FPSWA driver and pass the interface pointer through to the kernel before we call ExitBootServices(). I've typed the definitions in efifpswa.h from the Intel FPSWA manual (urk).
|
86586 |
19-Nov-2001 |
peter |
Remove bootinfo.bi_kernel. It isn't used by the kernel. struct bootinfo should go away on ia64, we should be loader metadata based since that is the only way we can boot (loader, skiload).
|
86585 |
19-Nov-2001 |
peter |
Fix a dependency violation, same as in libefi/elf_freebsd.c a while back.
|
85652 |
29-Oct-2001 |
marcel |
Set RB_MULTIPLE (multiple console support) if the kernel is booted with the -D flag.
|
85476 |
25-Oct-2001 |
dfr |
Call ExitBootServices and disable interrupts before we start hacking the VM registers. This ought to make things slightly more reliable here.
|
85475 |
25-Oct-2001 |
dfr |
Add the two sections used for PLT entries to the text and sdata sections respectively. This makes IPLTLSB relocations work properly (these are generated for weak symbols, particularly for _longjmp).
|
85436 |
24-Oct-2001 |
dfr |
Try to get the self-relocator to work with IPLTLSB relocations. Doesn't work right though - I can't figure out why.
|
84644 |
08-Oct-2001 |
marcel |
s/alpha/${MACHINE_ARCH}/g
|
83948 |
26-Sep-2001 |
peter |
Make this 'make obj' safe
|
83939 |
25-Sep-2001 |
dfr |
Calculate the valid flag for ITRs and DTRs correctly. Also fix a couple of minor problems and remove some debugging code.
|
83904 |
24-Sep-2001 |
dfr |
Add commands to dump the itrs and dtrs.
|
83903 |
24-Sep-2001 |
dfr |
Return the mapkey which EFI gave us when we read the memory map - we need it to call ExitBootServices.
|
83902 |
24-Sep-2001 |
dfr |
Tidy up a little - don't try to print anything or enable interrupts after we start changing translation registers. Also, call ExitBootServices before we jump into the kernel.
|
83857 |
23-Sep-2001 |
dfr |
Add commands to dump the configuration tables and the SAL System Table.
|
83829 |
22-Sep-2001 |
dfr |
Add EFI network support.
|
83828 |
22-Sep-2001 |
dfr |
* Flesh out elf_exec and bootinfo. * Add EFI network support.
|
83710 |
20-Sep-2001 |
dfr |
Add definition of SSC_GET_RTC.
|
83666 |
19-Sep-2001 |
dfr |
Implement time().
|
83521 |
15-Sep-2001 |
dfr |
Add a fake memory descriptor for the I/O port space.
|
83502 |
15-Sep-2001 |
dfr |
Fill in the bootinfo's memory map.
|
83498 |
15-Sep-2001 |
dfr |
Remove dead code.
|
83439 |
14-Sep-2001 |
dfr |
Plug in ELF backend.
|
83438 |
14-Sep-2001 |
dfr |
Add ELF backend to the build.
|
83437 |
14-Sep-2001 |
dfr |
Make this do the right thing (mostly). We should still reserve the pages that the kernel loads into using the EFI AllocatePages call.
|
83408 |
13-Sep-2001 |
dfr |
Update code which creates bootinfo.
|
83370 |
12-Sep-2001 |
dfr |
A command file for SKI which runs the loader up to the first instruction of the loaded kernel.
|
83364 |
12-Sep-2001 |
dfr |
Add a version of the loader which runs under SKI, the HP ia64 simulator. This loader is quite functional and can load and run kernels. The kernels don't quite work right after loading but that should be easily fixable.
|
83216 |
08-Sep-2001 |
dfr |
Add missing entry to memory type name table and adjust field widths.
|
83215 |
08-Sep-2001 |
dfr |
Add a command 'memmap' to print out the EFI memory map.
|
83193 |
07-Sep-2001 |
dfr |
Hook up the native EFI filesystem reader.
|
83192 |
07-Sep-2001 |
dfr |
Set currdev and loaddev variables.
|
83190 |
07-Sep-2001 |
dfr |
Reformat.
|
83078 |
05-Sep-2001 |
dfr |
Merge linker set relocations with the rest.
|
82965 |
04-Sep-2001 |
dfr |
Enable bootforth.
|
82942 |
04-Sep-2001 |
dfr |
Make sure we copy over the linker set sections to the EFI executable.
|
79540 |
10-Jul-2001 |
dfr |
Make this build again after breakage from previous commits.
|
78332 |
16-Jun-2001 |
obrien |
style(9) and remove a left over Alpha comment
|
78331 |
16-Jun-2001 |
obrien |
style cleanup
|
78320 |
16-Jun-2001 |
obrien |
style(9) + fix FreeBSD id's.
|
78195 |
14-Jun-2001 |
peter |
Nuke old gensetdefs based linker sets with extreme prejudice
|
77979 |
10-Jun-2001 |
dfr |
Move the first section up one page. The firmware bogusly uses the first page of the image to load section headers and if we let the text section start at zero, it corrupts the section table when its loaded. With this change, the loader gets as far as the 'ok' prompt.
|
77978 |
10-Jun-2001 |
dfr |
Remove a 'return' statement which I put in while I was trying to debug the startup code.
|
77943 |
09-Jun-2001 |
dfr |
First approximation of an ia64 EFI loader. Not functional.
|
69738 |
08-Dec-2000 |
marcel |
Add "empty" makefile. Cross-building fails without it.
|