Home | History | Annotate | Download | only in arm32
History log of /src/sys/arch/arm/arm32/arm32_machdep.c
RevisionDateAuthorComments
 1.148  06-Sep-2025  thorpej Refactor the "platform" defitions into fdt_platform.h
 1.147  05-Mar-2024  thorpej Move the at-shutdown call to resettodr() from cpu_reboot() to kern_reboot().

It's a small step, but it's a step.
 1.146  07-Apr-2023  skrll Rename ARM_PLATFORM to FDT_PLATFORM and make it available outside arm.
 1.145  19-Jan-2023  mlelstv Support remaining common boot options.
 1.144  28-Jul-2022  riastradh arm32: Refactor splhigh and restore in dosoftints.

No functional change intended. splhigh always returns ci->ci_cpl,
which should not be changing at this point. Makes the bracketing by
splhigh/splx clearer.
 1.143  12-Mar-2022  skrll No need to call arm_fdt_platform twice.
 1.142  13-Nov-2021  jmcneill Support 'boot -1' on arm
 1.141  31-Oct-2021  skrll Rework Arm (32bit and 64bit) AP startup so that cpu_hatch doesn't sleep.

The AP initialisation code in cpu_init_secondary_processor will read and
initialise the required system registers and state for the BP to attach
and report.

Rework the interrupt handler code for this new sequence. Thankfully,
this removes a bunch of code for bcm2836mp.

The VFP detection handler on <= armv7 relies on the global undefined
handler being in place until the BP attaches vfp. That is, after the
APs have been spun up.

gicv3_its.c has a serialisation issue which is protected against in
the gicv3_its_cpu_init, which is called from cpu_hatch, with a spin
lock. The serialisation issue needs addressing more completely.

Tested on RPI3, Apple M1, QEMU, and lx2k

Fixes PR port-arm/56264:
diagnostic assertion "l->l_stat == LSONPROC" failed on RPI3
 1.140  21-Oct-2021  skrll Whitespace in a comment
 1.139  01-Dec-2020  rin Switch earmv6{,hf}eb to BE8 in kernel side.

My strategy here is to define _ARM_ARCH_BE8 macro in arm/cdefs.h, if
__ARMEB__ && _ARM_ARCH_6.

Use this macro to determine whether system is compiled for and running on
BE8 mode or not.

Note that, for __ARMEB__, some conditions become compile-time constants
determined by _ARM_ARCH_BE8 macro, e.g., whether BE8 or BE32 are accepted
as a userland binary, or unaligned memory access is possible or not.
 1.138  30-Oct-2020  skrll branches: 1.138.2;
Retire arm_[di]sb in favour of the isb() and dsb(sy) macro invocations.
 1.137  28-Aug-2020  skrll Use C rather than assembly
 1.136  10-Jul-2020  skrll Add support for KASAN on ARMv[67]

Thanks to maxv for many pointers and reviews.
 1.135  21-Jun-2020  jmcneill Add support for installing modules that were loaded by the bootloader.
 1.134  20-Jun-2020  skrll KNF
 1.133  18-Apr-2020  skrll PMAP_DEBUG has been deleted on arm
 1.132  15-Feb-2020  skrll branches: 1.132.4;
Various updates and improvements to cpu start up on arm/aarch64

- start sharing more code around the AP startup messaging.
- call arm_cpu_topology_set early so that ci_core_id is available for
drivers, e.g. bcm2835_intr.c
- both arm and aarch64 now have
- a static cpu_info_store array
- the same arm_cpu_{hatched,mbox}
 1.131  02-Feb-2020  skrll KNF. One #include <sys/atomic.h> is enough
 1.130  27-Dec-2019  msaitoh branches: 1.130.2;
s/sucess/success/ in comment.
 1.129  18-Dec-2019  riastradh New function cpu_startup_hook on arm.

Called at end of cpu_startup. Can be defined in, e.g., evbarm to do
additional stuff after cpu_startup. Defined as a weak alias to a
function that does nothing, so optional.

ok jmcneill
 1.128  10-May-2019  skrll branches: 1.128.2;
Fix a printf
 1.127  04-Feb-2019  skrll Report hatched value after the atomic_or so the VERBOSE_INIT_ARM output
doesn't get mangled.

We start a cpu and wait for it before progressing now.
 1.126  21-Jan-2019  skrll Wrong long lined comment
 1.125  03-Jan-2019  skrll Start CPUs more like aarch64 by using a cpu_mpidr array (if populated)
to map MPIDRs to an index for each CPU.

Towards big.LITTLE support.
 1.124  19-Oct-2018  skrll Fix build for non-generic start kernels
 1.123  18-Oct-2018  skrll Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively
 1.122  14-Oct-2018  skrll Use __nothing
 1.121  12-Oct-2018  jmcneill Add optional ap_startup callback to struct arm_platform. This allows for
late (post-UVM init) initialization of platform specific stuff.
 1.120  22-Aug-2018  skrll Use banner
 1.119  15-Aug-2018  skrll G/C
 1.118  05-Aug-2018  skrll Add prefixes to struct arm_platform{,_info} members.

No functional change.
 1.117  05-Aug-2018  skrll Refactor code to split aarch{32,64} kernel page tables and VM setup. This
will help re-build the kernel page tables on aarch64 with correct section
mappings.
 1.116  31-Jul-2018  skrll Define and use VPRINTF
 1.115  31-Oct-2017  martin branches: 1.115.2; 1.115.4;
Allow architectures to define a macro PROC_MACHINE_ARCH(P) and
PROC_MACHINE_ARCH32(P) to override the value for sysctl hw.machine_arch
(native and netbsd32 commpat resp.).

Use these for arm and mips instead of the (not working, noisy, in case
of arm) sysctl override and #ifdef __mips__ in architecture neutral
code.
 1.114  02-Jul-2017  skrll Consistency around the user trapframe for all LWPs and there's no need to
keep assigning it in kernel entry points.
 1.113  02-Jul-2017  skrll Trailing whitespace
 1.112  16-Jul-2016  mrg apply some #if (ARM_MMU_V6 + ARM_MMU_V7) != 0.
now this builds on pre v6-only.
 1.111  15-Jul-2016  skrll Provide a mm_md_page_color and fix some kernel builds
 1.110  30-Apr-2016  ryo branches: 1.110.2;
* fix checking physical address range. on some arm devices, physical memory doesn't start from 0x00000000.
* allow /dev/mem to read/write memory mapped I/O area depending on kauth.
 1.109  11-Apr-2015  bouyer Handle boot option -x (alias 'debug') and set AB_DEBUG in boothowto.
 1.108  19-Nov-2014  martin branches: 1.108.2;
Add a machdep.unaligned_sigbus sysctl (just like alpha does), but on
arm it is readonly (depends on architecture version).
 1.107  29-Oct-2014  skrll Sprinkle #include "opt_multiprocessor.h"
 1.106  25-Oct-2014  skrll Remove katelib.h and references to it.

{Read,Write}{Word,Byte} macros are provided in the files that still use
them. Someone(tm) should convert them to bus_space(9)
 1.105  19-May-2014  rmind branches: 1.105.2;
Implement MI IPI interface with cross-call support.
 1.104  11-Apr-2014  matt Add a kernel for the CUBIETRUCK (CUBIEBOARD3). Allow direct mapping of all
memory (but for now allow the memory mapped above KERNEL_BASE to used for
poolpages).
 1.103  05-Apr-2014  matt If using arm32_kvminit, don't bother mapping msgbuf since it's already mapped.
 1.102  28-Mar-2014  matt branches: 1.102.2;
Various MP changes.
 1.101  03-Mar-2014  matt Add most of the cpu_* variables to <arm/locore.h>
Add and initialize cpu_synchprim_present
 1.100  25-Feb-2014  pooka Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.
 1.99  11-Jan-2014  matt Add hw.printfataltraps sysctl. Always print fatal traps for init. For all
other processes, only do so if cpu_printfataltraps is true.
 1.98  10-Sep-2013  matt Support an optional MARCH ELF tag.
Store the MACHINE_ARCH of the executable in mdproc and override sysctl
so that value returned.
 1.97  07-Sep-2013  matt Add a machdep.hwdiv_present sysctl (cortex A7 and A15 have hwdiv instructions)
 1.96  18-Aug-2013  matt Move parts of cpu.h that are not needed by MI code in <arm/locore.h>
Don't include <machine/cpu.h> or <machine/frame.h>, use <arm/locore.h>
Use <arm/asm.h> instead of <machine/arm.h>
 1.95  15-Aug-2013  matt Fix tpyo.
 1.94  12-Jun-2013  matt branches: 1.94.2;
Add a ARM_HAS_VBAR option which forces the use of the VBAR register. This
allows much code to deal with vector_page mappings to be eliminated. On a
BEAGLEBONE kernel, this saves 8KB of text and instructions that never have
to be executed. (The PJ4B has VBAR but doesn't implement the security
extensions it is part of so a method was needed to allow it use VBAR with
relying on the default test for the security extensions.)
 1.93  12-Jun-2013  matt Add support for the VBAR (vector base address register) to remap the vectors
into the kernel text segment. This register is available on arm1176 and
all cortex processors since they all have the arm security (trustzone)
extension. We avoid having to specially map either vector page (0x00000000
or 0xffff0000) and use VBAR to both to page0rel in the text segment. These
vector group differs from the normal page0, that since it's in the kernel,
it can branch directly to the exception routine, instead of loading the
address into the PC. This should result in a tiny improvement in speed since
we eliminate a TLB mapping the vector page and a load on every exception.

XXX Add __HAVE_ARM_TRUSTZONE cpp define and use that to eliminate all code
have to do with manipulating the vector page.
 1.92  03-Feb-2013  matt Add a machdep.cpu_arch sysctl
 1.91  31-Jan-2013  matt Add simple sysctls for cpu_id, fpu_id, neon_present, simd_present,
simdex_present.
Add struct sysctls to return the isar, mmfr, pfr, and mvfr sets.
 1.90  28-Jan-2013  matt Add a machdep.fpu_present sysctl for ld.elf_so to use in ld.so.conf to load
libc_vfp.so.
 1.89  19-Jan-2013  skrll Add -d as a synonym for getting into DDB to match other ports.
 1.88  31-Dec-2012  jmcneill reset todr clock on shutdown
 1.87  10-Dec-2012  matt add mm_md_direct_mapped_phys
 1.86  10-Dec-2012  matt Rename pcb_sp/PCB_SP to pcb_ksp/PCB_KSP so that ipsec.c will compile.
 1.85  27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.84  16-Sep-2012  rmind Rename kcpuset_copybits() to kcpuset_export_u32() and thus be more specific
about the interface.
 1.83  31-Aug-2012  matt branches: 1.83.2;
Make cpu_reset, most of initarm and the kvm init code common.
Add MP hooks for cpu_need_resced
Add idlestck which is allocated in arm32_kvminit
 1.82  16-Aug-2012  matt Move the standard definitions of the {UND,IRQ,FIQ,ABT}_STACK_SIZE to
<arm32/machdep.h>
Move the extern for cpu_reset_address to the same file.
Add cpu_reset_address_paddr.
Kill cpu_reset_v4_MMU_disable.
if cpu_reset_address is NULL, then the MMU will be disabled.
 1.81  16-Aug-2012  matt small rototill.
pcb_flags is dead. PCB_NOALIGNFLT is now in stored l_md.md_flags as
MDLWP_NOALIGNFLT. This avoids a few loads of the PCB in exception handling.
pcb_tf has been moved to l_md.md_tf. Again this avoids a lot of pcb
references just to access or set this. It also means that pcb doesn't
need to accessed by MI code.
Move pcb_onfault to after the pcb union.
Add pcb_sp macro to make code prettier.
Add lwp_settrapframe(l, tf) to set the l_md.md_tf field.
Use lwp_trapframe to access it (was process_frame but that name was changed
in a previous commit).
Kill off curpcb in acorn26.
Kill the checks for curlwp being NULL.
Move TRAP_USERMODE from arm32/fault.c to frame.h and a __PROG26 version.
Replace tests for usermode with that macro.
 1.80  14-Aug-2012  matt Kill curpcb/ci_curpcb. Use device_t in cpu_info.
Add ci_softc (where ci_curpcb was so cpu_info doesn't change).
 1.79  29-Jul-2012  matt Fix more -fno-common fallout.
Move more variables to common locations.
 1.78  16-Jul-2012  skrll Make the result from SOFTIPLMASK match the comment.

"Wouldn't hurt" from matt@
 1.77  16-Jul-2012  skrll Fix racy softint dispatch that lead to KASSERT(si->si_active) in
softint_execute

Discussed with matt@. "Looks good to me"
 1.76  30-Jun-2011  wiz branches: 1.76.2; 1.76.8;
dependant -> dependent
 1.75  12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.74  28-Nov-2010  hannken branches: 1.74.6;
As md(4) no longer has "needs-count" there is no "md.h" anymore.
Remove the inclusion of this file.

Acorn32 now always builds load_memory_disc_from_floppy(). This should
not be a problem as all configs have md(4).

Observed by: Masao Uebayashi <uebayasi@netbsd.org>
 1.73  08-Feb-2010  joerg branches: 1.73.2;
Remove separate mb_map. The nmbclusters is computed at boot time based
on the amount of physical memory and limited by NMBCLUSTERS if present.
Architectures without direct mapping also limit it based on the kmem_map
size, which is used as backing store. On i386 and ARM, the maximum KVA
used for mbuf clusters is limited to 64MB by default.

The old default limits and limits based on GATEWAY have been removed.
key_registered_sb_max is hard-wired to a value derived from 2048
clusters.
 1.72  18-Jan-2010  jmmv branches: 1.72.2;
Define an empty module_init_md function so that kernels with 'options
MODULAR' can be built (at least in shark). Still not working due to
some relocations resolving to too far away symbols though.
 1.71  29-Nov-2009  rmind Replace l_addr with uvm_lwp_getuarea() in various MD code, mostly cpu_lwp_fork().
 1.70  27-Nov-2009  rmind - Use uvm_lwp_setuarea() instead of directly setting address to lwp_t::l_addr.
- Replace most remaining uses of l_addr with uvm_lwp_getuarea() or lwp_getpcb().
- Amend assembly in ports where it accesses PCB via struct user.
- Rename L_ADDR to L_PCB in few places. Reduce sys/user.h inclusions.
 1.69  26-Nov-2009  matt Kill proc0paddr. Use lwp0.l_addr instead.
 1.68  21-Nov-2009  rmind Use lwp_getpcb() on ARM (and acorn26/32), clean from struct user usage.
 1.67  07-Nov-2009  cegger Add a flags argument to pmap_kenter_pa(9).
Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html
No objections.
 1.66  11-Aug-2009  matt Remove all declarations of physmem from sys/arch. Add an include of
<sys/systm.h> to the one file that did not already contain it.
This now means that physmem can be changed by updating systm.h and uvm_page.c
(excluding fixing printfs)
 1.65  15-Mar-2009  cegger ansify function definitions
 1.64  14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.63  14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.62  17-Jan-2009  bjh21 branches: 1.62.2;
Remove the implementation of cpu_intr_p() from here now that it's in
arm/arm_machdep.h. Should fix builds on arm32 platforms. Thanks to
Matt Fleming for reporting the problem.
 1.61  16-Jan-2009  bjh21 cpu_info_store, machine, and machine_arch can all be shared by acorn26 and
arm32, so share them.
 1.60  16-Jan-2009  bjh21 acorn26 and arm32 have identical versions of cpu_need_resched(). Unify them.
Similarly, with a small tweak acorn26 can use the same cpu_intr_p() as arm32,
so those can be unified too.
 1.59  19-Nov-2008  matt Fix __HAVE_FAST_SOFTINTS (boolean dyslexia strikes again).
Add some KASSERTS to make sure assumptions are valid.
 1.58  07-Aug-2008  matt branches: 1.58.2; 1.58.8;
Commit missing part of __HAVE_FAST_SOFTINTS support.
 1.57  02-Jul-2008  ad branches: 1.57.2;
Replce exec_map with a pool. Proposed on tech-kern@, reviewed by chs@.
 1.56  27-Apr-2008  matt branches: 1.56.2; 1.56.4;
Merge kernel changes in matt-armv6 to HEAD.
 1.55  19-Jan-2008  chris branches: 1.55.6; 1.55.8; 1.55.10;
With the removal of IPKDB on arm, the undefined stack is only used to
bounce into SVC32 mode, there is no per-process data stored on it.

We can therefore use the undefined stack setup by the platform machdep.c
as a system wide undefined stack.

This removes the need for a per-process undefined stack, and the processor
mode switching overhead it causes in cpu_switchto.

The space freed in the USPACE is used to increase the per process kernel
stack size.
 1.54  19-Jan-2008  chris Remove arm support for IPKDB.

It hasn't worked since arm was broken out from arm32 in Jan 2001, and
no-one has noticed or cared to fix it.
 1.53  16-Dec-2007  mrg move the arm32 cpu_intr_p() function into arm32_machdep.c
from arm_machdep.c. this lets acorn26 link again.
 1.52  17-Oct-2007  garbled branches: 1.52.2; 1.52.4; 1.52.8;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.51  02-Oct-2007  ad Make want_resched a member of cpu_info.
 1.50  15-Sep-2007  scw branches: 1.50.2;
ARM cpu_switchto() has been partially broken since yamt-idlelwp was merged
as its cache/tlb management smarts relied too heavily on pre-merge context-
switch behaviour. See PR kern/36548 for one manifestation of the breakage.

To address this:
- Ditch the shadow pmap variables in the PCB (pagedir, l1vec, dacr, cstate)
as it was too easy for them to get out of sync with the pmap.
- Re-write (and fix) the convoluted cpuswitch.S cache/tlb ASM code in C.
It's only slightly less efficient, but is much more readable/maintainable.
- Document cpufuncs.cf_context_switch() as being C-callable.
- pmap_activate() becomes a no-op if the lwp's vmspace is already active.
(Good performance win, since pmap_activate() is now invoked on every
context-switch, even though ARM's cpu_switchto() already does all the
grunt work)

XXX: Some CPU-specific armXX_context_switch() implementations (arm67,
arm7tdmi, arm8) always flush the I+D caches. This should not be necessary.
Someone with access to hardware (acorn32?) needs to deal with this.
 1.49  17-May-2007  yamt branches: 1.49.6; 1.49.8; 1.49.10; 1.49.12;
merge yamt-idlelwp branch. asked by core@. some ports still needs work.

from doc/BRANCHES:

idle lwp, and some changes depending on it.

1. separate context switching and thread scheduling.
(cf. gmcgarry_ctxsw)
2. implement idle lwp.
3. clean up related MD/MI interfaces.
4. make scheduler(s) modular.
 1.48  04-Mar-2007  christos branches: 1.48.2; 1.48.4; 1.48.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.47  22-Feb-2007  thorpej TRUE -> true, FALSE -> false
 1.46  11-Dec-2005  christos branches: 1.46.26;
merge ktrace-lwp.
 1.45  25-Apr-2005  lukem branches: 1.45.2;
Move the MI printing of `copyright' to the MD cpu_startup() code
where the printing of `version' is already performed.
This has the benefit of allowing the copyright to be available
via dmesg(8) on platforms which need the `msgbuf' to be setup
in cpu_startup() before printed output is remembered.
 1.44  24-Mar-2004  atatat branches: 1.44.8;
Tango on sysctl_createv() and flags. The flags have all been renamed,
and sysctl_createv() now uses more arguments.
 1.43  13-Feb-2004  wiz Uppercase CPU, plural is CPUs.
 1.42  30-Dec-2003  pk Replace the traditional buffer memory management -- based on fixed per buffer
virtual memory reservation and a private pool of memory pages -- by a scheme
based on memory pools.

This allows better utilization of memory because buffers can now be allocated
with a granularity finer than the system's native page size (useful for
filesystems with e.g. 1k or 2k fragment sizes). It also avoids fragmentation
of virtual to physical memory mappings (due to the former fixed virtual
address reservation) resulting in better utilization of MMU resources on some
platforms. Finally, the scheme is more flexible by allowing run-time decisions
on the amount of memory to be used for buffers.

On the other hand, the effectiveness of the LRU queue for buffer recycling
may be somewhat reduced compared to the traditional method since, due to the
nature of the pool based memory allocation, the actual least recently used
buffer may release its memory to a pool different from the one needed by a
newly allocated buffer. However, this effect will kick in only if the
system is under memory pressure.
 1.41  13-Dec-2003  rearnsha The machdep.debug sysctl variable uses code CPU_DEBUG
(not CPU_CONSDEV).
 1.40  12-Dec-2003  atatat The machdep.debug node is an int, not a struct
 1.39  04-Dec-2003  atatat Dynamic sysctl.

Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(),
vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all
nodes are registered with the tree, and nodes can be added (or
removed) easily, and I/O to and from the tree is handled generically.

Since the nodes are registered with the tree, the mapping from name to
number (and back again) can now be discovered, instead of having to be
hard coded. Adding new nodes to the tree is likewise much simpler --
the new infrastructure handles almost all the work for simple types,
and just about anything else can be done with a small helper function.

All existing nodes are where they were before (numerically speaking),
so all existing consumers of sysctl information should notice no
difference.

PS - I'm sorry, but there's a distinct lack of documentation at the
moment. I'm working on sysctl(3/8/9) right now, and I promise to
watch out for buses.
 1.38  21-Sep-2003  matt Change some type-punning detected by gcc 3.3.1 to (void *).
 1.37  15-Jul-2003  lukem __KERNEL_RCSID()
 1.36  29-Jun-2003  fvdl branches: 1.36.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.35  29-Jun-2003  ichiro struct proc * -> struct lwp *

ixp425_com:
add some status flags
 1.34  04-Jun-2003  simonb Remove prototype for strtoul() that was in the wrong place.
 1.33  21-May-2003  thorpej Remove #ifdefs supporting the old pmap, switching fully to the new.
 1.32  18-Apr-2003  thorpej Add a comment indicating that the current method of enabling high vectors
requires that the CPU control vector be properly readable. I believe that
all CPUs that have high vector support have a readable CPU control register,
but if we ever encounter one that does not, then we'll have to adjust this
code.
 1.31  18-Apr-2003  scw Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.

Some features of the new pmap are:

- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.

- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.

- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.

- Faster VM space teardown due to accurate referenced tracking of L2
page tables.

- Better/faster cache-alias tracking.

The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.
 1.30  18-Apr-2003  scw In arm32_vector_init(), if the vector page is ARM_VECTORS_HIGH, make
sure the CPU_CONTROL_VECRELOC bit is set in the cpu control register
before returning.
 1.29  01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.28  23-Feb-2003  thorpej Change pcb32_pagedir to a paddr_t (after all, it's used as a paddr_t
everywhere in the code).
 1.27  17-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.26  25-Aug-2002  thorpej Make nbuf, nswbuf, and bufpages unsigned. Make all operations on these
variables unsigned, and update places where their values are printed.
 1.25  16-Aug-2002  thorpej * Add a new machdep.powersave sysctl, which controls the use of
the CPU's "sleep" function in the idle loop.
* Default all CPUs to not use powersave, except for the PDA processors
(SA11x0 and PXA2x0).

This significantly reduces inteterrupt latency in high-performance
applications (and was good to squeeze another ~10% out of an XScale
IOP on a Gig-E benchmark).
 1.24  05-May-2002  jdolecek branches: 1.24.2;
Update to md(4) changes: memory_disk_size is now md_root_size, and
type is size_t
 1.23  10-Apr-2002  thorpej Remove the Control register handling from arm32_vector_init(). Apparently,
the ARM6 and ARM7 do completely the wrong thing if you read this register,
so we have to handle this a different way.
 1.22  03-Apr-2002  thorpej Clean up handling of the vector page on 32-bit ARM systems:
* Don't refer to VA 0, instead refer to a new variable: vector_page
* Delete the old zero_page_*() functions, replacing them with a new
one: vector_page_setprot().
* When manipulating vector page mappings in user pmaps, only do so if
the vector page is below KERNEL_BASE (if it's above KERNEL_BASE, the
vector page is mapped by the kernel pmap).
* Add a new function, arm32_vector_init(), which takes the virtual
address of the vector page (which MUST be valid when the function
is called) and a bitmask of vectors the kernel is going to take
over, and performs all vector page initialization, including setting
the V bit in the CPU Control register ("relocate vectors to high
address"), if necessary.
 1.21  02-Apr-2002  lukem Rename MEMORY_DISK_SIZE (formerly MINIROOTSIZE) to MEMORY_DISK_ROOT_SIZE,
which was suggested by Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> as
being more consistent with what it's controlling...
 1.20  24-Mar-2002  thorpej * arm_byte_to_page() -> arm_btop()
* arm_page_to_byte() -> arm_ptob()
 1.19  23-Mar-2002  thorpej Garbage-collect the "pagehook" stuff.
 1.18  23-Mar-2002  thorpej * Rename PROCESS_PAGE_TBLS_BASE -> PTE_BASE
* Rename ALT_PAGE_TBLS_BASE -> APTE_BASE
* Garbage-collect PAGE_TABLE_SPACE_START
 1.17  10-Mar-2002  lukem * rename MINIROOTSIZE to MEMORY_DISK_SIZE, so that all md(4) options
are now consistently named
* fold opt_mdsize.h into opt_md.h
 1.16  21-Feb-2002  thorpej map_chunk() -> pmap_map_chunk(), and move it to pmap.c
 1.15  20-Feb-2002  thorpej map_pagetable() -> pmap_link_l2pt(), and move it to pmap.c
 1.14  20-Feb-2002  thorpej Collapse map_entry{,ro,nc}() into a single pmap_map_entry() that
takes a prot and a "cacheable" indicator.
 1.13  20-Feb-2002  thorpej Rename map_section() to pmap_map_section(), move it to pmap.c, and give it
an extra argument (prot - specifies protection of the mapping).
 1.12  10-Feb-2002  reinoud Add some extra comments for the `booted_kernel' variable.
 1.11  20-Jan-2002  thorpej Some prototype cleanup.
 1.10  12-Jan-2002  chris Make GENERIC cats kernel boot again. By allocating a 2nd second level page table for the kernel and stack space we can now have to 8MB of kernel and stacks (if the kernel ever gets really bloated might need to add a 3rd!)
Also update the funcs in arm32_machdep.c that create the entries so that on cats they expect the 2 pagetables to be contiguous, note this means that for now cats is special cased in lots of funcs. I'll tidy this up to something a bit more sane soon, to avoid the multitude of #ifndef cats that I had to sprinkle in.
 1.9  05-Jan-2002  chris Make some of the arm32 files build with LOOSE_PROTOTYPES not set in the makefile. Turned up a few mismatched functions. Note that this isn't all of the arm32 files. Aim will be to get arm32 kernels built with LOOSE_PROTOTYPES not set.
 1.8  23-Nov-2001  thorpej No need to pull in <machine/pte.h> directly.
 1.7  22-Nov-2001  thorpej Kill <machine/katelib.h>. Any place that still uses it should just
reference <arm/arm32/katelib.h> until such time as all use of this
file has been purged from the face of the earth.
 1.6  27-Oct-2001  rearnsha branches: 1.6.2;
When creating section maps, use pte_cache_mode for setting the
page attributes of cacheable pages.
 1.5  10-Sep-2001  chris branches: 1.5.2;
Update pmap_update to now take the updated pmap as an argument.
This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.

Currently this is a no-op on most platforms, so they should see no difference.

Reviewed by Jason.
 1.4  09-Sep-2001  toshii Don't define pcb_* register macros.
pcb_sp macro conflicts with sys/netinet6/ipsec.c.
 1.3  11-Aug-2001  chris branches: 1.3.2;
Make use of pmap_kenter instead of pmap_enter for kernel buffers.
 1.2  28-Jul-2001  chris branches: 1.2.2;
A couple of tidy ups to pmap:
pmap_t -> struct pmap * in pmap.c and pmap.h
kernel_pmap -> pmap_kernel() everywhere.

Compiled and booted on riscpc and cats.
 1.1  28-Jul-2001  chris Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.
 1.2.2.9  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.2.2.8  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.2.2.7  16-Mar-2002  jdolecek Catch up with -current.
 1.2.2.6  11-Feb-2002  jdolecek Sync w/ -current.
 1.2.2.5  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.2.4  13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.2.2.3  25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.2.2.2  03-Aug-2001  lukem update to -current
 1.2.2.1  28-Jul-2001  lukem file arm32_machdep.c was added on branch kqueue on 2001-08-03 04:10:57 +0000
 1.3.2.1  01-Oct-2001  fvdl Catch up with -current.
 1.5.2.1  12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.6.2.10  27-Aug-2002  thorpej Sync with -current.
 1.6.2.9  19-Aug-2002  thorpej Partial (ARM only) sync with trunk -- significant performance improvements
for XScale-based systems.
 1.6.2.8  20-Jun-2002  nathanw Catch up to -current.
 1.6.2.7  17-Apr-2002  nathanw Catch up to -current.
 1.6.2.6  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.6.2.5  28-Feb-2002  nathanw Catch up to -current.
 1.6.2.4  11-Jan-2002  nathanw More catchup.
 1.6.2.3  08-Jan-2002  nathanw Catch up to -current.
 1.6.2.2  15-Nov-2001  thorpej Machine-dependent kernel mods for scheduler activations on
32-bit ARM processors. Kernel boots multi-user on an XScale,
but upcalls not yet tested.
 1.6.2.1  27-Oct-2001  thorpej file arm32_machdep.c was added on branch nathanw_sa on 2001-11-15 06:39:21 +0000
 1.24.2.1  30-Aug-2002  gehenna catch up with -current.
 1.36.2.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.36.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.36.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.36.2.2  03-Aug-2004  skrll Sync with HEAD
 1.36.2.1  02-Jul-2003  wrstuden Check in lwp-ification changes needed to get the evbarm/IQ80321 kernel
to compile.

only question I have is over the:
l->l_proc->p_stats->p_ru.ru_msgsnd++;
command at line 245 of dev/kttcp.c. Should we be doing per-lwp or
per-proc accounting?
 1.44.8.1  29-Apr-2005  kent sync with -current
 1.45.2.4  21-Jan-2008  yamt sync with head
 1.45.2.3  27-Oct-2007  yamt sync with head.
 1.45.2.2  03-Sep-2007  yamt sync with head.
 1.45.2.1  26-Feb-2007  yamt sync with head.
 1.46.26.3  29-Mar-2007  skrll Adapt arm32. Thanks to scw for helping out.

Tested on my cats (SA1)

XXX hydra should die. i've made some changes, but no guarantees.
 1.46.26.2  12-Mar-2007  rmind Sync with HEAD.
 1.46.26.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.48.10.2  03-Oct-2007  garbled Sync with HEAD
 1.48.10.1  22-May-2007  matt Update to HEAD.
 1.48.4.1  11-Jul-2007  mjf Sync with head.
 1.48.2.2  09-Oct-2007  ad Sync with head.
 1.48.2.1  27-May-2007  ad Sync with head.
 1.49.12.7  23-Mar-2008  matt Restore $NetBSD$
 1.49.12.6  23-Mar-2008  matt fix typo.
 1.49.12.5  23-Mar-2008  matt sync with HEAD
 1.49.12.4  09-Jan-2008  matt sync with HEAD
 1.49.12.3  06-Nov-2007  matt sync with HEAD
 1.49.12.2  29-Aug-2007  matt Initial cpu_info_store.ci_lwp to &lwp0
 1.49.12.1  28-Aug-2007  matt Deal with want_resched move to cpu_info
 1.49.10.2  20-Jan-2008  chris Sync to HEAD.
 1.49.10.1  01-Jan-2008  chris Sync with HEAD.
 1.49.8.1  02-Oct-2007  joerg Sync with HEAD.
 1.49.6.4  28-Feb-2008  rjs Sync with HEAD.
 1.49.6.3  26-Dec-2007  rjs Sync with HEAD.
 1.49.6.2  01-Nov-2007  rjs Sync with HEAD.
 1.49.6.1  06-Oct-2007  rjs Sync with HEAD.
 1.50.2.1  06-Oct-2007  yamt sync with head.
 1.52.8.2  20-Jan-2008  bouyer Sync with HEAD
 1.52.8.1  02-Jan-2008  bouyer Sync with HEAD
 1.52.4.1  26-Dec-2007  ad Sync with head.
 1.52.2.1  18-Feb-2008  mjf Sync with HEAD.
 1.55.10.4  11-Mar-2010  yamt sync with head
 1.55.10.3  19-Aug-2009  yamt sync with head.
 1.55.10.2  04-May-2009  yamt sync with head.
 1.55.10.1  16-May-2008  yamt sync with head.
 1.55.8.1  18-May-2008  yamt sync with head.
 1.55.6.4  17-Jan-2009  mjf Sync with HEAD.
 1.55.6.3  28-Sep-2008  mjf Sync with HEAD.
 1.55.6.2  02-Jul-2008  mjf Sync with HEAD.
 1.55.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.56.4.1  03-Jul-2008  simonb Sync with head.
 1.56.2.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.57.2.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.57.2.1  19-Oct-2008  haad Sync with HEAD.
 1.58.8.1  15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.58.2.2  28-Apr-2009  skrll Sync with HEAD.
 1.58.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.62.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.72.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.73.2.3  05-Mar-2011  rmind sync with head
 1.73.2.2  25-Apr-2010  rmind A round of compile and other fixes to previous.
 1.73.2.1  18-Mar-2010  rmind Unify /dev/{mem,kmem,zero,null} implementations in MI code. Based on patch
from Joerg Sonnenberger, proposed on tech-kern@, in February 2008.

Work and depression still in progress.
 1.74.6.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.76.8.1  09-Aug-2012  jdc branches: 1.76.8.1.2;
Pull up revisions:
src/sys/arch/evbarm/dev/plcomreg.h revisions 1.2,1.3,1.4
src/sys/arch/evbarm/conf/INTEGRATOR revision 1.65
src/sys/arch/evbarm/dev/plcom.c revisions 1.34,1.35,1.36,1.37,1.38,1.39,1.40
src/sys/arch/evbarm/ifpga/plcom_ifpga.c revisions 1.12,1.13,1.14
src/sys/arch/evbarm/dev/plcomvar.h revisions 1.9,1.10,1.11
src/sys/arch/evbarm/ifpga/plcom_ifpgavar.h revision 1.2
src/sys/arch/arm/arm/cpufunc.c revisions 1.105,1.108
src/sys/arch/arm/arm32/cpu.c revision 1.79
src/sys/arch/arm/include/armreg.h revisions 1.49,1.54
src/sys/arch/arm/arm32/pmap.c revision 1.229
src/sys/arch/arm/arm32/arm32_machdep.c revision 1.77
src/sys/arch/arm/include/cpu.h revision 1.64
src/sys/arch/arm/arm/cpufunc_asm_arm1136.S revision 1.3
src/sys/arch/arm/arm/cpufunc_asm_arm11x6.S revision 1.1
src/sys/arch/arm/conf/files.arm revision 1.106
src/sys/arch/arm/include/cpufunc.h revision 1.57
src/sys/dev/sdmmc/sdhc.c revisions 1.14,1.24
src/sys/dev/sdmmc/sdhcvar.h revisions 1.7,1.8
src/sys/arch/evbarm/ifpga/ifpgareg.h revision 1.4
src/sys/arch/evbarm/integrator/integrator_machdep.c revision 1.69
src/sys/arch/arm/broadcom/bcm2835_dma.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835_emmc.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835_intr.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835_intr.h revision 1.1
src/sys/arch/arm/broadcom/bcm2835_obio.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835_plcom.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835_pm.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835_pmvar.h revision 1.1
src/sys/arch/arm/broadcom/bcm2835_space.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835_tmr.c revision 1.1
src/sys/arch/arm/broadcom/bcm2835reg.h revision 1.1
src/sys/arch/arm/broadcom/bcm2835var.h revision 1.1
src/sys/arch/arm/broadcom/bcm_amba.h revision 1.1
src/sys/arch/arm/broadcom/files.bcm2835 revision 1.1
src/sys/arch/evbarm/Makefile revision 1.9
src/sys/arch/evbarm/conf/RPI revision 1.1
src/sys/arch/evbarm/conf/files.rpi revision 1.1
src/sys/arch/evbarm/conf/mk.rpi revision 1.1
src/sys/arch/evbarm/conf/std.rpi revision 1.1
src/sys/arch/evbarm/rpi/genassym.cf revision 1.1
src/sys/arch/evbarm/rpi/rpi.h revision 1.1
src/sys/arch/evbarm/rpi/rpi_machdep.c revision 1.1
src/sys/arch/evbarm/rpi/rpi_start.S revision 1.1,1.2
src/etc/etc.evbarm/Makefile.inc revision 1.28
(requested by skrll in ticket #454).

don't mix #define<TAB> and #define<SPACE> in a file.

avoid warning with options PLCOM_DEBUG for INTEGRATOR.

Rename register values. No functional change - same code before and after.

Existing names are prefixed with PL01X_ where they're common between the
PL010 and the PL011. The PL010_/PL011_ prefixes are added where they're
found only on the respective chips.

Replace the simple_lock with a kmutex_t. Update the locking to match
com(4) in the few places it didn't already.

DOH. Replace a line that got accidently deleted in the last commit.

device_t/softc split
struct device * -> device_t
struct cfdata * -> cfdata_t

Add the 'Z' to the 1176 cpu product name.

ok matt@

Fix locking botch introduced in 1.36.

Fix a KASSERT. From/OK'ed by matt@

Fix racy softint dispatch that lead to KASSERT(si->si_active) in
softint_execute

Discussed with matt@. "Looks good to me"

Add the documented ARM11[37]6 Auxiliary control register defines.

Add support for the ARM1176JZS

Add a flag for the lack of LED_ON in HOST_CTL (ti omap3 doesn't do that).

Provide a method for attachments to specify capabilites.

Add support for the PL011 to plcom. Pull across a bunch of fixes from
com(4) while I'm here and do some other tidyup.

Tested on a RaspberryPi.

PL010 not tested.

Initial commit of support for the RaspberryPI (www.raspberrypi.org)

This is enough for serial console via the gpio header pins and to get to
multiuser.

A huge thank you to Matt Thomas for all his help.

Add RPI to KERNEL_SETS

Remove #if 0 code.
 1.76.8.1.2.1  28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.76.2.4  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.76.2.3  23-Jan-2013  yamt sync with head
 1.76.2.2  16-Jan-2013  yamt sync with (a bit old) head
 1.76.2.1  30-Oct-2012  yamt sync with head
 1.83.2.5  03-Dec-2017  jdolecek update from HEAD
 1.83.2.4  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.83.2.3  23-Jun-2013  tls resync from head
 1.83.2.2  25-Feb-2013  tls resync with head
 1.83.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.94.2.2  18-May-2014  rmind sync with head
 1.94.2.1  28-Aug-2013  rmind sync with head
 1.102.2.1  10-Aug-2014  tls Rebase.
 1.105.2.1  09-Nov-2014  martin Pull up following revision(s) (requested by skrll in ticket #188):
sys/arch/arm/include/arm32/pmap.h: revision 1.136
sys/arch/arm/include/armreg.h: revision 1.100
sys/arch/arm/cortex/gic.c: revision 1.11
sys/arch/arm/arm32/db_interface.c: revision 1.54
sys/arch/arm/include/armreg.h: revision 1.101
sys/arch/arm/cortex/gic.c: revision 1.12
sys/arch/arm/arm32/arm32_machdep.c: revision 1.107
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.19
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.20
sys/arch/evbarm/conf/BPI: revision 1.5
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.21
sys/arch/arm/arm32/pmap.c: revision 1.306
sys/arch/arm/arm32/db_machdep.c: revision 1.22
sys/arch/arm/arm32/arm32_tlb.c: revision 1.3
sys/arch/arm/arm/undefined.c: revision 1.55
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.22
sys/arch/arm/arm32/pmap.c: revision 1.307
sys/arch/arm/arm32/arm32_tlb.c: revision 1.4
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.23
sys/arch/arm/arm32/arm32_tlb.c: revision 1.5
sys/arch/evbarm/conf/BPI: revision 1.8
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.24
sys/arch/arm/arm32/arm32_tlb.c: revision 1.6
sys/arch/arm/arm32/arm32_tlb.c: revision 1.7
sys/arch/evbarm/conf/CUBIETRUCK: revision 1.5
sys/arch/arm/pic/pic.c: revision 1.23
sys/arch/arm/pic/pic.c: revision 1.24
sys/arch/arm/pic/picvar.h: revision 1.11
sys/arch/arm/arm/cpufunc_asm_armv7.S: revision 1.20
sys/arch/arm/mainbus/cpu_mainbus.c: revision 1.16
sys/arch/arm/arm32/pmap.c: revision 1.298
sys/arch/arm/arm/cpufunc_asm_arm11.S: revision 1.17
sys/arch/arm/arm/cpufunc_asm_pj4b.S: revision 1.5
sys/arch/arm/arm32/pmap.c: revision 1.310
sys/arch/arm/arm32/pmap.c: revision 1.311
sys/arch/arm/arm32/arm32_kvminit.c: revision 1.32
sys/arch/arm/cortex/a9_mpsubr.S: revision 1.19
sys/arch/arm/arm32/arm32_boot.c: revision 1.10
sys/arch/arm/arm/ast.c: revision 1.25
sys/arch/arm/include/armreg.h: revision 1.98
sys/uvm/pmap/pmap_tlb.c: revision 1.10
sys/arch/arm/arm32/arm32_boot.c: revision 1.8
sys/arch/arm/arm32/arm32_boot.c: revision 1.9
sys/arch/arm/arm/arm_machdep.c: revision 1.43
Various ARM MP fixes.
 1.108.2.4  28-Aug-2017  skrll Sync with HEAD
 1.108.2.3  05-Oct-2016  skrll Sync with HEAD
 1.108.2.2  29-May-2016  skrll Sync with HEAD
 1.108.2.1  06-Jun-2015  skrll Sync with HEAD
 1.110.2.1  26-Jul-2016  pgoyette Sync with HEAD
 1.115.4.3  21-Apr-2020  martin Sync with HEAD
 1.115.4.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.115.4.1  10-Jun-2019  christos Sync with HEAD
 1.115.2.4  26-Jan-2019  pgoyette Sync with HEAD
 1.115.2.3  18-Jan-2019  pgoyette Synch with HEAD
 1.115.2.2  20-Oct-2018  pgoyette Sync with head
 1.115.2.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.128.2.1  12-Feb-2020  martin Pull up following revision(s) (requested by riastradh in ticket #705):

sys/arch/aarch64/aarch64/aarch64_machdep.c: revision 1.35
sys/stand/efiboot/efifdt.c: revision 1.20
sys/stand/efiboot/efifdt.h: revision 1.7
sys/arch/aarch64/include/machdep.h: revision 1.9
sys/stand/efiboot/efiboot.h: revision 1.11
sys/arch/arm/arm32/arm32_machdep.c: revision 1.129
sys/arch/arm/include/arm32/machdep.h: revision 1.30
sys/stand/efiboot/exec.c: revision 1.12
sys/arch/evbarm/fdt/fdt_machdep.c: revision 1.65
sys/stand/efiboot/version: revision 1.14
sys/stand/efiboot/boot.c: revision 1.19

New function cpu_startup_hook on arm.

Called at end of cpu_startup. Can be defined in, e.g., evbarm to do
additional stuff after cpu_startup. Defined as a weak alias to a
function that does nothing, so optional.
ok jmcneill

Implement rndseed support in efiboot and fdt arm.

The EFI environment variable `rndseed' specifies the path to the
random seed. It is loaded only for fdt platforms at the moment.
Since the rndseed (an rndsave_t object as defined in <sys/rndio.h>)
is 536 bytes long (for hysterical raisins), and to avoid having to
erase parts of the fdt tree, we load it into a physical page whose
address is passed in the fdt tree, rather than passing the content of
the file as an fdt node directly; the kernel then reserves the page
from uvm, and maps it into kva to call rnd_seed.

For now, the only kernel that does use efiboot with fdt is evbarm,
which knows to handle the rndseed. Any new kernels that use efiboot
with fdt must do the same; otherwise uvm may hand out the page with
the secret key on it for a normal page allocation in the kernel --
which should be OK if there are no kernel memory disclosure bugs, but
would lead to worse consequences than simply loading the seed late in
userland with /etc/rc.d/random_seed otherwise.

ok jmcneill
 1.130.2.1  29-Feb-2020  ad Sync with head.
 1.132.4.1  20-Apr-2020  bouyer Sync with HEAD
 1.138.2.1  14-Dec-2020  thorpej Sync w/ HEAD.

RSS XML Feed