Bing Zhao [Tue, 26 Nov 2013 23:39:20 +0000 (15:39 -0800)]
mmc: sdio: add a quirk for broken SDIO_CCCR_INTx polling
Polling SDIO_CCCR_INTx could create a fake interrupt with Marvell
SD8797 card. Add a quirk to handle this case. The fixup here is
to issue a dummy CMD52 read to function 0 register 0xff, and this
dummy read must be right after SDIO_CCCR_INTx is read.
Patch has been verified on a dw_mmc controller (Samsung Chromebook)
with MMC_CAP_SDIO_IRQ disabled.
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Reviewed-by: Doug Anderson <dianders@chromium.org>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <chris@printf.net>
Aisheng Dong [Mon, 23 Dec 2013 11:13:04 +0000 (19:13 +0800)]
mmc: sdhci: fix lockdep error in tuning routine
The sdhci_execute_tuning routine gets lock separately by
disable_irq(host->irq);
spin_lock(&host->lock);
It will cause the following lockdep error message since the &host->lock
could also be got in irq context.
Use spin_lock_irqsave/spin_unlock_restore instead to get rid of
this error message.
[ INFO: inconsistent lock state ]
3.13.0-rc1+ #287 Not tainted
---------------------------------
inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
kworker/u2:1/33 [HC0[0]:SC0[0]:HE1:SE1] takes:
(&(&host->lock)->rlock){?.-...}, at: [<
8045f7f4>] sdhci_execute_tuning+0x4c/0x710
{IN-HARDIRQ-W} state was registered at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
80060760>] __lock_acquire+0xb30/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061d1c8>] _raw_spin_lock+0x30/0x40
[<
804605cc>] sdhci_irq+0x24/0xa68
[<
8006b1d4>] handle_irq_event_percpu+0x54/0x18c
[<
8006b350>] handle_irq_event+0x44/0x64
[<
8006e50c>] handle_fasteoi_irq+0xa0/0x170
[<
8006a8f0>] generic_handle_irq+0x30/0x44
[<
8000f238>] handle_IRQ+0x54/0xbc
[<
8000864c>] gic_handle_irq+0x30/0x64
[<
80013024>] __irq_svc+0x44/0x5c
[<
80329bf4>] dev_vprintk_emit+0x50/0x58
[<
80329c24>] dev_printk_emit+0x28/0x30
[<
80329fec>] __dev_printk+0x4c/0x90
[<
8032a180>] dev_err+0x3c/0x48
[<
802dd4f0>] _regulator_get+0x158/0x1cc
[<
802dd5b4>] regulator_get_optional+0x18/0x1c
[<
80461df4>] sdhci_add_host+0x42c/0xbd8
[<
80464820>] sdhci_esdhc_imx_probe+0x378/0x67c
[<
8032ee88>] platform_drv_probe+0x20/0x50
[<
8032d48c>] driver_probe_device+0x118/0x234
[<
8032d690>] __driver_attach+0x9c/0xa0
[<
8032b89c>] bus_for_each_dev+0x68/0x9c
[<
8032cf44>] driver_attach+0x20/0x28
[<
8032cbc8>] bus_add_driver+0x148/0x1f4
[<
8032dce0>] driver_register+0x80/0x100
[<
8032ee54>] __platform_driver_register+0x50/0x64
[<
8084b094>] sdhci_esdhc_imx_driver_init+0x18/0x20
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611b28>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
irq event stamp: 805
hardirqs last enabled at (805): [<
8061d43c>] _raw_spin_unlock_irqrestore+0x38/0x4c
hardirqs last disabled at (804): [<
8061d2c8>] _raw_spin_lock_irqsave+0x24/0x54
softirqs last enabled at (570): [<
8002b824>] __do_softirq+0x1c4/0x290
softirqs last disabled at (561): [<
8002bcf4>] irq_exit+0xb4/0x10c
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(&(&host->lock)->rlock);
<Interrupt>
lock(&(&host->lock)->rlock);
*** DEADLOCK ***
2 locks held by kworker/u2:1/33:
#0: (kmmcd){.+.+..}, at: [<
8003db18>] process_one_work+0x128/0x468
#1: ((&(&host->detect)->work)){+.+...}, at: [<
8003db18>] process_one_work+0x128/0x468
stack backtrace:
CPU: 0 PID: 33 Comm: kworker/u2:1 Not tainted 3.13.0-rc1+ #287
Workqueue: kmmcd mmc_rescan
Backtrace:
[<
80012160>] (dump_backtrace+0x0/0x10c) from [<
80012438>] (show_stack+0x18/0x1c)
r6:
bfad0900 r5:
00000000 r4:
8088ecc8 r3:
bfad0900
[<
80012420>] (show_stack+0x0/0x1c) from [<
806169ec>] (dump_stack+0x84/0x9c)
[<
80616968>] (dump_stack+0x0/0x9c) from [<
806147b4>] (print_usage_bug+0x260/0x2d0)
r5:
8076ba88 r4:
80977410
[<
80614554>] (print_usage_bug+0x0/0x2d0) from [<
8005f0d0>] (mark_lock+0x1e0/0x6ac)
r9:
8005e678 r8:
00000000 r7:
bfad0900 r6:
00001015 r5:
bfad0cd0
r4:
00000002
[<
8005eef0>] (mark_lock+0x0/0x6ac) from [<
80060234>] (__lock_acquire+0x604/0x1cbc)
[<
8005fc30>] (__lock_acquire+0x0/0x1cbc) from [<
800620d0>] (lock_acquire+0x70/0x84)
[<
80062060>] (lock_acquire+0x0/0x84) from [<
8061d1c8>] (_raw_spin_lock+0x30/0x40)
r7:
00000000 r6:
bfb63000 r5:
00000000 r4:
bfb60568
[<
8061d198>] (_raw_spin_lock+0x0/0x40) from [<
8045f7f4>] (sdhci_execute_tuning+0x4c/0x710)
r4:
bfb60000
[<
8045f7a8>] (sdhci_execute_tuning+0x0/0x710) from [<
80453454>] (mmc_sd_init_card+0x5f8/0x660)
[<
80452e5c>] (mmc_sd_init_card+0x0/0x660) from [<
80453748>] (mmc_attach_sd+0xb4/0x180)
r9:
bf92d400 r8:
8065f364 r7:
00061a80 r6:
bfb60000 r5:
8065f358
r4:
bfb60000
[<
80453694>] (mmc_attach_sd+0x0/0x180) from [<
8044d9f8>] (mmc_rescan+0x284/0x2f0)
r5:
8065f358 r4:
bfb602f8
[<
8044d774>] (mmc_rescan+0x0/0x2f0) from [<
8003db94>] (process_one_work+0x1a4/0x468)
r8:
00000000 r7:
bfb55eb0 r6:
bf80dc00 r5:
bfb602f8 r4:
bfb35980
r3:
8044d774
[<
8003d9f0>] (process_one_work+0x0/0x468) from [<
8003e850>] (worker_thread+0x118/0x3e0)
[<
8003e738>] (worker_thread+0x0/0x3e0) from [<
80044de0>] (kthread+0xd4/0xf0)
[<
80044d0c>] (kthread+0x0/0xf0) from [<
8000e9c8>] (ret_from_fork+0x14/0x2c)
r7:
00000000 r6:
00000000 r5:
80044d0c r4:
bfb37b40
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Chris Ball <chris@printf.net>
Zhangfei Gao [Mon, 13 Jan 2014 09:14:29 +0000 (17:14 +0800)]
mmc: dw_mmc: k3: remove clk_table
Remove clk_table and directly use ios->clock as clock source rate.
Abstract init clock rate and max clock limitation in clk.c
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Acked-by: Seungwon Jeon <tgih.jun@samsung.com>
Signed-off-by: Chris Ball <chris@printf.net>
Zhangfei Gao [Thu, 16 Jan 2014 12:48:47 +0000 (20:48 +0800)]
mmc: dw_mmc: fix dw_mci_get_cd
bf626e5550f24aec ("mmc: dw_mmc: use slot-gpio to handle cd pin") caused
CDETECT to be ignored, since negated return value of mmc_gpio_get_cd(mmc)
can not be checked by IS_ERR_VALUE.
Also, add spin_lock_bh(&host->lock) for atomic access to
DW_MMC_CARD_PRESENT, otherwise sd detect may occasionally fail.
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Reported-by: Kevin Hilman <khilman@linaro.org>
Reviewed-by: Sachin Kamat <sachin.kamat@linaro.org>
Tested-by: Sachin Kamat <sachin.kamat@linaro.org>
Tested-by: Kevin Hilman <khilman@linaro.org>
Acked-by: Seungwon Jeon <tgih.jun@samsung.com>
Signed-off-by: Chris Ball <chris@printf.net>
Wei Yongjun [Tue, 14 Jan 2014 02:03:33 +0000 (10:03 +0800)]
mmc: dw_mmc: fix sparse non static symbol warning
Fixes the following sparse warning:
drivers/mmc/host/dw_mmc-k3.c:116:1: warning:
symbol 'dw_mci_k3_pmops' was not declared. Should it be static?
Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Chris Ball <chris@printf.net>
Dong Aisheng [Thu, 26 Dec 2013 07:23:54 +0000 (15:23 +0800)]
mmc: sdhci-esdhc-imx: fix warning during module remove function
Since the clock is managed by runtime pm currently, we do not need
disable it again during driver remove function, or it will cause
clock disable count mismatch issue since the clocks have already been disabled.
The issue can be simply reproduced by unbind the devices via sysfs.
mx6slevk:/sys/bus/platform/drivers/sdhci-esdhc-imx# echo 2194000.usdhc > unbind
mmc1: card aaaa removed
------------[ cut here ]------------
WARNING: CPU: 0 PID: 657 at drivers/clk/clk.c:842 __clk_disable+0x68/0x88()
Modules linked in:
CPU: 0 PID: 657 Comm: sh Not tainted 3.13.0-rc1+ #285
Backtrace:
[<
80012160>] (dump_backtrace+0x0/0x10c) from [<
80012438>] (show_stack+0x18/0x1c)
r6:
80481370 r5:
00000000 r4:
8088ecc8 r3:
00000000
[<
80012420>] (show_stack+0x0/0x1c) from [<
80616b14>] (dump_stack+0x84/0x9c)
[<
80616a90>] (dump_stack+0x0/0x9c) from [<
80027158>] (warn_slowpath_common+0x70/0x94)
r5:
00000009 r4:
00000000
[<
800270e8>] (warn_slowpath_common+0x0/0x94) from [<
80027220>] (warn_slowpath_null+0x24/0x2c)
r8:
bec4ff78 r7:
0000000e r6:
bf91d800 r5:
bf81d080 r4:
bf81d080
[<
800271fc>] (warn_slowpath_null+0x0/0x2c) from [<
80481370>] (__clk_disable+0x68/0x88)
[<
80481308>] (__clk_disable+0x0/0x88) from [<
8048148c>] (clk_disable+0x20/0x2c)
r4:
200f0113 r3:
bf95ec00
[<
8048146c>] (clk_disable+0x0/0x2c) from [<
80463bd8>] (sdhci_esdhc_imx_remove+0x64/0xa4)
r5:
bf81d080 r4:
bfabb010
[<
80463b74>] (sdhci_esdhc_imx_remove+0x0/0xa4) from [<
8032e82c>] (platform_drv_remove+0x20/0x24)
r6:
808ae0e0 r5:
808ae0e0 r4:
bf91d810 r3:
80463b74
[<
8032e80c>] (platform_drv_remove+0x0/0x24) from [<
8032d010>] (__device_release_driver+0x78/0xd0)
[<
8032cf98>] (__device_release_driver+0x0/0xd0) from [<
8032d090>] (device_release_driver+0x28/0x34)
r5:
bf91d810 r4:
bf91d844
[<
8032d068>] (device_release_driver+0x0/0x34) from [<
8032c0c8>] (unbind_store+0x80/0xc4)
r5:
bf91d810 r4:
80899ba0
[<
8032c048>] (unbind_store+0x0/0xc4) from [<
8032b648>] (drv_attr_store+0x28/0x34)
r7:
bed73100 r6:
0000000e r5:
00000000 r4:
8032b620
[<
8032b620>] (drv_attr_store+0x0/0x34) from [<
80140580>] (sysfs_write_file+0x1b0/0x1e4)
[<
801403d0>] (sysfs_write_file+0x0/0x1e4) from [<
800dcda0>] (vfs_write+0xb4/0x190)
[<
800dccec>] (vfs_write+0x0/0x190) from [<
800dd3e4>] (SyS_write+0x44/0x80)
r9:
0000000e r8:
00000000 r7:
01a00408 r6:
bf3b1c00 r5:
00000000
r4:
00000000
[<
800dd3a0>] (SyS_write+0x0/0x80) from [<
8000e900>] (ret_fast_syscall+0x0/0x48)
r9:
bec4e000 r8:
8000eac4 r7:
00000004 r6:
76f5fb40 r5:
01a00408
r4:
0000000e
---[ end trace
a0897d268e6233b2 ]---
If without runtime pm, we just run as before to match the clock enable
in probe function.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <chris@printf.net>
Dong Aisheng [Thu, 26 Dec 2013 07:23:53 +0000 (15:23 +0800)]
mmc: sdhci-esdhc-imx: fix access hardirq-unsafe lock in atomic context
Sometimes we may meet the following lockdep issue.
The root cause is .set_clock callback is executed with spin_lock_irqsave
in sdhci_do_set_ios. However, the IMX set_clock callback will try to access
clk_get_rate which is using a mutex lock.
The fix avoids access mutex in .set_clock callback by initializing the
pltfm_host->clock at probe time and use it later instead of calling
clk_get_rate again in atomic context.
[ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
3.13.0-rc1+ #285 Not tainted
------------------------------------------------------
kworker/u8:1/29 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
(prepare_lock){+.+...}, at: [<
80480b08>] clk_prepare_lock+0x44/0xe4
and this task is already holding:
(&(&host->lock)->rlock#2){-.-...}, at: [<
804611f4>] sdhci_do_set_ios+0x20/0x720
which would create a new lock dependency:
(&(&host->lock)->rlock#2){-.-...} -> (prepare_lock){+.+...}
but this new dependency connects a HARDIRQ-irq-safe lock:
(&(&host->lock)->rlock#2){-.-...}
... which became HARDIRQ-irq-safe at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
80060760>] __lock_acquire+0xb30/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061d2f0>] _raw_spin_lock+0x30/0x40
[<
80460668>] sdhci_irq+0x24/0xa68
[<
8006b1d4>] handle_irq_event_percpu+0x54/0x18c
[<
8006b350>] handle_irq_event+0x44/0x64
[<
8006e50c>] handle_fasteoi_irq+0xa0/0x170
[<
8006a8f0>] generic_handle_irq+0x30/0x44
[<
8000f238>] handle_IRQ+0x54/0xbc
[<
8000864c>] gic_handle_irq+0x30/0x64
[<
80013024>] __irq_svc+0x44/0x5c
[<
80614c58>] printk+0x38/0x40
[<
804622a8>] sdhci_add_host+0x844/0xbcc
[<
80464948>] sdhci_esdhc_imx_probe+0x378/0x67c
[<
8032ee88>] platform_drv_probe+0x20/0x50
[<
8032d48c>] driver_probe_device+0x118/0x234
[<
8032d690>] __driver_attach+0x9c/0xa0
[<
8032b89c>] bus_for_each_dev+0x68/0x9c
[<
8032cf44>] driver_attach+0x20/0x28
[<
8032cbc8>] bus_add_driver+0x148/0x1f4
[<
8032dce0>] driver_register+0x80/0x100
[<
8032ee54>] __platform_driver_register+0x50/0x64
[<
8084b094>] sdhci_esdhc_imx_driver_init+0x18/0x20
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611c50>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
to a HARDIRQ-irq-unsafe lock:
(prepare_lock){+.+...}
... which became HARDIRQ-irq-unsafe at:
... [<
8005f030>] mark_lock+0x140/0x6ac
[<
8005f604>] mark_held_locks+0x68/0x12c
[<
8005f780>] trace_hardirqs_on_caller+0xb8/0x1d8
[<
8005f8b4>] trace_hardirqs_on+0x14/0x18
[<
8061a130>] mutex_trylock+0x180/0x20c
[<
80480ad8>] clk_prepare_lock+0x14/0xe4
[<
804816a4>] clk_notifier_register+0x28/0xf0
[<
80015120>] twd_clk_init+0x50/0x68
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611c50>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
other info that might help us debug this:
Possible interrupt unsafe locking scenario:
CPU0 CPU1
---- ----
lock(prepare_lock);
local_irq_disable();
lock(&(&host->lock)->rlock#2);
lock(prepare_lock);
<Interrupt>
lock(&(&host->lock)->rlock#2);
*** DEADLOCK ***
3 locks held by kworker/u8:1/29:
#0: (kmmcd){.+.+.+}, at: [<
8003db18>] process_one_work+0x128/0x468
#1: ((&(&host->detect)->work)){+.+.+.}, at: [<
8003db18>] process_one_work+0x128/0x468
#2: (&(&host->lock)->rlock#2){-.-...}, at: [<
804611f4>] sdhci_do_set_ios+0x20/0x720
the dependencies between HARDIRQ-irq-safe lock and the holding lock:
-> (&(&host->lock)->rlock#2){-.-...} ops: 330 {
IN-HARDIRQ-W at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
80060760>] __lock_acquire+0xb30/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061d2f0>] _raw_spin_lock+0x30/0x40
[<
80460668>] sdhci_irq+0x24/0xa68
[<
8006b1d4>] handle_irq_event_percpu+0x54/0x18c
[<
8006b350>] handle_irq_event+0x44/0x64
[<
8006e50c>] handle_fasteoi_irq+0xa0/0x170
[<
8006a8f0>] generic_handle_irq+0x30/0x44
[<
8000f238>] handle_IRQ+0x54/0xbc
[<
8000864c>] gic_handle_irq+0x30/0x64
[<
80013024>] __irq_svc+0x44/0x5c
[<
80614c58>] printk+0x38/0x40
[<
804622a8>] sdhci_add_host+0x844/0xbcc
[<
80464948>] sdhci_esdhc_imx_probe+0x378/0x67c
[<
8032ee88>] platform_drv_probe+0x20/0x50
[<
8032d48c>] driver_probe_device+0x118/0x234
[<
8032d690>] __driver_attach+0x9c/0xa0
[<
8032b89c>] bus_for_each_dev+0x68/0x9c
[<
8032cf44>] driver_attach+0x20/0x28
[<
8032cbc8>] bus_add_driver+0x148/0x1f4
[<
8032dce0>] driver_register+0x80/0x100
[<
8032ee54>] __platform_driver_register+0x50/0x64
[<
8084b094>] sdhci_esdhc_imx_driver_init+0x18/0x20
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611c50>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
IN-SOFTIRQ-W at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
80060204>] __lock_acquire+0x5d4/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061d40c>] _raw_spin_lock_irqsave+0x40/0x54
[<
8045e4a4>] sdhci_tasklet_finish+0x1c/0x120
[<
8002b538>] tasklet_action+0xa0/0x15c
[<
8002b778>] __do_softirq+0x118/0x290
[<
8002bcf4>] irq_exit+0xb4/0x10c
[<
8000f240>] handle_IRQ+0x5c/0xbc
[<
8000864c>] gic_handle_irq+0x30/0x64
[<
80013024>] __irq_svc+0x44/0x5c
[<
80614c58>] printk+0x38/0x40
[<
804622a8>] sdhci_add_host+0x844/0xbcc
[<
80464948>] sdhci_esdhc_imx_probe+0x378/0x67c
[<
8032ee88>] platform_drv_probe+0x20/0x50
[<
8032d48c>] driver_probe_device+0x118/0x234
[<
8032d690>] __driver_attach+0x9c/0xa0
[<
8032b89c>] bus_for_each_dev+0x68/0x9c
[<
8032cf44>] driver_attach+0x20/0x28
[<
8032cbc8>] bus_add_driver+0x148/0x1f4
[<
8032dce0>] driver_register+0x80/0x100
[<
8032ee54>] __platform_driver_register+0x50/0x64
[<
8084b094>] sdhci_esdhc_imx_driver_init+0x18/0x20
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611c50>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
INITIAL USE at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
8005ff0c>] __lock_acquire+0x2dc/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061d40c>] _raw_spin_lock_irqsave+0x40/0x54
[<
804611f4>] sdhci_do_set_ios+0x20/0x720
[<
80461924>] sdhci_set_ios+0x30/0x3c
[<
8044cea0>] mmc_power_up+0x6c/0xd0
[<
8044dac4>] mmc_start_host+0x60/0x70
[<
8044eb3c>] mmc_add_host+0x60/0x88
[<
8046225c>] sdhci_add_host+0x7f8/0xbcc
[<
80464948>] sdhci_esdhc_imx_probe+0x378/0x67c
[<
8032ee88>] platform_drv_probe+0x20/0x50
[<
8032d48c>] driver_probe_device+0x118/0x234
[<
8032d690>] __driver_attach+0x9c/0xa0
[<
8032b89c>] bus_for_each_dev+0x68/0x9c
[<
8032cf44>] driver_attach+0x20/0x28
[<
8032cbc8>] bus_add_driver+0x148/0x1f4
[<
8032dce0>] driver_register+0x80/0x100
[<
8032ee54>] __platform_driver_register+0x50/0x64
[<
8084b094>] sdhci_esdhc_imx_driver_init+0x18/0x20
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611c50>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
}
... key at: [<
80e040e8>] __key.26952+0x0/0x8
... acquired at:
[<
8005eb60>] check_usage+0x3d0/0x5c0
[<
8005edac>] check_irq_usage+0x5c/0xb8
[<
80060d38>] __lock_acquire+0x1108/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061a210>] mutex_lock_nested+0x54/0x3c0
[<
80480b08>] clk_prepare_lock+0x44/0xe4
[<
8048188c>] clk_get_rate+0x14/0x64
[<
8046374c>] esdhc_pltfm_set_clock+0x20/0x2a4
[<
8045d70c>] sdhci_set_clock+0x4c/0x498
[<
80461518>] sdhci_do_set_ios+0x344/0x720
[<
80461924>] sdhci_set_ios+0x30/0x3c
[<
8044c390>] __mmc_set_clock+0x44/0x60
[<
8044cd4c>] mmc_set_clock+0x10/0x14
[<
8044f8f4>] mmc_init_card+0x1b4/0x1520
[<
80450f00>] mmc_attach_mmc+0xb4/0x194
[<
8044da08>] mmc_rescan+0x294/0x2f0
[<
8003db94>] process_one_work+0x1a4/0x468
[<
8003e850>] worker_thread+0x118/0x3e0
[<
80044de0>] kthread+0xd4/0xf0
[<
8000e9c8>] ret_from_fork+0x14/0x2c
the dependencies between the lock to be acquired and HARDIRQ-irq-unsafe lock:
-> (prepare_lock){+.+...} ops: 395 {
HARDIRQ-ON-W at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
8005f604>] mark_held_locks+0x68/0x12c
[<
8005f780>] trace_hardirqs_on_caller+0xb8/0x1d8
[<
8005f8b4>] trace_hardirqs_on+0x14/0x18
[<
8061a130>] mutex_trylock+0x180/0x20c
[<
80480ad8>] clk_prepare_lock+0x14/0xe4
[<
804816a4>] clk_notifier_register+0x28/0xf0
[<
80015120>] twd_clk_init+0x50/0x68
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611c50>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
SOFTIRQ-ON-W at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
8005f604>] mark_held_locks+0x68/0x12c
[<
8005f7c8>] trace_hardirqs_on_caller+0x100/0x1d8
[<
8005f8b4>] trace_hardirqs_on+0x14/0x18
[<
8061a130>] mutex_trylock+0x180/0x20c
[<
80480ad8>] clk_prepare_lock+0x14/0xe4
[<
804816a4>] clk_notifier_register+0x28/0xf0
[<
80015120>] twd_clk_init+0x50/0x68
[<
80008980>] do_one_initcall+0x108/0x16c
[<
8081cca4>] kernel_init_freeable+0x10c/0x1d0
[<
80611c50>] kernel_init+0x10/0x120
[<
8000e9c8>] ret_from_fork+0x14/0x2c
INITIAL USE at:
[<
8005f030>] mark_lock+0x140/0x6ac
[<
8005ff0c>] __lock_acquire+0x2dc/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061a0c8>] mutex_trylock+0x118/0x20c
[<
80480ad8>] clk_prepare_lock+0x14/0xe4
[<
80482af8>] __clk_init+0x1c/0x45c
[<
8048306c>] _clk_register+0xd0/0x170
[<
80483148>] clk_register+0x3c/0x7c
[<
80483b4c>] clk_register_fixed_rate+0x88/0xd8
[<
80483c04>] of_fixed_clk_setup+0x68/0x94
[<
8084c6fc>] of_clk_init+0x44/0x68
[<
808202b0>] time_init+0x2c/0x38
[<
8081ca14>] start_kernel+0x1e4/0x368
[<
10008074>] 0x10008074
}
... key at: [<
808afebc>] prepare_lock+0x38/0x48
... acquired at:
[<
8005eb94>] check_usage+0x404/0x5c0
[<
8005edac>] check_irq_usage+0x5c/0xb8
[<
80060d38>] __lock_acquire+0x1108/0x1cbc
[<
800620d0>] lock_acquire+0x70/0x84
[<
8061a210>] mutex_lock_nested+0x54/0x3c0
[<
80480b08>] clk_prepare_lock+0x44/0xe4
[<
8048188c>] clk_get_rate+0x14/0x64
[<
8046374c>] esdhc_pltfm_set_clock+0x20/0x2a4
[<
8045d70c>] sdhci_set_clock+0x4c/0x498
[<
80461518>] sdhci_do_set_ios+0x344/0x720
[<
80461924>] sdhci_set_ios+0x30/0x3c
[<
8044c390>] __mmc_set_clock+0x44/0x60
[<
8044cd4c>] mmc_set_clock+0x10/0x14
[<
8044f8f4>] mmc_init_card+0x1b4/0x1520
[<
80450f00>] mmc_attach_mmc+0xb4/0x194
[<
8044da08>] mmc_rescan+0x294/0x2f0
[<
8003db94>] process_one_work+0x1a4/0x468
[<
8003e850>] worker_thread+0x118/0x3e0
[<
80044de0>] kthread+0xd4/0xf0
[<
8000e9c8>] ret_from_fork+0x14/0x2c
stack backtrace:
CPU: 2 PID: 29 Comm: kworker/u8:1 Not tainted 3.13.0-rc1+ #285
Workqueue: kmmcd mmc_rescan
Backtrace:
[<
80012160>] (dump_backtrace+0x0/0x10c) from [<
80012438>] (show_stack+0x18/0x1c)
r6:
00000000 r5:
00000000 r4:
8088ecc8 r3:
bfa11200
[<
80012420>] (show_stack+0x0/0x1c) from [<
80616b14>] (dump_stack+0x84/0x9c)
[<
80616a90>] (dump_stack+0x0/0x9c) from [<
8005ebb4>] (check_usage+0x424/0x5c0)
r5:
80979940 r4:
bfa29b44
[<
8005e790>] (check_usage+0x0/0x5c0) from [<
8005edac>] (check_irq_usage+0x5c/0xb8)
[<
8005ed50>] (check_irq_usage+0x0/0xb8) from [<
80060d38>] (__lock_acquire+0x1108/0x1cbc)
r8:
bfa115e8 r7:
80df9884 r6:
80dafa9c r5:
00000003 r4:
bfa115d0
[<
8005fc30>] (__lock_acquire+0x0/0x1cbc) from [<
800620d0>] (lock_acquire+0x70/0x84)
[<
80062060>] (lock_acquire+0x0/0x84) from [<
8061a210>] (mutex_lock_nested+0x54/0x3c0)
r7:
bfa11200 r6:
80dafa9c r5:
00000000 r4:
80480b08
[<
8061a1bc>] (mutex_lock_nested+0x0/0x3c0) from [<
80480b08>] (clk_prepare_lock+0x44/0xe4)
[<
80480ac4>] (clk_prepare_lock+0x0/0xe4) from [<
8048188c>] (clk_get_rate+0x14/0x64)
r6:
03197500 r5:
bf0e9aa8 r4:
bf827400 r3:
808ae128
[<
80481878>] (clk_get_rate+0x0/0x64) from [<
8046374c>] (esdhc_pltfm_set_clock+0x20/0x2a4)
r5:
bf0e9aa8 r4:
bf0e9c40
[<
8046372c>] (esdhc_pltfm_set_clock+0x0/0x2a4) from [<
8045d70c>] (sdhci_set_clock+0x4c/0x498)
[<
8045d6c0>] (sdhci_set_clock+0x0/0x498) from [<
80461518>] (sdhci_do_set_ios+0x344/0x720)
r8:
0000003b r7:
20000113 r6:
bf0e9d68 r5:
bf0e9aa8 r4:
bf0e9c40
r3:
00000000
[<
804611d4>] (sdhci_do_set_ios+0x0/0x720) from [<
80461924>] (sdhci_set_ios+0x30/0x3c)
r9:
00000004 r8:
bf131000 r7:
bf131048 r6:
00000000 r5:
bf0e9aa8
r4:
bf0e9800
[<
804618f4>] (sdhci_set_ios+0x0/0x3c) from [<
8044c390>] (__mmc_set_clock+0x44/0x60)
r5:
03197500 r4:
bf0e9800
[<
8044c34c>] (__mmc_set_clock+0x0/0x60) from [<
8044cd4c>] (mmc_set_clock+0x10/0x14)
r5:
00000000 r4:
bf0e9800
[<
8044cd3c>] (mmc_set_clock+0x0/0x14) from [<
8044f8f4>] (mmc_init_card+0x1b4/0x1520)
[<
8044f740>] (mmc_init_card+0x0/0x1520) from [<
80450f00>] (mmc_attach_mmc+0xb4/0x194)
[<
80450e4c>] (mmc_attach_mmc+0x0/0x194) from [<
8044da08>] (mmc_rescan+0x294/0x2f0)
r5:
8065f358 r4:
bf0e9af8
[<
8044d774>] (mmc_rescan+0x0/0x2f0) from [<
8003db94>] (process_one_work+0x1a4/0x468)
r8:
00000000 r7:
bfa29eb0 r6:
bf80dc00 r5:
bf0e9af8 r4:
bf9e3f00
r3:
8044d774
[<
8003d9f0>] (process_one_work+0x0/0x468) from [<
8003e850>] (worker_thread+0x118/0x3e0)
[<
8003e738>] (worker_thread+0x0/0x3e0) from [<
80044de0>] (kthread+0xd4/0xf0)
[<
80044d0c>] (kthread+0x0/0xf0) from [<
8000e9c8>] (ret_from_fork+0x14/0x2c)
r7:
00000000 r6:
00000000 r5:
80044d0c r4:
bf9e7f00
Fixes: 0ddf03c mmc: esdhc-imx: parse max-frequency from devicetree
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Philippe De Muyter <phdm@macqel.be>
Cc: stable <stable@vger.kernel.org> # 3.13
Signed-off-by: Chris Ball <chris@printf.net>
Wolfram Sang [Tue, 26 Nov 2013 01:16:25 +0000 (02:16 +0100)]
mmc: core: sd: implement proper support for sd3.0 au sizes
This reverts and updates commit
77776fd0a4cc541b9 ("mmc: sd: fix the
maximum au_size for SD3.0"). The au_size for SD3.0 cannot be achieved
by a simple bit shift, so this needs to be implemented differently.
Also, don't print the warning in case of 0 since 'not defined' is
different from 'invalid'.
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: stable <stable@vger.kernel.org> # [3.12, 3.13]
Signed-off-by: Chris Ball <chris@printf.net>
Alexandre Belloni [Thu, 17 Oct 2013 10:46:48 +0000 (12:46 +0200)]
mmc: atmel-mci: add vmmc-supply support
Other MMC hosts handle a regulator named vmmc-supply that allows to power
the MMC card or SDIO device before communicating on the bus.
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Chris Ball <chris@printf.net>
David Cohen [Tue, 29 Oct 2013 17:58:27 +0000 (10:58 -0700)]
mmc: sdhci-pci: add broken HS200 quirk for Intel Merrifield
Due to unknown hw issue so far, Merrifield is unable to enable HS200
support. This patch adds quirk to avoid SDHCI to initialize with error
below:
[ 53.850132] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W
3.12.0-rc6-00037-g3d7c8d9-dirty #36
[ 53.850150] Hardware name: Intel Corporation Merrifield/SALT BAY,
BIOS 397 2013.09.12:11.51.40
[ 53.850167]
00000000 00000000 ee409e48 c18816d2 00000000 ee409e78
c123e254 c1acc9b0
[ 53.850227]
00000000 00000000 c1b14148 000003de c16c03bf c16c03bf
ee75b480 ed97c54c
[ 53.850282]
ee75b480 ee409e88 c123e292 00000009 00000000 ee409ef8
c16c03bf c1207fac
[ 53.850339] Call Trace:
[ 53.850376] [<
c18816d2>] dump_stack+0x4b/0x79
[ 53.850408] [<
c123e254>] warn_slowpath_common+0x84/0xa0
[ 53.850436] [<
c16c03bf>] ? sdhci_send_command+0xb4f/0xc50
[ 53.850462] [<
c16c03bf>] ? sdhci_send_command+0xb4f/0xc50
[ 53.850490] [<
c123e292>] warn_slowpath_null+0x22/0x30
[ 53.850516] [<
c16c03bf>] sdhci_send_command+0xb4f/0xc50
[ 53.850545] [<
c1207fac>] ? native_sched_clock+0x2c/0xb0
[ 53.850575] [<
c14c1f93>] ? delay_tsc+0x73/0xb0
[ 53.850601] [<
c14c1ebe>] ? __const_udelay+0x1e/0x20
[ 53.850626] [<
c16bdeb3>] ? sdhci_reset+0x93/0x190
[ 53.850654] [<
c16c05b0>] sdhci_finish_data+0xf0/0x2e0
[ 53.850683] [<
c16c130f>] sdhci_irq+0x31f/0x930
[ 53.850713] [<
c12cb080>] ? __buffer_unlock_commit+0x10/0x20
[ 53.850740] [<
c12cbcd7>] ? trace_buffer_unlock_commit+0x37/0x50
[ 53.850773] [<
c1288f3c>] handle_irq_event_percpu+0x5c/0x220
[ 53.850800] [<
c128bc96>] ? handle_fasteoi_irq+0x16/0xd0
[ 53.850827] [<
c128913a>] handle_irq_event+0x3a/0x60
[ 53.850852] [<
c128bc80>] ? unmask_irq+0x30/0x30
[ 53.850878] [<
c128bcce>] handle_fasteoi_irq+0x4e/0xd0
[ 53.850895] <IRQ> [<
c1890b52>] ? do_IRQ+0x42/0xb0
[ 53.850943] [<
c1890a31>] ? common_interrupt+0x31/0x38
[ 53.850973] [<
c12b00d8>] ? cgroup_mkdir+0x4e8/0x580
[ 53.851001] [<
c1208d32>] ? default_idle+0x22/0xf0
[ 53.851029] [<
c1209576>] ? arch_cpu_idle+0x26/0x30
[ 53.851054] [<
c1288505>] ? cpu_startup_entry+0x65/0x240
[ 53.851082] [<
c18793d5>] ? rest_init+0xb5/0xc0
[ 53.851108] [<
c1879320>] ? __read_lock_failed+0x18/0x18
[ 53.851138] [<
c1bf6a15>] ? start_kernel+0x31b/0x321
[ 53.851164] [<
c1bf652f>] ? repair_env_string+0x51/0x51
[ 53.851190] [<
c1bf6363>] ? i386_start_kernel+0x139/0x13c
[ 53.851209] ---[ end trace
92777f5fe48d33f2 ]---
[ 53.853449] mmcblk0: error -84 transferring data, sector
11142162, nr
304, cmd response 0x0, card status 0x0
[ 53.853476] mmcblk0: retrying using single block read
[ 55.937863] sdhci: Timeout waiting for Buffer Read Ready interrupt
during tuning procedure, falling back to fixed sampling clock
[ 56.207951] sdhci: Timeout waiting for Buffer Read Ready interrupt
during tuning procedure, falling back to fixed sampling clock
[ 66.228785] mmc0: Timeout waiting for hardware interrupt.
[ 66.230855] ------------[ cut here ]------------
Signed-off-by: David Cohen <david.a.cohen@linux.intel.com>
Reviewed-by: Chuanxiao Dong <chuanxiao.dong@intel.com>
Acked-by: Dong Aisheng <b29396@freescale.com>
Cc: stable <stable@vger.kernel.org> # [3.13]
Signed-off-by: Chris Ball <chris@printf.net>
David Cohen [Tue, 29 Oct 2013 17:58:26 +0000 (10:58 -0700)]
mmc: sdhci: add quirk for broken HS200 support
This patch defines a quirk for platforms unable to enable HS200 support.
Signed-off-by: David Cohen <david.a.cohen@linux.intel.com>
Reviewed-by: Chuanxiao Dong <chuanxiao.dong@intel.com>
Acked-by: Dong Aisheng <b29396@freescale.com>
Cc: stable <stable@vger.kernel.org> # [3.13]
Signed-off-by: Chris Ball <chris@printf.net>
Soren Brinkmann [Mon, 2 Dec 2013 18:02:36 +0000 (10:02 -0800)]
mmc: arasan: Add driver for Arasan SDHCI
Add a driver for Arasan's SDHCI controller core.
Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Acked-by: Rob Herring <rob.herring@calxeda.com> [binding]
Acked-by: Michal Simek <monstr@monstr.eu>
Signed-off-by: Chris Ball <chris@printf.net>
Zhangfei Gao [Thu, 9 Jan 2014 14:35:11 +0000 (22:35 +0800)]
mmc: dw_mmc: add dw_mmc-k3 for k3 platform
Add dw_mmc-k3.c for k3v2, support sd/emmc
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Signed-off-by: Zhigang Wang <brooke.wangzhigang@huawei.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Chris Ball <chris@printf.net>
Zhangfei Gao [Thu, 9 Jan 2014 14:35:10 +0000 (22:35 +0800)]
mmc: dw_mmc: use slot-gpio to handle cd pin
Suggested by Jaehoon: Use slot-gpio to handle cd-gpio
Add function dw_mci_of_get_cd_gpio to check "cd-gpios" from dts.
mmc_gpio_request_cd and mmc_gpio_get_cd are used to handle cd pin
Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Chris Ball <chris@printf.net>
Adam Lee [Wed, 18 Dec 2013 16:01:26 +0000 (00:01 +0800)]
mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts
Add O2Micro/BayHubTech SD Host DeviceId 8520 support.
Add O2Micro/BayHubTech SD Host DeviceId 8420 & 8421 support.
Add O2Micro/BayHubTech SD Host DeviceId 8620 & 8621 support.
These card readers are used in laptops like Lenovo ThinkPad W540,
Dell Latitude E5440, Dell Latitude E6540.
Signed-off-by: Peter Guo <peter.guo@bayhubtech.com>
Signed-off-by: Adam Lee <adam.lee@canonical.com>
Signed-off-by: Chris Ball <chris@printf.net>
Adam Lee [Wed, 18 Dec 2013 14:23:38 +0000 (22:23 +0800)]
mmc: sdhci-pci: break out definitions to header file
Break out definitions in sdhci-pci.c to sdhci-pci.h, for introducing
module files like sdhci-pci-xxx.c
Signed-off-by: Adam Lee <adam.lee@canonical.com>
Signed-off-by: Chris Ball <chris@printf.net>
Kuninori Morimoto [Wed, 8 Jan 2014 01:33:51 +0000 (17:33 -0800)]
mmc: tmio: fixup compile error
This patch fixes the below compile error:
${LINUX}/drivers/mmc/host/tmio_mmc.c: In function 'tmio_mmc_probe':
${LINUX}/drivers/mmc/host/tmio_mmc.c:93:35: \
error: 'res_ctl' undeclared (first use in this function)
${LINUX}/drivers/mmc/host/tmio_mmc.c:93:35: \
note: each undeclared identifier is reported only \
once for each function it appears in
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Chris Ball <chris@printf.net>
Chris Ball [Tue, 7 Jan 2014 15:52:22 +0000 (10:52 -0500)]
MAINTAINERS: mmc: Update Chris Ball's email address.
I'm no longer at OLPC. (The old email address still works for now.)
Signed-off-by: Chris Ball <chris@printf.net>
Laurent Pinchart [Wed, 27 Nov 2013 01:18:30 +0000 (02:18 +0100)]
mmc: sh_mmcif: Enable driver compilation with COMPILE_TEST
This helps increasing build testing coverage.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Chris Ball <cjb@laptop.org>
Laurent Pinchart [Wed, 27 Nov 2013 01:18:29 +0000 (02:18 +0100)]
mmc: sdhi: Enable driver compilation with COMPILE_TEST
This helps increasing build testing coverage.
The driver doesn't compile on (at least) x86 due (possibly among others)
to missing readsw/writesw I/O accessors, restrict compilation to SUPERH
or ARM.
Whether the CTL_DMA_ENABLE register is part of the standard TMIO
controller or is Renesas-specific is unknown and impossible to test as
we have no current or planned TMIO DMA users other than SUPERH and
ARCH_SHMOBILE. Writing to the register is thus conditionally compiled
for SUPERH and ARCH_SHMOBILE only. Adding ARCH_SHMOBILE_MULTI to the
list would extend this to multiarch kernels, but would break the driver
for non-shmobile platforms if the register is Renesas-specific. We can
thus get rid of the conditional compilation completely without
introducing any further issue, and let future non-Renesas users deal
with the situation if it turns out to be a the problem.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Chris Ball <cjb@laptop.org>
Stephen Warren [Mon, 6 Jan 2014 18:17:47 +0000 (11:17 -0700)]
mmc: tegra: add support for Tegra124
Tegra124's MMC controller is very similar to earlier SoC generations,
and can be supported by the same driver.
However, there are some non-backwards-compatible HW differences, and
hence a new DT compatible value must be used to describe the HW. This
patch updates the driver to support that new compatible value.
That said, the HW differences are only relevant when enabling certain
high-performance transfer modes. Since the driver is currently very
simple and doesn't enable those modes, we don't actually need to address
any of these HW differences in the code yet, hence the simple nature of
this patch.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Laurent Pinchart [Wed, 30 Oct 2013 11:34:52 +0000 (12:34 +0100)]
mmc: sh_mmcif: Fix compilation warning on 64-bit platforms
Casting an integer to a void * generates a "cast to pointer from integer
of different size" warning. Cast the integer to an unsigned long first
to fix it.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Laurent Pinchart [Wed, 30 Oct 2013 11:34:51 +0000 (12:34 +0100)]
mmc: sh_mmcif: Factorize DMA channel request and configuration code
The channel request and configuration code is duplicated for the rx and
tx channels. Create a function that requests a single channel and call
it twice instead.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Kuninori Morimoto [Wed, 20 Nov 2013 08:31:13 +0000 (00:31 -0800)]
mmc: SDHI: add SoC specific workaround via HW version
One of Renesas SDHI chip needs workaround to use it, and, we can judge
it based on chip version. This patch adds very quick-hack workaround
method, since we still don't know how many chips need workaround in
the future.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Kuninori Morimoto [Wed, 20 Nov 2013 08:31:06 +0000 (00:31 -0800)]
mmc: tmio: add new TMIO_MMC_HAVE_HIGH_REG flags
The accessibility checking method to the higher register was added by
69d1fe18e92afb (mmc: tmio: only access registers above 0xff, if available)
But, it doesn't care 32bit register. It is impossible to calculate it
from the resource size, since there is 16/32 bit register IP (e.g. VERSION
is located on 0xe2 if 16bit register, but it is located on 0x1c4 if 32bit
register).
This patch adds new TMIO_MMC_HAVE_HIGH_REG flags, tmio_mmc driver has it,
and sh_mobile_sdhi doesn't have it today.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Kuninori Morimoto [Wed, 20 Nov 2013 08:30:55 +0000 (00:30 -0800)]
mmc: tmio: bus_shift become tmio_mmc_data member
.bus_shift is used to 16/32bit register access offset calculation on
tmio driver. tmio_mmc_xxx is used from Toshiba/Renesas now, but this
bus_shift value depends on HW IP. This patch moves .bus_shift to
tmio_mmc_data member and sets it on each driver.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Kuninori Morimoto [Wed, 20 Nov 2013 08:30:39 +0000 (00:30 -0800)]
mmc: tmio: use -EPROBE_DEFER if driver can't find regulator
Current tmio driver tries to use default ocr_avail if 1) it couldn't
find regulator and 2) if platform data doesn't have ocr_mask.
But, there is no guarantee that regulator driver probe is faster than
TMIO driver probe. TMIO driver will not use regulator in such case.
By this patch, TMIO driver returns -EPROBE_DEFER if it couldn't find
regulator and if platform doesn't have ocr_mask. Because, there is a
possibility that regulator has not been probed, but the user expects it.
This patch changes tmio_mmc_host_probe() behavior, but there is no user
who has conflict.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Sascha Hauer [Thu, 5 Dec 2013 13:34:51 +0000 (14:34 +0100)]
mmc: mxs: use mmc_of_parse to parse devicetree properties
Use generic helper function. This also adds support for the cd-gpios and
max-frequency devicetree properties.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Sascha Hauer [Thu, 5 Dec 2013 13:34:50 +0000 (14:34 +0100)]
mmc: mxs: use mmc_gpio_get_ro for detecting read-only status
This also fixes that the read-only gpio was used without being
requested.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Sascha Hauer [Thu, 5 Dec 2013 13:34:49 +0000 (14:34 +0100)]
mmc: mxs: use standard flag for cd inverted
We have a MMC_CAP2_CD_ACTIVE_HIGH flag, so use it rather than a custom
driver specific flag.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Sascha Hauer [Thu, 5 Dec 2013 13:34:48 +0000 (14:34 +0100)]
mmc: mxs: use standard flag for broken card detection
Use the standard MMC_CAP_NEEDS_POLL flag rather than a custom broken_cd
flag. The original code used to just return true in the card detection
function for broken card detection. The MMC_CAP_NEEDS_POLL works different,
but was introduced for the same purpose, so assume the code works correct
now.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Sascha Hauer [Thu, 5 Dec 2013 13:34:47 +0000 (14:34 +0100)]
mmc: mxs: use standard flag for non-removable status
The standard caps already have a MMC_CAP_NONREMOVABLE flag. Use it
rather than a custom non_removable flag.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Sascha Hauer [Thu, 5 Dec 2013 13:34:46 +0000 (14:34 +0100)]
mmc: Do not call get_cd for non removable cards
Non removable cards are always present, so do not call get_cd for them.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Mika Westerberg [Tue, 12 Nov 2013 10:01:33 +0000 (12:01 +0200)]
mmc: sdhci-acpi: add new ACPI ID
Newer Intel PCHs with LPSS have the same SDHCI controller than Haswell but
ACPI ID is different. Add this ID to the driver list.
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Laurent Pinchart [Mon, 28 Oct 2013 22:49:25 +0000 (23:49 +0100)]
mmc: sh_mobile_sdhi: Convert to clk_prepare/unprepare
Turn clk_enable() and clk_disable() calls into clk_prepare_enable() and
clk_disable_unprepare() to get ready for the migration to the common
clock framework.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Fabio Estevam [Sat, 5 Oct 2013 01:59:23 +0000 (22:59 -0300)]
mmc: sdhci-esdhc-imx: Use NULL instead of zero
Fix the following sparse warning:
drivers/mmc/host/sdhci-esdhc-imx.c:617:35: warning: Using plain integer as NULL pointer
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Chuansheng Liu [Tue, 5 Nov 2013 06:52:45 +0000 (14:52 +0800)]
mmc: sdhci: Setting the host->mrq to NULL before executing tuning
In function sdhci_request(), it is possible to do the tuning execution
like below:
sdhci_request() {
spin_lock_irqsave(&host->lock, flags);
host->mrq = mrq;
...
spin_unlock_irqrestore(&host->lock, flags);
<=== Here it is possible one pending finish_tasklet get running
and it will operate the original mrq, and notified the mrq
is done, and causes memory corruption.
sdhci_execute_tuning(mmc, tuning_opcode);
spin_lock_irqsave(&host->lock, flags);
host->mrq = mrq;
...
}
In the above race place, the original mrq should not be finished wrongly,
so here before unlock the spinlock, we need to set the host->mrq to NULL
to avoid this case.
Signed-off-by: Liu, Chuansheng <chuansheng.liu@intel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Guennadi Liakhovetski [Sat, 23 Nov 2013 08:54:39 +0000 (09:54 +0100)]
mmc: tmio: remove myself as a maintainer
Since I'm currently unable to dedicate sufficient time to driver
maintainership, remove myself from the maintainers list.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Ludovic Desroches [Wed, 20 Nov 2013 15:01:11 +0000 (16:01 +0100)]
mmc: atmel-mci: fix timeout errors in SDIO mode when using DMA
With some SDIO devices, timeout errors can happen when reading data.
To solve this issue, the DMA transfer has to be activated before sending
the command to the device. This order is incorrect in PDC mode. So we
have to take care if we are using DMA or PDC to know when to send the
MMC command.
Cc: stable <stable@vger.kernel.org> # 3.2+
Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Kuninori Morimoto [Wed, 20 Nov 2013 08:16:14 +0000 (00:16 -0800)]
mmc: tmio: don't overwrite caps2
02cb3221d5bb35 ("mmc: tmio: support caps2 flags") added caps2 support on
tmio, but it overwrites mmc_of_parse() settings. This patch fixes it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Laurent <laurent.pinchart@ideasonboard.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Ray Jui [Sat, 26 Oct 2013 18:03:44 +0000 (11:03 -0700)]
mmc: fix host release issue after discard operation
Under function mmc_blk_issue_rq, after an MMC discard operation,
the MMC request data structure may be freed in memory. Later in
the same function, the check of req->cmd_flags & MMC_REQ_SPECIAL_MASK
is dangerous and invalid. It causes the MMC host not to be released
when it should.
This patch fixes the issue by marking the special request down before
the discard/flush operation.
Reported by: Harold (SoonYeal) Yang <haroldsy@broadcom.com>
Signed-off-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Seungwon Jeon <tgih.jun@samsung.com>
Acked-by: Seungwon Jeon <tgih.jun@samsung.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Mon, 4 Nov 2013 08:38:29 +0000 (16:38 +0800)]
mmc: sdhci-esdhc-imx: add runtime pm support
The root clock will be disabled in runtime pm to save power.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Mon, 4 Nov 2013 08:38:28 +0000 (16:38 +0800)]
mmc: sdhci-esdhc-imx: fix runtime pm unbalance issue
Since we're using common esdhc_send_command for tuning commands and
the core code will call pm_runtime_put after command is finished.
So we add a pm_runtime_get_sync here to get the balance.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Mon, 4 Nov 2013 08:38:27 +0000 (16:38 +0800)]
mmc: esdhc-imx: clearing SDHCI_CTRL_EXEC_TUNING should not affect other bits
Current code will clear all turning related bits like ESDHC_STD_TUNING_EN
and ESDHC_MIX_CTRL_FBCLK_SEL when clear SDHCI_CTRL_EXEC_TUNING.
This may cause the card which has already passed the turning to become
unwork since the turning status lost.
We observed this failure when enable runtime pm.
BTW, imx needs to enable ESDHC_MIX_CTRL_FBCLK_SEL bit for turned clock.
The FBCLK_SEL will be cleared when SDHCI_CTRL_TUNED_CLK is cleared
and SDHCI_CTRL_EXEC_TUNING is not set.
This is used in case we change to another normal card from a UHS card
in the same slot. FBCLK_SEL is not needed for normal card.
After that, SDHCI_CTRL_EXEC_TUNING will only affect ESDHC_MIX_CTRL_EXE_TUNE.
Clearing it does not affect the turned card to remain working on UHS mode.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Mon, 4 Nov 2013 08:38:26 +0000 (16:38 +0800)]
mmc: sdhci-esdhc-imx: tuning bits should not be cleared during reset
We should not clear tuning bits during reset or the SD3.0/eMMC4.5 card
working on UHS mode may not work after reset since the former tuning
settings was lost.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Mon, 4 Nov 2013 08:38:25 +0000 (16:38 +0800)]
mmc: sdhci-pltfm: export pltfm suspend/resume api
It is helpful for platform code to use to eliminate duplicated code.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Wed, 30 Oct 2013 14:10:42 +0000 (22:10 +0800)]
mmc: sdhci-esdhc-imx: add eMMC HS200 mode support
Add support for eMMC 4.5 cards to work on hs200 mode.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Wed, 30 Oct 2013 14:09:53 +0000 (22:09 +0800)]
mmc: core: mmc DDR mode should not depend on UHS_DDR50
The MMC_CAP_UHS_DDR50 must work on 1.8v.
However, the eMMC DDR mode can work on either 1.8v or 3.3v and
should not depend on UHS_DDR50.
So get rid of this limitation to let controller without 1.8v
signal voltage support can also work for eMMC DDR mode if it claims.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Wed, 30 Oct 2013 14:09:52 +0000 (22:09 +0800)]
mmc: sdhci-esdhc-imx: add MMC_CAP_1_8V_DDR for mx6
The i.MX6 supports 1.8v/3.3v eMMC DDR mode, so add this flag.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Wed, 30 Oct 2013 14:09:51 +0000 (22:09 +0800)]
mmc: sdhci-esdhc-imx: fix cpas over write issue
We should use '|=' instead '=', or it may over write the original
caps assigned before this line.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Wed, 30 Oct 2013 14:09:49 +0000 (22:09 +0800)]
mmc: sdhci-esdhc-imx: add SDHCI_TRANSFER_MODE read function
Used to read out the correct value of SDHCI_TRANSFER_MODE register
for upper layer.
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Dong Aisheng [Wed, 30 Oct 2013 14:09:48 +0000 (22:09 +0800)]
mmc: sdhci: clear auto cmd setting bits for no data cmds
The auto cmd settings bits should be cleared before sending new commands
or we may receive command timeout error for normal commands due to wrongly
pre-sent auto cmd.
e.g. we receive CMD13 timeout error due to ACMD23 is wrongly enabled
by former data commands.
mmc2: new high speed DDR MMC card at address 0001
mmcblk1: mmc2:0001 SEM08G 7.39 GiB
mmcblk1boot0: mmc2:0001 SEM08G partition 1 2.00 MiB
mmcblk1boot1: mmc2:0001 SEM08G partition 2 2.00 MiB
mmcblk1rpmb: mmc2:0001 SEM08G partition 3 128 KiB
mmcblk1: p1 p2 p3 p4 < p5 p6 p7 >
mmc2: Timeout waiting for hardware interrupt.
mmcblk1boot1: unknown partition table
mmc2: Timeout waiting for hardware interrupt.
mmcblk1boot0: unknown partition table
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
Linus Torvalds [Tue, 26 Nov 2013 19:18:37 +0000 (11:18 -0800)]
Merge tag 'fixes-for-linus' of git://git./linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Olof Johansson:
"Mostly bugfixes and a few small code removals. Worth pointing out is:
- A handful of more fixes to get DT enablement working properly on
OMAP, finding new breakage of things that don't work quite right
yet without the traditional board files. I expect a bit more of
this to come in this release as people test on their hardware.
- Implementation of power_down_finish() on vexpress, to make kexec
work and to stop the MCPM core to produce a warning (the warning
was new to 3.13-rc1).
- A handful of minor fixes for various platforms"
* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
ARM: bcm2835: add missing #xxx-cells to I2C nodes
ARM: dts: Add max77686 RTC interrupt to cros5250-common
ARM: vexpress/TC2: Implement MCPM power_down_finish()
ARM: tegra: Provide dummy powergate implementation
ARM: omap: fix warning with LPAE build
ARM: OMAP2+: Remove legacy omap4_twl6030_hsmmc_init
ARM: OMAP2+: Remove legacy mux code for display.c
ARM: OMAP2+: Fix undefined reference to set_cntfreq
gpio: twl4030: Fix passing of pdata in the device tree case
gpio: twl4030: Fix regression for twl gpio output
ARM: OMAP2+: More randconfig fixes for reconfigure_io_chain
ARM: dts: imx6qdl: disable spdif "rxtx5" clock option
ARM: dts: Fix omap2 specific dtsi files by adding the missing entries
ARM: OMAP2+: Fix GPMC and simplify bootloader timings for 8250 and smc91x
i2c: omap: Fix missing device tree flags for omap2
Linus Torvalds [Tue, 26 Nov 2013 19:16:54 +0000 (11:16 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/jmorris/linux-security
Pull IMA fixes from James Morris:
"These three patches fix regressions in the IMA code in your current
tree.
The first fixes a couple of bugs in template_desc_init_fields(), and
the other two ensure that changes in this kernel don't break
userspace"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
ima: make a copy of template_fmt in template_desc_init_fields()
ima: do not send field length to userspace for digest of ima template
ima: do not include field length in template digest calc for ima template
Linus Torvalds [Tue, 26 Nov 2013 19:15:12 +0000 (11:15 -0800)]
Merge tag 'ntb-3.13' of git://github.com/jonmason/ntb
Pull non-transparent bridge updates from Jon Mason:
"NTB driver bug fixes to address a missed call to pci_enable_msix,
NTB-RP Link Up issue, Xeon Doorbell errata workaround, ntb_transport
link down race, and correct dmaengine_get/put usage.
Also, clean-ups to remove duplicate defines and document a hardware
errata. Finally, some changes to improve performance"
* tag 'ntb-3.13' of git://github.com/jonmason/ntb:
NTB: Disable interrupts and poll under high load
NTB: Enable Snoop on Primary Side
NTB: Document HW errata
NTB: remove duplicate defines
NTB: correct dmaengine_get/put usage
NTB: Fix ntb_transport link down race
ntb: Fix missed call to pci_enable_msix()
NTB: Fix NTB-RP Link Up
NTB: Xeon Doorbell errata workaround
Stephen Warren [Tue, 26 Nov 2013 03:35:42 +0000 (20:35 -0700)]
ARM: bcm2835: add missing #xxx-cells to I2C nodes
The I2C controller node needs #address-cells and #size-cells properties,
but these are currently missing. Add them. This allows child nodes to be
parsed correctly.
Cc: stable@vger.kernel.org
Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
Mattia Dongili [Mon, 25 Nov 2013 22:43:50 +0000 (07:43 +0900)]
sony-laptop: do not scribble keyboard backlight registers on resume
Follow-up to commit
294d31e8227c ("sony-laptop: don't change keyboard
backlight settings"): avoid messing up the state on resume. Leave it to
what was before suspending as it's anyway likely that we still don't
know what value we should write to the EC registers. This fix is also
required in 3.12
Cc: stable@vger.kernel.org
Tested-by: Karol Babioch <karol@babioch.de>
Signed-off-by: Mattia Dongili <malattia@linux.it>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
James Morris [Tue, 26 Nov 2013 00:05:14 +0000 (11:05 +1100)]
Merge branch 'for-linus' of git://git./linux/kernel/git/zohar/linux-integrity into for-linus
Kevin Hilman [Mon, 25 Nov 2013 23:54:42 +0000 (15:54 -0800)]
Merge tag 'imx-fixes-3.13-2' of git://git.linaro.org/people/shawnguo/linux-2.6 into fixes
The imx fixes for 3.13, part 2:
- Disable S/PDIF "rxtx5" clock option to fix the clocksource breakage
introduced by S/PDIF driver
* tag 'imx-fixes-3.13-2' of git://git.linaro.org/people/shawnguo/linux-2.6:
ARM: dts: imx6qdl: disable spdif "rxtx5" clock option
Signed-off-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
Doug Anderson [Wed, 23 Oct 2013 13:11:01 +0000 (06:11 -0700)]
ARM: dts: Add max77686 RTC interrupt to cros5250-common
Without the interrupt you'll get problems if you enable
CONFIG_RTC_DRV_MAX77686. Setup the interrupt properly in the device
tree.
Signed-off-by: Doug Anderson <dianders@chromium.org>
Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
Cc: stable@vger.kernel.org
Dave Martin [Mon, 25 Nov 2013 16:16:25 +0000 (16:16 +0000)]
ARM: vexpress/TC2: Implement MCPM power_down_finish()
This patch implements the power_down_finish() method for TC2, to
enable the kernel to confirm when CPUs are safely powered down.
The information required for determining when a CPU is parked
cannot be obtained from any single place, so a few sources of
information must be combined:
* mcpm_cpu_power_down() must be pending for the CPU, so that we
don't get confused by false STANDBYWFI positives arising from
CPUidle. This is detected by waiting for the tc2_pm use count
for the target CPU to reach 0.
* Either the SPC must report that the CPU has asserted
STANDBYWFI, or the TC2 tile's reset control logic must be
holding the CPU in reset.
Just checking for STANDBYWFI is not sufficient, because this
signal is not latched when the the cluster is clamped off and
powered down: the relevant status bits just drop to zero. This
means that STANDBYWFI status cannot be used for reliable
detection of the last CPU in a cluster reaching WFI.
This patch is required in order for kexec to work with MCPM on TC2.
MCPM code was changed in commit
0de0d6467525 ('ARM: 7848/1: mcpm:
Implement cpu_kill() to synchronise on powerdown'), and since then it
will hit a WARN_ON_ONCE() due to power_down_finish not being implemented
on the TC2 platform.
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Acked-by: Pawel Moll <pawel.moll@arm.com>
Reviewed-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
Thierry Reding [Mon, 25 Nov 2013 18:49:47 +0000 (11:49 -0700)]
ARM: tegra: Provide dummy powergate implementation
In order to support increased build test coverage for drivers, implement
dummies for the powergate implementation. This will allow the drivers to
be built without requiring support for Tegra to be selected.
This patch solves the following build errors, which can be triggered in
v3.13-rc1 by selecting DRM_TEGRA without ARCH_TEGRA:
drivers/built-in.o: In function `gr3d_remove':
drivers/gpu/drm/tegra/gr3d.c:321: undefined reference to `tegra_powergate_power_off'
drivers/gpu/drm/tegra/gr3d.c:325: undefined reference to `tegra_powergate_power_off'
drivers/built-in.o: In function `gr3d_probe':
drivers/gpu/drm/tegra/gr3d.c:266: undefined reference to `tegra_powergate_sequence_power_up'
drivers/gpu/drm/tegra/gr3d.c:273: undefined reference to `tegra_powergate_sequence_power_up'
Signed-off-by: Thierry Reding <treding@nvidia.com>
[swarren, updated commit description]
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
Olof Johansson [Tue, 19 Nov 2013 19:50:37 +0000 (11:50 -0800)]
Merge tag 'omap-for-v3.13/more-fixes-for-merge-window-take2' of git://git./linux/kernel/git/tmlind/linux-omap into fixes
From Tony Lindgren:
Few more fixes for issues found booting older omaps using device tree.
Also few randconfig build fixes and removal of some dead code for omap4
as it no longer has legacy platform data based booting support.
* tag 'omap-for-v3.13/more-fixes-for-merge-window-take2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
ARM: OMAP2+: Remove legacy omap4_twl6030_hsmmc_init
ARM: OMAP2+: Remove legacy mux code for display.c
ARM: OMAP2+: Fix undefined reference to set_cntfreq
gpio: twl4030: Fix passing of pdata in the device tree case
gpio: twl4030: Fix regression for twl gpio output
ARM: OMAP2+: More randconfig fixes for reconfigure_io_chain
ARM: dts: Fix omap2 specific dtsi files by adding the missing entries
ARM: OMAP2+: Fix GPMC and simplify bootloader timings for 8250 and smc91x
i2c: omap: Fix missing device tree flags for omap2
Olof Johansson [Wed, 13 Nov 2013 06:51:28 +0000 (22:51 -0800)]
ARM: omap: fix warning with LPAE build
Some omap3 code is throwing a warning:
arch/arm/mach-omap2/pm34xx.c: In function 'omap3_save_secure_ram_context':
arch/arm/mach-omap2/pm34xx.c:123:32: warning: cast to pointer from
integer of different size [-Wint-to-pointer-cast]
In reality this code will never actually execute with LPAE=y, since
Cortex-A8 doesn't support it. So downcasting the __pa() is safe in
this case.
Signed-off-by: Olof Johansson <olof@lixom.net>
Acked-by: Tony Lindgren <tony@atomide.com>
Linus Torvalds [Mon, 25 Nov 2013 20:50:08 +0000 (12:50 -0800)]
Merge tag 'regulator-v3.13-rc1' of git://git./linux/kernel/git/broonie/regulator
Pull regulator fixes from Mark Brown:
"A bunch of fixes, a few driver specific ones and a framework fix for
voltage enumeration on fixed voltage regulators which had previously
worked but had been misplaced during some refactoring causing problems
for users that needed to know the voltage"
* tag 'regulator-v3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
regulator: arizona-micsupp: Correct wm5110 voltage selection
regulator: pfuze100: allow misprogrammed ID
regulator: fixed: fix regulator_list_voltage() for regression
regulator: gpio-regulator: Don't oops on missing regulator-type property
Roberto Sassu [Mon, 25 Nov 2013 19:18:52 +0000 (20:18 +0100)]
ima: make a copy of template_fmt in template_desc_init_fields()
This patch makes a copy of the 'template_fmt' function argument so that
the latter will not be modified by strsep(), which does the splitting by
replacing the given separator with '\0'.
 IMA: No TPM chip found, activating TPM-bypass!
 Unable to handle kernel pointer dereference at virtual kernel address
0000000000842000
 Oops: 0004 [#1] SMP
 Modules linked in:
 CPU: 3 PID: 1 Comm: swapper/0 Not tainted 3.12.0-rc2-00098-g3ce1217d6cd5 #17
 task:
000000003ffa0000 ti:
000000003ff84000 task.ti:
000000003ff84000
 Krnl PSW :
0704e00180000000 000000000044bf88 (strsep+0x7c/0xa0)
           R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 EA:3
 Krnl GPRS:
000000000000007c 000000000000007c 000000003ff87d90 0000000000821fd8
          Â
0000000000000000 000000000000007c 0000000000aa37e0 0000000000aa9008
          Â
0000000000000051 0000000000a114d8 0000000100000002 0000000000842bde
          Â
0000000000842bdf 00000000006f97f0 000000000040062c 000000003ff87cf0
 Krnl Code:
000000000044bf7c:
a7f4000a          brc    15,44bf90
          Â
000000000044bf80:
b90200cc          ltgr   %r12,%r12
          #
000000000044bf84:
a7840006          brc    8,44bf90
          >
000000000044bf88:
9200c000          mvi    0(%r12),0
          Â
000000000044bf8c:
41c0c001          la     %r12,1(%r12)
          Â
000000000044bf90:
e3c020000024      stg    %r12,0(%r2)
          Â
000000000044bf96:
b904002b          lgr    %r2,%r11
          Â
000000000044bf9a:
ebbcf0700004      lmg    %r11,%r12,112(%r15)
 Call Trace:
 ([<
00000000004005fe>] ima_init_template+0xa2/0x1bc)
 [<
0000000000a7c896>] ima_init+0x7a/0xa8
 [<
0000000000a7c938>] init_ima+0x24/0x40
 [<
00000000001000e8>] do_one_initcall+0x68/0x128
 [<
0000000000a4eb56>] kernel_init_freeable+0x20a/0x2b4
 [<
00000000006a1ff4>] kernel_init+0x30/0x178
 [<
00000000006b69fe>] kernel_thread_starter+0x6/0xc
 [<
00000000006b69f8>] kernel_thread_starter+0x0/0xc
 Last Breaking-Event-Address:
 [<
000000000044bf42>] strsep+0x36/0xa0
Fixes commit: adf53a7 ima: new templates management mechanism
Changelog v1:
- make template_fmt 'const char *' (reported-by James Morris)
- fix kstrdup memory leak (reported-by James Morris)
Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Roberto Sassu <roberto.sassu@polito.it>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Tested-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Roberto Sassu [Fri, 8 Nov 2013 18:21:40 +0000 (19:21 +0100)]
ima: do not send field length to userspace for digest of ima template
This patch defines a new value for the 'ima_show_type' enumerator
(IMA_SHOW_BINARY_NO_FIELD_LEN) to prevent that the field length
is transmitted through the 'binary_runtime_measurements' interface
for the digest field of the 'ima' template.
Fixes commit: 3ce1217 ima: define template fields library and new helpers
Signed-off-by: Roberto Sassu <roberto.sassu@polito.it>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Roberto Sassu [Fri, 8 Nov 2013 18:21:39 +0000 (19:21 +0100)]
ima: do not include field length in template digest calc for ima template
To maintain compatibility with userspace tools, the field length must not
be included in the template digest calculation for the 'ima' template.
Fixes commit: a71dc65 ima: switch to new template management mechanism
Signed-off-by: Roberto Sassu <roberto.sassu@polito.it>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Randy Dunlap [Sat, 23 Nov 2013 02:14:38 +0000 (18:14 -0800)]
slab.h: remove duplicate kmalloc declaration and fix kernel-doc warnings
Fix kernel-doc warning for duplicate definition of 'kmalloc':
Documentation/DocBook/kernel-api.xml:9483: element refentry: validity error : ID API-kmalloc already defined
<refentry id="API-kmalloc">
Also combine the kernel-doc info from the 2 kmalloc definitions into one
block and remove the "see kcalloc" comment since kmalloc now contains the
@flags info.
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Acked-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 24 Nov 2013 18:45:29 +0000 (10:45 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input
Pull input updates from Dmitry Torokhov:
"A new driver for Surface 2.0/Pixelsense touchscreen and a couple of
driver fixups"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
MAINTAINERS - add keyboard driver to Hyper-V file list
Input: atmel-wm97xx - fix compile error
Input: hp_sdc_rtc - unlock on error in hp_sdc_rtc_read_i8042timer()
Input: cyttsp4 - remove unnecessary work pending test
Input: add sur40 driver for Samsung SUR40 (aka MS Surface 2.0/Pixelsense)
Mark Brown [Sun, 24 Nov 2013 14:02:50 +0000 (14:02 +0000)]
Merge remote-tracking branch 'regulator/fix/pfuze100' into regulator-linus
Mark Brown [Sun, 24 Nov 2013 14:02:48 +0000 (14:02 +0000)]
Merge remote-tracking branch 'regulator/fix/gpio' into regulator-linus
Mark Brown [Sun, 24 Nov 2013 14:02:47 +0000 (14:02 +0000)]
Merge remote-tracking branch 'regulator/fix/fixed' into regulator-linus
Mark Brown [Sun, 24 Nov 2013 14:02:47 +0000 (14:02 +0000)]
Merge remote-tracking branch 'regulator/fix/arizona' into regulator-linus
Linus Torvalds [Sun, 24 Nov 2013 00:38:17 +0000 (16:38 -0800)]
Revert "KEYS: verify a certificate is signed by a 'trusted' key"
This reverts commit
09fbc47373826d67531380662b516de2da120545, which
caused the following build errors:
crypto/asymmetric_keys/x509_public_key.c: In function ‘x509_key_preparse’:
crypto/asymmetric_keys/x509_public_key.c:237:35: error: ‘system_trusted_keyring’ undeclared (first use in this function)
ret = x509_validate_trust(cert, system_trusted_keyring);
^
crypto/asymmetric_keys/x509_public_key.c:237:35: note: each undeclared identifier is reported only once for each function it appears in
reported by Jim Davis. Mimi says:
"I made the classic mistake of requesting this patch to be upstreamed
at the last second, rather than waiting until the next open window.
At this point, the best course would probably be to revert the two
commits and fix them for the next open window"
Reported-by: Jim Davis <jim.epost@gmail.com>
Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 24 Nov 2013 00:36:35 +0000 (16:36 -0800)]
Revert "ima: define '_ima' as a builtin 'trusted' keyring"
This reverts commit
217091dd7a7a1bdac027ddb7c5a25f6ac0b8e241, which
caused the following build error:
security/integrity/digsig.c:70:5: error: redefinition of ‘integrity_init_keyring’
security/integrity/integrity.h:149:12: note: previous definition of ‘integrity_init_keyring’ w
security/integrity/integrity.h:149:12: warning: ‘integrity_init_keyring’ defined but not used
reported by Krzysztof Kolasa. Mimi says:
"I made the classic mistake of requesting this patch to be upstreamed
at the last second, rather than waiting until the next open window.
At this point, the best course would probably be to revert the two
commits and fix them for the next open window"
Reported-by: Krzysztof Kolasa <kkolasa@winsoft.pl>
Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Sun, 24 Nov 2013 00:18:25 +0000 (16:18 -0800)]
Merge git://git./linux/kernel/git/herbert/crypto-2.6
Pull crypto update from Herbert Xu:
- Made x86 ablk_helper generic for ARM
- Phase out chainiv in favour of eseqiv (affects IPsec)
- Fixed aes-cbc IV corruption on s390
- Added constant-time crypto_memneq which replaces memcmp
- Fixed aes-ctr in omap-aes
- Added OMAP3 ROM RNG support
- Add PRNG support for MSM SoC's
- Add and use Job Ring API in caam
- Misc fixes
[ NOTE! This pull request was sent within the merge window, but Herbert
has some questionable email sending setup that makes him public enemy
#1 as far as gmail is concerned. So most of his emails seem to be
trapped by gmail as spam, resulting in me not seeing them. - Linus ]
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (49 commits)
crypto: s390 - Fix aes-cbc IV corruption
crypto: omap-aes - Fix CTR mode counter length
crypto: omap-sham - Add missing modalias
padata: make the sequence counter an atomic_t
crypto: caam - Modify the interface layers to use JR API's
crypto: caam - Add API's to allocate/free Job Rings
crypto: caam - Add Platform driver for Job Ring
hwrng: msm - Add PRNG support for MSM SoC's
ARM: DT: msm: Add Qualcomm's PRNG driver binding document
crypto: skcipher - Use eseqiv even on UP machines
crypto: talitos - Simplify key parsing
crypto: picoxcell - Simplify and harden key parsing
crypto: ixp4xx - Simplify and harden key parsing
crypto: authencesn - Simplify key parsing
crypto: authenc - Export key parsing helper function
crypto: mv_cesa: remove deprecated IRQF_DISABLED
hwrng: OMAP3 ROM Random Number Generator support
crypto: sha256_ssse3 - also test for BMI2
crypto: mv_cesa - Remove redundant of_match_ptr
crypto: sahara - Remove redundant of_match_ptr
...
Linus Torvalds [Sat, 23 Nov 2013 00:47:28 +0000 (16:47 -0800)]
Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86
Pull x86 platform driver updates from Matthew Garrett:
"A moderate diffstat, but it's almost entirely just moving the
chromebook driver into its own directory in order to ease ARM support,
adding back rfkill support to the one Dell laptop model where it's
expected to work, updates to the Intel IPC driver for hardware I've
never actually seen and the usual set of small fixes"
[ This actually came in before the merge window closed, and I had just
missed it because it didn't match my git pull email pattern. - Linus ]
* 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86: (24 commits)
x86, wmi fix modalias_show return values
ipc: Added support for IPC interrupt mode
ipc: Handle error conditions in ipc command
ipc: Enabled ipc support for additional intel platforms
ipc: Added platform data structure
thinkpad_acpi: Fix build error when CONFIG_SND_MAX_CARDS > 32
platform: add chrome platform directory
hp-wmi: detect "2009 BIOS or later" flag by WMI 0x0d for wireless cmd
dell-wmi: Add KEY_MICMUTE to bios_to_linux_keycode
platform:x86: Remove OOM message after input_allocate_device
sony-laptop: fixe typos in sony_laptop_input_keycode_map
sony-laptop: warn on multiple KBD backlight handles
dell-laptop: Only enable rfkill functionality on laptops with a hw killswitch
dell-laptop: Add a force_rfkill module parameter
dell-laptop: Wait less long before updating rfkill after an rfkill keypress
dell-laptop: Do not skip setting blocked bit rfkill_set while hw-blocked
dell-laptop: Sync current block state to BIOS on hw switch change
dell-laptop: Allow changing the sw_state while the radio is blocked by hw
dell-laptop: Don't read-back sw_state on machines with a hardware switch
dell-laptop: Don't set sw_state from the query callback
...
Dmitry Torokhov [Fri, 22 Nov 2013 22:33:46 +0000 (14:33 -0800)]
Merge branch 'next' into for-linus
Second round of input updates for 3.13.
Linus Torvalds [Fri, 22 Nov 2013 19:30:55 +0000 (11:30 -0800)]
Linux 3.13-rc1
Linus Torvalds [Fri, 22 Nov 2013 18:58:14 +0000 (10:58 -0800)]
Merge tag 'ecryptfs-3.13-rc1-quiet-checkers' of git://git./linux/kernel/git/tyhicks/ecryptfs
Pull minor eCryptfs fix from Tyler Hicks:
"Quiet static checkers by removing unneeded conditionals"
* tag 'ecryptfs-3.13-rc1-quiet-checkers' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs:
eCryptfs: file->private_data is always valid
Linus Torvalds [Fri, 22 Nov 2013 18:57:31 +0000 (10:57 -0800)]
Merge tag 'sound-fix2-3.13-rc1' of git://git./linux/kernel/git/tiwai/sound
Pull second set of sound fixes from Takashi Iwai:
"A collection of small fixes in HD-audio quirks and runtime PM, ASoC
rcar, abs8500 and other codecs. Most of commits are for stable
kernels, too"
* tag 'sound-fix2-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda - Set current_headset_type to ALC_HEADSET_TYPE_ENUM (janitorial)
ALSA: hda - Provide missing pin configs for VAIO with ALC260
ALSA: hda - Add headset quirk for Dell Inspiron 3135
ALSA: hda - Fix the headphone jack detection on Sony VAIO TX
ALSA: hda - Fix missing bass speaker on ASUS N550
ALSA: hda - Fix unbalanced runtime PM notification at resume
ASoC: arizona: Set FLL to free-run before disabling
ALSA: hda - A casual Dell Headset quirk
ASoC: rcar: fixup dma_async_issue_pending() timing
ASoC: rcar: off by one in rsnd_scu_set_route()
ASoC: wm5110: Add post SYSCLK register patch for rev D chip
ASoC: ab8500: Revert to using custom I/O functions
ALSA: hda - Also enable mute/micmute LED control for "Lenovo dock" fixup
ALSA: firewire-lib: include sound/asound.h to refer to snd_pcm_format_t
ALSA: hda - Select FW_LOADER from CONFIG_SND_HDA_CODEC_CA0132_DSP
ALSA: hda - Enable mute/mic-mute LEDs for more Thinkpads with Realtek codec
ASoC: rcar: fixup mod access before checking
Linus Torvalds [Fri, 22 Nov 2013 18:56:11 +0000 (10:56 -0800)]
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Pull DRM fixes from Dave Airlie:
"I was going to leave this until post -rc1 but sysfs fixes broke
hotplug in userspace, so I had to fix it harder, otherwise a set of
pulls from intel, radeon and vmware,
The vmware/ttm changes are bit larger but since its early and they are
unlikely to break anything else I put them in, it lets vmware work
with dri3"
* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (36 commits)
drm/sysfs: fix hotplug regression since lifetime changes
drm/exynos: g2d: fix memory leak to userptr
drm/i915: Fix gen3 self-refresh watermarks
drm/ttm: Remove set_need_resched from the ttm fault handler
drm/ttm: Don't move non-existing data
drm/radeon: hook up backlight functions for CI and KV family.
drm/i915: Replicate BIOS eDP bpp clamping hack for hsw
drm/i915: Do not enable package C8 on unsupported hardware
drm/i915: Hold pc8 lock around toggling pc8.gpu_idle
drm/i915: encoder->get_config is no longer optional
drm/i915/tv: add ->get_config callback
drm/radeon/cik: Add macrotile mode array query
drm/radeon/cik: Return backend map information to userspace
drm/vmwgfx: Make vmwgfx dma buffers prime aware
drm/vmwgfx: Make surfaces prime-aware
drm/vmwgfx: Hook up the prime ioctls
drm/ttm: Add a minimal prime implementation for ttm base objects
drm/vmwgfx: Fix false lockdep warning
drm/ttm: Allow execbuf util reserves without ticket
drm/i915: restore the early forcewake cleanup
...
Linus Torvalds [Fri, 22 Nov 2013 18:53:47 +0000 (10:53 -0800)]
Merge tag 'pci-v3.13-fixes-1' of git://git./linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas:
"Miscellaneous
- Remove duplicate disable from pcie_portdrv_remove() (Yinghai Lu)
- Fix whitespace, capitalization, and spelling errors (Bjorn Helgaas)"
* tag 'pci-v3.13-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
PCI: Remove duplicate pci_disable_device() from pcie_portdrv_remove()
PCI: Fix whitespace, capitalization, and spelling errors
Linus Torvalds [Fri, 22 Nov 2013 18:52:03 +0000 (10:52 -0800)]
Merge branch 'for-next' of git://git./linux/kernel/git/nab/target-pending
Pull SCSI target updates from Nicholas Bellinger:
"Things have been quiet this round with mostly bugfixes, percpu
conversions, and other minor iscsi-target conformance testing changes.
The highlights include:
- Add demo_mode_discovery attribute for iscsi-target (Thomas)
- Convert tcm_fc(FCoE) to use percpu-ida pre-allocation
- Add send completion interrupt coalescing for ib_isert
- Convert target-core to use percpu-refcounting for se_lun
- Fix mutex_trylock usage bug in iscsit_increment_maxcmdsn
- tcm_loop updates (Hannes)
- target-core ALUA cleanups + prep for v3.14 SCSI Referrals support (Hannes)
v3.14 is currently shaping to be a busy development cycle in target
land, with initial support for T10 Referrals and T10 DIF currently on
the roadmap"
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (40 commits)
iscsi-target: chap auth shouldn't match username with trailing garbage
iscsi-target: fix extract_param to handle buffer length corner case
iscsi-target: Expose default_erl as TPG attribute
target_core_configfs: split up ALUA supported states
target_core_alua: Make supported states configurable
target_core_alua: Store supported ALUA states
target_core_alua: Rename ALUA_ACCESS_STATE_OPTIMIZED
target_core_alua: spellcheck
target core: rename (ex,im)plict -> (ex,im)plicit
percpu-refcount: Add percpu-refcount.o to obj-y
iscsi-target: Do not reject non-immediate CmdSNs exceeding MaxCmdSN
iscsi-target: Convert iscsi_session statistics to atomic_long_t
target: Convert se_device statistics to atomic_long_t
target: Fix delayed Task Aborted Status (TAS) handling bug
iscsi-target: Reject unsupported multi PDU text command sequence
ib_isert: Avoid duplicate iscsit_increment_maxcmdsn call
iscsi-target: Fix mutex_trylock usage in iscsit_increment_maxcmdsn
target: Core does not need blkdev.h
target: Pass through I/O topology for block backstores
iser-target: Avoid using FRMR for single dma entry requests
...
Linus Torvalds [Fri, 22 Nov 2013 18:49:14 +0000 (10:49 -0800)]
Merge tag 'hwmon-for-linus' of git://git./linux/kernel/git/groeck/linux-staging
Pull hwmon fixes from Guenter Roeck:
- acpi_power_meter: Fix return value check from call to
acpi_bus_get_device
- nct6775: Fix/improve NCT6791 support
- lm75: Add support for GMT G751
* tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
hwmon: (acpi_power_meter) Fix acpi_bus_get_device() return value check
hwmon: (nct6775) NCT6791 supports weight control only for CPUFAN
hwmon: (nct6775) Monitor additional temperature registers
hwmon: (lm75) Add support for GMT G751 chip
Linus Torvalds [Fri, 22 Nov 2013 17:57:35 +0000 (09:57 -0800)]
Merge git://git./linux/kernel/git/davem/net
Pull networking fixes from David Miller:
1) Fix memory leaks and other issues in mwifiex driver, from Amitkumar
Karwar.
2) skb_segment() can choke on packets using frag lists, fix from
Herbert Xu with help from Eric Dumazet and others.
3) IPv4 output cached route instantiation properly handles races
involving two threads trying to install the same route, but we
forgot to propagate this logic to input routes as well. Fix from
Alexei Starovoitov.
4) Put protections in place to make sure that recvmsg() paths never
accidently copy uninitialized memory back into userspace and also
make sure that we never try to use more that sockaddr_storage for
building the on-kernel-stack copy of a sockaddr. Fixes from Hannes
Frederic Sowa.
5) R8152 driver transmit flow bug fixes from Hayes Wang.
6) Fix some minor fallouts from genetlink changes, from Johannes Berg
and Michael Opdenacker.
7) AF_PACKET sendmsg path can race with netdevice unregister notifier,
fix by using RCU to make sure the network device doesn't go away
from under us. Fix from Daniel Borkmann.
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (43 commits)
gso: handle new frag_list of frags GRO packets
genetlink: fix genl_set_err() group ID
genetlink: fix genlmsg_multicast() bug
packet: fix use after free race in send path when dev is released
xen-netback: stop the VIF thread before unbinding IRQs
wimax: remove dead code
net/phy: Add the autocross feature for forced links on VSC82x4
net/phy: Add VSC8662 support
net/phy: Add VSC8574 support
net/phy: Add VSC8234 support
net: add BUG_ON if kernel advertises msg_namelen > sizeof(struct sockaddr_storage)
net: rework recvmsg handler msg_name and msg_namelen logic
bridge: flush br's address entry in fdb when remove the
net: core: Always propagate flag changes to interfaces
ipv4: fix race in concurrent ip_route_input_slow()
r8152: fix incorrect type in assignment
r8152: support stopping/waking tx queue
r8152: modify the tx flow
r8152: fix tx/rx memory overflow
netfilter: ebt_ip6: fix source and destination matching
...
Linus Torvalds [Fri, 22 Nov 2013 17:56:51 +0000 (09:56 -0800)]
Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM fixes from Russell King:
"Some small fixes for this merge window, most of them quite self
explanatory - the biggest thing here is a fix for the ARMv7 LPAE
suspend/resume support"
* 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
ARM: 7894/1: kconfig: select GENERIC_CLOCKEVENTS if HAVE_ARM_ARCH_TIMER
ARM: 7893/1: bitops: only emit .arch_extension mp if CONFIG_SMP
ARM: 7892/1: Fix warning for V7M builds
ARM: 7888/1: seccomp: not compatible with ARM OABI
ARM: 7886/1: make OABI default to off
ARM: 7885/1: Save/Restore 64-bit TTBR registers on LPAE suspend/resume
ARM: 7884/1: mm: Fix ECC mem policy printk
ARM: 7883/1: fix mov to mvn conversion in case of 64 bit phys_addr_t and BE
ARM: 7882/1: mm: fix __phys_to_virt to work with 64 bit phys_addr_t in BE case
ARM: 7881/1: __fixup_smp read of SCU config should do byteswap in BE case
ARM: Fix nommu.c build warning
Linus Torvalds [Fri, 22 Nov 2013 17:56:07 +0000 (09:56 -0800)]
Merge branch 'next' of git://git./virt/kvm/kvm
Pull KVM fixes from Gleb Natapov.
* 'next' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: kvm_clear_guest_page(): fix empty_zero_page usage
kvm: mmu: delay mmu audit activation
arm/arm64: KVM: Fix hyp mappings of vmalloc regions
Linus Torvalds [Fri, 22 Nov 2013 16:42:14 +0000 (08:42 -0800)]
Merge git://git.kvack.org/~bcrl/aio-next
Pull aio fixes from Benjamin LaHaise.
* git://git.kvack.org/~bcrl/aio-next:
aio: nullify aio->ring_pages after freeing it
aio: prevent double free in ioctx_alloc
aio: Fix a trinity splat
Linus Torvalds [Fri, 22 Nov 2013 16:41:17 +0000 (08:41 -0800)]
Merge branch 'for-3.13' of git://linux-nfs.org/~bfields/linux
Pull nfsd bugfixes from Bruce Fields:
"A couple nfsd bugfixes"
* 'for-3.13' of git://linux-nfs.org/~bfields/linux:
nfsd4: fix xdr decoding of large non-write compounds
nfsd: make sure to balance get/put_write_access
nfsd: split up nfsd_setattr
Linus Torvalds [Fri, 22 Nov 2013 16:39:44 +0000 (08:39 -0800)]
Merge tag 'gfs2-fixes' of git://git./linux/kernel/git/steve/gfs2-3.0-fixes
Pull GFS2 fixes from Steven Whitehouse:
"A couple of small, but important bug fixes for GFS2. The first one
fixes a possible NULL pointer dereference, and the second one resolves
a reference counting issue in one of the lesser used paths through
atomic_open"
* tag 'gfs2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes:
GFS2: Fix ref count bug relating to atomic_open
GFS2: fix potential NULL pointer dereference
Linus Torvalds [Fri, 22 Nov 2013 16:38:55 +0000 (08:38 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/mason/linux-btrfs
Pull btrfs fixes from Chris Mason:
"Almost all of these are bug fixes. Dave Sterba's documentation update
is the big exception because he removed our promises to set any
machine running Btrfs on fire"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
Documentation: filesystems: update btrfs tools section
Documentation: filesystems: add new btrfs mount options
btrfs: update kconfig help text
btrfs: fix bio_size_ok() for max_sectors > 0xffff
btrfs: Use trace condition for get_extent tracepoint
btrfs: fix typo in the log message
Btrfs: fix list delete warning when removing ordered root from the list
Btrfs: print bytenr instead of page pointer in check-int
Btrfs: remove dead codes from ctree.h
Btrfs: don't wait for ordered data outside desired range
Btrfs: fix lockdep error in async commit
Btrfs: avoid heavy operations in btrfs_commit_super
Btrfs: fix __btrfs_start_workers retval
Btrfs: disable online raid-repair on ro mounts
Btrfs: do not inc uncorrectable_errors counter on ro scrubs
Btrfs: only drop modified extents if we logged the whole inode
Btrfs: make sure to copy everything if we rename
Btrfs: don't BUG_ON() if we get an error walking backrefs
Linus Torvalds [Fri, 22 Nov 2013 16:37:47 +0000 (08:37 -0800)]
Merge tag 'xfs-for-linus-v3.13-rc1-2' of git://oss.sgi.com/xfs/xfs
Pull second xfs update from Ben Myers:
"There are a couple of patches that I wasn't quite sure about in time
for our initial 3.13 pull request, a bugfix, and an update to add Dave
to MAINTAINERS:
Here we have a performance fix for inode iversion, increased inode
cluster size for v5 superblock filesystems, a fix for error handling
in xfs_bmap_add_attrfork, and a MAINTAINERS update to add Dave"
* tag 'xfs-for-linus-v3.13-rc1-2' of git://oss.sgi.com/xfs/xfs:
xfs: open code inc_inode_iversion when logging an inode
xfs: increase inode cluster size for v5 filesystems
xfs: fix unlock in xfs_bmap_add_attrfork
xfs: update maintainers
Linus Torvalds [Fri, 22 Nov 2013 16:10:34 +0000 (08:10 -0800)]
Merge branch 'slab/next' of git://git./linux/kernel/git/penberg/linux
Pull SLAB changes from Pekka Enberg:
"The patches from Joonsoo Kim switch mm/slab.c to use 'struct page' for
slab internals similar to mm/slub.c. This reduces memory usage and
improves performance:
https://lkml.org/lkml/2013/10/16/155
Rest of the changes are bug fixes from various people"
* 'slab/next' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux: (21 commits)
mm, slub: fix the typo in mm/slub.c
mm, slub: fix the typo in include/linux/slub_def.h
slub: Handle NULL parameter in kmem_cache_flags
slab: replace non-existing 'struct freelist *' with 'void *'
slab: fix to calm down kmemleak warning
slub: proper kmemleak tracking if CONFIG_SLUB_DEBUG disabled
slab: rename slab_bufctl to slab_freelist
slab: remove useless statement for checking pfmemalloc
slab: use struct page for slab management
slab: replace free and inuse in struct slab with newly introduced active
slab: remove SLAB_LIMIT
slab: remove kmem_bufctl_t
slab: change the management method of free objects of the slab
slab: use __GFP_COMP flag for allocating slab pages
slab: use well-defined macro, virt_to_slab()
slab: overloading the RCU head over the LRU for RCU free
slab: remove cachep in struct slab_rcu
slab: remove nodeid in struct slab
slab: remove colouroff in struct slab
slab: change return type of kmem_getpages() to struct page
...
Linus Torvalds [Fri, 22 Nov 2013 16:07:11 +0000 (08:07 -0800)]
Merge branch 'merge' of git://git./linux/kernel/git/benh/powerpc
Pull third set of powerpc updates from Benjamin Herrenschmidt:
"This is a small collection of random bug fixes and a few improvements
of Oops output which I deemed valuable enough to include as well.
The fixes are essentially recent build breakage and regressions, and a
couple of older bugs such as the DTL log duplication, the EEH issue
with PCI_COMMAND_MASTER and the problem with small contexts passed to
get/set_context with VSX enabled"
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/signals: Mark VSX not saved with small contexts
powerpc/pseries: Fix SMP=n build of rng.c
powerpc: Make cpu_to_chip_id() available when SMP=n
powerpc/vio: Fix a dma_mask issue of vio
powerpc: booke: Fix build failures
powerpc: ppc64 address space capped at 32TB, mmap randomisation disabled
powerpc: Only print PACATMSCRATCH in oops when TM is active
powerpc/pseries: Duplicate dtl entries sometimes sent to userspace
powerpc: Remove a few lines of oops output
powerpc: Print DAR and DSISR on machine check oopses
powerpc: Fix __get_user_pages_fast() irq handling
powerpc/eeh: More accurate log
powerpc/eeh: Enable PCI_COMMAND_MASTER for PCI bridges
David Henningsson [Fri, 22 Nov 2013 11:17:06 +0000 (12:17 +0100)]
ALSA: hda - Set current_headset_type to ALC_HEADSET_TYPE_ENUM (janitorial)
current_headset_type should be of the HEADSET_TYPE enum, not the
HEADSET_MODE enum. Since ALC_HEADSET_TYPE_UNKNOWN and ALC_HEADSET_MODE_UNKNOWN
are both 0, this patch is just janitorial.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Fri, 22 Nov 2013 07:06:36 +0000 (08:06 +0100)]
ALSA: hda - Provide missing pin configs for VAIO with ALC260
Some models (or maybe depending on BIOS version) of Sony VAIO with
ALC260 give no proper pin configurations as default, resulting in the
non-working speaker, etc. Just provide the whole pin configurations
via a fixup.
Reported-by: Matthew Markus <mmarkus@hearit.co>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Linus Torvalds [Fri, 22 Nov 2013 05:32:38 +0000 (21:32 -0800)]
Merge branch 'akpm' (fixes from Andrew)
Merge patches from Andrew Morton:
"13 fixes"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
mm: place page->pmd_huge_pte to right union
MAINTAINERS: add keyboard driver to Hyper-V file list
x86, mm: do not leak page->ptl for pmd page tables
ipc,shm: correct error return value in shmctl (SHM_UNLOCK)
mm, mempolicy: silence gcc warning
block/partitions/efi.c: fix bound check
ARM: drivers/rtc/rtc-at91rm9200.c: disable interrupts at shutdown
mm: hugetlbfs: fix hugetlbfs optimization
kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS cleanly
ipc,shm: fix shm_file deletion races
mm: thp: give transparent hugepage code a separate copy_page
checkpatch: fix "Use of uninitialized value" warnings
configfs: fix race between dentry put and lookup
Linus Torvalds [Fri, 22 Nov 2013 03:46:00 +0000 (19:46 -0800)]
Merge branch 'for-linus2' of git://git./linux/kernel/git/jmorris/linux-security
Pull security subsystem updates from James Morris:
"In this patchset, we finally get an SELinux update, with Paul Moore
taking over as maintainer of that code.
Also a significant update for the Keys subsystem, as well as
maintenance updates to Smack, IMA, TPM, and Apparmor"
and since I wanted to know more about the updates to key handling,
here's the explanation from David Howells on that:
"Okay. There are a number of separate bits. I'll go over the big bits
and the odd important other bit, most of the smaller bits are just
fixes and cleanups. If you want the small bits accounting for, I can
do that too.
(1) Keyring capacity expansion.
KEYS: Consolidate the concept of an 'index key' for key access
KEYS: Introduce a search context structure
KEYS: Search for auth-key by name rather than target key ID
Add a generic associative array implementation.
KEYS: Expand the capacity of a keyring
Several of the patches are providing an expansion of the capacity of a
keyring. Currently, the maximum size of a keyring payload is one page.
Subtract a small header and then divide up into pointers, that only gives
you ~500 pointers on an x86_64 box. However, since the NFS idmapper uses
a keyring to store ID mapping data, that has proven to be insufficient to
the cause.
Whatever data structure I use to handle the keyring payload, it can only
store pointers to keys, not the keys themselves because several keyrings
may point to a single key. This precludes inserting, say, and rb_node
struct into the key struct for this purpose.
I could make an rbtree of records such that each record has an rb_node
and a key pointer, but that would use four words of space per key stored
in the keyring. It would, however, be able to use much existing code.
I selected instead a non-rebalancing radix-tree type approach as that
could have a better space-used/key-pointer ratio. I could have used the
radix tree implementation that we already have and insert keys into it by
their serial numbers, but that means any sort of search must iterate over
the whole radix tree. Further, its nodes are a bit on the capacious side
for what I want - especially given that key serial numbers are randomly
allocated, thus leaving a lot of empty space in the tree.
So what I have is an associative array that internally is a radix-tree
with 16 pointers per node where the index key is constructed from the key
type pointer and the key description. This means that an exact lookup by
type+description is very fast as this tells us how to navigate directly to
the target key.
I made the data structure general in lib/assoc_array.c as far as it is
concerned, its index key is just a sequence of bits that leads to a
pointer. It's possible that someone else will be able to make use of it
also. FS-Cache might, for example.
(2) Mark keys as 'trusted' and keyrings as 'trusted only'.
KEYS: verify a certificate is signed by a 'trusted' key
KEYS: Make the system 'trusted' keyring viewable by userspace
KEYS: Add a 'trusted' flag and a 'trusted only' flag
KEYS: Separate the kernel signature checking keyring from module signing
These patches allow keys carrying asymmetric public keys to be marked as
being 'trusted' and allow keyrings to be marked as only permitting the
addition or linkage of trusted keys.
Keys loaded from hardware during kernel boot or compiled into the kernel
during build are marked as being trusted automatically. New keys can be
loaded at runtime with add_key(). They are checked against the system
keyring contents and if their signatures can be validated with keys that
are already marked trusted, then they are marked trusted also and can
thus be added into the master keyring.
Patches from Mimi Zohar make this usable with the IMA keyrings also.
(3) Remove the date checks on the key used to validate a module signature.
X.509: Remove certificate date checks
It's not reasonable to reject a signature just because the key that it was
generated with is no longer valid datewise - especially if the kernel
hasn't yet managed to set the system clock when the first module is
loaded - so just remove those checks.
(4) Make it simpler to deal with additional X.509 being loaded into the kernel.
KEYS: Load *.x509 files into kernel keyring
KEYS: Have make canonicalise the paths of the X.509 certs better to deduplicate
The builder of the kernel now just places files with the extension ".x509"
into the kernel source or build trees and they're concatenated by the
kernel build and stuffed into the appropriate section.
(5) Add support for userspace kerberos to use keyrings.
KEYS: Add per-user_namespace registers for persistent per-UID kerberos caches
KEYS: Implement a big key type that can save to tmpfs
Fedora went to, by default, storing kerberos tickets and tokens in tmpfs.
We looked at storing it in keyrings instead as that confers certain
advantages such as tickets being automatically deleted after a certain
amount of time and the ability for the kernel to get at these tokens more
easily.
To make this work, two things were needed:
(a) A way for the tickets to persist beyond the lifetime of all a user's
sessions so that cron-driven processes can still use them.
The problem is that a user's session keyrings are deleted when the
session that spawned them logs out and the user's user keyring is
deleted when the UID is deleted (typically when the last log out
happens), so neither of these places is suitable.
I've added a system keyring into which a 'persistent' keyring is
created for each UID on request. Each time a user requests their
persistent keyring, the expiry time on it is set anew. If the user
doesn't ask for it for, say, three days, the keyring is automatically
expired and garbage collected using the existing gc. All the kerberos
tokens it held are then also gc'd.
(b) A key type that can hold really big tickets (up to 1MB in size).
The problem is that Active Directory can return huge tickets with lots
of auxiliary data attached. We don't, however, want to eat up huge
tracts of unswappable kernel space for this, so if the ticket is
greater than a certain size, we create a swappable shmem file and dump
the contents in there and just live with the fact we then have an
inode and a dentry overhead. If the ticket is smaller than that, we
slap it in a kmalloc()'d buffer"
* 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (121 commits)
KEYS: Fix keyring content gc scanner
KEYS: Fix error handling in big_key instantiation
KEYS: Fix UID check in keyctl_get_persistent()
KEYS: The RSA public key algorithm needs to select MPILIB
ima: define '_ima' as a builtin 'trusted' keyring
ima: extend the measurement list to include the file signature
kernel/system_certificate.S: use real contents instead of macro GLOBAL()
KEYS: fix error return code in big_key_instantiate()
KEYS: Fix keyring quota misaccounting on key replacement and unlink
KEYS: Fix a race between negating a key and reading the error set
KEYS: Make BIG_KEYS boolean
apparmor: remove the "task" arg from may_change_ptraced_domain()
apparmor: remove parent task info from audit logging
apparmor: remove tsk field from the apparmor_audit_struct
apparmor: fix capability to not use the current task, during reporting
Smack: Ptrace access check mode
ima: provide hash algo info in the xattr
ima: enable support for larger default filedata hash algorithms
ima: define kernel parameter 'ima_template=' to change configured default
ima: add Kconfig default measurement list template
...