https://github.com/torvalds/linux
Revision 4df1638cfaf9b2b7ad993979a41965acab9cd156 authored by Steven Rostedt on 19 February 2014, 18:53:35 UTC, committed by Thomas Gleixner on 21 February 2014, 20:27:09 UTC
While debugging the crash with the bad nr_running accounting, I hit
another bug where, after running my sched deadline test, I was getting
failures to take a CPU offline. It was giving me a -EBUSY error.

Adding a bunch of trace_printk()s around, I found that the cpu
notifier that called sched_cpu_inactive() was returning a failure. The
overflow value was coming up negative?

Talking this over with Juri, the problem is that the total_bw update was
suppose to be made by dl_overflow() which, during my tests, seemed to
not be called. Adding more trace_printk()s, it wasn't that it wasn't
called, but it exited out right away with the check of new_bw being
equal to p->dl.dl_bw. The new_bw calculates the ratio between period and
runtime. The bug is that if you set a deadline, you do not need to set
a period if you plan on the period being equal to the deadline. That
is, if period is zero and deadline is not, then the system call should
set the period to be equal to the deadline. This is done elsewhere in
the code.

The fix is easy, check if period is set, and if it is not, then use the
deadline.

Cc: Juri Lelli <juri.lelli@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20140219135335.7e74abd4@gandalf.local.home
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
1 parent 3d5f35b
History
Tip revision: 4df1638cfaf9b2b7ad993979a41965acab9cd156 authored by Steven Rostedt on 19 February 2014, 18:53:35 UTC
sched/deadline: Fix overflow to handle period==0 and deadline!=0
Tip revision: 4df1638
File Mode Size
basic
coccinelle
dtc
genksyms
kconfig
ksymoops
mod
package
rt-tester
selinux
tracing
.gitignore -rw-r--r-- 122 bytes
Kbuild.include -rw-r--r-- 10.1 KB
Lindent -rwxr-xr-x 460 bytes
Makefile -rw-r--r-- 1.4 KB
Makefile.asm-generic -rw-r--r-- 684 bytes
Makefile.build -rw-r--r-- 15.1 KB
Makefile.clean -rw-r--r-- 3.2 KB
Makefile.fwinst -rw-r--r-- 2.0 KB
Makefile.headersinst -rw-r--r-- 4.7 KB
Makefile.help -rw-r--r-- 68 bytes
Makefile.host -rw-r--r-- 6.5 KB
Makefile.lib -rw-r--r-- 13.4 KB
Makefile.modbuiltin -rw-r--r-- 1.8 KB
Makefile.modinst -rw-r--r-- 1.2 KB
Makefile.modpost -rw-r--r-- 5.2 KB
Makefile.modsign -rw-r--r-- 1003 bytes
analyze_suspend.py -rwxr-xr-x 47.9 KB
asn1_compiler.c -rw-r--r-- 33.8 KB
bin2c.c -rw-r--r-- 702 bytes
bloat-o-meter -rwxr-xr-x 1.8 KB
bootgraph.pl -rw-r--r-- 5.6 KB
checkincludes.pl -rwxr-xr-x 1.8 KB
checkkconfigsymbols.sh -rwxr-xr-x 1.8 KB
checkpatch.pl -rwxr-xr-x 126.2 KB
checkstack.pl -rwxr-xr-x 5.3 KB
checksyscalls.sh -rwxr-xr-x 5.5 KB
checkversion.pl -rwxr-xr-x 1.9 KB
cleanfile -rwxr-xr-x 3.4 KB
cleanpatch -rwxr-xr-x 5.0 KB
coccicheck -rwxr-xr-x 4.6 KB
config -rwxr-xr-x 4.5 KB
conmakehash.c -rw-r--r-- 6.0 KB
decodecode -rwxr-xr-x 2.1 KB
depmod.sh -rwxr-xr-x 1.7 KB
diffconfig -rwxr-xr-x 3.7 KB
docproc.c -rw-r--r-- 14.2 KB
export_report.pl -rw-r--r-- 4.5 KB
extract-ikconfig -rwxr-xr-x 1.6 KB
extract-vmlinux -rwxr-xr-x 1.6 KB
gcc-goto.sh -rw-r--r-- 495 bytes
gcc-version.sh -rw-r--r-- 822 bytes
gcc-x86_32-has-stack-protector.sh -rw-r--r-- 184 bytes
gcc-x86_64-has-stack-protector.sh -rw-r--r-- 200 bytes
gen_initramfs_list.sh -rw-r--r-- 7.9 KB
get_maintainer.pl -rwxr-xr-x 56.8 KB
gfp-translate -rwxr-xr-x 1.7 KB
headerdep.pl -rwxr-xr-x 3.5 KB
headers.sh -rwxr-xr-x 530 bytes
headers_check.pl -rw-r--r-- 3.6 KB
headers_install.sh -rw-r--r-- 1.3 KB
kallsyms.c -rw-r--r-- 15.8 KB
kernel-doc -rwxr-xr-x 71.6 KB
link-vmlinux.sh -rw-r--r-- 5.6 KB
makelst -rwxr-xr-x 773 bytes
markup_oops.pl -rw-r--r-- 8.1 KB
mkcompile_h -rwxr-xr-x 2.5 KB
mkmakefile -rw-r--r-- 1.2 KB
mksysmap -rw-r--r-- 1.3 KB
mkuboot.sh -rwxr-xr-x 379 bytes
mkversion -rw-r--r-- 74 bytes
module-common.lds -rw-r--r-- 737 bytes
namespace.pl -rwxr-xr-x 13.0 KB
patch-kernel -rwxr-xr-x 9.9 KB
pnmtologo.c -rw-r--r-- 11.9 KB
profile2linkerlist.pl -rw-r--r-- 375 bytes
recordmcount.c -rw-r--r-- 12.4 KB
recordmcount.h -rw-r--r-- 16.3 KB
recordmcount.pl -rwxr-xr-x 17.7 KB
setlocalversion -rwxr-xr-x 3.9 KB
show_delta -rwxr-xr-x 3.0 KB
sign-file -rwxr-xr-x 12.2 KB
sortextable.c -rw-r--r-- 7.5 KB
sortextable.h -rw-r--r-- 5.5 KB
tags.sh -rwxr-xr-x 9.5 KB
unifdef.c -rw-r--r-- 34.8 KB
ver_linux -rwxr-xr-x 3.1 KB
xz_wrap.sh -rw-r--r-- 562 bytes

back to top