aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
* | Check for overlow in budget dercement methodChristopher Kenna2010-11-29
| |
* | Use lt_after instead of comparing times directlyChristopher Kenna2010-11-29
| |
* | Make hrt_server a member of cpu_entryChristopher Kenna2010-11-29
| |
* | Fix refill timers.Christopher Kenna2010-11-29
| | | | | | | | | | The refill timers now fire on the proper CPU with the help of the hrtimer_start_on() function and friends.
* | Changed the way timing works and locking.Christopher Kenna2010-11-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Just lock the EDF lock in schedule instead of trying to be complex. The old code did not work correctly because of CPU linking. Further, the timers now work so that one fires if the current HRT task would over-run the HRT server budget or if the HRT server would reach its deadline. Unsure if using the correct way to have rescheduling happen, or if these timers even work (need testing). Also, do we cancel the timer and decrement the budget in all the right places? The timers for refilling server budgets are only half working (they only seem to fire on one CPU for one timer after a while).
* | Added a flag to be raised when an HRT task needs to be blocked.Jonathan Herman2010-11-27
| |
* | Added code to handle HRT and SRT tasks. Fixed define in litmus.HJonathan Herman2010-11-27
| |
* | Merge branch 'wip-edf-hsb' of ↵Jonathan Herman2010-11-24
|\ \ | | | | | | | | | ssh://cvs.cs.unc.edu/cvs/proj/litmus/repo/litmus2010 into wip-edf-hsb
| * | Plugin now treats all real time tasks as SRT and schedules them with EDF.Jonathan Herman2010-11-22
| | |
| * | remove complex initialization, add possible race conditionsChristopher Kenna2010-11-22
| | | | | | | | | | | | | | | | | | Removed the complex initilization procedure by removing the is_initialized atomic type. However, this introduces a slight chance that we might activate the plugin with invalid parameters.
| * | proc: clean up the string parsing: use fewer macrosChristopher Kenna2010-11-22
| | |
| * | Modifications to proc and initializationChristopher Kenna2010-11-22
| | | | | | | | | | | | | | | | | | The proc file HRT server parameters now configure all CPUs at once, and the scheduler has an is_initialized macro that atomically checks if all HRT servers are setup.
| * | Very early implementation of /proc interfaceChristopher Kenna2010-11-22
| |/ | | | | | | | | Implemented a very rudimentary proc interface to set HRT server parameters for different CPUs.
| * 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.
* | Plugin now treats all real time tasks as SRT and schedules them with EDF.Jonathan Herman2010-11-22
| |
* | remove complex initialization, add possible race conditionsChristopher Kenna2010-11-22
| | | | | | | | | | | | Removed the complex initilization procedure by removing the is_initialized atomic type. However, this introduces a slight chance that we might activate the plugin with invalid parameters.
* | proc: clean up the string parsing: use fewer macrosChristopher Kenna2010-11-22
| |
* | Modifications to proc and initializationChristopher Kenna2010-11-22
| | | | | | | | | | | | The proc file HRT server parameters now configure all CPUs at once, and the scheduler has an is_initialized macro that atomically checks if all HRT servers are setup.
* | Very early implementation of /proc interfaceChristopher Kenna2010-11-22
|/ | | | | Implemented a very rudimentary proc interface to set HRT server parameters for different CPUs.
* 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.
* Improve help message for TRACE() bufferBjoern B. Brandenburg2010-11-16
| | | | | It's not being allocated per cpu anymore. Further, provide a hint to the user where to find the data in userspace.
* Make TRACE() buffer size configurableBjoern B. Brandenburg2010-11-16
| | | | | | | | | | | Let the user choose an appropriate buffer size (instead of scaling with NR_CPUS). The kfifo api requires the buffer to be a power of two, so enforce this constraint in the configuration. This fixes a previously-existing compile-time error for values of NR_CPU that are not a power of two. Based on a patch by Mac Mollison <mollison@cs.unc.edu>.
* Workaround: do not set rq->skip_clock_updateBjoern B. Brandenburg2010-11-11
| | | | | | | | | | | | | Disabling the clock update seems to be causing problems even in normal Linux, and causes major bugs under LITMUS^RT. As a workaround, just disable this "optimization" for now. Details: the idle load balancer causes tasks that suspsend to be marked with set_tsk_need_resched(). When such a task resumes, it may wrongly trigger the setting of skip_clock_update. However, a corresponding rescheduling event may not happen immediately, such that the currently-scheduled task is no longer charged for its execution time.
* Remove LITMUS^RT TRACE_BUG_ON macroBjoern B. Brandenburg2010-11-11
| | | | | | Linux now has a macro of the same name, which causes namespace collisions. Since our version is only being used in two places that haven't triggered in several years, let's just remove it.
* Avoid warning on 64bit buildsBjoern B. Brandenburg2010-11-11
| | | | | The specifier %u doesn't match sizeof() if sizeof() returns a 64bit quantity on x86_64. Always cast it to int to avoid the warning.
* Cleanup TRACE() implementationBjoern B. Brandenburg2010-11-11
| | | | | | | | | | | | | | Since the intial rebased from .24 to .32, the TRACE() implementation was a hybrid between our old ringbuffer implementation and the new generic kfifo API. This was a) ugly and b) not save for TRACE() invoctations during early boot. This patch rips out the old parts and replaces the actual buffer with a static kfifo. This also increases TRACE() buffer size considerably. As we avoid a dynamic allocation, this a larger size is less problematic for debug builds. This helps a bit with holes in the debug log if the buffer-flushing task is starved.
* Hook up LITMUS^RT remote preemption support on ARMBjoern B. Brandenburg2010-11-11
| | | | Call into scheduler state machine in the IPI handler.
* Hook up LITMUS^RT remote preemption support on x86Bjoern B. Brandenburg2010-11-11
| | | | Call into scheduler state machine in the IPI handler.
* Implement proper remote preemption supportBjoern B. Brandenburg2010-11-11
| | | | | | | | | | | | To date, Litmus has just hooked into the smp_send_reschedule() IPI handler and marked tasks as having to reschedule to implement remote preemptions. This was never particularly clean, but so far we got away with it. However, changes in the underlying Linux, and peculartities of the ARM code (interrupts enabled before context switch) break this naive approach. This patch introduces new state-machine based remote preemption support. By examining the local state before calling set_tsk_need_resched(), we avoid confusing the underlying Linux scheduler. Further, this patch avoids sending unncessary IPIs.
* hook litmus tick function into hrtimer-driven ticksBjoern B. Brandenburg2010-11-11
| | | | | Litmus plugins should also be activated if ticks are triggered by hrtimer.
* Split out TRACE() from litmus.h and cleanup some includesBjoern B. Brandenburg2010-11-11
| | | | | | | | | | The TRACE() functionality doesn't need all of litmus.h. Currently, it's impossible to use TRACE() in sched.h due to a circular dependency. This patch moves TRACE() and friends to litmus/sched_debug.h, which can be included in sched.h. While at it, also fix some minor include ugliness that was revealed by this change.
* sched_trace: make buffer size configurableBjoern B. Brandenburg2010-11-11
| | | | | Large sched_trace buffers cause boot problems on the ARM box. Allow the user to specify smaller buffers.
* ARM: hookup LITMUS^RT system callsBjoern B. Brandenburg2010-11-11
| | | | | Includes the LITMUS^RT-specifc unistd.h extension and modifies the actual syscall table.
* ARM: Include LITMUS^RT KConfigBjoern B. Brandenburg2010-11-11
| | | | Make the ARM built aware of the LITMUS^RT-specific options.
* ARM: provide get_cycles() for RealView PB11{MP,76} and Cortex-A8Bjoern B. Brandenburg2010-11-11
| | | | | Use the CCNT register to override the default get_cycles() implementation in arch/arm/asm/timex.h. This is useful for overhead measurements and debugging.
* ARM: allow mach/timex.h to define get_cycles()Bjoern B. Brandenburg2010-11-11
| | | | | | Some platforms have access to a cycle coutner (CCNT) register in the CP15 coprocessor. This trivial change will allow such platforms to provide specialized implementations.
* C-EDF: move /proc/litmus/cluster_cache to /proc/litmus/plugins/C-EDF/clusterBjoern B. Brandenburg2010-11-11
| | | | | | | Make use of the new per-plugin proc file infrastructure to avoid littering the global namespace. While at it, also move all the relevant bits to sched_cedf.c. In the future, each plugin's parameters should be handled in the respective plugin file.
* Litmus core: refactor the implementation of /procChristopher Kenna2010-10-23
|
* Litmus core: per-plugin proc directoriesChristopher Kenna2010-10-23
| | | | | | Change the Litmus proc layout so that loaded plugins are visible in /proc/litmus/plugins/loaded and add Litmus functions make_plugin_proc_dir() and remove_plugin_proc_dir() to add per-plugin proc directories.
* Merge commit 'v2.6.36' into wip-merge-2.6.36Andrea Bastoni2010-10-23
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile arch/x86/include/asm/unistd_32.h arch/x86/kernel/syscall_table_32.S kernel/sched.c kernel/time/tick-sched.c Relevant API and functions changes (solved in this commit): - (API) .enqueue_task() (enqueue_task_litmus), dequeue_task() (dequeue_task_litmus), [litmus/sched_litmus.c] - (API) .select_task_rq() (select_task_rq_litmus) [litmus/sched_litmus.c] - (API) sysrq_dump_trace_buffer() and sysrq_handle_kill_rt_tasks() [litmus/sched_trace.c] - struct kfifo internal buffer name changed (buffer -> buf) [litmus/sched_trace.c] - add_wait_queue_exclusive_locked -> __add_wait_queue_tail_exclusive [litmus/fmlp.c] - syscall numbers for both x86_32 and x86_64
| * Linux 2.6.36v2.6.36Linus Torvalds2010-10-20
| |
| * Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linusLinus Torvalds2010-10-20
| |\ | | | | | | | | | | | | | | | | | | | | | | | | * 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus: MIPS: O32 compat/N32: Fix to use compat syscall wrappers for AIO syscalls. MAINTAINERS: Change list for ioc_serial to linux-serial. SERIAL: ioc3_serial: Return -ENOMEM on memory allocation failure MIPS: jz4740: Fix Kbuild Platform file. MIPS: Repair Kbuild make clean breakage.
| | * MIPS: O32 compat/N32: Fix to use compat syscall wrappers for AIO syscalls.Michel Thebeau2010-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [Ralf: Michel's original patch only fixed N32; I replicated the same fix for O32.] Signed-off-by: Michel Thebeau <michel.thebeau@windriver.com> Cc: paul.gortmaker@windriver.com Cc: bruce.ashfield@windriver.com Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| | * MAINTAINERS: Change list for ioc_serial to linux-serial.Ralf Baechle2010-10-19
| | | | | | | | | | | | | | | | | | | | | | | | IOC3 is also being used on SGI MIPS systems but this particular driver is only being used on IA64 systems so linux-mips made no sense as a list. Pat also thinks linux-serial@vger.kernel.org is the better list. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| | * SERIAL: ioc3_serial: Return -ENOMEM on memory allocation failureJulia Lawall2010-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this code, 0 is returned on memory allocation failure, even though other failures return -ENOMEM or other similar values. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression ret; expression x,e1,e2,e3; @@ ret = 0 ... when != ret = e1 *x = \(kmalloc\|kcalloc\|kzalloc\)(...) ... when != ret = e2 if (x == NULL) { ... when != ret = e3 return ret; } // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> To: Pat Gefre <pfg@sgi.com> Cc: kernel-janitors@vger.kernel.org Cc: linux-ia64@vger.kernel.org Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/1704/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| | * MIPS: jz4740: Fix Kbuild Platform file.David Daney2010-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The platform specific files should be included via the platform-y variable. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Cc: Lars-Peter Clausen <lars@metafoo.de> Patchwork: https://patchwork.linux-mips.org/patch/1719/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| | * MIPS: Repair Kbuild make clean breakage.David Daney2010-10-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When running make clean, Kbuild doesn't process the .config file, so nothing generates a platform-y variable. We can get it to descend into the platform directories by setting $(obj-). The dec Platform file was unconditionally setting platform-, obliterating its previous contents and preventing some directories from being cleaned. This is change to an append operation '+=' to allow cavium-octeon to be cleaned. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Cc: Sam Ravnborg <sam@ravnborg.org> Patchwork: https://patchwork.linux-mips.org/patch/1718/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
| * | virtio: console: Don't block entire guest if host doesn't read dataAmit Shah2010-10-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the host is slow in reading data or doesn't read data at all, blocking write calls not only blocked the program that called write() but the entire guest itself. To overcome this, let's not block till the host signals it has given back the virtio ring element we passed it. Instead, send the buffer to the host and return to userspace. This operation then becomes similar to how non-blocking writes work, so let's use the existing code for this path as well. This code change also ensures blocking write calls do get blocked if there's not enough room in the virtio ring as well as they don't return -EAGAIN to userspace. Signed-off-by: Amit Shah <amit.shah@redhat.com> Acked-by: Hans de Goede <hdegoede@redhat.com> CC: stable@kernel.org Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| * | Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6Linus Torvalds2010-10-20
| |\ \ | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: [SCSI] bsg: fix incorrect device_status value [SCSI] Fix VPD inquiry page wrapper