freebsd-dev/sys/arm64
Alan Cox 50e3ab6bcf Utilize ASIDs to reduce both the direct and indirect costs of context
switching.  The indirect costs being unnecessary TLB misses that are
incurred when ASIDs are not used.  In fact, currently, when we perform a
context switch on one processor, we issue a broadcast TLB invalidation that
flushes the TLB contents on every processor.

Mark all user-space ("ttbr0") page table entries with the non-global flag so
that they are cached in the TLB under their ASID.

Correct an error in pmap_pinit0().  The pointer to the root of the page
table was being initialized to the root of the kernel-space page table
rather than a user-space page table.  However, the root of the page table
that was being cached in process 0's md_l0addr field correctly pointed to a
user-space page table.  As long as ASIDs weren't being used, this was
harmless, except that it led to some unnecessary page table switches in
pmap_switch().  Specifically, other kernel processes besides process 0 would
have their md_l0addr field set to the root of the kernel-space page table,
and so pmap_switch() would actually change page tables when switching
between process 0 and other kernel processes.

Implement a workaround for Cavium erratum 27456 affecting ThunderX machines.
(I would like to thank andrew@ for providing the code to detect the affected
machines.)

Address integer overflow in the definition of TCR_ASID_16.

Setup TCR according to the PARange and ASIDBits fields from
ID_AA64MMFR0_EL1.  Previously, TCR_ASID_16 was unconditionally set.

Modify build_l1_block_pagetable so that lower attributes, such as ATTR_nG,
can be specified as a parameter.

Eliminate some unused code.

Earlier versions were tested to varying degrees by: andrew, emaste, markj

MFC after:	3 weeks
Differential Revision:	https://reviews.freebsd.org/D21922
2019-11-03 17:45:30 +00:00
..
acpica arm64 acpi_iort: add some error handling 2019-06-24 21:24:55 +00:00
arm64 Utilize ASIDs to reduce both the direct and indirect costs of context 2019-11-03 17:45:30 +00:00
cavium Rename the ThunderX CPU identification macros to include the X. This is the 2018-06-13 12:17:11 +00:00
cloudabi32 Remove sv_pagesize, originally introduced with r100384. 2019-03-01 16:16:38 +00:00
cloudabi64 Remove sv_pagesize, originally introduced with r100384. 2019-03-01 16:16:38 +00:00
conf arm64: rk3399: add SPI driver and include it in GENERIC config 2019-10-25 21:38:38 +00:00
coresight Extract eventfilter declarations to sys/_eventfilter.h 2019-05-20 00:38:23 +00:00
include Utilize ASIDs to reduce both the direct and indirect costs of context 2019-11-03 17:45:30 +00:00
intel Add support for Intel Stratix 10 platform. 2019-09-13 16:50:57 +00:00
linux linux: futex_mtx should follow futex_list 2019-10-18 12:25:33 +00:00
qualcomm Enable Qualcomm Debug Subsystem (QDSS) block on MSM8916 SoC. 2018-04-10 12:53:48 +00:00
rockchip arm64: rockchip: typec_phy: Rename timeout to retry 2019-10-29 18:36:16 +00:00