Age | Commit message (Collapse) | Author |
|
it happened on a kernel page, we need to consult the kernel pmap
instead of the current proc's pmap. Fixes panic when using tmpfs.
ok kettenis@
|
|
means that even though the hardware in the end never leaves the 32-bit
address space, some addresses used solely in the device tree can be
bigger than 32-bit. As bus_space_map(9) takes addresses of size
bus_addr_t, which is 32-bit on ARMv7, we cannot pass those virtual
addresses to the parent bus, even though it will be mapped back into a
32-bit address in the end. To work around this, make bus_space_map(9)
take a 64-bit address. Since this is implemented as a macro and
function pointer we can safely do that without harming any other
architecture.
ok kettenis@ deraadt@
|
|
ok deraadt@ tom@ patrick@
|
|
ok guenther@
|
|
address of the end of the symbol table. This will make it possible to get
rid of the code in the bootloader that patches up the kernel with the updated
esym value.
ok tom@, patrick@
|
|
Based on a similar diff in bitrig.
No binary change when compiled with gcc.
ok patrick@
|
|
ok guenther@
|
|
on a guess how much memory a typical machine has. If the value is
too high, users may run out of kernel memory. Then we will have
to adjust this again.
OK claudio@ deraadt@
|
|
enable it on CPUs that support it. When enabled, this prevents the kernel
from executing userland code.
ok jsg@, tom@
|
|
xhci(4) on ARM. The only way the load raw operation can get to know
about the coherent flag is via the segments. Store it there when the
memory is initially mapped. Also store the virtual address which we
need to know when we have to flush the caches on a non-coherent mapping.
ok kettenis@
|
|
basically a relic from the past. Using them doesn't make a lot of sense
the way our pmaps work. Support for MMU domains isn't present in
long-descriptor translation table format, so it is clearly on its way out.
Based on a diff from Artituri Alm.
ok patrick@
|
|
prevent the kernel from accidentally executing userland pages that are
writable.
ok jsg@, patrick@
|
|
ok tom@
|
|
BUS_DMA_COHERENT flag was mapped as device memory which does not use the
store buffer. It is now mapped as normal inner and outer non-cacheable
which does.
While we drain the cpu store buffer for this case, on cortex a9 systems we
also need to explicitly drain the PL310 L2's store buffer. With PL310
revisions r3p2 and later this is done automatically after being present in
the store buffer for 256 cycles. On i.MX6 PL310 is rev r3p1 which does
not have this behaviour. This issue is i.MX6 errata ERR055199 and PL310
errata 769419.
This change restores io performance with a usb flash drive attached to
my cubox. Raw reads go from 3 MB/s to 19 MB/s for example.
Based on code written by patrick@ some time ago.
ok kettenis@ patrick@
|
|
effect. This will let us have different settings on armv7 and zaurus and
also unconfuses this developer.
ok tom@, deraadt@
|
|
non-executable.
ok visa@, deraadt@
|
|
L2_S_COHERENT_v7 such that bus_dmamap_sync(9) avoids unnecessary cache
flushes again for DMA'able memory mapped with the BUS_DMA_COHERENT flag.
I broke this in pmap7.c rev 1.35.
ok tom@
|
|
ok visa@
|
|
armv7 pmap.
ok tom@
|
|
Generic xscale support and support for pxa2x0 used by zaurus remains.
|
|
toggling the bit, clearing it when already set. On Cortex-A7 setting the SMP
bit is essential since without it the CPU doesn't actually use its caches.
The SMP bit supposed to be set before turning on the caches and the MMU, so
move the setting of the Auxiliary Control Register before setting the
System Control Register.
ok jsg@
|
|
non Global bit Small page desciptions. iConsistently name the S-bit
Sharable in comments.
|
|
with setting the Access Flag Enable bit in the System Control Register.
The new settings mean that read-only userland pages are no longer writable
by the kernel, which is a good thing. Set the Access Flag Enable bit.
ok patrick@
|
|
to non-cachable is retarded. Fix this by introducing PMAP_NOCACHE and
PMAP_DEVICE flags that can be or'ed into the physical address passed to
pmap_kenter(9), like we have on many of our other architectures. This way we
can also properly distinguish between device memory and normal (non-cachable)
memory.
ok visa@
|
|
Switch from calling obsolete sig{block,setmask} to directly using the
sigprocmask syscall.
ok deraadt@ kettenis@
|
|
the page tables coherently and also skip flushing modified ptes out of the
cache in that case. Speeds up building a kernel with a factor of two on
Cortex-A9 (tested by me) and Cortex-A8 (tested by mglocker@).
ok patrick@
|
|
|
|
MMFR0 for an ARMv7 VMSA MMU that can handle short descriptors when
setting ARMv7 function pointers. ARMv8 in AArch32 mode is documented to
set the same bits.
ok patrick@
|
|
pass a pre-processed array of fdt_reg structs. This means
that the drivers don't have to understand the cell properties
themselves but can rely on the 64-bit addr/size pairs.
ok kettenis@
|
|
of the memory address and length information. The root node passes
this information down to the children and it can be overwritten by
other nodes inbetween. Pass these properties as part of the fdt
attach args, so that we can grab that information quickly inside
the drivers.
ok kettenis@
|
|
our children.
ok jsg@
|
|
ok millert
|
|
ok deraadt@
|
|
armv5 this is just a "memory" clobber hint to the compiler.
ok kettenis@
|
|
inside the sigcontext. sigreturn(2) checks syscall entry was from the
exact PC addr in the (per-process ASLR) sigtramp, verifies the cookie,
and clears it to prevent sigcontext reuse.
not yet tested on landisk, sparc, *88k, socppc.
ok kettenis
|
|
actually use this in em(4) and xhci(4), but I'm not committing those yet
because we almost certainly need to save and restore the MSI-X registers
during suspend/resume. However, this allows mpi@ to play with multiple-vector
support in networking hardware.
Requested by mpi@
ok mlarkin@, mikeb@
|
|
topology based on device tree information. Introduce a common attach
args structure to be used for all fdt-capable bus devices.
ok jsg@ kettenis@
|
|
|
|
since ARMv6K. As we also support ARMs that are older than that,
guard the new atomic operations with an ifdef specifically for ARMv7.
ok jsg@
|
|
arguments to instructions. Based on a file from FreeBSD.
ok patrick@
|
|
|
|
to be 8-byte aligned. To guarantee this, align the stack pointers
passed to user processes and make sure the in-kernel stacks are
properly aligned, too.
ok jsg@
|
|
This will especially be helpful in future multiprocessor efforts.
ok jsg@
|
|
Previously we used the primary data cache's information on how big
the cache lines are. The CTR gives us better information about how
big the smallest cache line sizes (controlled by the CPU) are.
ok jsg@
|
|
to exist on. This is required to use ldrex/strex in some cases.
ok patrick@
|
|
specific Auxiliary Control Register (ACTLR).
ok patrick@
|
|
|
|
processor in our code. Now we're left with only armv7 and XScale for
armish and zaurus.
ok jsg@
|
|
ok jsg@
|
|
all unused and unmaintained ARM processors from the past.
ok bmercer@ jsg@
|