Commit Graph

3167 Commits

Author SHA1 Message Date
andrew
9cc039ca0b Make global variabled only used in this file static. 2015-04-06 19:58:28 +00:00
andrew
1b7f9d2b45 Add support to the efi boot1 and loader for 32-bit ARM. This will be used
by the future qemu virt support.

Differential Revision:	https://reviews.freebsd.org/D2238
Reviewed by:	emaste
2015-04-06 15:50:20 +00:00
rpaulo
7ac590f450 SMBIOS support for EFI.
MFC after:	1 week
2015-04-06 06:55:47 +00:00
andrew
ed54a77a55 Move boot1.efi to the global CLEANFILES list, it's not x86 specific. 2015-04-05 18:57:58 +00:00
andrew
1a29811d8d Spell MACHINE_CPUARCH correctly 2015-04-05 18:42:43 +00:00
andrew
9b13105d8d Add FDT support to loader.efi. This will be used on arm and arm64.
Differential Revision:	https://reviews.freebsd.org/D2219
2015-04-05 18:37:39 +00:00
bapt
5abd1a7c31 Make sure forth manpages are only installed once.
Differential Revision:	https://reviews.freebsd.org/D2224
Reviewed by:	imp
2015-04-04 19:56:54 +00:00
rpaulo
b30b5c0e83 loader/EFI: improve the help of the 'mode' command. 2015-04-04 04:30:37 +00:00
rpaulo
906001a53f Remove an unnecessary space in a printf call. 2015-04-04 04:29:31 +00:00
rpaulo
0e7c1179da boot1 EFI: reset the screen and select the best mode.
It's necessary to reset the screen to make sure any vendor pixels are
gone when we start boot1.  In the Lenovo X1 (3rd gen), this is the
only way to clear the screen.  Previously, the Lenovo logo would only
disappear after the kernel started scrolling the display.

After resetting the screen, EFI could put us in the worst LCD mode
(oversized characters), so we now find the largest mode we can use and
hope it's the most appropriate one (it's not trivial to tell what's
the correct LCD resolution at this point).  It's worth noting that the
final stage loader has a 'mode' command that can be used to switch
text modes.

While there, enable the software cursor, just like in the legacy boot
mode.

MFC after:	1 week
2015-04-04 04:27:54 +00:00
rpaulo
2533468b8c Remove whitespace. 2015-04-04 04:18:52 +00:00
andrew
f4fed7040c Add the start of the efi fdt bindings. These will be used on arm and arm64.
Sponsored by:	The FreeBSD Foundation
2015-04-03 15:47:48 +00:00
andrew
53508afb80 Clean up more x86 only options in the efi code. 2015-04-03 15:25:59 +00:00
andrew
c71901897e Only enable the efi framebuffer on x86 for now 2015-04-03 12:54:38 +00:00
andrew
78347d6168 Only include machine/specialreg.h on x86 2015-04-03 12:30:18 +00:00
andrew
e4e59fd737 Only enable comconsole and nullconsole on x86. 2015-04-03 12:08:08 +00:00
jkim
4bb93441dc Fix powerpc/ps3 build, too. 2015-04-03 02:37:43 +00:00
jkim
60d853f8e5 Fix mips build, really. :-( 2015-04-03 02:31:59 +00:00
jkim
a8a6993c85 Revert .PATH changes to fix mips build.
Reported by:	bz
Pointy hat to:	jkim
2015-04-03 02:27:40 +00:00
jkim
8de179eddf Install newly added brand-*.4th and logo-*.4th files and reduce duplication.
Reviewed by:	dteske
Pointy hat to:	dteske
2015-04-02 20:07:05 +00:00
emaste
55637a4734 Move i386/efi files to new home in efi/loader/arch/i386
This was not (and still is not) connected to the build, but the EFI
loader is in the process of being built for other than amd64 so these
files ought to live in their eventual MD location.
2015-04-02 18:57:35 +00:00
dim
fd4e4ae147 Ensure the cross assembler, linker and objcopy are used for the build32
stage, just like for the regular world stage.

Reviewed by:	rodrigc, imp, bapt, emaste
MFC after:	1 week
Differential Revision: https://reviews.freebsd.org/D2187
2015-04-02 06:58:17 +00:00
dteske
382e28f7a0 Use ^[[m mode-ending (as-in screen.4th `me') versus ^[[37m
MFC after:	3 days
X-MFC-to:	stable/10
2015-04-02 01:49:12 +00:00
dteske
5336373e37 Eliminate literal escape sequences from *.4th
Suggested by:	alfred
MFC after:	3 days
X-MFC-to:	stable/10
2015-04-02 01:48:12 +00:00
dteske
d64a11d9ba Use fg/b/me from screen.4th instead of literals
MFC after:	3 days
X-MFC-to:	stable/10
2015-04-02 01:46:17 +00:00
royger
d8765deb30 multiboot: fix error codes
Return EINVAL instead of EFTYPE if we have a multiboot kernel loaded but
failed to load the modules. This makes it clear that the kernel/module
should be handled by the multiboot handler but something went wrong.

Sponsored by: Citrix Systems R&D
2015-04-01 10:10:20 +00:00
royger
ba2410656d multiboot: zero mod list array
Zero the list of modules array before using it, or else we might pass
uninitialized data in unused fields of the struct that will make Xen choke.
Also add a check to make sure malloc succeeds.

Sponsored by: Citrix Systems R&D
2015-04-01 10:02:28 +00:00
andrew
0c094dfe11 Move the efi loaders to be under sys/boot/efi. This will help us add
support for booting arm and arm64 from UEFI.

Differential Revision:	https://reviews.freebsd.org/D2164
Reviewed by:	emaste, imp (previous version)
Sponsored by:	The FreeBSD Foundation
2015-04-01 08:30:40 +00:00
dteske
d004477d05 Whoops! "arc commit --revision" != "arc diff --update" 2015-04-01 02:05:26 +00:00
dteske
454ddb0c34 Add "GELI Passphrase:" prompt to boot loader.
Summary:
Add "GELI Passphrase:" prompt to boot loader.

A new loader.conf(5) option of geom_eli_passphrase_prompt="YES" will now
allow you to enter your geli(8) root-mount credentials prior to invoking
the kernel.

See check-password.4th(8) for details.

Differential Revision:	https://reviews.freebsd.org/D2105
Reviewed by:	(your name[s] here)
MFC after:	3 days
X-MFC-to:	stable/10
Relnotes:	yes

Test Plan:
Drop a head copy of check-password.4th into /boot and then apply the patch
(only the patch to /boot/check-password.4th is required; no other changes are
required but you do have to have a HEAD copy of check-password.4th to
apply the patch).

NB: The rest of your /boot files can be up to 2 years old but no older.
NB: The test won't work unless your kernel has the following change

https://svnweb.freebsd.org/base?view=revision&revision=273489

Now, put into /boot/loader.conf:

geom_eli_passphrase_prompt="YES"

and reboot.

You should be prompted for a GELI passphrase before the menu (if enabled),
just after loading loader.conf(5).

NB: It doesn't matter if you're using GELI or not. However if you are using
GELI and a sufficiently new enough release (has SVN r273489) and you entered
the proper passphrase to mount your GELI encrypted root device(s), you should
notice that the boot process did not stop (you went from loader all the way to login).

Reviewers: cperciva, allanjude, scottl, kmoore

Subscribers: jkh, imp

Differential Revision: https://reviews.freebsd.org/D2105
2015-04-01 02:01:34 +00:00
dteske
e520f64215 Solve dreaded "dictionary full" issue by segregating words into new
vocabularies delay-processing, password-processing, version-processing,
frame-drawing, menu-infrastructure, menu-namespace, menu-command-helpers,
and menusets-infrastructure. The net effect is to remove almost 200
definitions from the main forth vocabulary reducing the dictionary size
by over 50%. The chances of hitting "dictionary full" should be greatly
reduced by this patch.

MFC after:	3 days
X-MFC-to:	stable/10
2015-04-01 01:54:28 +00:00
dteske
fd12db7ef3 When forced to draw ASCII lines/boxen, use `=' for the horizontal line
when double frames are requested versus single.

MFC after:	3 days
X-MFC-to:	stable/10
2015-04-01 01:25:58 +00:00
dteske
c43b541ac3 Securely overwrite (zero) user input when we finish password checks.
MFC after:	3 days
X-MFC-to:	stable/10
2015-04-01 01:22:30 +00:00
dteske
3b619a9c4f Add remainder of supported ANSI escape sequences.
MFC after:	3 days
X-MFC-to:	stable/10
2015-04-01 01:17:36 +00:00
dteske
1f2f96df3a Move beastie to logo-*.4th; brands to brand-*.4th
Suggested by:	jkh, alfred
MFC after:	3 days
X-MFC-to:	stable/10
2015-04-01 01:14:19 +00:00
dteske
cb7d127145 Comments. No functional change.
MFC after:	3 days
X-MFC-to:	stable/10
2015-04-01 00:49:34 +00:00
dteske
9f8c781a8d Whitespace and cleanup. No functional change(s).
MFC after:	3 days
X-MFC-to:	stable/10
2015-03-31 23:09:54 +00:00
dteske
f593bd9721 Optimize bootmsg to use fg/bg/me from screen.4th
NB: screen.4th is included by way of check-password.4th

MFC after:	3 days
X-MFC-to:	stable/10
2015-03-31 23:00:48 +00:00
dteske
c297bb1171 Comments. No functional change(s).
MFC after:	3 days
X-MFC-to:	stable/10
2015-03-31 22:32:35 +00:00
dteske
c76b827427 Whitespace. No functional change(s).
MFC after:	3 days
MFH:		stable/10
2015-03-31 22:10:40 +00:00
dteske
fb22dbc652 Change contents of the exec variable in loader.conf to be friendly to both
Ficl/Forth and Lua. No visible change for Forth while enabling Lua support.

Submitted by:	rpaulo
2015-03-31 21:46:44 +00:00
ganbold
61f3000027 Add device tree files for Hardkernel Odroid-C1 and Visson ATV-102 devices.
Submitted by:	John Wehle
Approved by:	stas (mentor)
2015-03-31 11:55:56 +00:00
andrew
a03bfef931 Reorder to help with moving the efi loader parts to sys/boot/efi. As these
will depend on ficl having been built, and are set via bsd.arch.inc.mk we
need to place this after ficl.

As Makefile.amd64 is now late enough we can add the i386 directory to this.
2015-03-29 15:43:24 +00:00
andrew
93d27a42d4 Add the Raspberry Pi 2 dtb, based on the existing rpi.dts, but with a
different base address for the devces.

MFC after:	1 week
2015-03-25 10:26:07 +00:00
mav
ebd96ed35a Remove from legacy ata(4) driver support for hardware, supported by newer
and more functional drivers ahci(4), siis(4) and mvs(4).

This removes about 3400 lines of code, unused since FreeBSD 9.0 release.
2015-03-24 18:09:07 +00:00
dteske
3f2fe981dd Add missing variables password/bootlock_password.
NB: Using NULL for default values in-case someone
or something uncomments it and reboots. See
check-password.4th(8) for additional details.

MFC after:	3 days
X-MFC-to:	stable/10 stable/9
2015-03-23 17:31:22 +00:00
dteske
d0ed14379e Increase max input for password/bootlock_password from 16 to 255.
When taking user input, don't show asterisks as the user types
but instead spin a twiddle. Implement Ctrl-U to clear user input.
If the buffer is empty, either because the user has yet to type
anything, presses Ctrl-U at any time, or presses backspace enough
to end in an empty buffer, the twiddle is erased to provide feed-
back to the user.

MFC after:	3 days
X-MFC-to:	stable/10 stable/9
2015-03-23 16:43:46 +00:00
dteske
ee7d1686fa Prevent password/bootlock_password features of loader.conf(5) from
locking out everyone in the case of setting a password longer than
the maximum (currently 16 characters). Now the required password is
truncated to the maximum input that can be read from the user.

PR:		kern/198760
MFC after:	3 days
MFH:		stable/10 stable/9
2015-03-23 16:31:27 +00:00
dteske
1c252bf2ed Fix sgetkey indentation to be consistent with the rest of the file.
Remove some blank lines, adjust some comments and update copyright.

MFC after:	3 days
X-MFC-to:	stable/10 stable/9
2015-03-23 16:22:56 +00:00
andrew
ceb6a0822b Stop calling x86_efi_copyin and x86_efi_getdev directly. This is to help
port loader.efi to both 32 and 64-bit ARM where we can use this file with
minimal changes.

Differential Revision:	https://reviews.freebsd.org/D2031
Reviewed by:	imp
2015-03-22 18:17:55 +00:00
ian
2908b1f743 Fix fdt_platform_fixups() mem region handling. It turns out u-boot puts
several types of data into the mem-info array (DRAM, SRAM, flash).  We
need to extract just the DRAM entries for translation into fdt memory
properties.

Also, increase the number of regions we can handle from 5 to 16.

Submitted by:	Michal Meloun
2015-03-17 21:15:24 +00:00
andrew
36adcb3650 Move the x86 specific files to be built in the amd64 loader.efi. This will
help with importing the arm and arm64 versions of loader.efi.
2015-03-15 19:00:35 +00:00
dim
49820c9622 Merge ^/head r279893 through r279984. 2015-03-14 13:08:00 +00:00
jhb
a61394dda9 Enable bzipfs support in the EFI loader.
- Add bzipfs to the list of supported filesystems in the EFI loader.
- Increase the heap size allocated for the EFI loader from 2MB to 3MB.

Differential Revision:	https://reviews.freebsd.org/D2053
Reviewed by:	benno, emaste, imp
MFC after:	2 weeks
Sponsored by:	Cisco Systems, Inc.
2015-03-13 09:41:27 +00:00
jhb
463cde4030 The System V ABI for amd64 allows functions to use space in a 128 byte
redzone below the stack pointer for scratch space and requires
interrupt and signal frames to avoid overwriting it. However, EFI uses
the Windows ABI which does not support this. As a result, interrupt
handlers in EFI push their interrupt frames directly on top of the
stack pointer. If the compiler used the red zone in a function in the
EFI loader, then a device interrupt that occurred while that function
was running could trash its local variables.  In practice this happens
fairly reliable when using gzipfs as an interrupt during decompression
can trash the local variables in the inflate_table() function
resulting in corrupted output or hangs.

Fix this by disabling the redzone for amd64 EFI binaries. This
requires building not only the loader but any libraries used by the
loader without redzone support.

Thanks to Jilles for pointing me at the redzone once I found the stack
corruption.

Differential Revision:	https://reviews.freebsd.org/D2054
Reviewed by:	imp
MFC after:	2 weeks
Sponsored by:	Cisco Systems, Inc.
2015-03-13 09:38:16 +00:00
jhb
bbecb196e9 Allow the EFI loader to work with large kernels and/or modules
(for example, a large mfsroot).  Note that for EFI the kernel and
modules (as well as other metadata files such as splash screens or
memory disk images) are loaded into a statically-sized staging area.
When the EFI loader exits it copies this staging area down to the
location the kernel expects to run at.
- Add bounds checking to the copy routines to fail attempts to access
  memory outside of the staging area.  Previously loading a combined
  kernel + modules larger than the staging size (32MB) would overflow
  the staging area trashing whatever memory was afterwards.  Under
  Intel's OVMF firmware for qemu this resulted in fatal faults in the
  firmware itself.  Now the attempt will fail with ENOMEM.
- Allow the staging area size to be configured at compile time via
  an EFI_STAGING_SIZE variable in src.conf or on the command line.
  It accepts the size of the staging area in MB.  The default size
  remains 32MB.

MFC after:	2 weeks
Sponsored by:	Cisco Systems, Inc.
2015-03-12 17:07:24 +00:00
jhb
d60dae6d10 Fix 'make depend' by moving the LDSCRIPT dependency into DPADD.
Sponsored by:	Cisco Systems, Inc.
2015-03-12 15:25:22 +00:00
jhb
21cea8a93f Revert r279381. The EFI loader needs to use a separate libstand that
is compiled against the ABI EFI expects (specifically, no stack
redzone) so it cannot share libstand with userboot (which must use
the System V ABI).
2015-03-12 15:20:05 +00:00
dim
d6cbc26f78 Merge ^/head r279759 through r279892. 2015-03-11 19:04:01 +00:00
nwhitehorn
59b9a761ea Provide a shim layer in loader to condense the Open Firmware device tree to
an FDT. This is how Linux and OS X boot and can avoid some issues with
using Open Firmware at runtime. The code is highly experimental and disabled
by default; it can be turned on by setting the loader environment variable
"usefdt" to a non-NULL value.
2015-03-09 02:57:34 +00:00
nwhitehorn
cf77261296 Fix loader on PowerPC following r279784. It turns out that, due to .PATH
confusion, the _setjmp.S in libstand was never being used and was instead
being shadowed by the libc version. Since the libc version now uses FPRs,
it caused loader to crash.
2015-03-09 02:19:44 +00:00
dim
546a43cb5f Merging ^/head r279596 through r279758. 2015-03-07 23:01:27 +00:00
trasz
de9ec20235 Add error reporting (but not actual handling yet, apart from
reporting them) for EFI calls to boot1.efi.

MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2015-03-07 19:14:01 +00:00
dim
7c437941ff When compiling boot2 with gcc on i386 and pc98, only use the custom flag
-mno-align-long-strings when compiling with base gcc.  This is checked
by comparing the version number against 4.2.1, which is not exactly
right, but good enough.  (There is no other way to check whether we are
using the non-standard gcc in base, as far as I know.)

Reported by:	rodrigc
MFC after:	3 days
2015-03-04 20:33:15 +00:00
dim
c00aebe665 Merge ^/head r279313 through r279595. 2015-03-04 19:47:33 +00:00
br
2f529cb858 o Add more room for EFI boot blocks
o Specify the filename as argument

Differential Revision:	https://reviews.freebsd.org/D1999
Reviewed by:	emaste@
2015-03-02 18:08:39 +00:00
obrien
a6dd54dec7 sys/boot/userboot/libstand/libstand.a should also include strtoul.c;
as lib/libstand/ and sys/boot/libstand32/ already does.
2015-02-27 22:23:35 +00:00
obrien
3d93b28a21 Use sys/boot/userboot/libstand/ and not /usr/lib/libstand.a. 2015-02-27 22:22:05 +00:00
obrien
e648fbba50 Remove duplicated -I. 2015-02-27 22:20:07 +00:00
jchandra
ba32078fbc Move PCI bus below simplebus for Broadcom XLP
This will enable us to do common allocation code for memory and
interrupts for SoC devices as well as PCI devices.
2015-02-27 02:21:52 +00:00
dim
4b25793bf5 Merge ^/head r279163 through r279308. 2015-02-26 07:26:56 +00:00
jchandra
4d42a57ca7 Remove run-time allocation of XLP IRQs
Follow the same static IRQ to Interrupt Table Entry mapping as the other
OS supported on XLP.
2015-02-26 02:22:47 +00:00
jchandra
00251f90bc Add netlogic,xlp-pic as interrupt controller for XLP
Add an empty driver for netlogic,xlp-pic to ensure that the device tree
is correct and has an interrupt controller.
2015-02-26 02:05:45 +00:00
mav
7b898da3dd Fix potential NULL dereference.
Submitted by:	Dmitry Luhtionov <dmitryluhtionov@gmail.com>
MFC after:	2 weeks
2015-02-25 09:57:05 +00:00
grembo
aa71ed70da Improve memory detection in biosmem.c
- Add a quirk to allow ignoring e820 extended memory detection.
- Improve memory detection through e801.
- Add bootloader command "biosmem".

See differential revision for more details.

Reviewed by:	jhb, adrian
Approved by:	adrian
Differential Revision:  https://reviews.freebsd.org/D1741
2015-02-23 22:58:51 +00:00
dim
9bd5a747dd Merge ^/head r279023 through r279162. 2015-02-22 16:04:37 +00:00
imp
61f8188c8c Allow EFI and ACPI to be included together. When ACPI is included
first, EFI will use its definitions for {,U}INT{8,16,32,64} and
BOOLEAN. When EFI is included first, define ACPI_USE_SYSTEM_INTTYPES
to tell ACPI that these are already defined.

Differential Revision: https://reviews.freebsd.org/D1905
2015-02-20 01:40:55 +00:00
dim
d27bd4650e Merge ^/head r278756 through r278915. 2015-02-17 19:53:41 +00:00
loos
68a4902d98 Set the #address-cells and #size-cells properties on I2C controllers of
Raspberry-pi.

This fixes the issues of dtc(1) while compiling I2C addresses set in "reg"
property.

MFC after:	2 weeks
2015-02-17 19:38:16 +00:00
dim
ff34755926 Merge ^/head r278499 through r278755. 2015-02-14 13:12:03 +00:00
jhb
108c08deb1 MFi386:
When building some of the boot loaders with clang, and DEBUG_FLAGS or
CFLAGS having '-g' in it, clang outputs several assembly directives that
are too new for our version of binutils.

Therefore, assemble the resulting .s files with clang instead.  A more
general solution can be implemented when a GNU as-compatible driver for
clang's integrated assembler appears.

Tested by:	gjb
2015-02-11 15:49:14 +00:00
gnn
4f63d6859d Summary: Update CPU identification call to recent version. 2015-02-11 12:08:40 +00:00
dim
6598113636 Merging ^/head r278298 through r278350. 2015-02-07 12:57:40 +00:00
dteske
7a73271d70 Revert SVN r277693.
Discussed on:	src-committers
Approved by:	core (emaste)
2015-02-06 23:19:17 +00:00
rpaulo
db1e77b44a Add a FAT label to the EFI boot1 partition.
MFC after:	1 week
2015-02-06 01:42:17 +00:00
dim
d2b9c88b24 Merging ^/head r278224 through r278297. 2015-02-05 22:34:29 +00:00
rpaulo
7bfd35f8ba EFI: print more information about EFI Tables.
This adds the GUIDs for DXE, HOB, Memory Type Information and Debug
Image Info.
2015-02-05 07:19:30 +00:00
dim
8dc8474065 Merge ^/head r278005 through r278109. 2015-02-02 20:18:47 +00:00
ian
a1d7d753f3 Do not skip setting the memory 'reg' property if the fdt data already
contains one.  Published dts source often includes a minimal default
memory definition and expects it to be overridden by the bootloader after
determining the actual physical memory in the system.
2015-02-01 18:21:16 +00:00
nwhitehorn
2a6b615dd7 Allow this to work with disks greater than 4 GB and with names not beginning
with "s".
2015-02-01 02:02:50 +00:00
dim
de7d9ba1a1 Merge ^/head r277975 through r277998. 2015-01-31 20:49:30 +00:00
nwhitehorn
5dd7abbde7 Relocate kernel to high address space (a static + 64 MB for now) to avoid
conflicts with the Linux host kernel. This lets you kexec an unmodified
GENERIC64.
2015-01-31 19:42:08 +00:00
nwhitehorn
92c5395dfe Add FDT reservations for memory areas used by OPAL or RTAS runtime firmware.
This allows a kexec'ed kernel to boot multiuser under PHYP.
2015-01-31 19:18:09 +00:00
nwhitehorn
f47d6e71c5 Add code to support loading relocatable kernels at offsets that are not
zero.
2015-01-31 18:42:51 +00:00
dim
df65628757 Merge ^/head r277956 through r277974. 2015-01-31 14:31:12 +00:00
nwhitehorn
7551e7e883 Add support for booting relocatable kernels on PowerPC. 2015-01-31 07:22:29 +00:00
grembo
6b157bd24b Fix order of functions in smbios.c (corrects r277949), since this corrects
a build error I committed this directly, sorry.
2015-01-31 00:06:05 +00:00
dim
310a59e6b3 Merge ^/head r277945 through r277955. 2015-01-30 23:57:39 +00:00
grembo
f0d5358d3e New function smbios_match to detect BIOS versions during boot
Motivation is to introduce BIOS specific quirks early in the boot
process. smbios_match can be called before malloc is avaible, that's
why parts of smbios_detect have been moved into a separate function
smbios_probe that will be called by smbios_detect as well as
smbios_match.

Reviewed by:	jhb
Approved by:	jhb
Differential Revision: 	https://reviews.freebsd.org/D1679
2015-01-30 19:47:25 +00:00
dim
2f964f86f0 Merge ^/head r277902 through r277944. 2015-01-30 18:34:56 +00:00
ambrisko
f50c52a6c1 Fix UEFI PXE boot on a NIC that isn't the first NIC.
In UEFI it appears all available NICS are present to pass network traffic.
This gives the capability to load the loader.efi from disk then set
currdev="net3:" and then all I/O will over over the 2nd NIC.  On this
machine is appears the first handle is the first NIC in IPv4 mode and
then the 2nd handle is the first NIC in IPv6 mode.  The 3rd handle is
the 2nd NIC in IPv4 mode.  The fix is to index into the handle based
on the unit cached from boot device passed into the loader.

Some testing info from a test boot via kenv:
	currdev="net3:"
	loaddev="net3:"
	boot.netif.name="igb1"
2015-01-30 18:25:53 +00:00
dim
4f1c85d9f0 Since clang 3.6.0 now implements the archetype 'freebsd_kprintf' for
__attribute__((format(...))), and the -fformat-extensions flag was
removed, introduce a new macro in bsd.sys.mk to choose the right variant
of compile flag for the used compiler, and use it.

Also add something similar to kern.mk, since including bsd.sys.mk from
that file will anger Warner. :-)

Note that bsd.sys.mk does not support the MK_FORMAT_EXTENSIONS knob used
in kern.mk, since that knob is only available in kern.opts.mk, not in
src.opts.mk.  We might want to add it later, to more easily support
external compilers for building world (in particular, sys/boot).
2015-01-28 18:36:33 +00:00
br
ee153e65b0 Add a generic way for hooking PMC interrupt. 2015-01-26 10:31:17 +00:00
des
f968f0ce0e Fix the font in the text version. This has bothered me for a long time...
MFC after:	1 week
2015-01-25 11:57:18 +00:00
br
b126e557b2 Add support for audio transmitting, include drivers for:
o Digital Audio Multiplexer (AUDMUX)
o Smart Direct Memory Access Controller (SDMA)
o Synchronous Serial Interface (SSI)

Disable by default as it depends on SDMA firmware.

Sponsored by:	Machdep, Inc.
2015-01-24 13:07:07 +00:00
will
481a456c5d Fix panic in firewire and creation of invalid config ROM.
(This change was supposed to be included in r277508.)

sys/boot/i386/libfirewire/firewire.c:
	Fix configuration ROM generation count wrapping logic
	so that the generation count is never outside of
	allowed limits (0x2 -> 0xF).

Submitted by:	gibbs
MFC after:	1 week
MFC with:	277508
Sponsored by:	Spectra Logic
MFSpectraBSD:	1110685 on 2015/01/05
2015-01-23 23:53:56 +00:00
royger
313e96ad33 loader: fix the size of MODINFOMD_MODULEP
The data in MODINFOMD_MODULEP is packed by the loader as a 4 byte type, but
the amd64 kernel expects a vm_paddr_t, which is of size 8 bytes. Fix this by
saving it as 8 bytes in the loader and retrieving it using the proper type
in the kernel.

Sponsored by: Citrix Systems R&D
2015-01-20 12:28:24 +00:00
ganbold
7ddeee68ed Enable Synopsys DesignWare Mobile Storage Host Controller
driver on Rockchip boards. It currently supports PIO mode
and dma mode needs external dma controller to be used.

Submitted by:   jmcneill
Approved by:    stas (mentor)
2015-01-20 09:07:28 +00:00
royger
fa28f09bfa loader: use correct types for parse_modmetadata
Use the proper types in parse_modmetadata for the p_start and p_end
parameters. This was causing problems in the ARM 32bit loader.

Sponsored by: Citrix Systems R&D
Reported and Tested by: ian
2015-01-17 08:09:07 +00:00
royger
0c5b62d3d2 loader: implement multiboot support for Xen Dom0
Implement a subset of the multiboot specification in order to boot Xen
and a FreeBSD Dom0 from the FreeBSD bootloader. This multiboot
implementation is tailored to boot Xen and FreeBSD Dom0, and it will
most surely fail to boot any other multiboot compilant kernel.

In order to detect and boot the Xen microkernel, two new file formats
are added to the bootloader, multiboot and multiboot_obj. Multiboot
support must be tested before regular ELF support, since Xen is a
multiboot kernel that also uses ELF. After a multiboot kernel is
detected, all the other loaded kernels/modules are parsed by the
multiboot_obj format.

The layout of the loaded objects in memory is the following; first the
Xen kernel is loaded as a 32bit ELF into memory (Xen will switch to
long mode by itself), after that the FreeBSD kernel is loaded as a RAW
file (Xen will parse and load it using it's internal ELF loader), and
finally the metadata and the modules are loaded using the native
FreeBSD way. After everything is loaded we jump into Xen's entry point
using a small trampoline. The order of the multiboot modules passed to
Xen is the following, the first module is the RAW FreeBSD kernel, and
the second module is the metadata and the FreeBSD modules.

Since Xen will relocate the memory position of the second
multiboot module (the one that contains the metadata and native
FreeBSD modules), we need to stash the original modulep address inside
of the metadata itself in order to recalculate its position once
booted. This also means the metadata must come before the loaded
modules, so after loading the FreeBSD kernel a portion of memory is
reserved in order to place the metadata before booting.

In order to tell the loader to boot Xen and then the FreeBSD kernel the
following has to be added to the /boot/loader.conf file:

xen_cmdline="dom0_mem=1024M dom0_max_vcpus=2 dom0pvh=1 console=com1,vga"
xen_kernel="/boot/xen"

The first argument contains the command line that will be passed to the Xen
kernel, while the second argument is the path to the Xen kernel itself. This
can also be done manually from the loader command line, by for example
typing the following set of commands:

OK unload
OK load /boot/xen dom0_mem=1024M dom0_max_vcpus=2 dom0pvh=1 console=com1,vga
OK load kernel
OK load zfs
OK load if_tap
OK load ...
OK boot

Sponsored by: Citrix Systems R&D
Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D517

For the Forth bits:
Submitted by: Julien Grall <julien.grall AT citrix.com>
2015-01-15 16:27:20 +00:00
loos
decdf2bedd Fix the PMIC node name to match the PMIC i2c address.
Remove an extra blank line.

No functional changes.

MFC after:	3 days
2015-01-15 01:20:56 +00:00
imp
d70d76bce5 Reserve and ignore the a new module metadata type MDT_PNP_INFO for
associating an optional PNP hint table with this module. In the
future, when these are added, these changes will silently ignore the
new type they would otherwise warn about. It will always be safe to
ignore this data. Get this into the builds today for some future
proofing.

MFC After: 3 days
2015-01-15 00:46:30 +00:00
hselasky
1346d3ca63 Add new USB template to the USB bootloader module. 2015-01-13 16:06:38 +00:00
loos
8e5fb35624 Add support to turn off Beaglebone with poweroff(8) or shutdown(8) -p.
To cut off the power we need to start the shutdown sequence by writing
the OFF bit on PMIC.

Once the PMIC is programmed the SoC needs to toggle the PMIC_PWR_ENABLE
pin when it is ready for the PMIC to cut off the power.  This is done by
triggering the ALARM2 interrupt on SoC RTC.

The RTC driver only works in power management mode which means it won't
provide any kind of time keeping functionality.  It only implements a way
to trigger the ALARM2 interrupt when requested.

Differential Revision:	https://reviews.freebsd.org/D1489
Reviewed by:	rpaulo
MFC after:	2 weeks
2015-01-12 03:23:16 +00:00
dim
59eeccaa33 Apparently more Makefiles use stuff from compiler-rt, so fix them up
too.  (This did not show during a make universe, strangely.)
2015-01-08 20:11:38 +00:00
nwhitehorn
8d2c79a0f0 Missed change in r276688. Apologies for build breakage. 2015-01-05 16:52:25 +00:00
nwhitehorn
0968c04c83 Add kexec-based Linux shim loader for use with the firmware petitboot
loader on PS3 and POWER8 systems. This is reasonably portable to other
architectures, especially FDT-based ones, if similar features are useful
elsewhere.

Netboot support is missing for now and will be added in a future commit,
at which time loader.ps3 will be garbage collected.

Done at:	Hackathon
2015-01-05 04:33:39 +00:00
ian
6f10ad7da9 Create a custom /boot/defaults/loader.conf for ARM. This differs from the
standard file in the following ways:

 - modules_path includes /boot/dtb
 - It doesn't contain 533 lines, of which 500 are either commented out,
   empty, or something_which_doesnt_work_on_arm_anyway=NO

The standard defaults file takes 40+ seconds to process on an arm beaglebone
board.  This one takes just a couple seconds.

This gets installed instead of the original because of the .PATH magic in
the makefile.
2015-01-03 19:38:37 +00:00
br
76a7fec0c1 Add driver for general-purpose I/O (GPIO).
Sponsored by:	DARPA, AFRL
2015-01-02 13:15:36 +00:00
dim
46bb7dfa77 Merge ^/head r274961 through r276418. 2014-12-30 20:23:03 +00:00
dim
4f8488255a For building sys/boot/powerpc, get rid of the obsolete -mppc64bridge
assembler flag.  No change in the generated code.

Reviewed by:	nwhitehorn
Differential Revision: https://reviews.freebsd.org/D1392
2014-12-29 17:36:37 +00:00
joel
fb7abcd8fc mdoc: remove EOL whitespace. 2014-12-29 13:50:59 +00:00
dim
0cdb9f6679 Merge ^/head r276347 through r276356. 2014-12-29 09:27:42 +00:00
dim
586a09b0c7 Use -Wl, to pass options to the linker for PowerPC's boot1.chrp.
MFC after:	3 days
2014-12-29 09:24:21 +00:00
dim
051b05da04 Merge ^/head r274961 through r276342. 2014-12-28 20:02:06 +00:00
ian
a048e38060 Use the proper markup for single quotes. 2014-12-27 17:02:09 +00:00
dim
1848cf1db3 Merge ^/head r274961 through r276301. 2014-12-27 14:58:52 +00:00
joel
7e529110a7 mdoc: improvements to SEE ALSO. 2014-12-27 07:07:37 +00:00
loos
33bb6f5b7f Add interrupt support for GPIO pins on OMAP4 and AM335x.
This enables the use of GPIO pins as interrupt sources for kernel devices
directly attached to gpiobus (userland notification will be added soon).

The use of gpio interrupts for other kernel devices will be possible when
intrng is complete.

All GPIO pins can be set to trigger on:

- active-low;
- active-high;
- rising edge;
- falling edge.

Tested on:	Beaglebone-black
2014-12-25 17:28:26 +00:00
ian
f885269f67 Revert r276101, it didn't fix the problem and causes a compile error
(nested comment blocks).
2014-12-24 01:10:53 +00:00
emaste
42dfcce67a Update comment: only one file in the FAT file system EFI boot image
Sponsored by:	The FreeBSD Foundation
2014-12-23 16:00:25 +00:00
emaste
c2a20050e7 Use explicit --output-target to set EFI file format
According to objcopy(1) --target is for use where the input and output
formats are the same ("no translation"). In practice it does detect the
input format in any case, but be explicit that we're specifying the
output format as we are translating from ELF to EFI PE format.

Sponsored by:	The FreeBSD Foundation
2014-12-23 15:58:45 +00:00
ian
7034229ae2 Convert a couple lingering NO_FORTH conditionals to test MK_FORTH. 2014-12-23 15:42:34 +00:00
rpaulo
a3b3fd6e37 Temporarily disable the cpus directive until I figure out what's wrong. 2014-12-23 03:00:18 +00:00
ian
802f4aada4 Add a new loader(8) variable, twiddle_divisor, allowing control over the
output frequency of the "twiddle" IO progress indicator.  The default
value is 1.  For larger values N, the next stage of the animation is only
output on every Nth call to the output routine.  A sufficiently large N
effectively disables the animation completely.
2014-12-22 22:07:22 +00:00
imp
69f63eaef2 Make this compile when TERM_EMU is not defined. 2014-12-22 19:10:11 +00:00
ian
c515629dd9 Allow whitspace to appear between device name and unit number in loaderdev.
This allows the same value to be used in u-boot commands and the loaderdev
env var that gets passed to ubldr, for example 'fatload mmc 1 ${bootfile}".
2014-12-21 17:10:24 +00:00
rpaulo
d78172d28f Driver for CPU frequency/voltage control on the Raspberry Pi.
Differential Revision:	https://reviews.freebsd.org/D1025
Submitted by:	Daisuke Aoyama aoyama@peach.ne.jp
Reviewed by:	ian (earlier version), rpaulo
MFC after:	1 month
Relnotes:	yes
2014-12-20 19:15:10 +00:00
dim
467c59d5a8 Merge ^/head r275759 through r275911. 2014-12-18 18:44:22 +00:00
br
2df3680ba6 Add configuration files for BERI soft-core synthesized on
Terasic SoCKit board (Altera FPGA).

Use virtio block as root filesystem device.

Sponsored by:	DARPA, AFRL
2014-12-17 11:36:31 +00:00
br
a2bb4d601d Move memory node to the root, so fdt_get_mem_regions() can find it. 2014-12-17 11:05:44 +00:00
br
af909cc2bd o Add PIO[2,3] devices information
o Enable Virtio Block
2014-12-17 10:48:53 +00:00
dim
3f2f30da4d Merge ^/head r274961 through r275684. 2014-12-10 19:24:42 +00:00
br
b236515e57 o Add BERI Virtio Networking Frontend (if_vtbe)
o Move similar block/networking methods to common file
o Follow r275640 and correct MMIO registers width
o Pass value to MMIO platform_note method.

Sponsored by:	DARPA, AFRL
2014-12-09 16:39:21 +00:00
dim
9f5c1c1611 Merge ^/head r275478 through r275622. 2014-12-08 19:56:34 +00:00
hselasky
eccb719b3b Define the ffs() function in the USB bootloader's global and
independent header file.
2014-12-05 12:04:47 +00:00
dim
5d679d6127 Merge ^/head r275387 through r275477. 2014-12-04 17:38:32 +00:00
emaste
dcd97c2f39 Increase BERI loader section alignment to 16
The .text, .bss, and .data sections claimed 16-byte alignment, but were
only aligned to 8 by the linker script.

Discovered with strip(1) from elftoolchain, which performs validation
absent from the binutils strip(1).

Sponsored by:	DARPA, AFRL
2014-12-03 14:04:57 +00:00
nyan
1daffcfa02 MFi386: r275305 (by rdivacky)
Unbreak the code for non-digits below '0' by casting the expression
  to unsigned int.
2014-12-02 14:48:21 +00:00
dim
78c1f8fbf4 Merge ^/head r275262 through r275363. 2014-12-01 13:14:39 +00:00