firefly-linux-kernel-4.4.55.git
11 years agork808:modify rtc error and solve the leakage in sleep mode
张晴 [Sun, 7 Apr 2013 02:54:49 +0000 (10:54 +0800)]
rk808:modify rtc error and solve the leakage in sleep mode

11 years agork3188 tb board:add mfd rk616
yxj [Wed, 3 Apr 2013 10:10:42 +0000 (18:10 +0800)]
rk3188 tb board:add mfd rk616

11 years agoadd mfd rk616
yxj [Wed, 3 Apr 2013 10:08:40 +0000 (18:08 +0800)]
add mfd rk616

11 years agork3188 sdk: add ethernet
wuhao [Wed, 3 Apr 2013 04:52:58 +0000 (12:52 +0800)]
rk3188 sdk: add ethernet

11 years agork3188: gpu use switch pll to support 594M at gpll, change cpll to 798M
chenxing [Wed, 3 Apr 2013 02:17:35 +0000 (10:17 +0800)]
rk3188: gpu use switch pll to support 594M at gpll, change cpll to 798M

11 years agocamera: update mt9p111 and add hm5065
ddl [Tue, 2 Apr 2013 10:47:34 +0000 (18:47 +0800)]
camera: update mt9p111 and add hm5065

11 years agork808:support pmu rk808 vbat low detect
张晴 [Tue, 2 Apr 2013 09:22:51 +0000 (17:22 +0800)]
rk808:support pmu rk808 vbat low detect

11 years agork3168_86v: add support gsensor mxc6225
hjc [Tue, 2 Apr 2013 09:01:36 +0000 (17:01 +0800)]
rk3168_86v: add support gsensor mxc6225

11 years agosensors:add sensor debug support
luowei [Mon, 1 Apr 2013 08:15:12 +0000 (16:15 +0800)]
sensors:add sensor debug support

11 years agork292x: usb: totally reset inno usb phy
lyz [Mon, 1 Apr 2013 03:31:31 +0000 (11:31 +0800)]
rk292x: usb: totally reset inno usb phy

11 years agork3168_86v: fix lcd will show white flicker, when kernel booting
hjc [Sun, 31 Mar 2013 09:54:10 +0000 (17:54 +0800)]
rk3168_86v: fix lcd will show white flicker, when kernel booting

11 years ago 1.add mt6229 power on/off on settings for MID
xxh [Sat, 30 Mar 2013 07:39:47 +0000 (15:39 +0800)]
   1.add mt6229 power on/off on settings for MID
       2.change some method to static

11 years agoremove mu509 uart gpio request
xxh [Fri, 29 Mar 2013 10:47:18 +0000 (18:47 +0800)]
remove mu509 uart gpio request

11 years ago3G modem driver for 4.2.2
xxh [Fri, 29 Mar 2013 10:26:44 +0000 (18:26 +0800)]
3G modem driver for 4.2.2
       1.the driver is copy form 4.1
       2.mu509,mt6229,mw100,sew868
       3.other modem use rk29_modem_config

11 years agofix bug Hier 3G dongle:
xxh [Fri, 29 Mar 2013 02:58:56 +0000 (10:58 +0800)]
fix bug Hier 3G dongle:

       the bug is:when disable dataconnection,the data port can not use anymore

11 years agofix bug: sram_gpio_init return -EINVAL if gpio is RK30_GPIO6_PXy
kfx [Fri, 29 Mar 2013 04:23:53 +0000 (12:23 +0800)]
fix bug: sram_gpio_init return -EINVAL if gpio is RK30_GPIO6_PXy

11 years agoi2c: msleep->mdelay if in atomic
kfx [Mon, 25 Feb 2013 06:52:51 +0000 (14:52 +0800)]
i2c: msleep->mdelay if in atomic

11 years agots: rk29_i2c_goodix: unregister early suspend when probe failed
黄涛 [Fri, 29 Mar 2013 02:53:37 +0000 (10:53 +0800)]
ts: rk29_i2c_goodix: unregister early suspend when probe failed

11 years agork2928 : fix gsensor orientation
xkd [Thu, 28 Mar 2013 12:29:21 +0000 (20:29 +0800)]
rk2928 : fix gsensor orientation

caused by commit 3aae7adc

11 years agork3188 sdk: config 3G modem
wuhao [Thu, 28 Mar 2013 11:33:53 +0000 (19:33 +0800)]
rk3188 sdk: config 3G modem

11 years agosync : rk2928 add phonepad support
xkd [Thu, 28 Mar 2013 11:28:44 +0000 (19:28 +0800)]
sync : rk2928 add phonepad support

commit:72d981d8fde265a5b3768be98f4ee1ed1778b19d

11 years agork3188 sdk: config cw2015
wuhao [Thu, 28 Mar 2013 08:40:11 +0000 (16:40 +0800)]
rk3188 sdk: config cw2015

11 years agork3188 sdk: config cat66121
wuhao [Thu, 28 Mar 2013 08:38:49 +0000 (16:38 +0800)]
rk3188 sdk: config cat66121

11 years agochange Airis 3G dongle data port to ttyUSB3
xxh [Thu, 28 Mar 2013 08:26:11 +0000 (16:26 +0800)]
change Airis 3G dongle data port to ttyUSB3

11 years agork3188 sdk: config rk903
wuhao [Thu, 28 Mar 2013 08:15:32 +0000 (16:15 +0800)]
rk3188 sdk: config rk903

11 years agork3188 sdk: config rt5616
wuhao [Thu, 28 Mar 2013 07:57:33 +0000 (15:57 +0800)]
rk3188 sdk: config rt5616

11 years agork3188 sdk:config adc keys
wuhao [Thu, 28 Mar 2013 07:46:40 +0000 (15:46 +0800)]
rk3188 sdk:config adc keys

11 years agoadd some vid pid for Foreign 3G dongle
xxh [Thu, 28 Mar 2013 07:42:20 +0000 (15:42 +0800)]
add some vid pid for Foreign 3G dongle

11 years agork3188 sdk: init
wuhao [Thu, 28 Mar 2013 07:36:44 +0000 (15:36 +0800)]
rk3188 sdk: init

11 years ago760:add GC2035 support
赵子初 [Thu, 28 Mar 2013 06:47:41 +0000 (14:47 +0800)]
760:add GC2035 support

11 years agork3168_86v: gsensor operation
hjc [Thu, 28 Mar 2013 06:35:49 +0000 (14:35 +0800)]
rk3168_86v: gsensor operation

11 years agork31xx:set tps65910 dc1 and dc2 in pwm mode
张晴 [Thu, 28 Mar 2013 06:22:15 +0000 (14:22 +0800)]
rk31xx:set tps65910 dc1 and dc2 in pwm mode

11 years agofix bug: headphone detection
赵子初 [Thu, 28 Mar 2013 03:03:49 +0000 (11:03 +0800)]
fix bug: headphone detection

11 years agork3028: close debug switch
hjc [Thu, 28 Mar 2013 02:50:04 +0000 (10:50 +0800)]
rk3028: close debug switch

11 years agoRK3168:restore clk_cpu:aclk_cpu to default value for RK3168 reboot
cym [Thu, 28 Mar 2013 02:18:20 +0000 (10:18 +0800)]
RK3168:restore clk_cpu:aclk_cpu to default value for RK3168 reboot

11 years agork3028: defconfig open debug switch,modify the arm voltage
hjc [Wed, 27 Mar 2013 16:22:00 +0000 (00:22 +0800)]
rk3028: defconfig open debug switch,modify the arm voltage

11 years agork3168: defconfig open ddr freq
hjc [Wed, 27 Mar 2013 13:42:20 +0000 (21:42 +0800)]
rk3168: defconfig open ddr freq

11 years agork3168_86v: basic function is ok
hjc [Wed, 27 Mar 2013 12:55:56 +0000 (20:55 +0800)]
rk3168_86v: basic function is ok

11 years agork3168_ds803f: rename 86v_codec to ds803f
hjc [Wed, 27 Mar 2013 11:57:36 +0000 (19:57 +0800)]
rk3168_ds803f: rename 86v_codec to ds803f

11 years agork2928: Makefile: fix board define
黄涛 [Wed, 27 Mar 2013 08:36:44 +0000 (16:36 +0800)]
rk2928: Makefile: fix board define

11 years agocamera(v0.2.0x21): fix ctrl register capture bit may be turn on in rk_videobuf_captur...
ddl [Wed, 27 Mar 2013 07:34:38 +0000 (15:34 +0800)]
camera(v0.2.0x21): fix ctrl register capture bit may be turn on in rk_videobuf_capture function

11 years agocamera: ov5642 wait af finish when capture
ddl [Wed, 27 Mar 2013 07:05:24 +0000 (15:05 +0800)]
camera: ov5642 wait af finish when capture

11 years agoRevert "add clk disable by dvfs"
chenxing [Wed, 27 Mar 2013 06:53:58 +0000 (14:53 +0800)]
Revert "add clk disable by dvfs"

This reverts commit 32fa8beddeb3b6d9139823c4bd1e24f4a2fd8063.

11 years agoRevert "rk: dvfs: format plat-rk/dvfs.c && fix some debug message"
chenxing [Wed, 27 Mar 2013 06:53:18 +0000 (14:53 +0800)]
Revert "rk: dvfs: format plat-rk/dvfs.c && fix some debug message"

This reverts commit 31057fa22dff52e3d081c0d4a6203edea19dcde1.

11 years agoadd broadcom wifi GB86302I (dual band) support.
gwl [Wed, 27 Mar 2013 06:59:27 +0000 (14:59 +0800)]
add broadcom wifi GB86302I (dual band) support.

11 years agork fb:fix rk_fb_copy_by_ipp for rotate 90 degree
yxj [Tue, 26 Mar 2013 02:38:39 +0000 (10:38 +0800)]
rk fb:fix rk_fb_copy_by_ipp for rotate 90 degree

11 years agoARCH_RK3066B default: disable DVFS_WITH_UOC
chenhui [Wed, 27 Mar 2013 04:04:30 +0000 (12:04 +0800)]
ARCH_RK3066B default: disable DVFS_WITH_UOC

11 years agork2928 add phonepad support
赵子初 [Wed, 27 Mar 2013 02:14:44 +0000 (10:14 +0800)]
rk2928 add phonepad support

11 years agork3168,3188: add BCM4330 for wifi-module
wbx [Wed, 27 Mar 2013 01:59:40 +0000 (09:59 +0800)]
rk3168,3188: add BCM4330 for wifi-module

11 years agoUSB: fix RK3188 usb20otg_hw_init
wlf [Tue, 26 Mar 2013 13:11:10 +0000 (21:11 +0800)]
USB: fix RK3188 usb20otg_hw_init

11 years agoi2s : SND_RK29_SOC_I2S_2CH default y if (ARCH_RK3066B || ARCH_RK3188)
邱建斌 [Tue, 26 Mar 2013 09:29:44 +0000 (17:29 +0800)]
i2s : SND_RK29_SOC_I2S_2CH default y if (ARCH_RK3066B || ARCH_RK3188)

11 years agork3168_86v: update arm and logic table sa chenxing dvfs with uoc
hjc [Tue, 26 Mar 2013 07:28:44 +0000 (15:28 +0800)]
rk3168_86v: update arm and logic table sa chenxing dvfs with uoc

11 years agork3168: update dvfs table
chenxing [Tue, 26 Mar 2013 06:49:00 +0000 (14:49 +0800)]
rk3168: update dvfs table

11 years agork30: Makefile: fix board.o define more
黄涛 [Tue, 26 Mar 2013 01:46:42 +0000 (09:46 +0800)]
rk30: Makefile: fix board.o define more

11 years agork3066b: dvfs: format dvfs-rk3066b.c
chenxing [Tue, 26 Mar 2013 01:42:01 +0000 (09:42 +0800)]
rk3066b: dvfs: format dvfs-rk3066b.c

11 years agork3066b/rk3168: add dvfs with no voltage difference support(uoc)
chenxing [Mon, 25 Mar 2013 11:11:05 +0000 (19:11 +0800)]
rk3066b/rk3168: add dvfs with no voltage difference support(uoc)

11 years agork: dvfs: format plat-rk/dvfs.c && fix some debug message
chenxing [Mon, 25 Mar 2013 09:56:14 +0000 (17:56 +0800)]
rk: dvfs: format plat-rk/dvfs.c && fix some debug message

11 years agoRK30/31:replace the "switch" in the function of ddr_update_timing
cym [Mon, 25 Mar 2013 11:01:34 +0000 (19:01 +0800)]
RK30/31:replace the "switch" in the function of ddr_update_timing

11 years agork808:support pmu rk808 sleep mode
张晴 [Mon, 25 Mar 2013 09:44:44 +0000 (17:44 +0800)]
rk808:support pmu rk808 sleep mode

11 years agoadd param check print / fix param check error
zsq [Mon, 25 Mar 2013 03:00:40 +0000 (11:00 +0800)]
add param check print / fix param check error

11 years agork808:support pmu rk808
张晴 [Mon, 25 Mar 2013 03:00:14 +0000 (11:00 +0800)]
rk808:support pmu rk808

11 years agovpu_service: set freq to 400M on rk2928g
chm [Mon, 25 Mar 2013 01:48:42 +0000 (09:48 +0800)]
vpu_service: set freq to 400M on rk2928g

11 years agoRK3188: wakeup system by OTG BVALID interrupt in defconfig
wlf [Sat, 23 Mar 2013 08:30:55 +0000 (16:30 +0800)]
RK3188: wakeup system by OTG BVALID interrupt in defconfig

11 years agoit66121 hdmi updates:
yzq [Sat, 23 Mar 2013 01:16:23 +0000 (09:16 +0800)]
it66121 hdmi updates:
1、change poll mode to irq mode(Please check the irq gpio if ok at board file)
2、support csc, RGB to YUV,YUV to RGB

11 years agoblock: fix loop on blk_drain_queue when __dm_destroy
黄涛 [Sat, 23 Mar 2013 01:24:16 +0000 (09:24 +0800)]
block: fix loop on blk_drain_queue when __dm_destroy

when install apk to sdcard, vold will loop on blk_drain_queue:
vold            D c090e3a8     0   119      1 0x00000000
[<c090e3a8>] (__schedule+0x3b0/0x85c) from [<c090ed98>] (schedule_timeout+0x160/0x2dc)
[<c090ed98>] (schedule_timeout+0x160/0x2dc) from [<c047de38>] (msleep+0x14/0x20)
[<c047de38>] (msleep+0x14/0x20) from [<c05e6e04>] (blk_cleanup_queue+0xb4/0x218)
[<c05e6e04>] (blk_cleanup_queue+0xb4/0x218) from [<c071cca4>] (__dm_destroy+0x170/0x1c4)
[<c071cca4>] (__dm_destroy+0x170/0x1c4) from [<c0721d8c>] (dev_remove+0x74/0xa8)
[<c0721d8c>] (dev_remove+0x74/0xa8) from [<c0722534>] (dm_ctl_ioctl+0x1e4/0x2d4)
[<c0722534>] (dm_ctl_ioctl+0x1e4/0x2d4) from [<c05153c4>] (do_vfs_ioctl+0x80/0x5b0)
[<c05153c4>] (do_vfs_ioctl+0x80/0x5b0) from [<c051592c>] (sys_ioctl+0x38/0x60)
[<c051592c>] (sys_ioctl+0x38/0x60) from [<c0439540>] (ret_fast_syscall+0x0/0x30)

11 years agoRK292X:modify DDR3 DLL disable frequency,part of the LVDDR3 can not
cym [Fri, 22 Mar 2013 13:01:11 +0000 (21:01 +0800)]
RK292X:modify DDR3 DLL disable frequency,part of the LVDDR3 can not
    work with low-frequency.

11 years agork: pm_tests: add auto_wakeup and clk_auto_volt tool
chenxing [Fri, 22 Mar 2013 08:12:25 +0000 (16:12 +0800)]
rk: pm_tests: add auto_wakeup and clk_auto_volt tool

11 years agoadd cw2015 support to board-rk3168-tb
xuhuicong [Fri, 22 Mar 2013 01:56:00 +0000 (09:56 +0800)]
add cw2015 support to board-rk3168-tb

11 years agoadd cube u30gt2 3188 prodect
xuhuicong [Thu, 21 Mar 2013 15:30:54 +0000 (23:30 +0800)]
add cube u30gt2 3188 prodect

11 years agoadd b101uano 1920x1200 lcd driver
xuhuicong [Thu, 21 Mar 2013 15:26:55 +0000 (23:26 +0800)]
add b101uano 1920x1200 lcd driver

11 years agoupdate ft5x0x driver add 10 point, support upgrade tp parameter and modify panic...
xuhuicong [Thu, 21 Mar 2013 15:23:14 +0000 (23:23 +0800)]
update ft5x0x driver add 10 point, support upgrade tp parameter and modify panic start up when touch

11 years agoadd l3g20d Gyroscope support
xuhuicong [Thu, 21 Mar 2013 15:17:34 +0000 (23:17 +0800)]
add l3g20d Gyroscope support

11 years agoupdate cw2015 battery driver
xuhuicong [Thu, 21 Mar 2013 14:46:22 +0000 (22:46 +0800)]
update cw2015 battery driver

11 years agork3188: arm-pmu: support qual core
黄涛 [Thu, 21 Mar 2013 10:17:43 +0000 (18:17 +0800)]
rk3188: arm-pmu: support qual core

11 years agoethernet: remove mac from wifi
hwg [Thu, 21 Mar 2013 09:48:42 +0000 (17:48 +0800)]
ethernet: remove mac from wifi

11 years agork3188: support hdmi 576p(dclk_lcdc freediv when need 27 MHz)
chenxing [Thu, 21 Mar 2013 09:31:30 +0000 (17:31 +0800)]
rk3188: support hdmi 576p(dclk_lcdc freediv when need 27 MHz)

11 years agoethernet: support mac from idb ... supply
hwg [Thu, 21 Mar 2013 08:59:51 +0000 (16:59 +0800)]
ethernet: support mac from idb ... supply

11 years agoethernet: support mac from idb
hwg [Thu, 21 Mar 2013 08:31:51 +0000 (16:31 +0800)]
ethernet: support mac from idb

11 years agork3168_86v_codec(ds803f): add support am8963,ov2659,bt(2in1)
hjc [Thu, 21 Mar 2013 02:41:38 +0000 (10:41 +0800)]
rk3168_86v_codec(ds803f): add support am8963,ov2659,bt(2in1)

11 years agork2928: rename pclk_spi0 compatible with previous versions
chenxing [Thu, 21 Mar 2013 01:12:33 +0000 (09:12 +0800)]
rk2928: rename pclk_spi0 compatible with previous versions

11 years agowifi: add mt6622 resource in board
hwg [Wed, 20 Mar 2013 09:39:26 +0000 (17:39 +0800)]
wifi: add mt6622 resource in board

11 years agomt5931: Smooth rssi, update to 2.12
hwg [Wed, 20 Mar 2013 09:02:26 +0000 (17:02 +0800)]
mt5931: Smooth rssi, update to 2.12

11 years agork fb: fix bmp logo support
yxj [Wed, 20 Mar 2013 08:42:28 +0000 (16:42 +0800)]
rk fb: fix bmp logo support

11 years agoUSB: enable external hubs in the defconfigs
wlf [Wed, 20 Mar 2013 07:31:09 +0000 (15:31 +0800)]
USB: enable external hubs in the defconfigs

11 years agopack-kernel.sh: exclude rk_pm_tests
黄涛 [Wed, 20 Mar 2013 06:55:13 +0000 (14:55 +0800)]
pack-kernel.sh: exclude rk_pm_tests

11 years agork: add /sys/pm_tests/tools support
chenxing [Wed, 20 Mar 2013 06:29:15 +0000 (14:29 +0800)]
rk: add /sys/pm_tests/tools support

11 years agork fb : fix a panic bug
yxj [Wed, 20 Mar 2013 03:26:56 +0000 (11:26 +0800)]
rk fb : fix a panic bug
panic bug like this:
rk_fb_wait_for_vsync_thread may access inf->fb[0] before it is initialized
[    1.009224] Unable to handle kernel NULL pointer dereference at virtual address 00000240
[    1.017323] pgd = c0404000
[    1.020035] [00000240] *pgd=00000000
[    1.023620] Internal error: Oops: 5 [#1] PREEMPT SMP
[    1.028586] CPU: 1    Not tainted  (3.0.36+ #217)
[    1.033297] PC is at rk_fb_wait_for_vsync_thread+0xe8/0x144
[    1.112136] LR is at rk_fb_wait_for_vsync_thread+0xe8/0x144
[    1.117708] pc : [<c06243e0>]    lr : [<c06243e0>]    psr: 60000013
[    1.117715] sp : efe59f80  ip : c04384a0  fp : 00000000
[    1.129194] r10: 00000000  r9 : efe59f90  r8 : efe58000
[    1.134417] r7 : efe39a98  r6 : 00000000  r5 : efe59f84  r4 : efe39a08
[    1.140942] r3 : 00000000  r2 : 00000000  r1 : efc475a0  r0 : 00000036
[    1.147469] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    1.154777] Control: 10c5387d  Table: 6040404a  DAC: 00000015

11 years agoUSB: do not call disconnect callback func in dwc_otg_hcd_enable
wlf [Tue, 19 Mar 2013 13:35:42 +0000 (21:35 +0800)]
USB: do not call disconnect callback func in dwc_otg_hcd_enable

11 years agoUSB: fix urb NULL pointer bug
wlf [Tue, 19 Mar 2013 13:20:16 +0000 (21:20 +0800)]
USB: fix urb NULL pointer bug

11 years agoUSB: fix usb_get_configuration bug
wlf [Tue, 19 Mar 2013 12:51:14 +0000 (20:51 +0800)]
USB: fix usb_get_configuration bug

11 years agopack-kernel.sh: exclude rk3028
黄涛 [Tue, 19 Mar 2013 04:10:20 +0000 (12:10 +0800)]
pack-kernel.sh: exclude rk3028

11 years agork3028: rename from rk2928b
黄涛 [Tue, 19 Mar 2013 04:05:53 +0000 (12:05 +0800)]
rk3028: rename from rk2928b

11 years agork3188 ds1006h: config hardware v1.2
wuhao [Tue, 19 Mar 2013 02:57:34 +0000 (10:57 +0800)]
rk3188 ds1006h: config hardware v1.2

11 years agork2928b: pwm regulator ,tp irq and pwm hold
hjc [Tue, 19 Mar 2013 02:17:59 +0000 (10:17 +0800)]
rk2928b: pwm regulator ,tp irq and pwm hold

11 years agork3168_86v_codec(ds803f): enable MT5931_MT6622 wifi
陈辉 [Mon, 18 Mar 2013 09:21:43 +0000 (17:21 +0800)]
rk3168_86v_codec(ds803f): enable MT5931_MT6622 wifi

11 years agofix compile err when no select CONFIG_DISPLAY_SUPPORT
yxj [Mon, 18 Mar 2013 09:21:48 +0000 (17:21 +0800)]
fix compile err when no select CONFIG_DISPLAY_SUPPORT

11 years agoblock: fix request_queue lifetime handling by making blk_queue_cleanup() properly...
黄涛 [Mon, 18 Mar 2013 09:15:50 +0000 (17:15 +0800)]
block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown

commit c9a929dde3913780b5c416f4bb9d9ed804f509ce upstream.

request_queue is refcounted but actually depdends on lifetime
management from the queue owner - on blk_cleanup_queue(), block layer
expects that there's no request passing through request_queue and no
new one will.

This is fundamentally broken.  The queue owner (e.g. SCSI layer)
doesn't have a way to know whether there are other active users before
calling blk_cleanup_queue() and other users (e.g. bsg) don't have any
guarantee that the queue is and would stay valid while it's holding a
reference.

With delay added in blk_queue_bio() before queue_lock is grabbed, the
following oops can be easily triggered when a device is removed with
in-flight IOs.

 sd 0:0:1:0: [sdb] Stopping disk
 ata1.01: disabled
 general protection fault: 0000 [#1] PREEMPT SMP
 CPU 2
 Modules linked in:

 Pid: 648, comm: test_rawio Not tainted 3.1.0-rc3-work+ #56 Bochs Bochs
 RIP: 0010:[<ffffffff8137d651>]  [<ffffffff8137d651>] elv_rqhash_find+0x61/0x100
 ...
 Process test_rawio (pid: 648, threadinfo ffff880019efa000, task ffff880019ef8a80)
 ...
 Call Trace:
  [<ffffffff8137d774>] elv_merge+0x84/0xe0
  [<ffffffff81385b54>] blk_queue_bio+0xf4/0x400
  [<ffffffff813838ea>] generic_make_request+0xca/0x100
  [<ffffffff81383994>] submit_bio+0x74/0x100
  [<ffffffff811c53ec>] dio_bio_submit+0xbc/0xc0
  [<ffffffff811c610e>] __blockdev_direct_IO+0x92e/0xb40
  [<ffffffff811c39f7>] blkdev_direct_IO+0x57/0x60
  [<ffffffff8113b1c5>] generic_file_aio_read+0x6d5/0x760
  [<ffffffff8118c1ca>] do_sync_read+0xda/0x120
  [<ffffffff8118ce55>] vfs_read+0xc5/0x180
  [<ffffffff8118cfaa>] sys_pread64+0x9a/0xb0
  [<ffffffff81afaf6b>] system_call_fastpath+0x16/0x1b

This happens because blk_queue_cleanup() destroys the queue and
elevator whether IOs are in progress or not and DEAD tests are
sprinkled in the request processing path without proper
synchronization.

Similar problem exists for blk-throtl.  On queue cleanup, blk-throtl
is shutdown whether it has requests in it or not.  Depending on
timing, it either oopses or throttled bios are lost putting tasks
which are waiting for bio completion into eternal D state.

The way it should work is having the usual clear distinction between
shutdown and release.  Shutdown drains all currently pending requests,
marks the queue dead, and performs partial teardown of the now
unnecessary part of the queue.  Even after shutdown is complete,
reference holders are still allowed to issue requests to the queue
although they will be immmediately failed.  The rest of teardown
happens on release.

This patch makes the following changes to make blk_queue_cleanup()
behave as proper shutdown.

* QUEUE_FLAG_DEAD is now set while holding both q->exit_mutex and
  queue_lock.

* Unsynchronized DEAD check in generic_make_request_checks() removed.
  This couldn't make any meaningful difference as the queue could die
  after the check.

* blk_drain_queue() updated such that it can drain all requests and is
  now called during cleanup.

* blk_throtl updated such that it checks DEAD on grabbing queue_lock,
  drains all throttled bios during cleanup and free td when queue is
  released.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
11 years agoblock: make get_request[_wait]() fail if queue is dead
Tejun Heo [Wed, 19 Oct 2011 12:33:05 +0000 (14:33 +0200)]
block: make get_request[_wait]() fail if queue is dead

Currently get_request[_wait]() allocates request whether queue is dead
or not.  This patch makes get_request[_wait]() return NULL if @q is
dead.  blk_queue_bio() is updated to fail the submitted bio if request
allocation fails.  While at it, add docbook comments for
get_request[_wait]().

Note that the current code has rather unclear (there are spurious DEAD
tests scattered around) assumption that the owner of a queue
guarantees that no request travels block layer if the queue is dead
and this patch in itself doesn't change much; however, this will allow
fixing the broken assumption in the next patch.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
11 years agofail_make_request: cleanup should_fail_request
Akinobu Mita [Tue, 26 Jul 2011 23:09:03 +0000 (16:09 -0700)]
fail_make_request: cleanup should_fail_request

This changes should_fail_request() to more usable wrapper function of
should_fail().  It can avoid putting #ifdef CONFIG_FAIL_MAKE_REQUEST in
the middle of a function.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
11 years agortc: HYM8563: fix probe error handling by destroy wake lock
黄涛 [Mon, 18 Mar 2013 07:14:13 +0000 (15:14 +0800)]
rtc: HYM8563: fix probe error handling by destroy wake lock

fix this bug:
 Unable to handle kernel paging request at virtual address 00020008
 pgd = d3e60000
 [00020008] *pgd=00000000
 Internal error: Oops: 5 [#1] PREEMPT SMP
 CPU: 1    Tainted: G         C   (3.0.36+ #6)
 PC is at print_lock_stat+0x1c/0x1b8
 LR is at wakelock_stats_show+0x3c/0xa4

or this bug:
 WARNING: at lib/list_debug.c:26 __list_add+0x60/0x90()
 list_add corruption. next->prev should be prev (c0ae4468), but was 05900000. (next=d89bb060).
 [<c043ece0>] (unwind_backtrace+0x0/0xfc) from [<c046dacc>] (warn_slowpath_common+0x4c/0x64)
 [<c046dacc>] (warn_slowpath_common+0x4c/0x64) from [<c046db78>] (warn_slowpath_fmt+0x30/0x40)
 [<c046db78>] (warn_slowpath_fmt+0x30/0x40) from [<c060554c>] (__list_add+0x60/0x90)
 [<c060554c>] (__list_add+0x60/0x90) from [<c04a6140>] (wake_lock_init+0x8c/0xe4)
 [<c04a6140>] (wake_lock_init+0x8c/0xe4) from [<c071bda0>] (power_supply_register+0xd8/0x100)
 [<c071bda0>] (power_supply_register+0xd8/0x100) from [<c041e5d8>] (test_power_init+0x18/0x7c)
 [<c041e5d8>] (test_power_init+0x18/0x7c) from [<c04335d0>] (do_one_initcall+0x34/0x17c)
 [<c04335d0>] (do_one_initcall+0x34/0x17c) from [<c0408370>] (kernel_init+0x98/0x144)
 [<c0408370>] (kernel_init+0x98/0x144) from [<c0439f64>] (kernel_thread_exit+0x0/0x8)