aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
| * Feather-Trace: start with the largest permissible rangeBjoern B. Brandenburg2011-11-24
| | | | | | | | MAX_ORDER is 11, but this is about number of records, not number of pages.
| * bugfix: add processors in order of increasing indices to clustersBjoern B. Brandenburg2011-11-24
| | | | | | | | | | Pfair expects to look at processors in order of increasing index. Without this patch, Pfair could deadlock in certain situations.
| * Pfair: improve robustness of suspensionsBjoern B. Brandenburg2011-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes two crash or hang bugs related to suspensions in Pfair. 1) When a job was not present at the end of its last subtask, then its linked_on field was not cleared. This confused the scheduler when it later resumed. Fix: clear the field. 2) Just testing for linked_on == NO_CPU is insufficient in the wake_up path to determine whether a task should be added to the ready queue. If the task remained linked and then was "preempted" at a later quantum boundary, then it already is in the ready queue and nothing is required. Fix: encode need to requeue in task_rt(t)->flags.
| * Add option to turn off preemption state tracingBjoern B. Brandenburg2011-11-24
| | | | | | | | | | | | Preemption state tracing is only useful when debugging preemption- and IPI-related races. Since it creates a lot of clutter in the logs, this patch turns it off unless explicitly requested.
| * Add unlikely() to rel master check (match pfair).Glenn Elliott2011-11-02
| |
| * bugfix: release master CPU must signal task was pickedBjoern B. Brandenburg2011-11-02
| |
| * Pfair: various fixes concerning release timersBjoern B. Brandenburg2011-08-27
| |
| * Pfair: add support for true sporadic releasesBjoern B. Brandenburg2011-08-27
| | | | | | | | | | | | This patch also converts Pfair to implement early releasing such that no timer wheel is required anymore. This removes the need for a maximum period restriction.
| * Pfair: add release master support.Bjoern B. Brandenburg2011-08-27
| | | | | | | | | | Merged in release master support for Pfair. Some merge conflicts had to be resolved.
| * C-EDF: Make migration affinity work with Release MasterGlenn Elliott2011-08-27
| | | | | | | | | | | | | | | | | | | | Needed to update C-EDF to handle release master. Also updated get_nearest_available_cpu() to take NO_CPU instead of -1 to indicate that there is no release master. While NO_CPU is 0xffffffff (-1 in two's complement), we still translate this value to -1 in case NO_CPU changes. Signed-off-by: Andrea Bastoni <bastoni@cs.unc.edu>
| * C-EDF: add release master supportBjoern B. Brandenburg2011-08-27
| | | | | | | | As with GSN-EDF, do not insert release master into CPU heap.
| * PSN-EDF: add release master supportBjoern B. Brandenburg2011-08-27
| | | | | | | | We can give up a processor under partitioning, too.
| * COMMENT: Correct comment on precise budget enforcementGlenn Elliott2011-08-27
| | | | | | | | | | Original comment said that this feature wasn't supported, though it has been since around October 2010.
| * Avoid needlessly costly migrations. CONFIG_SCHED_CPU_AFFINITYGlenn Elliott2011-08-27
| | | | | | | | | | | | | | | | | | | | | | | | | | Given a choice between several available CPUs (unlinked) on which to schedule a task, let the scheduler select the CPU closest to where that task was previously scheduled. Hopefully, this will reduce cache migration penalties. Notes: SCHED_CPU_AFFINITY is dependent upon x86 (only x86 is supported at this time). Also PFair/PD^2 does not make use of this feature. Signed-off-by: Andrea Bastoni <bastoni@cs.unc.edu>
| * Prevent Linux to send IPI and queue tasks on remote CPUs.Andrea Bastoni2011-08-27
| | | | | | | | | | | | Whether to send IPIs and enqueue tasks on remote runqueues is plugin-specific. The recent ttwu_queue() mechanism (by calling ttwu_queue_remote()) interferes with Litmus plugin decisions.
| * Update PULL_TIMERS_VECTOR numberAndrea Bastoni2011-08-27
| | | | | | | | | | | | From 2.6.39 the "0xee" vector number that we used for pull_timers low-level management is is use by invalidate_tlb_X interrupts. Move the pull_timers vector below the max size of invalidate_tlb.
| * Fix prototype mismatching and synch syscall numbersAndrea Bastoni2011-08-27
| | | | | | | | | | | | * Update prototypes for switched_to(), prio_changed(), select_task_rq(). * Fix missing pid field in printk output. * Synchronize syscall numbers for arm and x86.
| * Merge 'Linux v3.0' into LitmusAndrea Bastoni2011-08-27
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some notes: * Litmus^RT scheduling class is the topmost scheduling class (above stop_sched_class). * scheduler_ipi() function (e.g., in smp_reschedule_interrupt()) may increase IPI latencies. * Added path into schedule() to quickly re-evaluate scheduling decision without becoming preemptive again. This used to be a standard path before the removal of BKL. Conflicts: Makefile arch/arm/kernel/calls.S arch/arm/kernel/smp.c arch/x86/include/asm/unistd_32.h arch/x86/kernel/smp.c arch/x86/kernel/syscall_table_32.S include/linux/hrtimer.h kernel/printk.c kernel/sched.c kernel/sched_fair.c
| * | LITMUS Core: Check for valid class in RT-param syscall.Christopher Kenna2011-04-20
| | |
| * | bugfix: release master CPU must signal task was pickedBjoern B. Brandenburg2011-04-12
| | | | | | | | | | | | | | | Otherwise, the release master CPU may try to reschedule in an infinite loop.
| * | Improve FMLP queue management.Glenn Elliott2011-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The next owner of a FMLP-protected resource is dequeued from the FMLP FIFO queue by unlock() (when the resource is freed by the previous owner) instead of performing the dequeue by the next owner immediately after it has been woken up. This simplifies the code a little bit and also reduces potential spinlock contention.
| * | Pfair: remove sporadic_release flagBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | Instead of having an extra flag, Pfair should just infer sporadic release based on deadlines like other plugins, too.
| * | Pfair: support clustered schedulingBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | | | | | | | Just like C-EDF is a global scheduler that is split across several clusters, Pfair can be applied on a per-cluster basis. This patch changes the Pfair implementation to enable clustering based on the recently added generic clustering support.
| * | Litmus core: add generic clustering supportBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | Inspired by the existing C-EDF code, this generic version will build clusters of CPUs based on a given cache level.
| * | Litmus core: extract userspace interface from C-EDFBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | Make the cluster size configuration in C-EDF generic so that it can be used by other clustered schedulers.
| * | Feather-Trace: rename locking trace pointsBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | Since we don't expect to trace more than one lock type at a time, having protocol-specific trace points is not required.
| * | fdso: pass userpsace config argument to object constructorBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As Glenn pointed out, it is useful for some protocols (e.g., k-exclusion protocols) to know the userspace configuration at object creation time. This patch changes the fdso API to pass the parameter to the object constructor, which is then in turn passed to the lock allocater. The return code from the lock allocater is passed to userspace in return. This also fixes some null pointer dereferences in the FDSO code found by the test suite in liblitmus.
| * | GSN-EDF: re-implement FMLP supportBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | This introduces the global FMLP based on the generic locking layer.
| * | PSN-EDF: re-implement FMLP supportBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | Implement the partitioned FMLP with priority boosting based on the generic lock API.
| * | EDF: support priority boostingBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | While we are at it, simplify edf_higher_prio() a bit.
| * | FMLP: remove old implementationBjoern B. Brandenburg2011-02-01
| | |
| * | SRP: port to new generic locking APIBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | This re-enables SRP support under PSN-EDF and demonstrates how the new locking API should be used.
| * | Litmus core: replace FMLP & SRP system calls with generic syscallsBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | This renders the FMLP and SRP unfunctional until they are ported to the new locking API.
| * | Litmus core: add generic locking APIBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | Provide a unified userspace interface for plugin-specific locking protocols.
| * | Litmus core: change plugin locking interface to generic 'allocate_lock()'Bjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | As the number of supported locking protocols is expected to rise, hard-coding things like priority inheritance in the plugin interface doesn't scale. Instead, use a new generic lock-ops approach. With this approach, each plugin can define its own protocol implementation (or use a generic one), and plugins can support multiple protocols without having to change the plugin interface for each protocol.
| * | fdso: supply object type to constructor and destructor methodsBjoern B. Brandenburg2011-02-01
| | | | | | | | | | | | Passing the object type explicitly will enable generic lock constructors.
| * | Fixed is_hrt, is_srt, and is_be macros.Jonathan Herman2011-02-01
| | |
| * | Added task class to feather trace param record.Jonathan Herman2011-02-01
| | |
| * | bugfix: don't let children stay Litmus real-time tasksBjoern B. Brandenburg2011-01-30
| | | | | | | | | | | | | | | | | | | | | | | | It has always been LITMUS^RT policy that children of real-time tasks may not skip the admissions test, etc. This used to be enforced, but was apparently dropped during some port. This commit re-introduces this policy. This fixes a kernel panic that occurred when "real-time children" exited without proper initilization.
| * | Litmus core: add copy_and_chomp() helperBjoern B. Brandenburg2011-01-30
| | | | | | | | | | | | | | | | | | We read in a line from userspace and remove the trailing newline in a number of places. This function extracts the common code to avoid future duplication.
| * | Added support for tracing arbitrary actions.Jonathan Herman2011-01-26
| | |
| * | Feather-Trace: dynamic memory allocation and clean exitChristopher Kenna2011-01-12
| | | | | | | | | | | | | | | | | | This patch changes Feather-Trace to allocate memory for the minor devices dynamically, which addresses a long-standing FIXME. It also provides clean module exit and error conditions for Feather-Trace.
| * | Feather-Trace: register devices with sysfsChristopher Kenna2011-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements support for Feather-Trace devices to use the sysfs file system and, consequently, udev support. This allows us to allocate major/minor numbers for Feather-Trace devices dynamically, which is desirable because our old static allocations tend to create conflicts on modern distributions and/or when there are many cores.
| * | cleanup C-EDF cluster size configurationBjoern B. Brandenburg2011-01-05
| | | | | | | | | | | | | | | | | | | | | Refactor the code that determines the C-EDF cluster size. - Use an enum with symbolic constants instead of magic int values. - Complain and fail to switch if an unsupported cluster size is requested. - Default to ALL as suggested by Glenn and Andrea.
| * | bugfix: clear scheduled field of the correct CPU upon task_exit in C-EDFAndrea Bastoni2011-01-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | Do not use the "scheduled_on" field to address the cpus structure within a cluster. cpus may contain less items than num_online_cpus and we may cause an out-of-bound access. Instead, use "scheduled_on" to directly access the per-cpu cpu_entry_t structure. Reported-by: Jonathan Herman <hermanjl@cs.unc.edu>
| * | bugfix: avoid underflow in budget_remaining()Bjoern B. Brandenburg2010-11-29
| | | | | | | | | | | | | | | | | | | | | budget_remaining() reports incorrect values due to the operands being switched, which leads to an integer underflow. Reported-by: Chris Kenna <cjk@cs.unc.edu>
| * | bugfix: fix out-of-bound array access in cedf_activate_plugin()Andrea Bastoni2010-11-29
| | | | | | | | | | | | | | | | | | | | | Make sure to check for maximum index value when accessing cedf_domain_t array in cedf_activate_plugin(). Reported-by: Jeremy Erickson <jerickso@cs.unc.edu>
| * | add optional [function@file:line] tag to TRACE() logBjoern B. Brandenburg2010-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add information to each trace message that makes it easier to locate where it came from. It is disabled by default since this adds a lot of clutter. Example: 81281 P1 [gsnedf_schedule@litmus/sched_gsn_edf.c:406]: (rtspin/1483:1) blocks:0 out_of_time:0 np:0 sleep:1 preempt:0 state:0 sig:0 81282 P1 [job_completion@litmus/sched_gsn_edf.c:303]: (rtspin/1483:1) job_completion(). 81283 P1 [__add_release@litmus/rt_domain.c:344]: (rtspin/1483:2) add_release(), rel=41941764351 81284 P1 [gsnedf_schedule@litmus/sched_gsn_edf.c:453]: (rtspin/1483:2) scheduled_on = NO_CPU
| * | log job number in TRACE_TASK() and TRACE_CUR()Bjoern B. Brandenburg2010-11-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some problems it can be helpful to know which job of a task generated a log message. This patch changes TRACE_TASK to add :<jobno> to the existing (<comm>/<pid>) tag. The result is a trace such as the following, in which the third job of rtspin/1511 completes and the fourth job is added to the release queue. 137615 P0: (rtspin/1511:3) job_completion(). 137616 P0: (rtspin/1511:4) add_release(), rel=262013223089 137617 P0: (rtspin/1511:4) scheduled_on = NO_CPU The job number for non-real-time tasks is always zero.
| * | Bugfix: synchronize with all other CPUs before switching pluginAndrea Bastoni2010-11-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The CPU triggering the plugin switch should wait until all other CPUs are in a proper state (synch_on_plugin_switch()) before performing the actual switch. Based on the original patch from Jeremy Erickson <jerickso@cs.unc.edu>. This should solve (for most practical cases) the C-EDF-related plugin-switch problem reported on the ML.