| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
for smc_call().
ok patrick@
|
|
|
|
|
|
|
|
|
|
|
| |
have stored the struct cpu_info * in the wrapper around the interrupt
handler cookie, but since we can have a few layers inbetween, this does
not seem very nice. Instead have each and every interrupt controller
provide a barrier function. This means that intr_barrier(9) will in the
end be executed by the interrupt controller that actually wired the pin
to a core. And that's the only place where the information is stored.
ok kettenis@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a struct cpu_info *. From a driver point of view the fdt_intr_establish_*
API now also exist same functions with a *_cpu suffix. Internally the
"old" functions now call their *_cpu counterparts, passing NULL as ci.
NULL will be interpreted as primary CPU in the interrupt controller code.
The internal framework for interrupt controllers has been changed so that
the establish methods provided by an interrupt controller function always
takes a struct cpu_info *.
Some drivers, like imxgpio(4) and rkgpio(4), only have a single interrupt
line for multiple pins. On those we simply disallow trying to establish
an interrupt on a non-primary CPU, returning NULL.
Since we do not have MP yet on armv7, all armv7 interrupt controllers do
return NULL if an attempt is made to establish an interrupt on a different
CPU. That said, so far there's no way this can happen. If we ever gain
MP support, this is a reminder that the interrupt controller drivers have
to be adjusted.
Prompted by dlg@
ok kettenis@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This diff exposes parts of clock_gettime(2) and gettimeofday(2) to
userland via libc eliberating processes from the need for a context
switch everytime they want to count the passage of time.
If a timecounter clock can be exposed to userland than it needs to set
its tc_user member to a non-zero value. Tested with one or multiple
counters per architecture.
The timing data is shared through a pointer found in the new ELF
auxiliary vector AUX_openbsd_timekeep containing timehands information
that is frequently updated by the kernel.
Timing differences between the last kernel update and the current time
are adjusted in userland by the tc_get_timecount() function inside the
MD usertc.c file.
This permits a much more responsive environment, quite visible in
browsers, office programs and gaming (apparently one is are able to fly
in Minecraft now).
Tested by robert@, sthen@, naddy@, kmos@, phessler@, and many others!
OK from at least kettenis@, cheloha@, naddy@, sthen@
|
|
|
|
|
|
|
|
| |
functionality is provided by <sys/stdarg.h> using compiler builtins.
Tested in a ports bulk build on amd64 by naddy@
OK naddy@ mpi@
|
|
|
|
| |
ok patrick@
|
|
|
|
| |
Pointed out by Jerome Pinot
|
|
|
|
|
| |
details from the ELF header instead of faking it.
Proposal from mlarkin, tested on most architectures already
|
|
|
|
| |
OK deraadt@ mpi@
|
|
|
|
|
|
|
|
| |
so that we can include firmware-dependant code in generic drivers to be
able to extract metadata information like MAC addresses and out-of-band
interrupts from the ACPI/FDT tables.
ok kettenis@
|
|
|
|
| |
Discussed with kettenis@
|
|
|
|
|
|
|
|
| |
doesn't actually spin up any secondary CPUs, it does run. Mostly a cleanup
of <machine/cpu.h> along the lines of what I did earlier on arm64. Makes
armv7 use the MI mplock implementation and implements copyin32.
ok patrick@
|
|
|
|
| |
ok kettenis@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
establish function parses the device tree's interrupt map to discover
the correct interrupt controller node and interrupt cells for the given
PCI node. After retrieving that information we can do the same the
normal FDT establish API already does.
MSI interrupts are established in a different way as well. Instead of
simply hooking up the interrupt handler and returning an MD cookie, we
need to pass back information for the PCI controller to configure its
interrupt correctly. For this, add another establish routine into the
FDT-based interrupt API which looks up msi-controller nodes and calls
their MSI-specific establish function if requested.
ok kettenis@
|
|
|
|
| |
From Mathieu <naabed at poolp.org>, ok visa@
|
|
|
|
| |
ok jsg@
|
|
|
|
|
|
| |
It doesn't compile und hasn't been working during the last decade.
ok kettenis@, deraadt@
|
|
|
|
|
|
|
| |
like we do on macppc and sparc64. This makes our kernel recognize all the
memory on the Odroid XU4.
ok jsg@
|
| |
|
|
|
|
| |
ok kettenis@ deraadt@
|
|
|
|
|
|
| |
locking code.
ok kettenis@
|
|
|
|
|
| |
ISA and PIO don't really fit in the ARM landscape. Suggested by patrick@
and kettenis@, ok deraadt@
|
|
|
|
| |
ok deraadt@
|
|
|
|
|
|
|
| |
This will be helpful for interrupt combiner that need to re-establish
their main interrupt when their interrupt priorities change.
ok kettenis@
|
|
|
|
|
|
|
|
|
|
| |
establish interrupts before their interrupt controller attaches, solving
dependency problems in various device trees.
Also add support for handing interrupt handlers over to parent interrupt
controllers.
ok jsg@ patrick@ (on an earlier diff)
|
|
|
|
|
|
|
|
|
|
| |
don't need to know where to attach to. Instead the API will take care
of finding the correct interrupt establish for a given device node and
will call it with the correct data.
Adapted from the OFW GPIO framework.
ok kettenis@
|
|
|
|
| |
ok deraadt@
|
| |
|
|
|
|
|
|
|
| |
topology based on device tree information. Introduce a common attach
args structure to be used for all fdt-capable bus devices.
ok jsg@ kettenis@
|
|
|
|
| |
ok kettenis@
|
|
|
|
| |
kernels and we no longer have any.
|
| |
|
|
|
|
|
|
|
| |
segment if u-boot reports it. Needed for the utilite where u-boot
reports two 1GB segments of physical memory.
From Patrick Wildt in bitrig with some additional sanity checks added.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
addressable virtual memory space but arm ports were using a value of
0xffffffff for this.
Instead of using a shared VM_MAX_KERNEL_ADDRESS define add md
VM_KERNEL_SPACE_SIZE defines based on the KERNEL_VM_SIZE values
from the respective machdep.c files.
djm's novena was hitting "panic: bufinit: can't reserve VM for buffers"
without a similiar change.
ok miod@
|
|
|
|
| |
ok jasper@, patrick@
|
| |
|
|
ridiculous. This is the first step for a common and generic ARM port
for ARMv7 SoCs.
|