Commit Graph

271410 Commits

Author SHA1 Message Date
Imre Deak
1a2d35126f wait: fix false timeouts when using wait_event_timeout()
commit 4c663cfc52 upstream.

Many callers of the wait_event_timeout() and
wait_event_interruptible_timeout() expect that the return value will be
positive if the specified condition becomes true before the timeout
elapses.  However, at the moment this isn't guaranteed.  If the wake-up
handler is delayed enough, the time remaining until timeout will be
calculated as 0 - and passed back as a return value - even if the
condition became true before the timeout has passed.

Fix this by returning at least 1 if the condition becomes true.  This
semantic is in line with what wait_for_condition_timeout() does; see
commit bb10ed09 ("sched: fix wait_for_completion_timeout() spurious
failure under heavy load").

Daniel said "We have 3 instances of this bug in drm/i915.  One case even
where we switch between the interruptible and not interruptible
wait_event_timeout variants, foolishly presuming they have the same
semantics.  I very much like this."

One such bug is reported at
  https://bugs.freedesktop.org/show_bug.cgi?id=64133

Signed-off-by: Imre Deak <imre.deak@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: David Howells <dhowells@redhat.com>
Acked-by: Jens Axboe <axboe@kernel.dk>
Cc: "Paul E.  McKenney" <paulmck@linux.vnet.ibm.com>
Cc: Dave Jones <davej@redhat.com>
Cc: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-07-19 11:04:30 +08:00
OGAWA Hirofumi
527f375c0b fat: fix possible overflow for fat_clusters
commit 7b92d03c32 upstream.

Intermediate value of fat_clusters can be overflowed on 32bits arch.

Reported-by: Krzysztof Strasburger <strasbur@chkw386.ch.pwr.wroc.pl>
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-07-19 09:50:08 +08:00
Alan Stern
71ddb98dfa NLS: improve UTF8 -> UTF16 string conversion routine
commit 0720a06a75 upstream.

The utf8s_to_utf16s conversion routine needs to be improved.  Unlike
its utf16s_to_utf8s sibling, it doesn't accept arguments specifying
the maximum length of the output buffer or the endianness of its
16-bit output.

This patch (as1501) adds the two missing arguments, and adjusts the
only two places in the kernel where the function is called.  A
follow-on patch will add a third caller that does utilize the new
capabilities.

The two conversion routines are still annoyingly inconsistent in the
way they handle invalid byte combinations.  But that's a subject for a
different patch.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-07-19 09:49:57 +08:00
黄涛
938ad49aa5 rk: cpu.c support rk3026 2013-07-18 19:38:28 +08:00
ZHW
56bd854a9a lvds:support rk3028a_lvds,config:"RK3028a_LVDS" 2013-07-18 17:58:08 +08:00
chenxing
5a29d9bf65 rk2928: add aclk_vio_pre src_sel; fix peri_clk realc func, uart1 sel_con 2013-07-18 14:43:09 +08:00
xhc
addaac5ef1 rk616: Set rk616 config i2s on DMA event mode to static mode 2013-07-18 12:57:01 +08:00
chenxing
3c9d986eef rk3026: format clock_data.c 2013-07-18 12:31:07 +08:00
kfx
12cc0fc4a9 rk3026: 'rk3026 top board' && 'rk3028a top board' support 2013-07-18 11:59:37 +08:00
kfx
0f08180863 sdmmc: fixed compile error 2013-07-18 11:37:37 +08:00
chenxing
27b62b9917 rk3026: add clock_data support 2013-07-18 10:32:09 +08:00
黄涛
30af6f70b9 rk2928: gpio.h add RK30 define 2013-07-17 19:03:37 +08:00
黄涛
1bedeca093 rk: Kconfig add RK3026 support 2013-07-17 12:57:28 +08:00
张晴
0264dfee4e rk31:rt5025:modify rt5025 defult voltage 2013-07-16 20:51:00 +08:00
yxj
1802f53782 board rk3188m tb:set max cpu frequency to 1296 MHZ 2013-07-16 17:37:53 +08:00
邱建斌
67cc50eb99 spdif: spdif use dma static mode 2013-07-16 16:16:49 +08:00
kfx
06ae80f613 iomux: Uniform Naming: I2S0_MCLK && I2S0_LRCKRX 2013-07-16 10:29:49 +08:00
黄涛
f3cea814bf ARM: RK: add initial support for RK3026 2013-07-15 18:08:00 +08:00
cym
81ad528222 RK3188T:1)fix ddr change frequency bug for RK3188T
2)fix LPDDR2 burst length set bug
2013-07-12 15:57:55 +08:00
chenxing
f75b8858cd rk3188: fix ddr pll do not update status 2013-07-12 15:48:36 +08:00
chenxing
c536c367cb rk: add function to get dvfs table range 2013-07-12 15:48:36 +08:00
xuhuicong
247368a8b0 rk616 hdmi: default vif 12M rebuild 2013-07-12 15:16:28 +08:00
xuhuicong
5ee8b53459 rk616 hdmi: modify some time edid read err and delete some no necessary log 2013-07-12 15:14:29 +08:00
chenxing
d324dea3ad rk: support resume rate when disable limit after enable multiple 2013-07-12 14:43:55 +08:00
黄涛
22e6221d73 rk: gpio.h: make gpio irq num same as gpio num 2013-07-12 14:17:14 +08:00
hjc
a48b48eef7 rk3168m: modify defconfig for new ic 2013-07-12 11:16:01 +08:00
chenxing
1bb0806ff6 rk3066: fix compile warning 2013-07-12 11:04:50 +08:00
chenxing
d0d8ba8ef2 rk3066: fix i2s frac div do not effect 2013-07-12 11:04:49 +08:00
hwg
9636f52be0 mt5931: solve rk3188 and rk3168 compatible problem 2013-07-12 11:02:18 +08:00
xbw
71cf734496 MT6620: eliminate the warning about mt6620-gps 2013-07-12 09:30:32 +08:00
yxj
62d274681e rk fb: add read/write support 2013-07-11 15:56:22 +08:00
张晴
491dd59250 rk31:ricoh619:modify fg and charger 2013-07-11 10:13:54 +08:00
xbw
5effbc0271 MT6620: set the sdio clk to 50Mhz 2013-07-11 09:29:03 +08:00
hhb
5dcdf1703f mipi dsi: make sure that DCS sent in command mode HS is OK 2013-07-10 19:51:28 +08:00
chenxing
d7badbbbe3 rk3188: add setting rate in dump clocks 2013-07-10 18:59:39 +08:00
chenxing
2679ab0858 rk: pm_tests: do nothing after dvfs clk enable freq limit 2013-07-10 18:59:39 +08:00
chenxing
45b4451604 rk: freq limit resume when disable_limit 2013-07-10 18:59:38 +08:00
黄涛
833703ca8e rk: split cpu_axi.h 2013-07-10 16:10:53 +08:00
chenxing
fe1c8d94f2 rk3188: set new leakage level and delayline bounds to fit avdd_com shoted with vdd_arm 2013-07-10 11:04:55 +08:00
张晴
acbb8ac591 rk3028:support pmic tps65910 for rk3028 2013-07-10 10:20:50 +08:00
hjc
131c0b60ab add rk3028_86v rk3168_rk616 board and defconfig 2013-07-10 09:41:00 +08:00
yxj
06fdbd6756 rk30 lcdc:delay 30ms before disable lcdc clk 2013-07-09 16:08:13 +08:00
Subhash Jadavani
b81062c4cc mmc: block: replace __blk_end_request() with blk_end_request()
[rk emmc: read rate up to 78MB/s, write rate up to 26MB/s]

For completing any block request, MMC block driver is calling:
	spin_lock_irq(queue)
	__blk_end_request()
	spin_unlock_irq(queue)

But if we analyze the sources of latency in kernel using ftrace,
__blk_end_request() function at times may take up to 6.5ms with
spinlock held and irq disabled.

__blk_end_request() calls couple of functions and ftrace output
shows that blk_update_bidi_request() function is almost taking 6ms.
There are 2 function to end the current request: ___blk_end_request()
and blk_end_request(). Both these functions do same thing except
that blk_end_request() function doesn't take up the spinlock
while calling the blk_update_bidi_request().

This patch replaces all __blk_end_request() calls with
blk_end_request() and __blk_end_request_all() calls with
blk_end_request_all().

Testing done: 20 process concurrent read/write on sd card
and eMMC. Ran this test for almost a day on multicore system
and no errors observed.

This change is not meant for improving MMC throughput; it's basically
about becoming fair to other threads/interrupts in the system. By
holding spin lock and interrupts disabled for longer duration, we
won't allow other threads/interrupts to run at all.  Actually slight
performance degradation at file system level can be expected as we
are not holding the spin lock during blk_update_bidi_request() which
means our mmcqd thread may get preempted for other high priority
thread or any interrupt in the system.

These are performance numbers (100MB file write) with eMMC running
in DDR mode:

Without this patch:
	Name of the Test   Value   Unit
	LMDD Read Test     53.79   MBPS
	LMDD Write Test    18.86   MBPS
	IOZONE  Read Test  51.65   MBPS
	IOZONE  Write Test 24.36   MBPS

With this patch:
	Name of the Test    Value  Unit
	LMDD Read Test      52.94  MBPS
	LMDD Write Test     16.70  MBPS
	IOZONE  Read Test   52.08  MBPS
	IOZONE  Write Test  23.29  MBPS

Read numbers are fine. Write numbers are bit down (especially LMDD
write), may be because write requests normally have large transfer
size and which means there are chances that while mmcq is executing
blk_update_bidi_request(), it may get interrupted by interrupts or
other high priority thread.

Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Reviewed-by: Namjae Jeon <linkinjeon@gmail.com>
Signed-off-by: Chris Ball <cjb@laptop.org>

Conflicts:
	drivers/mmc/card/block.c
2013-07-09 15:08:16 +08:00
黄涛
b0addf30d0 rk2928: tb: fix defconfig for lvds rename 2013-07-09 14:41:50 +08:00
黄涛
29e180c979 rk2928: fix lvds support, rename from rk_lvds 2013-07-09 14:41:49 +08:00
ZHW
84115ec457 rk_fb:fix CONFIG_DONE in rk_fb_disp_scaler 2013-07-09 14:36:20 +08:00
hhb
57cce20018 mipi dsi: fix compile error of rk616_mipi_dsi.c 2013-07-09 11:47:06 +08:00
hhb
4d3405ed76 mipi dsi: dcs commmand sent by command mode in HS mode 2013-07-09 11:38:44 +08:00
邱建斌
bc07a28a70 rt5631: support sample rate up to 192khz
RT5631_VERSION "0.01 alsa 1.0.25"
2013-07-09 11:38:02 +08:00
黄涛
f59786a58d rk30: replace RK30_GICD_BASE with GIC_DIST_BASE, RK30_GICC_BASE with GIC_CPU_BASE 2013-07-09 11:35:59 +08:00