Huayi Li [Wed, 9 Oct 2013 02:33:02 +0000 (10:33 +0800)]
pwm_backlight: avoid short blank screen while doing hibernation
Use SIMPLE_DEV_PM_OPS macro will initialize the member "freeze"
and "thaw" of pwm_backlight_pm_ops as below,
.freeze = suspend_fn,
.thaw = resume_fn,
then during the process of making hibernation snapshot, screen
will be blank at the moment of freezing, and then light at the
moment of thawing.
this is not the right user experience for suspending to disk.
so this patch drops freeze and thaw callback, make the LCD is
always lighting before the final shutdown.
Signed-off-by: Huayi Li <huayi.li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Thierry Reding [Fri, 18 Oct 2013 08:46:24 +0000 (10:46 +0200)]
pwm-backlight: Fix brightness adjustment
Split adjustment of the brightness (by changing the PWM duty cycle) from
the power on sequence. This fixes an issue where the brightness can no
longer be updated once the backlight has been enabled.
Reported-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Conflicts:
drivers/video/backlight/pwm_bl.c
Mike Dunn [Sun, 22 Sep 2013 16:59:56 +0000 (09:59 -0700)]
pwm-backlight: Allow for non-increasing brightness levels
Currently the driver assumes that the values specified in the
brightness-levels device tree property increase as they are parsed from
left to right. But boards that invert the signal between the PWM output
and the backlight will need to specify decreasing brightness-levels.
This patch removes the assumption that the last element of the array is
the maximum value, and instead searches the array for the maximum value
and uses that in the duty cycle calculation.
Signed-off-by: Mike Dunn <mikedunn@newsguy.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Thierry Reding [Fri, 30 Aug 2013 10:32:18 +0000 (12:32 +0200)]
pwm-backlight: Use new enable_gpio field
Make use of the new enable_gpio field and allow it to be set from DT as
well. Now that all legacy users of platform data have been converted to
initialize this field to an invalid value, it is safe to use the field
from the driver.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Thierry Reding [Fri, 30 Aug 2013 09:51:22 +0000 (11:51 +0200)]
pwm-backlight: Add optional enable GPIO
To support a wider variety of backlight setups, introduce an optional
enable GPIO. Legacy users of the platform data already have a means of
supporting GPIOs by using the .init(), .exit() and .notify() hooks. DT
users however cannot use those, so an alternative method is required.
In order to ease the introduction of the optional enable GPIO, make it
available in the platform data first, so that existing users can be
converted. Once that has happened a second patch will add code to make
use of it in the driver.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Thierry Reding [Wed, 2 Oct 2013 16:01:02 +0000 (18:01 +0200)]
pwm-backlight: Track enable state
Follow up patches will add support for more complex means of powering
the backlight on and off such as using a regulator. To prevent calls to
the regulator API from becoming unbalanced, keep track of the enabled
state internally.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Thierry Reding [Mon, 7 Oct 2013 09:32:02 +0000 (11:32 +0200)]
pwm-backlight: Refactor backlight power on/off
In preparation for adding an optional regulator and enable GPIO to the
driver, split the power on and power off sequences into separate
functions to reduce code duplication at the multiple call sites.
Signed-off-by: Thierry Reding <treding@nvidia.com>
Thierry Reding [Mon, 7 Oct 2013 09:30:50 +0000 (11:30 +0200)]
pwm-backlight: Improve readability
Add more blank lines to increase readability. While at it, remove a
trailing blank line at the end of the file.
Signed-off-by: Thierry Reding <treding@nvidia.com>
黄涛 [Tue, 25 Feb 2014 08:55:47 +0000 (16:55 +0800)]
pwm-backlight: reset to unpstream version
qjb [Tue, 25 Feb 2014 07:48:01 +0000 (15:48 +0800)]
i2s : add i2s clr reg check
CMY [Tue, 25 Feb 2014 07:31:10 +0000 (15:31 +0800)]
rk: ion: support shared buffer between processes without Binder
xbw [Tue, 25 Feb 2014 05:16:10 +0000 (13:16 +0800)]
SDMMC:
continuse with the commit-
9401f2e4feea8c884418f3c5821e83aee7b313b0 .
Delete those code which will never be used in the future.
xbw [Tue, 25 Feb 2014 05:09:26 +0000 (13:09 +0800)]
SDMMC: Delete those code which will never be used in the future.
xbw [Tue, 25 Feb 2014 04:59:48 +0000 (12:59 +0800)]
SDMMC: select SDcard module configuration in kernel-3.10 project
xbw [Tue, 25 Feb 2014 04:43:01 +0000 (12:43 +0800)]
continue with the privous Commit. Complete submission SDMMC driver in kernel-3.10.Currently,Only the sdcard can be used.
xbw [Tue, 25 Feb 2014 04:41:17 +0000 (12:41 +0800)]
SDMMC: Complete submission SDMMC driver in kernel-3.10.Currently,Only the sdcard can be used.
xbw [Tue, 25 Feb 2014 04:35:25 +0000 (12:35 +0800)]
Merge branch 'develop-3.10' of ssh://10.10.10.29/rk/kernel into develop-3.10
xbw [Tue, 25 Feb 2014 04:34:50 +0000 (12:34 +0800)]
SDMMC:
revert the modify in file dw_mmc.c,Keep it to its original version.
yxj [Tue, 25 Feb 2014 01:24:56 +0000 (09:24 +0800)]
add dts for rk3188 LR097
yxj [Fri, 21 Feb 2014 10:36:47 +0000 (18:36 +0800)]
rk fb:add more screen property
yxj [Fri, 21 Feb 2014 10:32:08 +0000 (18:32 +0800)]
port edp anx6345 to linux 3.10
yxj [Wed, 19 Feb 2014 09:40:36 +0000 (17:40 +0800)]
rk32 edp: base version
qjb [Mon, 24 Feb 2014 10:00:14 +0000 (18:00 +0800)]
audio pcm kernel 3.10 : support
CMY [Mon, 24 Feb 2014 09:51:23 +0000 (17:51 +0800)]
rk: ion: fixed bug for ION_IOC_GET_PHYS
dkl [Mon, 24 Feb 2014 06:51:59 +0000 (14:51 +0800)]
clk: rk: add aclk_lcdc init, fix dclk_lcdc/i2s clk ops
1. Init aclk_lcdc 300M.
2. Fix dclk_lcdc clk ops to set even div only.
3. Repeatly write i2s clk reg, to fix rk3188 problem.
CMY [Mon, 24 Feb 2014 03:31:49 +0000 (11:31 +0800)]
rk: ion: add system heap
xbw [Sat, 22 Feb 2014 08:03:46 +0000 (16:03 +0800)]
SDMMC: add the sdmmc driver to kernel_3.10
zwl [Fri, 21 Feb 2014 09:33:24 +0000 (17:33 +0800)]
1.hdmi: fix cat66121 driver run error 2. rkfb: fix some code error
dkl [Fri, 21 Feb 2014 09:09:10 +0000 (17:09 +0800)]
clk: rk: fix clk dts info analysis and clk register
1. Fix the way to get info from rk clk dts.
2. Fix rk clk register.
3. Draw out rk_clk_dump_info func.
4. Add more debug.
CMY [Fri, 21 Feb 2014 01:23:35 +0000 (09:23 +0800)]
rk: ion: change heap id
黄涛 [Thu, 20 Feb 2014 11:39:44 +0000 (19:39 +0800)]
rk: proc: fix slub warning when call setup_irq
BUG: sleeping function called from invalid context at mm/slub.c:926
in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/3
INFO: lockdep is turned off.
irq event stamp: 45900
hardirqs last enabled at (45899): [<
c009fe18>] rcu_preempt_note_context_switch+0x174/0x18c
hardirqs last disabled at (45900): [<
c0605a64>] _raw_spin_lock_irq+0x18/0x50
softirqs last enabled at (45744): [<
c002c424>] irq_enter+0x50/0x78
softirqs last disabled at (45743): [<
c002c418>] irq_enter+0x44/0x78
CPU: 3 PID: 0 Comm: swapper/3 Tainted: G O 3.10.0 #405
[<
c0013fe8>] (unwind_backtrace+0x0/0xe0) from [<
c0011930>] (show_stack+0x10/0x14)
[<
c0011930>] (show_stack+0x10/0x14) from [<
c00fa3dc>] (__kmalloc+0x70/0x228)
[<
c00fa3dc>] (__kmalloc+0x70/0x228) from [<
c0148d2c>] (__proc_create+0x94/0xf0)
[<
c0148d2c>] (__proc_create+0x94/0xf0) from [<
c0149000>] (proc_mkdir_data+0x30/0x74)
[<
c0149000>] (proc_mkdir_data+0x30/0x74) from [<
c009babc>] (register_handler_proc+0xe8/0x114)
[<
c009babc>] (register_handler_proc+0xe8/0x114) from [<
c00982b0>] (__setup_irq+0x334/0x3fc)
[<
c00982b0>] (__setup_irq+0x334/0x3fc) from [<
c0098558>] (setup_irq+0x58/0x80)
[<
c0098558>] (setup_irq+0x58/0x80) from [<
c05ef51c>] (rk_timer_init_clockevent+0x98/0xcc)
[<
c05ef51c>] (rk_timer_init_clockevent+0x98/0xcc) from [<
c05ed0dc>] (percpu_timer_setup+0x54/0xa8)
[<
c05ed0dc>] (percpu_timer_setup+0x54/0xa8) from [<
c05ed4d8>] (secondary_start_kernel+0x128/0x160)
[<
c05ed4d8>] (secondary_start_kernel+0x128/0x160) from [<
600081bc>] (0x600081bc)
黄涛 [Thu, 20 Feb 2014 11:12:23 +0000 (19:12 +0800)]
ts: rk29_i2c_goodix: fix resume with enable wrong irq
wdc [Thu, 20 Feb 2014 11:49:55 +0000 (19:49 +0800)]
keys: depend on rockchip adc config
qjb [Thu, 20 Feb 2014 10:29:18 +0000 (18:29 +0800)]
Audio codec rt5631: add support
qjb [Thu, 20 Feb 2014 10:01:26 +0000 (18:01 +0800)]
Audio codec: add i2c scl_rate,default 100k.
wdc [Thu, 20 Feb 2014 09:34:36 +0000 (17:34 +0800)]
saradc: rm drivers/iio/adc/rk_adc.c
wdc [Thu, 20 Feb 2014 09:30:44 +0000 (17:30 +0800)]
saradc filename changed: rk_adc.c => rockchip_adc.c
黄涛 [Thu, 20 Feb 2014 08:05:27 +0000 (16:05 +0800)]
ARM: rockchip: support cpu hotplug and basic PM
黄涛 [Thu, 20 Feb 2014 06:28:36 +0000 (14:28 +0800)]
ARM: rockchip: rk3188-cpufreq only avaliable on rk3188
wdc [Thu, 20 Feb 2014 06:30:02 +0000 (14:30 +0800)]
linux3.10: support saradc key driver
黄涛 [Thu, 20 Feb 2014 06:22:23 +0000 (14:22 +0800)]
irqchip: gic: fix fiq debugger support when resume
ljf [Thu, 20 Feb 2014 05:07:35 +0000 (13:07 +0800)]
Port VPU driver to kernel 3.10
陈金泉 [Thu, 20 Feb 2014 03:50:57 +0000 (11:50 +0800)]
audio: update rockchip_defconfig
CMY [Thu, 20 Feb 2014 03:21:40 +0000 (11:21 +0800)]
rk: ion: add custom ioctl: ION_IOC_GET_PHYS
dkl [Wed, 19 Feb 2014 12:37:01 +0000 (20:37 +0800)]
clk: rk: fix clk add provider and cache parents
陈金泉 [Wed, 19 Feb 2014 08:00:17 +0000 (16:00 +0800)]
Audio: add dts property(i2s format) and delete them from menuconfig, add sound card info parsing, fix i2s lock error.
黄涛 [Tue, 18 Feb 2014 10:34:00 +0000 (18:34 +0800)]
ARM: rockchip: iomap.h add more rk3288 define
zwl [Tue, 18 Feb 2014 07:51:42 +0000 (15:51 +0800)]
hdmi: add cat66121 hdmi driver dts property
黄涛 [Tue, 18 Feb 2014 07:56:57 +0000 (15:56 +0800)]
ARM: rockchip: grf.h add rk3288 support
黄涛 [Mon, 17 Feb 2014 12:03:41 +0000 (20:03 +0800)]
ARM: rockchip: rk3188-tb set memory size to 1G for support sdk board
zwl [Mon, 17 Feb 2014 10:03:48 +0000 (18:03 +0800)]
RK616: add dts property and fix some compile error
黄涛 [Fri, 14 Feb 2014 02:32:22 +0000 (10:32 +0800)]
ARM: rockchip: rk3188: fix dma irq define
zwl [Thu, 13 Feb 2014 12:41:03 +0000 (20:41 +0800)]
move driver/video/display/display-sys.c to driver/video/rockchip/display-sys.c
黄涛 [Thu, 13 Feb 2014 10:12:15 +0000 (18:12 +0800)]
ARM: rockchip: rk3188-tb add ts support
黄涛 [Thu, 13 Feb 2014 10:11:01 +0000 (18:11 +0800)]
ts: rk29_i2c_goodix: porting to 3.10
wlf [Thu, 13 Feb 2014 07:45:30 +0000 (15:45 +0800)]
USB: support usb otg and host20 functions
陈金泉 [Thu, 13 Feb 2014 02:24:41 +0000 (10:24 +0800)]
Audio: use sound DMA engine for pcm, update i2s, spdif and machine driver, add dts property for i2s and spdif.
黄涛 [Wed, 12 Feb 2014 12:01:56 +0000 (20:01 +0800)]
ARM: rockchip: fix rk3188 i2c dts setup again
黄涛 [Wed, 12 Feb 2014 11:55:51 +0000 (19:55 +0800)]
i2c: rockchip: fix check idle init, disable clk control to make dvfs happy, fix rk3188 i2c dts setup
yxj [Wed, 12 Feb 2014 02:41:34 +0000 (10:41 +0800)]
rk fb:fix dma_buf fd
CMY [Tue, 11 Feb 2014 09:14:56 +0000 (17:14 +0800)]
rk: ion: remove ^M character
CMY [Tue, 11 Feb 2014 08:48:16 +0000 (16:48 +0800)]
move rockchip_ion.h file to include/linux/
张晴 [Tue, 11 Feb 2014 08:37:30 +0000 (16:37 +0800)]
rk31:pmu:support pmu sleep voltage and sleep mode setting by dts
CMY [Tue, 11 Feb 2014 07:31:10 +0000 (15:31 +0800)]
enable rockchip ion by default
yxj [Tue, 11 Feb 2014 07:26:04 +0000 (15:26 +0800)]
rk fb:use ion interface export by rockchip ion
yxj [Tue, 11 Feb 2014 06:44:08 +0000 (14:44 +0800)]
rk fb: add ion dam_buf support
CMY [Mon, 10 Feb 2014 02:36:02 +0000 (10:36 +0800)]
Add rockchip ion
dkl [Tue, 11 Feb 2014 02:16:42 +0000 (10:16 +0800)]
clk: rk: change clk_core init-rate and the way to get cru&grf base
1. Change clk_core init-rate to 792 MHZ.
2. Use RK_CRU_VIRT & RK_GRF_VIRT to get cru&grf base.
3. Fix pll_wait_lock() func.
许盛飞 [Tue, 11 Feb 2014 03:19:03 +0000 (11:19 +0800)]
pwm: solve the bug sleeping function called from invalid context at kernel/mutex.c:413
zwl [Mon, 10 Feb 2014 14:11:43 +0000 (22:11 +0800)]
1.optimize the 'hdmi' global variables 2.fix some compile error
黄涛 [Mon, 10 Feb 2014 09:14:04 +0000 (17:14 +0800)]
ARM: rockchip: rockchip_defconfig merge android config
黄涛 [Mon, 10 Feb 2014 08:23:36 +0000 (16:23 +0800)]
Merge remote-tracking branch 'origin/upstream/linux-linaro-lsk-v3.10-android' into develop-3.10
黄涛 [Mon, 10 Feb 2014 06:19:24 +0000 (14:19 +0800)]
宋秀杰 [Mon, 10 Feb 2014 03:14:48 +0000 (11:14 +0800)]
dma pl330: add device tree mode support, memcpy function ok,
but clock is not used now.
dkl [Mon, 10 Feb 2014 02:52:33 +0000 (10:52 +0800)]
clk: rockchip: add clk_gpu init to rate 200M
zwl [Sat, 8 Feb 2014 09:40:40 +0000 (17:40 +0800)]
rk616: update rk616 driver,add dts property
黄涛 [Sat, 8 Feb 2014 08:39:23 +0000 (16:39 +0800)]
ARM: rockchip: update rockchip_defconfig to support mtd and rknand
Zhaoyifeng [Sat, 8 Feb 2014 08:13:02 +0000 (16:13 +0800)]
rknand:remove debug log.
陈亮 [Sat, 8 Feb 2014 06:17:36 +0000 (22:17 -0800)]
rockchip_defconfig : set default cpufreq governor to interactive
陈亮 [Sat, 8 Feb 2014 03:32:55 +0000 (19:32 -0800)]
rk3188 : add dvfs && cpufreq
Zhaoyifeng [Sat, 8 Feb 2014 02:23:40 +0000 (10:23 +0800)]
add rknand for debug
dkl [Fri, 7 Feb 2014 12:19:16 +0000 (20:19 +0800)]
ARM: rockchip: correct L2 latency setting
luowei [Fri, 7 Feb 2014 05:42:17 +0000 (13:42 +0800)]
close pinctrl debug log
dkl [Fri, 7 Feb 2014 03:30:51 +0000 (11:30 +0800)]
clk: rockchip: fix clk reg address description in dts
1.Descripe cru address mapping in clocks node's "ranges" property, and
change children nodes' "reg" property accordingly.
2.Get cru base from clock_regs node's "reg" property.
dkl [Fri, 7 Feb 2014 01:50:53 +0000 (09:50 +0800)]
Recommit "clk: rockchip: add clk init data and enable clk init"
This recommit commit
4673090895385ded057a23dcbdfff2ebe1f80f1b with
fix that lower clk_core init rate to 594 MHZ.
Mark Brown [Mon, 27 Jan 2014 14:57:42 +0000 (14:57 +0000)]
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Mark Brown [Mon, 27 Jan 2014 14:57:25 +0000 (14:57 +0000)]
Merge tag 'v3.10.28' into linux-linaro-lsk
This is the 3.10.28 stable release
yxj [Mon, 20 Jan 2014 22:39:28 +0000 (06:39 +0800)]
rk fb:rename layer to win, add iomux for rk3188 lcdc
陈金泉 [Sun, 26 Jan 2014 08:28:43 +0000 (16:28 +0800)]
update audio platform driver, add spdif codec dts property
黄涛 [Sun, 26 Jan 2014 07:58:50 +0000 (15:58 +0800)]
ARM: rockchip: set rk3188 machine name RK30board to keep android happy
张晴 [Sun, 26 Jan 2014 01:58:37 +0000 (09:58 +0800)]
rk:pmu:rk808&act8846:support dts for linux 3.1
dkl [Sun, 26 Jan 2014 01:34:30 +0000 (09:34 +0800)]
Revert "clk: rockchip: add clk init data and enable clk init"
This reverts commit
4673090895385ded057a23dcbdfff2ebe1f80f1b.
Greg Kroah-Hartman [Sat, 25 Jan 2014 16:27:55 +0000 (08:27 -0800)]
Linux 3.10.28
Taras Kondratiuk [Fri, 10 Jan 2014 00:27:08 +0000 (01:27 +0100)]
ARM: 7938/1: OMAP4/highbank: Flush L2 cache before disabling
commit
b25f3e1c358434bf850220e04f28eebfc45eb634 upstream.
Kexec disables outer cache before jumping to reboot code, but it doesn't
flush it explicitly. Flush is done implicitly inside of l2x0_disable().
But some SoC's override default .disable handler and don't flush cache.
This may lead to a corrupted memory during Kexec reboot on these
platforms.
This patch adds cache flush inside of OMAP4 and Highbank outer_cache.disable()
handlers to make it consistent with default l2x0_disable().
Acked-by: Rob Herring <rob.herring@calxeda.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Ville Syrjälä [Tue, 7 Jan 2014 14:15:36 +0000 (16:15 +0200)]
drm/i915: Don't grab crtc mutexes in intel_modeset_gem_init()
commit
7ad228b11ec26a820291c9f5a1168d6176580dc1 upstream.
When the pipe A force quirk is applied the code will attempt to grab
a crtc mutex during intel_modeset_setup_hw_state(). If we're already
holding all crtc mutexes this will obviously deadlock every time.
So instead of using drm_modeset_lock_all() just grab the
mode_config.mutex. This is enough to avoid the unlocked mutex warnings
from certain lower level functions.
The regression was introduced in:
commit
027476642811f8559cbe00ef6cc54db230e48a20
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date: Mon Dec 2 11:08:06 2013 +0200
drm/i915: Take modeset locks around intel_modeset_setup_hw_state()
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
[danvet: Add cc: stable since the offending commit has that, too.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Jon Medhurst [Tue, 10 Dec 2013 10:18:58 +0000 (10:18 +0000)]
serial: amba-pl011: use port lock to guard control register access
commit
fe43390702a1b5741fdf217063b05c7612b38303 upstream.
When the pl011 is being used for a console, pl011_console_write forces
the control register (CR) to enable the UART for transmission and then
restores this to the original value afterwards. It does this while
holding the port lock.
Unfortunately, when the uart is started or shutdown - say in response to
userland using the serial device for a terminal - then this updates the
control register without any locking.
This means we can have
pl011_console_write Save CR
pl011_startup Initialise CR, e.g. enable receive
pl011_console_write Restore old CR with receive not enabled
this result is a serial port which doesn't respond to any input.
A similar race in reverse could happen when the device is shutdown.
We can fix these problems by taking the port lock when updating CR.
Signed-off-by: Jon Medhurst <tixy@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Geert Uytterhoeven [Tue, 21 Jan 2014 23:48:47 +0000 (15:48 -0800)]
mm: Make {,set}page_address() static inline if WANT_PAGE_VIRTUAL
commit
f92f455f67fef27929e6043499414605b0c94872 upstream.
{,set}page_address() are macros if WANT_PAGE_VIRTUAL. If
!WANT_PAGE_VIRTUAL, they're plain C functions.
If someone calls them with a void *, this pointer is auto-converted to
struct page * if !WANT_PAGE_VIRTUAL, but causes a build failure on
architectures using WANT_PAGE_VIRTUAL (arc, m68k and sparc64):
drivers/md/bcache/bset.c: In function `__btree_sort':
drivers/md/bcache/bset.c:1190: warning: dereferencing `void *' pointer
drivers/md/bcache/bset.c:1190: error: request for member `virtual' in something not a structure or union
Convert them to static inline functions to fix this. There are already
plenty of users of struct page members inside <linux/mm.h>, so there's
no reason to keep them as macros.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: David Rientjes <rientjes@google.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>
NeilBrown [Mon, 6 Jan 2014 02:19:42 +0000 (13:19 +1100)]
md/raid5: Fix possible confusion when multiple write errors occur.
commit
1cc03eb93245e63b0b7a7832165efdc52e25b4e6 upstream.
commit
5d8c71f9e5fbdd95650be00294d238e27a363b5c
md: raid5 crash during degradation
Fixed a crash in an overly simplistic way which could leave
R5_WriteError or R5_MadeGood set in the stripe cache for devices
for which it is no longer relevant.
When those devices are removed and spares added the flags are still
set and can cause incorrect behaviour.
commit
14a75d3e07c784c004b4b44b34af996b8e4ac453
md/raid5: preferentially read from replacement device if possible.
Fixed the same bug if a more effective way, so we can now revert
the original commit.
Reported-and-tested-by: Alexander Lyakas <alex.bolshoy@gmail.com>
Fixes: 5d8c71f9e5fbdd95650be00294d238e27a363b5c
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
NeilBrown [Mon, 13 Jan 2014 23:38:09 +0000 (10:38 +1100)]
md/raid10: fix two bugs in handling of known-bad-blocks.
commit
b50c259e25d9260b9108dc0c2964c26e5ecbe1c1 upstream.
If we discover a bad block when reading we split the request and
potentially read some of it from a different device.
The code path of this has two bugs in RAID10.
1/ we get a spin_lock with _irq, but unlock without _irq!!
2/ The calculation of 'sectors_handled' is wrong, as can be clearly
seen by comparison with raid1.c
This leads to at least 2 warnings and a probable crash is a RAID10
ever had known bad blocks.
Fixes: 856e08e23762dfb92ffc68fd0a8d228f9e152160
Reported-by: Damian Nowak <spam@nowaker.net>
URL: https://bugzilla.kernel.org/show_bug.cgi?id=68181
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
NeilBrown [Sun, 5 Jan 2014 23:35:34 +0000 (10:35 +1100)]
md/raid10: fix bug when raid10 recovery fails to recover a block.
commit
e8b849158508565e0cd6bc80061124afc5879160 upstream.
commit
e875ecea266a543e643b19e44cf472f1412708f9
md/raid10 record bad blocks as needed during recovery.
added code to the "cannot recover this block" path to record a bad
block rather than fail the whole recovery.
Unfortunately this new case was placed *after* r10bio was freed rather
than *before*, yet it still uses r10bio.
This is will crash with a null dereference.
So move the freeing of r10bio down where it is safe.
Fixes: e875ecea266a543e643b19e44cf472f1412708f9
Reported-by: Damian Nowak <spam@nowaker.net>
URL: https://bugzilla.kernel.org/show_bug.cgi?id=68181
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>