History log of /freebsd-current/sys/arm64/conf/GENERIC
Revision Date Author Comments
# 602d3601 07-Sep-2023 Kyle Evans <kevans@FreeBSD.org>

arm64: start defining a std.apple configuration

The M1 uses FDT, and has bge to start with. Add a SOC_* option for
the first SoC we'll be supporting.

IOMMU is added commented out because it does have it, but IOMMU is not
well-tested on aarch64. An initial version of the DART driver will be
upstreamed that just puts the DARTs that support bypass mode into bypass
mode -- we'll be missing some functionality, but we at least still end
up with some USB ports.

Reviewed by: karels, manu
Input from: jrtc27 (IOMMU)
Differential Revision: https://reviews.freebsd.org/D39823


# aa39abd8 13-Mar-2023 Jessica Clarke <jrtc27@FreeBSD.org>

arm64: Move Azure-specific config from std.hyperv to std.azure

Hyper-V does not provide Mellanox hardware, some of Azure's instances
do, thus the configuration to enable them does not belong in the generic
std.hyperv config.

Fixes: 15e7fa83ef3c ("arm64: Hyper-V: Add vPCI and Mellanox driver modules into build")


# 7046ff49 02-Nov-2022 Andrew Turner <andrew@FreeBSD.org>

Revert "Disable Hyper-V on arm64"

This reverts commit fe36346a8904683af64dc5231e106a951d386ca5.

The arm64 Hyper-v code now checks it is running under Hyper-v before
calling into the hypervisor.

Sponsored by: The FreeBSD Foundation


# fe36346a 28-Oct-2022 Andrew Turner <andrew@FreeBSD.org>

Disable Hyper-V on arm64

It unconditionally calls into the Hyper-V firmware. As most arm64
boards don't have said firmware disable it for now.


# 60c96dbf 28-Sep-2022 Kyle Evans <kevans@FreeBSD.org>

arm64: add a std.ec2 config

Mostly to document basic harware present on the platform; knowing that
Graviton exposes an ns8250 uart alone is quite helpful.

Reviewed by: andrew, imp, manu
Seems accurate: cperciva
Sponsored by: NetApp, Inc.
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D36776


# 9729f076 27-Oct-2022 Souradeep Chakrabarti <schakrabarti@microsoft.com>

arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final)

This is the last part for ARM64 Hyper-V enablement. This includes
commone files and make file changes to enable the ARM64 FreeBSD
guest on Hyper-V. With this patch, it should be able to build
the ARM64 image and install it on Hyper-V.

Reviewed by: emaste, andrew, whu
Tested by: Souradeep Chakrabarti <schakrabarti@microsoft.com>
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D36744


# 0f2c6331 05-Feb-2021 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add per SoC family kernel config

There is multiple reason for this :
- This makes it easier to see which driver is needed for each SoC
- This makes it easier to create a custom config for one SoC
- This really reduce boot time (which some people might want)

Some explaination about the files :
- std.arm64 contains all standard kernel option
- std.dev contains all the standard kernel devices
- std.<soc> contains all drivers needed to boot on this SoC family
- <SOC> includes std.arm64, std.dev and std.<soc>
- GENERIC includes std.arm64, std.dev and all std.<soc>

Sponsored by: Diablotin Systems
MFC After: 2 months
Reviewed by: mmel, cognet, imp
Differential Revision: https://reviews.freebsd.org/D30474


# b644d64e 14-Jul-2021 Andrew Turner <andrew@FreeBSD.org>

Add virtio_scsi to the arm64 GENERIC config

This is needed to boot on the Oracle Cloud VM.Standard.A1.Flex instance

Sponsored by: The FreeBSD Foundation


# ab9f9cfd 14-Jul-2021 Andrew Turner <andrew@FreeBSD.org>

Add virtio comments to the arm64 GENERIC config

Most of these are from the amd64 GENERIC config.

Sponsored by: The FreeBSD Foundation


# bf3a3852 08-Jul-2021 Bjoern A. Zeeb <bz@FreeBSD.org>

fan53555: attach to build and switch from syr827

Rather than extending syr827 for syr828 (as initially done in D31103)
switch to the Fairchild Semiconductor Corporation fan53555 implementation
which is in-tree but was not attached to the build. The fan53555
implementation also supports syr827/syr8278 already. [1]
Update NOTES and the arm64 GENERIC configuration for the switch.
syr827 for now stays in the tree but is not used by any
kernel configuration.

Suggested by: mmel [1]
Reviewed by: mmel, manu
Differential Revision: https://reviews.freebsd.org/D31112


# 993e8236 01-Jul-2021 Emmanuel Vadot <manu@FreeBSD.org>

arm64: allwinner: Add r_intc driver

The r intc interrupt controller seems to do a lot of things :
- It can handle the NMI interrupt
- It have local interrupts for some device that also can be muxed with GIC
- It can serve as an forwarder for the GIC

It's mostly used for deepsleep/wakeup if I understood correctly and we do not
support this on arm64.

For now just forward everything to the GIC so interrupts works again for device
which now have this interrupts controller set since dts v5.12

Sponsored by: Diablotin Systems


# 19aa95e4 07-Apr-2021 Marcin Wojtas <mw@FreeBSD.org>

Introduce new driver for NXP Ethernet controller

ENETC it a gigabit Ethernet controller found on the LS1028A board.
It supports basic VLAN offloads - tag extraction, injection and hardware
filtering. Inband MDIO connectivity is used for link status
monitoring through the miibus interface. Fixed-link mode is also
supported, which allows for operation of internal cpu to switch port.
Since no admin interrupts are present in hardware, link status polling
has to be used.
Due to a hardware bug software reset of the NIC results in a external
abort. Because of that most of the hardware initialization is done
during attach. This also means that in the case of an fatal error full
board reset is required.
The enetc_hw.h header was imporoted from Linux. It is dual licensed.

Submitted by: Kornel Duleba <mindal@semihalf.com>
Obtained from: Semihalf
Sponsored by: Alstom Group
Differential Revision: https://reviews.freebsd.org/D30729


# cb25a945 13-May-2021 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

arm64: allwinner: Add i2s and codec support

Differential Revision: https://reviews.freebsd.org/D27830


# c1a14887 20-May-2021 Ceri Davies <ceri@FreeBSD.org>

sys/*/conf/*, docs: fix links to handbook

While here, fix all links to older en_US.ISO8859-1 documentation
in the src/ tree.

PR: 255026
Reported by: Michael Büker <freebsd@michael-bueker.de>
Reviewed by: dbaio
Approved by: blackend (mentor), re (gjb)
MFC after: 10 days
Differential Revision: https://reviews.freebsd.org/D30265


# 6993187a 24-Apr-2021 Alexander V. Chernikov <melifaro@FreeBSD.org>

Add FIB_ALGO to GENERIC on amd64/arm64.

Option `FIB_ALGO` gates new modular fib lookup functionality,
enabling more performant routing table lookups and improving
control plane convergence under the load.

Detailed feature description is available in D27401.

Reviewed By: olivier, gnn
Differential Revision: https://reviews.freebsd.org/D28434


# 16e549eb 05-Apr-2021 Justin Hibbits <jhibbits@FreeBSD.org>

Merge the QorIQ GPIO drivers between arm and powerpc

Summary:
They're nearly identical, so don't use two copies. Merge the newer
driver into the older one, and move it to a common location.

Add the Semihalf and associated copyrights in addition to mine, since
it's a non-trivial amount of code merged.

Reviewed By: mw
Differential Revision: https://reviews.freebsd.org/D29520


# 3b721b44 04-Feb-2021 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add a SOC_BRCM_NS2 option

Only compile files needed for this platform if the option is enabled in the
kernel config file.
Add the option to GENERIC.

MFC after: 3 days


# 375d797b 04-Feb-2021 Ed Maste <emaste@FreeBSD.org>

Enable pvscsi and vmx in arm64 GENERIC

FreeBSD pvscsi and vmx work with VMware ESXi Arm "Fling"; provide these
in GENERIC for a convenient out-of-the-box experience.

PR: 253202
Reported by: Vincent Milum Jr
MFC after: 3 days
Sponsored by: The FreeBSD Foundation


# f9322ff6 28-Jan-2021 Allan Jude <allanjude@FreeBSD.org>

Enable KERN_TLS by default in ARM64 GENERIC

Sponsored-by: Ampere Computing
Submitted-by: Klara, Inc.


# 074a91f7 13-Jan-2021 John Baldwin <jhb@FreeBSD.org>

Enable accelerated AES-XTS software crypto in GENERIC.

In particular, using GELI on a root filesystem will only use
accelerated software crypto drivers if they are available before the
root filesystem is mounted. While these modules can be loaded from
the loader, including them in GENERIC provides a better out-of-the-box
experience for users.

Both aesni(4) and armv8crypto(4) provide accelerated implementations
of the default cipher used by GELI (AES-XTS) in addition to other
ciphers.

Reviewed by: mhorne, allanjude, markj
Differential Revision: https://reviews.freebsd.org/D28100


# facdd1cd 10-Jan-2021 Thomas Skibo <thomas-bsd@skibo.net>

cgem: add 64-bit support

Add 64-bit address support to Cadence CGEM Ethernet driver for use in
other SoCs such as the Zynq UltraScale+ and SiFive HighFive Unleashed.

Reviewed by: philip, 0mp (manpages)
Differential Revision: https://reviews.freebsd.org/D24304


# bbfa199c 09-Dec-2020 mhorne <mhorne@FreeBSD.org>

arm64: gdb(4) machine-dependent bits

Everything required for remote kernel debugging over a serial
connection. For FDT-based systems, a debug port can be specified by
setting hw.fdt.dbgport to the desired device tree node in loader.conf.
For example, hw.fdt.dbgport="uart1", or
hw.fdt.dbgport="serial@ff1a0000".

Looks good: emaste
Tested by: rwatson
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D27727


# 19758786 04-Oct-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

hid: Import functions and constants required by new subsystem

This does an import of quirk stubs, debugging macros from USB code and
numerous usage constants used by dependent drivers.

Besides, this change renames some functions to get a better matching
with userland library and NetBSD/OpenBSD HID code. Namely:

- Old hid_report_size() renamed to hid_report_size_max()
- New hid_report_size() calculates size of given report rather than
maximum size of all reports.
- hid_get_data_unsigned() renamed to hid_get_udata()
- hid_put_data_unsigned() renamed to hid_put_udata()

Compat shim functions are provided in usbhid.h to make possible compile
of legacy code unmodified after this change.

Reviewed by: manu, hselasky
Differential revision: https://reviews.freebsd.org/D27887


# 67de2db2 04-Oct-2020 Vladimir Kondratyev <wulf@FreeBSD.org>

Factor-out hardware-independent part of USB HID support to new module

It will be used by the upcoming HID-over-i2C implementation. Should be
no-op, except hid.ko module dependency is to be added to affected drivers.

Reviewed by: hselasky, manu
Differential revision: https://reviews.freebsd.org/D27867


# f45f9ef0 05-Jan-2021 Ed Maste <emaste@FreeBSD.org>

arm64 GENERIC: sort to match amd64, to ease comparison

No functional change - only moved lines, changed whitespace, and
updated comments.

Reviewed by: allanjude
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D28001


# 509a0062 29-Dec-2020 Michal Meloun <mmel@FreeBSD.org>

Tegra210: Connect to GENERIC kernel.


# d5fe384b 14-Dec-2020 Alexander V. Chernikov <melifaro@FreeBSD.org>

Enable ROUTE_MPATH support in GENERIC kernels.

Ability to load-balance traffic over multiple path is a must-have thing for routers.
It may be used by the servers to balance outgoing traffic over multiple default gateways.

The previous implementation, RADIX_MPATH stayed in the shadow for too long.
It was not well maintained, which lead us to a vicious circle - people were using
non-contiguous mask or firewalls to achieve similar goals. As a result, some routing
daemons implementation still don't have multipath support enabled for FreeBSD.

Turning on ROUTE_MPATH by default would fix it. It will allow to reduce networking
feature gap to other operating systems. Linux and OpenBSD enabled similar support
at least 5 years ago.

ROUTE_MPATH does not consume memory unless actually used. It enables around ~1k LOC.

It does not bring any behaviour changes for userland.
Additionally, feature is (temporarily) turned off by the net.route.multipath sysctl
defaulting to 0.

Differential Revision: https://reviews.freebsd.org/D27428


# 935b2ac1 05-Dec-2020 Michal Meloun <mmel@FreeBSD.org>

Connect DTB files based on LX2160A SoC to build.
Mainly LX2K Honeycomb and ClearFog-CX boards.


# f94fddde 20-Oct-2020 Ed Maste <emaste@FreeBSD.org>

arm64: add uhci to GENERIC

uhci is (or, can be) used by VMware ESXi-Arm.

PR: 250308
Reported by: Vincent Milum Jr
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation


# 7113afc8 11-Oct-2020 Emmanuel Vadot <manu@FreeBSD.org>

10Gigabit Ethernet driver for AMD SoC

This patch has the driver for 10Gigabit Ethernet controller in AMD
SoC. This driver is written compatible to the Iflib framework. The
existing driver is for the old version of hardware. The submitted
driver here is for the recent versions of the hardware where the Ethernet
controller is PCI-E based.

Submitted by: Rajesh Kumar <rajesh1.kumar@amd.com>
MFC after: 1 month
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D25793


# 92d47dce 01-Oct-2020 Ed Maste <emaste@FreeBSD.org>

Add cd device to arm64 GENERIC

Big-iron arm64 machines might have a CD, possibly provided by some IPMI
emulation.

Reported by: scottph


# 1b5a4fc4 27-Sep-2020 Michal Meloun <mmel@FreeBSD.org>

Add LINUX_BOOT_ABI back to arm64 GENERIC kernel.

It was removed in r355289 but forgot to return it back when new u-boot booti
support was committed. Although booti is not the preferred method of
booting the kernel, it is very useful for the initial phase of porting
FreeBSD to a new platform or booting the kernel on various embedded boards
in an industrial environment.


# 6507a8fe 20-Sep-2020 Michal Meloun <mmel@FreeBSD.org>

Adjust DMA alignment for USB stack.
It should be at least as large as the maximum value of caheline size
for currently known CPUs.

MFC after: 2 weeks


# 1fc1a228 08-Sep-2020 Andrew Turner <andrew@FreeBSD.org>

Add a GPIO driver for the Arm pl061 controller

A PL061 is a simple 8 pin GPIO controller. This GPIO device is used to
signal an internal request for shutdown on some virtual machines including
Arm-based Amazon EC2 instances.

Submitted by: Ali Saidi <alisaidi_amazon.com> (previouss version)
Reviewed by: Ali Saidi, manu
Differential Revision: https://reviews.freebsd.org/D24065


# d9a65ba8 07-Sep-2020 Andriy Gapon <avg@FreeBSD.org>

Allwinner USB DRD support (musb_otg)

Allwinner USB DRD is based on the Mentor USB OTG controller, with a
different register layout and a few missing registers.

The code is by Andrew Turner (andrew).

Reviewed by: hselasky, manu
Obtained from: andrew
MFC after: 5 weeks
Differential Revision: https://reviews.freebsd.org/D5881


# c085d2ea 05-Aug-2020 Andrew Turner <andrew@FreeBSD.org>

Add DDB_CTF to the arm64 and riscv kernel configs

This allows DTrace fbt probes to find arguments.

Sponsored by: Innovate UK


# b798ef64 24-Jul-2020 Alex Richardson <arichardson@FreeBSD.org>

Include TMPFS in all the GENERIC kernel configs

Being able to use tmpfs without kernel modules is very useful when building
small MFS_ROOT kernels without a real file system.
Including TMPFS also matches arm/GENERIC and the MIPS std.MALTA configs.

Compiling TMPFS only adds 4 .c files so this should not make much of a
difference to NO_MODULES build times (as we do for our minimal RISC-V
images).

Reviewed By: br (earlier version for riscv), brooks, emaste
Differential Revision: https://reviews.freebsd.org/D25317


# e64080e7 16-Jul-2020 Mark Johnston <markj@FreeBSD.org>

Switch from SCTP to SCTP_SUPPORT in GENERIC configs.

This removes SCTP from in-tree kernel configuration files. Now, SCTP
can be enabled by simply loading the module, as discussed on
freebsd-net@.

Reviewed by: tuexen
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D25611


# b356ddf0 14-Jul-2020 Mark Johnston <markj@FreeBSD.org>

Add a driver for the SafeXcel EIP-97.

The EIP-97 is a packet processing module found on the ESPRESSObin. This
commit adds a crypto(9) driver for the crypto and hash engine in this
device. An initial skeleton driver that could attach and submit
requests was written by loos and others at Netgate, and the driver was
finished by me.

Support for separate AAD and output buffers will be added in a separate
commit, to simplify merging to stable/12 (where those features don't
exist).

Reviewed by: gnn, jhb
Feedback from: andrew, cem, manu
MFC after: 1 week
Sponsored by: Rubicon Communications, LLC (Netgate)
Differential Revision: https://reviews.freebsd.org/D25417


# 94bc2117 30-Jun-2020 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

Add i.MX 8M Quad support

- Add CCM driver and clocks implementations for i.MX 8M
- Add GPC driver for iMX8
- Add clock tree for i.MX 8M Quad
- Add clocks support and new compat strings (where required) for existing i.MX 6 UART, I2C, and GPIO drivers
- Enable aarch64-compatible drivers form i.MX 6 in arm64 GENERIC kernel config
- Add dtb/imx8 kernel module with DTBs for Nitrogen8M and iMX8MQ EVK

With this patch both Nitrogen8M and iMX8MQ EVK boot with NFS root up to multiuser login prompt

Reviewed by: manu
Differential Revision: https://reviews.freebsd.org/D25274


# 1e6005d8 25-May-2020 Marcin Wojtas <mw@FreeBSD.org>

Introduce VF610 I2C controller support.

NXP LS1046A contains I2C controller compatible with Vybrid VF610.
Existing Vybrid MVF600 driver can be used to support it. For that purpose
declare driver as ofw_iicbus and add methods associated with ofw_iicbus.

For VF610 add dynamic clock prescaler calculation using clock information
from clock driver and clock frequency requested in device tree.

On the occasion add detach function and add additional error handling
in i2c_attach function.

Submitted by: Dawid Gorecki <dgr@semihalf.com>
Reviewed by: manu
Obtained from: Semihalf
Sponsored by: Alstom Group
Differential Revision: https://reviews.freebsd.org/D24361


# a5dfa67d 25-May-2020 Marcin Wojtas <mw@FreeBSD.org>

Add GPIO support for QorIQ boards.

This patch adds a GPIO controller support targeted for NXP LS1046A
SoC. The driver implements the following features:
* setting direction of each pin (IN or OUT)
* setting the mode of output pins (PUSHPULL or OPENDRAIN)
* setting the state of each output pin (1 or 0)
* reading the state of each input pin (1 or 0)

Submitted by: Kamil Koczurek <kek@semihalf.com>
Dawid Gorecki <dgr@semihalf.com>
Reviewed by: manu
Obtained from: Semihalf
Sponsored by: Alstom Group
Differential Revision: https://reviews.freebsd.org/D24353


# eacff8a2 25-May-2020 Marcin Wojtas <mw@FreeBSD.org>

Add LS1046A clockgen driver.

Driver provides probe and attach functions for LS1046A clockgen and passes
configuration information to QorIQ clockgen class. It may be used as
a reference implementation for different QorIQ clockgen devices.

Submitted by: Dawid Gorecki <dgr@semihalf.com>
Reviewed by: mmel, manu
Obtained from: Semihalf
Sponsored by: Alstom Group
Differential Revision: https://reviews.freebsd.org/D24352


# 2cd0c529 21-Apr-2020 Mike Karels <karels@FreeBSD.org>

Add genet driver for Raspberry Pi 4B Ethernet

Add driver for Broadcom "GENET" version 5, as found in BCM-2711 on
Raspberry Pi 4B. The driver is derived in part from the bcmgenet.c
driver in NetBSD, along with bcmgenetreg.h.

Reviewed by: manu
Obtained from: in part from NetBSD
Relnotes: yes, note addition
Differential Revision: https://reviews.freebsd.org/D24436


# 667c3fc0 11-Feb-2020 Ruslan Bukin <br@FreeBSD.org>

Add PCI Express driver for the ARM Neoverse N1 System Development
Platform (N1SDP).

Neoverse N1 is a high-performance ARM microarchitecture designed
by the ARM Holdings for the server market.

The PCI part on N1SDP was shipped untested and suffers from some
integration issues.

For instance accessing to not existing BDFs causes System Error
(SError) exception. To mitigate this, the firmware scans the bus,
catches SErrors and creates a table with valid BDFs. That allows
us to filter-out accesses to invalid BDFs in this driver.

Also the root complex config space (BDF == 0) has an unusual
location in memory map, so remapping accesses to it is required.

Finally, the config space is restricted to 32-bit accesses only.

This was tested on the ARM boxes kindly provided by the ARM Ltd
to the DARPA CHERI Project.

In collaboration with: andrew
Reviewed by: andrew
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D23349


# bcd380e8 16-Jan-2020 Emmanuel Vadot <manu@FreeBSD.org>

arm64: rockchip: Add RK3399 PWM driver

Add a driver for the pwm controller in the RK3399 SoC

Submitted by: bdragon (original version)
Reviewed by: ganbold (previous version)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D19046


# 6db3672c 28-Dec-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: rockchip: Add driver for the io domain

This driver configure the registers in the GRF according to the value
of the regulators for the platform.
Some IP can run with either 3.0V or 1.8V, if we don't configure them
correctly according to the external voltage used they will not work.
It's only done at boot time for now and might be needed at runtime for
IP like sdmmc.

Reviewed by: mmel
Tested On: RockPro64, Firefly-RK3399 (gonzo), AIO-3288 (mmel)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D22854


# 946c511e 11-Dec-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add explicit devices for dwmmc variant

We used to include the hisi version if soc_hisi_hi6220 was present,
include the altera version if dwmmc_altera was present and include
the rockchip version if soc_rockchip_rk3328 was present.
Now every version have it's own device directive.
The rockchip version isn't named dwmmc_rockchip because all other
rockchip driver are named rk_XXX.

MFC after: 1 month


# 8cfe2a7a 05-Dec-2019 Luiz Otavio O Souza <loos@FreeBSD.org>

Add the SPI driver for the Marvell Armada 37x0 SoC.

Interrupt based driver, implements SPI mode and clock configuration.

Tested on espressobin and SG-3200.

Sponsored by: Rubicon Communications, LLC (Netgate)


# 8a82d567 04-Dec-2019 Luiz Otavio O Souza <loos@FreeBSD.org>

Add the I2C driver for the Armada 37x0.

This controller is a bit tricky as the STOP condition must be indicated in
the last tranferred byte, some devices will not like the repeated start
behavior of this controller. A proper fix to this issue is in the works.

This driver works in polling mode, can be used early in the boot (required
in some cases).

Tested on espressobin/SG-1100 and the SG-3200.

Obtained from: pfSense
Sponsored by: Rubicon Communications, LLC (Netgate)


# 750d951f 02-Dec-2019 Justin Hibbits <jhibbits@FreeBSD.org>

revert r354714 "Boot arm64 kernel using booti command from U-boot."

After discussing with mmel@, it was clear this is insufficient to address
all the needs. mmel@ will commit his original patch, from
https://reviews.freebsd.org/D13861, and the additions needed from r354714
will be made afterward.

Requested by: mmel
Sponsored by: Juniper Networks, Inc.


# 849aef49 21-Nov-2019 Andrew Turner <andrew@FreeBSD.org>

Port the NetBSD KCSAN runtime to FreeBSD.

Update the NetBSD Kernel Concurrency Sanitizer (KCSAN) runtime to work in
the FreeBSD kernel. It is a useful tool for finding data races between
threads executing on different CPUs.

This can be enabled by enabling KCSAN in the kernel config, or by using the
GENERIC-KCSAN amd64 kernel. It works on amd64 and arm64, however the later
needs a compiler change to allow -fsanitize=thread that KCSAN uses.

Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D22315


# 4694d573 14-Nov-2019 Justin Hibbits <jhibbits@FreeBSD.org>

Boot arm64 kernel using booti command from U-boot.

Summary:
Boot arm64 kernel using booti command from U-boot. booti can relocate initrd
image into higher ram addresses, therefore align the initrd load address to 1GiB
and create VA = PA map for it. Create L2 pagetable entries to copy the initrd
image into KVA.
(parts of the code in https://reviews.freebsd.org/D13861 was referred and used
as appropriate)

Submitted by: Siddharth Tuli <siddharthtuli_gmail.com>
Reviewed by: manu
Sponsored by: Juniper Networks, Inc
Differential Revision: https://reviews.freebsd.org/D22255


# b17ad0c6 09-Nov-2019 Kyle Evans <kevans@FreeBSD.org>

arm64: add SOC_BRCM_BCM2838, build it in GENERIC

BCM2838/BCM2711 is the Raspberry Pi 4, which we will soon be able to boot
on once some ports bits are worked out.


# aea1c841 25-Oct-2019 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

arm64: rk3399: add SPI driver and include it in GENERIC config

SPI driver for Rockchip's RK3399 SoC. Implements PIO mode, CS selection,
SPI mode and frequency configuration.

Reviewed by: manu
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D22148


# ecd9fdeb 25-Oct-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: rockchip: Add RK3399 TypeC phy driver

This is a driver for the USB3 PHY present in the RK3399.
While the phy support DP (Display Port) the driver doesn't has we have
no driver to test this with for now.
All the lane and pll configuration is just magic values from rockchip.
While the manual have some info on those registers it's really hard to
understand how to calculate those values (if there is a way).

MFC after: 1 month


# 7d888a5b 25-Oct-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: rockchip: Add rk_dwc3 driver

This is a simplebus like driver that attaches the dwc3 child node and
enable the clocks needed for the module.

MFC after: 1 month


# 4ad0475f 23-Oct-2019 Ed Maste <emaste@FreeBSD.org>

arm64: enable options NUMA in GENERIC

As with amd64 NUMA is required for reasonable operation on big-iron
arm64 systems and is expected to have no significant impact on small
systems. Enable it now for wider testing in advance of FreeBSD 13.0.

You can use the 'vm.ndomains' sysctl to see if multiple domains are in
use - for example (from Cavium/Marvell ThunderX2):

# sysctl vm.ndomains
vm.ndomains: 2

No objection: manu
Sponsored by: The FreeBSD Foundation


# 4b84206b 20-Oct-2019 Michal Meloun <mmel@FreeBSD.org>

Update Armada 8k drivers to cover newly imported DT and latest changes
in simple multifunction driver.
- follow interrupt changes in DT. Split old ICU driver to function oriented
parts and add drivers for newly defined parts (system error interrupts).
- Many drivers are children of simple multifunction driver. But after r349596
simple MF driver doesn't longer exports memory resources, and all children
must use syscon interface to access their registers. Adapt affected
drivers to this fact.

MFC after: 3 weeks


# 7790c8c1 17-Oct-2019 Conrad Meyer <cem@FreeBSD.org>

Split out a more generic debugnet(4) from netdump(4)

Debugnet is a simplistic and specialized panic- or debug-time reliable
datagram transport. It can drive a single connection at a time and is
currently unidirectional (debug/panic machine transmit to remote server
only).

It is mostly a verbatim code lift from netdump(4). Netdump(4) remains
the only consumer (until the rest of this patch series lands).

The INET-specific logic has been extracted somewhat more thoroughly than
previously in netdump(4), into debugnet_inet.c. UDP-layer logic and up, as
much as possible as is protocol-independent, remains in debugnet.c. The
separation is not perfect and future improvement is welcome. Supporting
INET6 is a long-term goal.

Much of the diff is "gratuitous" renaming from 'netdump_' or 'nd_' to
'debugnet_' or 'dn_' -- sorry. I thought keeping the netdump name on the
generic module would be more confusing than the refactoring.

The only functional change here is the mbuf allocation / tracking. Instead
of initiating solely on netdump-configured interface(s) at dumpon(8)
configuration time, we watch for any debugnet-enabled NIC for link
activation and query it for mbuf parameters at that time. If they exceed
the existing high-water mark allocation, we re-allocate and track the new
high-water mark. Otherwise, we leave the pre-panic mbuf allocation alone.
In a future patch in this series, this will allow initiating netdump from
panic ddb(4) without pre-panic configuration.

No other functional change intended.

Reviewed by: markj (earlier version)
Some discussion with: emaste, jhb
Objection from: marius
Differential Revision: https://reviews.freebsd.org/D21421


# ce607eeb 14-Oct-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add Synopsys DWC3 driver

This add a driver for the Synopsys DWC3 driver found on multiple SoCs.
It only supports host mode for now.

MFC after: 1 month


# 26b0cd3a 14-Oct-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: allwinner: Add aw_dwc3 driver

This is a simplebus like driver that just deal with clocks and resets
and attach the dwc3 child node.

MFC after: 1 month


# 6c4464cb 14-Oct-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: allwinner: Add Allwinner H6 Support

This adds support for H6 SoC.
Add a CCU driver for H6 that support all PLLs and most of the clocks
that we are intersted in for now (i2c, mmc, usb, etc ...)

MFC after: 1 month


# 29ee7380 03-Oct-2019 Emmanuel Vadot <manu@FreeBSD.org>

allwinner: Remove a10_ehci driver

We have generic-ehci since r353062 so use it.

MFC after: 1 month
X-MFC-With: r353062


# c3e25952 28-Sep-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: rockchip: Add usb2phy driver

This driver is for the usb phy present on rockchip SoC.
It only support RK3399 and host mode for now.
The driver expose the usb clock needed by the usb controller.


# ee41e38d 13-Sep-2019 Ruslan Bukin <br@FreeBSD.org>

Add support for Intel Stratix 10 platform.

Intel Stratix 10 SoC includes a quad-core arm64 cluster and FPGA fabric.

This adds support for reconfiguring FPGA.

Accessing FPGA core of this SoC require the level of privilege EL3,
while kernel runs in EL1 (lower) level of privilege.

This provides an Intel service layer interface that uses SMCCC to pass
queries to the secure-monitor (EL3).

Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D21454


# 50c365c4 04-Sep-2019 Ruslan Bukin <br@FreeBSD.org>

Include dwgpio to the build.

Sponsored by: DARPA, AFRL


# 51154edc 16-Aug-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add EspressoBin DTB to the build

This will compile the espressobin dts to a dtb file and this will be
install in /boot/dtb/marvell/ during installkernel.

MFC after: 1 week


# f808f2ce 29-Jul-2019 Ruslan Bukin <br@FreeBSD.org>

Add support for the SD/MMC controller found in Terasic DE10-Pro
(an Intel Stratix 10 GX/SX FPGA Development Kit).

Set the bus speed manually due to lack of clock management support.

Sponsored by: DARPA, AFRL


# 4be67142 29-Jul-2019 Ruslan Bukin <br@FreeBSD.org>

Add glue driver for Altera SOCFPGA Ethernet MAC (EMAC) found in
Terasic DE10-Pro (an Intel Stratix 10 GX/SX FPGA Development Kit).

The Altera EMAC is an instance of Synopsys DesignWare Gigabit MAC.

This driver sets correct clock range for MDIO interface on Intel Stratix 10
platform.

This is required due to lack of support for clock manager device for
this platform that could tell us the clock frequency value for ethernet
clock domain.

Sponsored by: DARPA, AFRL


# ea01660f 19-Jul-2019 Ganbold Tsagaankhuu <ganbold@FreeBSD.org>

Add driver for Rockchip RK3399 eMMC PHY.
Tested on NanoPC-T4 board.

Reviewed by: manu
Differential Revision: https://reviews.freebsd.org/D20840


# c363b16c 20-Jun-2019 Conrad Meyer <cem@FreeBSD.org>

sys: Remove DEV_RANDOM device option

Remove 'device random' from kernel configurations that reference it (most).
Replace perhaps mistaken 'nodevice random' in two MIPS configs with 'options
RANDOM_LOADABLE' instead. Document removal in UPDATING; update NOTES and
random.4.

Reviewed by: delphij, markm (previous version)
Approved by: secteam(delphij)
Differential Revision: https://reviews.freebsd.org/D19918


# 8c62ce83 10-Jun-2019 Luiz Otavio O Souza <loos@FreeBSD.org>

Add the GPIO driver for the North/South bridge in Marvell Armada 37x0.

The A3700 has a different GPIO controller and thus, do not use the old (and
shared) code for Marvell.

The pinctrl driver, also part of the controller, is not supported yet (but
the implementation should be straightforward).

Sponsored by: Rubicon Communications, LLC (Netgate)


# 542970fa 09-May-2019 Andrew Gallatin <gallatin@FreeBSD.org>

Remove IPSEC from GENERIC due to performance issues

Having IPSEC compiled into the kernel imposes a non-trivial
performance penalty on multi-threaded workloads due to IPSEC
refcounting. In my benchmarks of multi-threaded UDP
transmit (connected sockets), I've seen a roughly 20% performance
penalty when the IPSEC option is included in the kernel (16.8Mpps
vs 13.8Mpps with 32 senders on a 14 core / 28 HTT Xeon
2697v3)). This is largely due to key_addref() incrementing and
decrementing an atomic reference count on the default
policy. This cause all CPUs to stall on the same cacheline, as it
bounces between different CPUs.

Given that relatively few users use ipsec, and that it can be
loaded as a module, it seems reasonable to ask those users to
load the ipsec module so as to avoid imposing this penalty on the
GENERIC kernel. Its my hope that this will make FreeBSD look
better in "out of the box" benchmark comparisons with other
operating systems.

Many thanks to ae for fixing auto-loading of ipsec.ko when
ifconfig tries to configure ipsec, and to cy for volunteering
to ensure the the racoon ports will load the ipsec.ko module

Reviewed by: cem, cy, delphij, gnn, jhb, jpaetzel
Differential Revision: https://reviews.freebsd.org/D20163


# 052073c3 08-May-2019 Emmanuel Vadot <manu@FreeBSD.org>

Add support for USB 3.0 XHCI via ACPI

Ampere eMAG systems have XHCI just described in ACPI, not on PCI.

Submitted by: Greg V <greg@unrelenting.technology>
Reviewed by: andrew
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D19986


# 251a32b5 07-May-2019 Kyle Evans <kevans@FreeBSD.org>

tun/tap: merge and rename to `tuntap`

tun(4) and tap(4) share the same general management interface and have a lot
in common. Bugs exist in tap(4) that have been fixed in tun(4), and
vice-versa. Let's reduce the maintenance requirements by merging them
together and using flags to differentiate between the three interface types
(tun, tap, vmnet).

This fixes a couple of tap(4)/vmnet(4) issues right out of the gate:
- tap devices may no longer be destroyed while they're open [0]
- VIMAGE issues already addressed in tun by kp

[0] emaste had removed an easy-panic-button in r240938 due to devdrn
blocking. A naive glance over this leads me to believe that this isn't quite
complete -- destroy_devl will only block while executing d_* functions, but
doesn't block the device from being destroyed while a process has it open.
The latter is the intent of the condvar in tun, so this is "fixed" (for
certain definitions of the word -- it wasn't really broken in tap, it just
wasn't quite ideal).

ifconfig(8) also grew the ability to map an interface name to a kld, so
that `ifconfig {tun,tap}0` can continue to autoload the correct module, and
`ifconfig vmnet0 create` will now autoload the correct module. This is a
low overhead addition.

(MFC commentary)

This may get MFC'd if many bugs in tun(4)/tap(4) are discovered after this,
and how critical they are. Changes after this are likely easily MFC'd
without taking this merge, but the merge will be easier.

I have no plans to do this MFC as of now.

Reviewed by: bcr (manpages), tuexen (testing, syzkaller/packetdrill)
Input also from: melifaro
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D20044


# d6745408 02-May-2019 Conrad Meyer <cem@FreeBSD.org>

Add a COMPAT_FREEBSD12 kernel option.

Use it wherever COMPAT_FREEBSD11 is currently specified, like r309749.

Reviewed by: imp, jhb, markj
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D20120


# 5b130954 01-May-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add support for NanoPI NEO2

Add overlay files and activate devicetree file for NanoPi NEO2 featuring
Allwinner H5 ARM64 core.
To enable sound, dma and codec drivers are enabled for build.

Submitted by: Manuel Stühn (freebsdnewbie@freenet.de)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D20129


# c4a350ff 19-Apr-2019 Ganbold Tsagaankhuu <ganbold@FreeBSD.org>

Add SY8106A Buck Regulator and Allwinner CIR devices to GENERIC arm64 kernel.


# e54926b2 22-Mar-2019 Marcin Wojtas <mw@FreeBSD.org>

Enable etherswitchcfg and e6000sw driver in arm64 build

After latest binding update, this patch enables usage of
the switch on Armada 3720 EspressoBin, so compile it
by default with arm64 GENERIC.

A patch was extracted from https://reviews.freebsd.org/D19036

Submitted by: Bert JW Regeer <xistence@0x58.com>
Reviewed by: manu


# 4782b90e 22-Mar-2019 Colin Percival <cperciva@FreeBSD.org>

Add nvme support to the arm64 GENERIC kernel.

Submitted by: Greg V
Differential Revision: https://reviews.freebsd.org/D19657


# 70320951 27-Feb-2019 Emmanuel Vadot <manu@FreeBSD.org>

xhci_mv: Move the driver to generic_xhci

Marvell XHCI is in fact generic-xhci, so move the driver and
add the compatible string.
While here, get and enable the phy if the dtb provide one.
The xhci bindings state that phys should be in a 'phys' property but
Marvell DTS uses 'usb-phy', only add support for 'usb-phy' for now.

Sponsored-by: Rubicon Communications, LCC ("Netgate")


# f6f8a421 10-Feb-2019 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Fix compile when removing SOC_ROCKCHIP_* options

Make every rockchip file depend on the multiple soc_rockchip options
While here make rk_i2c and rk_gpio depend on their device options.

Reported by: sbruno


# 7e804fd5 10-Feb-2019 Conrad Meyer <cem@FreeBSD.org>

Revert r343713 temporarily

The COVERAGE option breaks xtoolchain-gcc GENERIC kernel early boot
extremely badly and hasn't been fixed for the ~week since it was committed.
Please enable for GENERIC only when it doesn't do that.

Related fallout reported by: lwhsu, tuexen (pr 235611)


# 634a8a88 02-Feb-2019 Andrew Turner <andrew@FreeBSD.org>

Enable COVERAGE and KCOV by default on arm64 and amd64.

This allows userspace to trace the kernel using the coverage sanitizer
found in clang. It will also allow other coverage tools to be built as
modules and attach into the same framework.

Sponsored by: DARPA, AFRL


# c75f49f7 31-Jan-2019 Konstantin Belousov <kib@FreeBSD.org>

Make iflib a loadable module.

iflib is already a module, but it is unconditionally compiled into the
kernel. There are drivers which do not need iflib(4), and there are
situations where somebody might not want iflib in kernel because of
using the corresponding driver as module.

Reviewed by: marius
Discussed with: erj
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Differential revision: https://reviews.freebsd.org/D19041


# 524553f5 29-Jan-2019 Andrew Turner <andrew@FreeBSD.org>

Extract the coverage sanitizer KPI to a new file.

This will allow multiple consumers of the coverage data to be compiled
into the kernel together. The only requirement is only one can be
registered at a given point in time, however it is expected they will
only register when the coverage data is needed.

A new kernel conflig option COVERAGE is added. This will allow kcov to
become a module that can be loaded as needed, or compiled into the
kernel.

While here clean up the #include style a little.

Reviewed by: kib
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D18955


# 00a4815f 15-Jan-2019 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

[rpi] Reorganize spigen(4) overlays for Raspberry Pi

- Remove CS=2 entry from spigen-rpi2 since it didn't work
- Add spigen-rpi3 overlay for Raspberry Pi 3
- Enable rpi overlay modules for GENERIC kernel on aarch64

PR: 233489
Submitted by: bobf@mrp3.com
Reviewed by: db
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D16088


# 8c9c3144 13-Jan-2019 Olivier Houchard <cognet@FreeBSD.org>

Impleent COMPAT_FREEBSD32 for arm64.
This is based on early work by andrew@.


# b3c0d957 12-Jan-2019 Andrew Turner <andrew@FreeBSD.org>

Add support for the Clang Coverage Sanitizer in the kernel (KCOV).

When building with KCOV enabled the compiler will insert function calls
to probes allowing us to trace the execution of the kernel from userspace.
These probes are on function entry (trace-pc) and on comparison operations
(trace-cmp).

Userspace can enable the use of these probes on a single kernel thread with
an ioctl interface. It can allocate space for the probe with KIOSETBUFSIZE,
then mmap the allocated buffer and enable tracing with KIOENABLE, with the
trace mode being passed in as the int argument. When complete KIODISABLE
is used to disable tracing.

The first item in the buffer is the number of trace event that have
happened. Userspace can write 0 to this to reset the tracing, and is
expected to do so on first use.

The format of the buffer depends on the trace mode. When in PC tracing just
the return address of the probe is stored. Under comparison tracing the
comparison type, the two arguments, and the return address are traced. The
former method uses on entry per trace event, while the later uses 4. As
such they are incompatible so only a single mode may be enabled.

KCOV is expected to help fuzzing the kernel, and while in development has
already found a number of issues. It is required for the syzkaller system
call fuzzer [1]. Other kernel fuzzers could also make use of it, either
with the current interface, or by extending it with new modes.

A man page is currently being worked on and is expected to be committed
soon, however having the code in the kernel now is useful for other
developers to use.

[1] https://github.com/google/syzkaller

Submitted by: Mitchell Horne <mhorne063@gmail.com> (Earlier version)
Reviewed by: kib
Testing by: tuexen
Sponsored by: DARPA, AFRL
Sponsored by: The FreeBSD Foundation (Mitchell Horne)
Differential Revision: https://reviews.freebsd.org/D14599


# 2d5e81fb 12-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

mv_thermal: Add thermal driver for AP806 and CP110 thermal sensor

Sponsored by: Rubicon Communications, LLC ("Netgate")


# 44d027bb 12-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add mv_cp110_icu and mv_cp110_gicp

icu is a interrupt concentrator in the CP110 block and gicp
is a gic extension to allow interrupts in the CP block to be turned
into GIC SPI interrupts

Sponsored by: Rubicon Communications, LLC ("Netgate")


# 4f3a5b51 12-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: mv_gpio: Add Marvell 8K support

While here put the interrupts setup in it's own function

Sponsored by: Rubicon Communications, LCC ("Netgate")


# 2d2a0852 12-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: mvebu_pinctrl: Add driver for Marvell Pinmux Controller

Add a driver compatible with Marvell mvebu-pinctrl and add ap806-pinctrl
support.

Sponsored by: Rubicon Communications, LCC ("Netgate")


# 75a01d59 12-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add new SoC type MARVELL_8K

Sponsored by: Rubicon Communications, LLC ("Netgate")


# 277a038d 12-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: allwinner: Add pwm driver

Add a pwm driver for Allwinner PWM
Add pwm and aw_pwm to the GENERIC kernel


# 905bbe37 02-Dec-2018 Andreas Tobler <andreast@FreeBSD.org>

Build the dtb for the rock64 board.

Reviewed by: manu@


# 04f9b8a1 01-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

Add Silergy SYR827 PMIC driver

SYR827 is a PMIC that can output a voltage from 0.7125V to 1.5V in 12.5mV steps
It's controlled via I2C.

MFC after: 1 month


# 36ae7efe 01-Dec-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64/rockchip: add RK3399 support

Add CRU (Clock and Reset Unit) driver for RK3399.
Add support in rk_pinctrl driver.

Submitted by: Greg V <greg@unrelenting.technology> (Original version)
Differential Revision: https://reviews.freebsd.org/D16732

MFC after: 1 month


# 006f540e 28-Nov-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add rk_i2c and rk805 to GENERIC

MFC after: 1 month


# 6bff96c1 26-Nov-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add evdev support to GENERIC


# 3869df5d 06-Nov-2018 Andrew Turner <andrew@FreeBSD.org>

Add the KUBSAN options to the arm64 and amd64 GENERIC kernel config files.
As the kernel file size may be too large to run with a stock loader comment
them out for now.

Sponsored by: DARPA, AFRL


# be352d20 31-Oct-2018 Kyle Evans <kevans@FreeBSD.org>

Compile in VERBOSE_SYSINIT support by default, remain silent by default

The loader tunable 'debug.verbose_sysinit' may be used to toggle verbosity.
This is added to the debugging section of these kernconfs to be turned off
in stable branches for clarity of intent.

MFC after: never


# 6b45121a 07-Oct-2018 Michael Tuexen <tuexen@FreeBSD.org>

Address the warning regarding duplicate option 'GEOM_PART_GPT' when
configuring kernels for i386, amd64, and arm64.
The 'GEOM_PART_GPT' option was added to the DEFAULTS configuration
in r337967.

Approved by: re (kib@)
Reviewed by: ler@
Differential Revision: https://reviews.freebsd.org/D17458
Sponsored by: Netflix, Inc.


# 4ca213c0 23-Aug-2018 Emmanuel Vadot <manu@FreeBSD.org>

a10_timer: Update the driver so we can use it on other SoC

a10_timer is currently use in UP allwinner SoC (A10 and A13).
Those don't have the generic arm timer.
The arm generic timecounter is broken in the A64 SoC, some attempts have
been made to fix the glitch but users still reported some minor ones.
Since the A64 (and all Allwinner SoC) still have this timer controller, rework
the driver so we can use it in any SoC.
Since it doesn't have the 64 bits counter on all SoC, use one of the
generic 32 bits counter as the timecounter source.

PR: 229644


# 668085e8 23-Aug-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: GENERIC: Compile allwinner dtbs


# b14b0078 21-Aug-2018 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

Add muge(4) to the arm64 GENERIC kernel

muge(4) is the USB ethernet adapter that is used in RPi 3B+. Shipping it
in GENERIC kernel allows using NFS root out of the box instead of either
building custom kernel or modifying loader.conf for early loading of if_muge.ko

No objections: emaste


# 65aee3a8 19-Aug-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: allwinner: Add aw_syscon driver to GENERIC

Recent DTS use the syscon for the emac controller.
We support this but since U-Boot is still using old DTS it was never
needed for us to add this support, but this is a problem when using upstream
recent DTS and will be when U-Boot will catch up.

While here add a new compatible to the aw_syscon driver as Linux changed it ...


# 8cd385fd 18-Aug-2018 John Baldwin <jhb@FreeBSD.org>

Make 'device crypto' lines more consistent.

- In configurations with a pseudo devices section, move 'device crypto'
into that section.
- Use a consistent comment. Note that other things common in kernel
configs such as GELI also require 'device crypto', not just IPSEC.

Reviewed by: rgrimes, cem, imp
Differential Revision: https://reviews.freebsd.org/D16775


# 6f207f5b 14-Aug-2018 Luiz Otavio O Souza <loos@FreeBSD.org>

Add support to the Marvell Xenon SDHCI controller.

Tested on Espresso.bin (37x0) and Macchiato.bin (8k) with SD cards and
eMMCs.

Obtained from: pfSense
Sponsored by: Rubicon Communications, LLC (Netgate)


# cfe196fb 31-Jul-2018 Emmanuel Vadot <manu@FreeBSD.org>

nvmem: Add nvmem interface and helpers

The nvmem interface helps provider of nvmem data to expose themselves to consumer.
NVMEM is generally present on some embedded board in a form of eeprom or fuses.
The nvmem api are helpers for consumer to read/write the cell data from a provider.

Differential Revision: https://reviews.freebsd.org/D16419


# 9fc89b60 30-Jul-2018 Andrew Turner <andrew@FreeBSD.org>

Enable VIMAGE on arm64 again. A workaround for modules with static VNET
variables has been committed so these should work now.

PR: 223670
Sponsored by: DARPA, AFRL


# b32c7d0c 19-Jul-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add vt_efifb to GENERIC

We can now have efifb being setup correctly.
Enjoy video output on some boards when you couldn't before.

Tested-On: Pine64
Tested-On: Pine64-LTS
Tested-On: Pinebook


# ab53b292 13-Jul-2018 Marcin Wojtas <mw@FreeBSD.org>

Enable UART support for Xilinx Ultrascale+ SoCs

Xilinx Ultrascale+ are based on Cortex-A53 and use existing
UART driver (uart_dev_cdnc). Enable it in arm64 GENERIC config.

Submitted by: Michal Stanek <mst@semihalf.com>
Obtained from: Semihalf


# 3476304a 14-Jun-2018 Emmanuel Vadot <manu@FreeBSD.org>

if_dwc_rk: Add DesignWare driver for RockChip SoCs.

Add driver for the designware ethernet controller found in some RockChip SoCs.
The driver still rely on a lot of things setup by the bootloader like clocks
and phy mode.
But since netbooting is the only/easiest way to boot rockchip board at the
moment add the driver so other people can test/dev on thoses boards.


# 5bede509 12-Jun-2018 Diane Bruce <db@FreeBSD.org>

Add a driver for the BCM2835 Mini-UART as seen on the RPi3

Reviewed by: andrew
Approved by: andrew
Differential Revision: https://reviews.freebsd.org/D15684


# 619e50a6 10-Jun-2018 Andrew Turner <andrew@FreeBSD.org>

Remove the psci option from arm64. It is now a standard option as it is
required to boot correctly.

Sponsored by: DARPA, AFRL


# 892bdccc 19-May-2018 Mark Johnston <markj@FreeBSD.org>

Enable kernel dump features in GENERIC for most platforms.

This turns on support for kernel dump encryption and compression, and
netdump. arm and mips platforms are omitted for now, since they are more
constrained and don't benefit as much from these features.

Reviewed by: cem, manu, rgrimes
Tested by: manu (arm64)
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D15465


# 00454c40 18-May-2018 Andrew Turner <andrew@FreeBSD.org>

Enable the Qualcomm MSM UART driver. This is needed for some Qualcomm
Snapdragon SoCs.

Obtained from: ABT Systems Ltd
Sponsored by: Turing Robotic Industries


# 43fd679e 10-May-2018 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add ALT_BREAK_TO_DEBUGGER to GENERIC

It is useful to enter kdb with an escape sequence.
While here move the USB_DEBUG with the others debug options and define
nooptions USB_DEBUG for GENERIC-NODEBUG


# 5819c3eb 09-Apr-2018 Ruslan Bukin <br@FreeBSD.org>

Enable Qualcomm Debug Subsystem (QDSS) block on MSM8916 SoC.

This is required for ARM Coresight operation on Dragonboard 410c.

Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D14987


# 2a3d5e33 26-Feb-2018 Emmanuel Vadot <manu@FreeBSD.org>

rk3328: Add support for this SoC

* rk_cru is a cru driver that needs to be subclassed by
the real CRU driver
* rk_clk_pll handle the pll type clock on RockChip SoC, it's only read
only for now.
* rk_clk_composite handle the different composite clock types (with gate,
with mux etc ...)
* rk_clk_gate handle the RockChip gates
* rk_clk_mux handle the RockChip muxes (unused for now)
* Only clocks for supported devices are supported for now, the rest will be
added when driver support comes
* The assigned-clock* property are not handled for now so we rely a lot on the
bootloader to setup some initial values for some clocks.


# 18a75309 25-Feb-2018 Patrick Kelsey <pkelsey@FreeBSD.org>

Greatly reduce the number of #ifdefs supporting the TCP_RFC7413 kernel option.

The conditional compilation support is now centralized in
tcp_fastopen.h and tcp_var.h. This doesn't provide the minimum
theoretical code/data footprint when TCP_RFC7413 is disabled, but
nearly all the TFO code should wind up being removed by the optimizer,
the additional footprint in the syncache entries is a single pointer,
and the additional overhead in the tcpcb is at the end of the
structure.

This enables the TCP_RFC7413 kernel option by default in amd64 and
arm64 GENERIC.

Reviewed by: hiren
MFC after: 1 month
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D14048


# 2defb358 04-Jan-2018 Kyle Evans <kevans@FreeBSD.org>

if_awg: Use syscon prop if it exists

The emac bindings that are landing in Linux 4.15 specify a syscon property
on the emac node that point to /soc/syscon. Use this property if it's
specified, but maintain backwards compatibility with the old method.

The older method is still used for boards that we get .dtb from u-boot, such
as pine64, that did not yet have stable emac bindings.

Tested on: Banana Pi-M3 (a83t)
Tested on: Pine64 (a64)
Reviewed by: manu
Differential Revision: https://reviews.freebsd.org/D13296


# 03c13265 03-Dec-2017 Ed Schouten <ed@FreeBSD.org>

Make COMPAT_FREEBSD32 part of GENERIC on arm64.

The cloudabi32.ko kernel modules can only be loaded on AMD64 and ARM64
by kernels built with COMPAT_FREEBSD32. Even though COMPAT_FREEBSD32
does not support the execution of native FreeBSD executables, do add it
to GENERIC, to make cloudabi32.ko usable.

According to size(1), this makes the kernel image approximately 0.7%
larger.

Reviewed by: andrew, imp, emaste
Differential Revision: https://reviews.freebsd.org/D13311


# ccf802cf 24-Nov-2017 Ed Maste <emaste@FreeBSD.org>

Temporarily disable VIMAGE on arm64

Loading a kernel module with a static VNET_DEFINE'd variable (e.g.
if_lagg) currently results in a kernel panic.

PR: 223670


# a3dff126 21-Nov-2017 Andrew Turner <andrew@FreeBSD.org>

Add a driver for the EFI RTC. This uses the EFI Runtime Services to query
the system time.

As we seem to only read this time on boot, and this is the only source of
time on many arm64 machines we need to enable this by default there. As
this is not always the case with U-Boot firmware, or when we have been
booted from a non-UEFI environment we only enable the device driver when
the Runtime Services are present and reading the time doesn't result in an
error.

PR: 212185
Reviewed by: imp, kib
Tested by: emaste
Relnotes: yes
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D12650


# a2aef24a 29-Oct-2017 Eitan Adler <eadler@FreeBSD.org>

Update several more URLs

- Primarily http -> https
- Primarily FreeBSD project URLs


# 8e94025b 20-Oct-2017 Bjoern A. Zeeb <bz@FreeBSD.org>

With r181803 on 2008-08-17 23:27:27Z the first VIMAGE commit went into
HEAD. Enable VIMAGE in GENERIC kernels and some others (where GENERIC does
not exist) on HEAD.

Disable building LINT-VIMAGE with VIMAGE being default.

This should give it a lot more exposure in the run-up to 12 to help
us evaluate whether to keep it on by default or not.
We are also hoping to get better performance testing.
The feature can be disabled using nooptions.

Requested by: many
Reviewed by: kristof, emaste, hiren
X-MFC after: never
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D12639


# c77037f1 19-Sep-2017 Josh Paetzel <jpaetzel@FreeBSD.org>

Fix indentation for r323068

PR: 220170
Reported by: lidl
MFC after: 3 days
Pointyhat to: jpaetzel


# 885a7418 11-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Expand Marvell NIC description in arm64 GENERIC config

Suggested by: emaste


# 7ca8a2b3 09-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Enable compilation of Marvell NETA controller with arm64 GENERIC

This patch enables network operation on Marvell Armada 3700 SoC.

Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12259


# e49e3ec3 09-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Add support for uart_mvebu driver arm64 GENERIC config

This patch enables console output on Armada 3700 SoCs
with kernel GENERIC.

Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12251


# 840d633f 09-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Enable compilation of Marvell EHCI driver in arm64 GENERIC

Enabled driver can be used on boards equipped with Marvell Armada 3700 SoC.

Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12256


# 705f4b2c 09-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Enable compilation of Marvell XHCI driver in arm64 GENERIC

Enabled driver can be used on boards equipped with Marvell Armada
3700/7k/8k SoCs.

Submitted by: Patryk Duda <pdk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12253


# eedd5eaf 04-Sep-2017 Marcin Wojtas <mw@FreeBSD.org>

Add Marvell RTC driver to arm64 GENERIC config

Marvell Armada 80x0/70x0 SoC family uses same RTC IP as
Armada 38x. This patch adds necessary files and enable driver in
GENERIC config.

Submitted by: Rafal Kozik <rk@semihalf.com>
Obtained from: Semihalf
Sponsored by: Semihalf
Differential Revision: https://reviews.freebsd.org/D12200


# 9d0ec2a9 01-Sep-2017 Josh Paetzel <jpaetzel@FreeBSD.org>

Revert r323087

This needs more thinking out and consensus, and the commit message
was wrong AND there was a typo in the commit.

pointyhat: jpaetzel


# 0be04b10 01-Sep-2017 Josh Paetzel <jpaetzel@FreeBSD.org>

Take options IPSEC out of GENERIC

PR: 220170
Submitted by: delphij
Reviewed by: ae, glebius
MFC after: 2 weeks
Differential Revision: D11806


# 3b65550e 31-Aug-2017 Josh Paetzel <jpaetzel@FreeBSD.org>

Allow kldload tcpmd5

PR: 220170
MFC after: 2 weeks


# 48ee5318 02-Aug-2017 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add Allwinner H5 SoC

Allwinner H5 is an H3 (arm32) with Cortex A53 cores.
Add support for it and enable it in GENERIC kernel config

Tested on: OrangePi PC2


# 0166fb5d 08-Jul-2017 Emmanuel Vadot <manu@FreeBSD.org>

arm64: Add Allwinner I2C controller to GENERIC kernel


# 55b78354 23-May-2017 Konstantin Belousov <kib@FreeBSD.org>

Add COMPAT_FREEBSD11 on arm64, the arch is almost tier-1.

Discussed with: andrew, emaste
Sponsored by: The FreeBSD Foundation


# 480c955c 24-Mar-2017 Warner Losh <imp@FreeBSD.org>

Add 'device iic' to bring in userland I2C driver.

Submitted by: karl@


# 9c6d6488 15-Feb-2017 Andrew Turner <andrew@FreeBSD.org>

Port the Linux AMX 10G network driver to FreeBSD as axgbe. It is unlikely
we will import a newer version of the Linux code so the linuxkpi was not
used.

This is still missing 10G support, and multicast has not been tested.

Reviewed by: gnn
Obtained from: ABT Systems Ltd
Sponsored by: SoftIron Inc
Differential Revision: https://reviews.freebsd.org/D8549


# f2d6ace4 09-Jan-2017 Sean Bruno <sbruno@FreeBSD.org>

Migrate e1000 to the IFLIB framework:
- em(4) igb(4) and lem(4)
- deprecate the igb device from kernel configurations
- create a symbolic link in /boot/kernel from if_em.ko to if_igb.ko

Devices tested:
- 82574L
- I218-LM
- 82546GB
- 82579LM
- I350
- I217

Please report problems to freebsd-net@freebsd.org

Partial review from jhb and suggestions on how to *not* brick folks who
originally would have lost their igbX device.

Submitted by: mmacy@nextbsd.org
MFC after: 2 weeks
Relnotes: yes
Sponsored by: Limelight Networks and Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D8299


# de5cef65 18-Dec-2016 Jayachandran C. <jchandra@FreeBSD.org>

Add virtio_pci to GENERIC arm64 conf

virtio_pci was missing from the GENERIC arm64 configuration, while
other virtio devices are present. Adding it will allow us to boot
the GENERIC kernel on QEMU with virtio storage and networking.


# adca4ffc 12-Dec-2016 Andrew Turner <andrew@FreeBSD.org>

Enable ACPI on arm64. It's not yet functional, but it will help keeping the
code building until it is ready.

Obtained from: ABT Systems Ltd
Sponsored by: The FreeBSD Foundation


# 9153cbff 23-Nov-2016 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

[rpi3] Move SOC_BRCM_BCM2837 from UP config to SMP one

Now that BCM283x source are buildable with SMP option it cam be moved to
GENERIC SMP config. SMP itself does not work on RPi3 yet due to lack of
PSCI monitor which is work in progress at the moment


# b1895f72 16-Nov-2016 Andrew Turner <andrew@FreeBSD.org>

Include the SMSC LAN91C111 driver, this is found in some of the ARM models.


# 7902c8dc 20-Oct-2016 Wojciech Macek <wma@FreeBSD.org>

Driver for PCI Ethernet NIC on Alpine V1 and V2.

Obtained from: Semihalf
Submitted by: Michal Stanek <mst@semihalf.com>
Sponsored by: Annapurna Labs
Reviewed by: wma
Differential Revision: https://reviews.freebsd.org/D7814


# 3ab1c20e 18-Oct-2016 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

Move SOC_BRCM_BCM2837 to GENERIC-UP since does not support SMP


# 232de4a9 18-Oct-2016 Oleksandr Tymoshenko <gonzo@FreeBSD.org>

Retire RPI3 kernel config in favour of GENERIC-UP

Policy for FreeBSD/arm64 kernel config is the same one as for x86
architectures: provide GENERIC kernel bootable on as many systems
as possible. Since there is no SMP support for RPi 3 yet new kernel
config was introduced: GENERIC-UP, which is effectively GENERIC with
SMP option disabled


# bd79708d 11-Oct-2016 Jonathan T. Looney <jtl@FreeBSD.org>

In the TCP stack, the hhook(9) framework provides hooks for kernel modules
to add actions that run when a TCP frame is sent or received on a TCP
session in the ESTABLISHED state. In the base tree, this functionality is
only used for the h_ertt module, which is used by the cc_cdg, cc_chd, cc_hd,
and cc_vegas congestion control modules.

Presently, we incur overhead to check for hooks each time a TCP frame is
sent or received on an ESTABLISHED TCP session.

This change adds a new compile-time option (TCP_HHOOK) to determine whether
to include the hhook(9) framework for TCP. To retain backwards
compatibility, I added the TCP_HHOOK option to every configuration file that
already defined "options INET". (Therefore, this patch introduces no
functional change. In order to see a functional difference, you need to
compile a custom kernel without the TCP_HHOOK option.) This change will
allow users to easily exclude this functionality from their kernel, should
they wish to do so.

Note that any users who use a custom kernel configuration and use one of the
congestion control modules listed above will need to add the TCP_HHOOK
option to their kernel configuration.

Reviewed by: rrs, lstewart, hiren (previous version), sjg (makefiles only)
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D8185


# 988d9b35 20-Sep-2016 Wojciech Macek <wma@FreeBSD.org>

Add driver for PCIe root complex on Annapurna Alpine platform.

The driver subclasses pci-host-generic and additionally
performs configuration of vendor-specific PCIe registers.

Obtained from: Semihalf
Submitted by: Michal Stanek <mst@semihalf.com>
Sponsored by: Annapurna Labs
Reviewed by: wma
Differential Revision: https://reviews.freebsd.org/D7571


# 9d6cd3d8 06-Sep-2016 Wojciech Macek <wma@FreeBSD.org>

Introduce support for Annapurna Alpine CCU and NB devices

This commit adds drivers for Alpine Cache Coherency Unit
and North Bridge Service whose task is to configure
the system fabric and enable cache coherency.

Obtained from: Semihalf
Submitted by: Michal Stanek <mst@semihalf.com>
Sponsored by: Annapurna Labs
Reviewed by: wma
Differential Revision: https://reviews.freebsd.org/D7565


# 0fbb0171 06-Sep-2016 Jared McNeill <jmcneill@FreeBSD.org>

Add generic device-tree cpufreq driver.


# d69d5ab0 03-Sep-2016 Jared McNeill <jmcneill@FreeBSD.org>

Add support for Allwinner A64 thermal sensors.


# 1567e084 25-Aug-2016 Jared McNeill <jmcneill@FreeBSD.org>

Add support for Allwinner A64.

Reviewed by: andrew, manu
Relnotes: yes


# eda295b9 29-Jul-2016 Andrew Turner <andrew@FreeBSD.org>

Add a generic EHCI USB driver based on the Allwinner A10 driver. It is ACPI
only for now, but wouldn't be too difficult to add support for FDT.

Reviewed by: hselasky
Obtained from: ABT Systems Ltd
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D7352


# abf5bdb4 25-Jul-2016 Andrew Turner <andrew@FreeBSD.org>

Enable the generic OHCI driver on arm64

Obtained from: ABT Systems Ltd
MFC after: 1 month
Relnotes: yes
Sponsored by: The FreeBSD Foundation


# 04ff877e 07-Jun-2016 Andrew Turner <andrew@FreeBSD.org>

Switch arm64 to use intrng by default. The old interrupt handling code can
still be used, however this is expected to be removed soon.

Obtained from: ABT Systems Ltd
Relnotes: yes
Sponsored by: The FreeBSD Foundation


# 82cb5c3b 05-May-2016 John Baldwin <jhb@FreeBSD.org>

Native PCI-express HotPlug support.

PCI-express HotPlug support is implemented via bits in the slot
registers of the PCI-express capability of the downstream port along
with an interrupt that triggers when bits in the slot status register
change.

This is implemented for FreeBSD by adding HotPlug support to the
PCI-PCI bridge driver which attaches to the virtual PCI-PCI bridges
representing downstream ports on HotPlug slots. The PCI-PCI bridge
driver registers an interrupt handler to receive HotPlug events. It
also uses the slot registers to determine the current HotPlug state
and drive an internal HotPlug state machine. For simplicty of
implementation, the PCI-PCI bridge device detaches and deletes the
child PCI device when a card is removed from a slot and creates and
attaches a PCI child device when a card is inserted into the slot.

The PCI-PCI bridge driver provides a bus_child_present which claims
that child devices are present on HotPlug-capable slots only when a
card is inserted. Rather than requiring a timeout in the RC for
config accesses to not-present children, the pcib_read/write_config
methods fail all requests when a card is not present (or not yet
ready).

These changes include support for various optional HotPlug
capabilities such as a power controller, mechanical latch,
electro-mechanical interlock, indicators, and an attention button.
It also includes support for devices which require waiting for
command completion events before initiating a subsequent HotPlug
command. However, it has only been tested on ExpressCard systems
which support surprise removal and have none of these optional
capabilities.

PCI-express HotPlug support is conditional on the PCI_HP option
which is enabled by default on arm64, x86, and powerpc.

Reviewed by: adrian, imp, vangyzen (older versions)
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D6136


# ef6b515b 26-Apr-2016 Andrew Turner <andrew@FreeBSD.org>

Disable ACPI on arm64 ad it has only had minimal testing and is causing
boot issues when booting with FDT. It is planned to re-enable this at a
later date.

Obtained from: ABT Systems Ltd
Sponsored by: The FreeBSD Foundation


# 30d92874 01-Mar-2016 Wojciech Macek <wma@FreeBSD.org>

Add uart 8250 device to GENERIC arm64 configuration

Obtained from: Semihalf
Submitted by: Michal Stanek <mst@semihalf.com>
Sponsored by: Annapurna Labs
Approved by: cognet (mentor)
Reviewed by: zbb, wma
Differential revision: https://reviews.freebsd.org/D5406


# 0422bce8 22-Feb-2016 Wojciech Macek <wma@FreeBSD.org>

Add Intel 10Gb support to ARM64 GENERIC kernel config

Obtained from: Semihalf
Sponsored by: Cavium
Approved by: cognet (mentor)
Reviewed by: zbb
Differential revision: https://reviews.freebsd.org/D5347


# 16aec470 20-Jan-2016 Zbigniew Bodek <zbb@FreeBSD.org>

Revert r294267 to avoid using experimental VFS_AIO in ARM64's GENERIC

Remove VFS_AIO from the ARM64's GENERIC as it can be used
as a loadable module.


# 107ef92f 18-Jan-2016 Zbigniew Bodek <zbb@FreeBSD.org>

Enable AIO interface on ARM64 platforms

Add VFS_AIO to generic config to allow using of high-performance
asynchronous disk AIO operation.

Reviewed by: imp
Obtained from: Semihalf
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D4979


# a38fc8ca 11-Dec-2015 Andrew Turner <andrew@FreeBSD.org>

Sort the list of NICs after the mii options. While here add the msk driver
as it has now been tested.

Sponsored by: SoftIron Inc


# 22a00274 08-Nov-2015 Ed Maste <emaste@FreeBSD.org>

Sync arm64 GENERIC whitespace/comments with amd64

Sponsored by: The FreeBSD Foundation


# 13d3ad4d 06-Nov-2015 Ed Maste <emaste@FreeBSD.org>

arm64: add igb(4) to GENERIC

We have em(4) in GENERIC already and so also supporting the related
igb(4) makes sense.

Sponsored by: The FreeBSD Foundation


# 598cd164 21-Oct-2015 Ed Maste <emaste@FreeBSD.org>

arm64: Enable CTF for DTrace support

Sponsored by: The FreeBSD Foundation


# 32f849ca 18-Oct-2015 Zbigniew Bodek <zbb@FreeBSD.org>

Add ThunderX VNIC to arm64/GENERIC kernel

Add vnic to enabled networking cards and enable SR-IOV by the way.

Obtained from: Semihalf
Sponsored by: The FreeBSD Foundation


# 8598392c 08-Oct-2015 Konstantin Belousov <kib@FreeBSD.org>

Build changes that allow the modules on arm64.
- Move the required kernel compiler flags from Makefile.arm64 to kern.mk.
- Build arm64 modules as PIC; non-PIC relocations in .o for shared object
output cannot be handled.
- Do not try to install aarch64 symlink.
- A hack for arm64 to avoid ld -r stage. See the comment for the explanation.
Some functionality is lost, like ctf handling, but hopefully will be
restored after newer linker is available.

Reviewed by: andrew, emaste
Tested by: andrew (on real hardware)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3796


# 2ed39a22 22-Sep-2015 Ed Maste <emaste@FreeBSD.org>

Add pass device to arm64 GENERIC (for smartctl)

Sponsored by: The FreeBSD Foundation


# 9b76bf99 15-Sep-2015 Ed Maste <emaste@FreeBSD.org>

arm64: add xhci driver and umass/ukbd to GENERIC for Cavium ThunderX

Sponsored by: The FreeBSD Foundation


# 504a0067 01-Sep-2015 Andrew Turner <andrew@FreeBSD.org>

Add support for the dwc usb in the HiSilicon hi6220 in the HiKey board. For
this we need to force the driver into host mode, as without this the driver
fails to detect any devices.

Relnotes: yes
Sponsored by: ABT Systems Ltd


# c0e5e172 01-Sep-2015 Andrew Turner <andrew@FreeBSD.org>

Add support for the DesignWare MMC hardware in the HiSilicon hi6220. This
SoC is used in the HiKey board from 96boards.

Currently on the SD card is working on the HiKey, as such devices 0 and 2
will need to be disabled, for example by adding the following to
loader.conf:

hint.hisi_dwmmc.0.disabled=1
hint.hisi_dwmmc.2.disabled=1

Relnotes: yes (Hikey board booting)
Sponsored by: ABT Systems Ltd


# bbbde6d8 26-Aug-2015 Andrew Turner <andrew@FreeBSD.org>

Add the SOC_HISI_HI6220 option. This will be used to enable drivers for
the HiSilicon hi6220 SoC used in the HiKey 96boards board.

Sponsored by: ABT Systems Ltd


# 75e0dfe3 26-Aug-2015 Andrew Turner <andrew@FreeBSD.org>

Add an option to select which SoCs we are building for. It is intended to
be used with any SoC specific drivers, for example a ThunderX nic driver
would use something like the following in files.arm64:

arm64/cavium/thunder_nic.c optional soc_cavm_thunderx thndr_nic

Reviewed by: imp
Sponsored by: ABT Systems Ltd
Differential Revision: https://reviews.freebsd.org/D3479


# ed33af42 26-Aug-2015 Andrew Turner <andrew@FreeBSD.org>

Add a above the virtio section.


# 6ff9127b 08-Aug-2015 Zbigniew Bodek <zbb@FreeBSD.org>

Add Ethernet and block device drivers to ARM64 GENERIC


# d943d79a 08-Aug-2015 Zbigniew Bodek <zbb@FreeBSD.org>

Introduce support for internal PCIe for Cavium's ThunderX

This driver supports internal PCIe Root Complex on
Cavium ThunderX Pass 1.1 hardware.

Reviewed by: andrew, jhb
Obtained from: Semihalf
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3031


# a2b3dfad 31-Jul-2015 Zbigniew Bodek <zbb@FreeBSD.org>

Apply erratum for mrs ICC_IAR1_EL1 speculative execution on ThunderX

ERRATUM: 22978, 23154
PASS (rev.): 1.0/1.1

Reviewed by: imp
Obtained from: Semihalf
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3184


# f4c1eac7 14-Jul-2015 Christian Brueffer <brueffer@FreeBSD.org>

Spell crypto correctly.


# b2b55077 09-Jul-2015 Andrew Turner <andrew@FreeBSD.org>

Add support for SMP. This uses the FDT data to find the CPUs to start on,
and psci to start them. I expect ACPI support to be added later.

This has been tested on qemu with 2 cpus as that is the current value of
MAXCPUS. This is expected to be increased in the future as FreeBSD has
been tested on 48 cores on the Cavium ThunderX hardware.

Partially based on a patch from Robin Randhawa from ARM.

Approved by: ABT Systems Ltd
Relnotes: yes
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3024


# 0661a7c2 04-Jul-2015 George V. Neville-Neil <gnn@FreeBSD.org>

Fix up tabs vs. spaces


# 3839369c 04-Jul-2015 George V. Neville-Neil <gnn@FreeBSD.org>

Enable IPSEC in all GENERIC kernels.

Universe and kernel build tests passed 4 July 2015

PR: 128030
Sponsored by: Rubicon Communications (Netgate)


# a380ef6a 02-Jul-2015 Andrew Turner <andrew@FreeBSD.org>

Enable kernel debugging on arm64, other than GDB as it fails to build.

Sponsored by: ABT Systems Ltd


# 617994ef 11-Jun-2015 Andrew Turner <andrew@FreeBSD.org>

Add basic support for ACPI. It splits out the nexus driver to two new
drivers, one for fdt, one for acpi. It then uses this to decide if it will
use fdt or acpi.

The GICv2 (interrupt controller) and Generic Timer drivers have been
updated to handle both cases.

As this is early code we still need FDT to find the kernel console, and
some parts are still missing, including PCI support.

Differential Revision: https://reviews.freebsd.org/D2463
Reviewed by: jhb, jkim, emaste
Obtained from: ABT Systems Ltd
Relnotes: Yes
Sponsored by: The FreeBSD Foundation


# ba8f0eb8 14-May-2015 Edward Tomasz Napierala <trasz@FreeBSD.org>

Build GENERIC with RACCT/RCTL support by default. Note that it still
needs to be enabled by adding "kern.racct.enable=1" to /boot/loader.conf.

Differential Revision: https://reviews.freebsd.org/D2407
Reviewed by: emaste@, wblock@
MFC after: 1 month
Relnotes: yes
Sponsored by: The FreeBSD Foundation


# 7d9cff3d 13-Apr-2015 Andrew Turner <andrew@FreeBSD.org>

Add psci for arm64. This is currently used when rebooting and powering off
in qemu.

Sponsored by: The FreeBSD Foundation


# e5acd89c 13-Apr-2015 Andrew Turner <andrew@FreeBSD.org>

Bring in the start of the arm64 kernel.

This is only the minimum set of files needed to boot in qemu. As such it is
missing a few things.

The bus_dma code is currently only stub functions with a full implementation
from the development tree to follow.

The gic driver has been copied as the interrupt framework is different. It
is expected the two drivers will be merged by the arm intrng project,
however this will need to be imported into the tree and support for arm64
would need to be added.

This includes code developed by myself, SemiHalf, Ed Maste, and Robin
Randhawa from ARM. This has been funded by the FreeBSD Foundation, with
early development by myself in my spare time with assistance from Robin.

Differential Revision: https://reviews.freebsd.org/D2199
Reviewed by: emaste, imp
Relnotes: yes
Sponsored by: The FreeBSD Foundation