| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
| |
Conflicts:
include/litmus/color.h
Signed-off-by: Christopher Kenna <cjk@cs.unc.edu>
|
|
|
|
| |
Signed-off-by: Christopher Kenna <cjk@cs.unc.edu>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While working on an ODROID-X (Samsung Exynos4412 ARM Cortex-A9), I
experienced non-determinism when reading and writing values to the
LITMUS^RT control page. Writes to the control page from user- (kernel-)
space where not always reflected in kernel- (user-) space.
Neither restricting the task to run on a single CPU nor inserting
general memory barriers (with mb()) fixed the problem. Mapping the
control page as uncachable in both kernel and user space did fix the
problem, which is what this patch does.
Also, since vunmap() cannot be called from an interrupt context, I had
to add a workqueue that unmaps and frees the control page when it is no
longer needed. (On my system, exit_litmus() was called from interrupt
context while the kernel reaped the task_struct.)
Conflicts:
include/litmus/rt_param.h
litmus/litmus.c
Does not make the color control page uncachable yet!
Signed-off-by: Christopher Kenna <cjk@cs.unc.edu>
|
|
|
|
|
|
|
|
|
| |
By default, even private writable pages are mapped
with the RW bit disabled in the PTE. This causes a
"minor" page fault when the page is first written
to. To avoid this, make sure that vm_inert_page()
uses the proper page protection bits and mark the
VMA as VM_IO to keep the rest of the VM code out.
|
|
|
|
|
| |
Page faults should not happen here. Scream if they do anyway. This is
useful when extending the control page.
|
|
|
|
|
|
| |
vm_insert_page() is the simpler and preferred interface for remapping
individual pages and includes additional error checks. It suffices for
our purposes, so let's use it instead.
|
|
|
|
|
|
|
|
|
| |
This patch changes sched_trace.c to use the miscdevice API
instead of doing all the cdev management ourselves. This remove a
chunk of code and we get sysfs / udev integration for free.
On systems with default udev rules, this will result in a /dev/litmus/log
device being created automatically.
|
|
This device only supports mmap()'ing a single page.
This page is shared RW between the kernel and userspace.
It is inteded to allow near-zero-overhead communication
between the kernel and userspace. It's first use will be a
proper implementation of user-signaled
non-preemptable section support.
|