Re: [PATCH V4 00/11] mmc: Add Command Queue support

Adrian Hunter
2017-07-24T10:16:49Z

On 24/07/17 12:17, Shawn Lin wrote:
> Hi Adrian,
>
> On 2017/7/21 17:49, Adrian Hunter wrote:
>> Hi
>>
>> Here is V4 of the hardware command queue patches without the software
>> command queue patches.
>>
>
> I see this log for the reboot test last weekend. One of my boards
> seems to easily trigger this WARN_ONCE.
>
> [ 10.012778] mmc1: cqhci: spurious TCN for tag 31

Tag 31 is DCMD. DCMD can be problematic which is one of the reasons it is
optional. In this case it looks like you are getting a TCN before the DCMD
is actually finished. You should be able to see if that is the case by
dumping the registers when it happens, although you will need to stop
messages going to the console because that will be too slow.

> [ 10.013332] ------------[ cut here ]------------
> [ 10.013779] WARNING: CPU: 0 PID: 2596 at drivers/mmc/host/cqhci.c:721
> cqhci_irq+0x2cc/0x42c
> [ 10.014520] Modules linked in:
> [ 10.014837] CPU: 0 PID: 2596 Comm: sed Not tainted
> 4.13.0-rc1-next-20170720-00012-g9d9bf45 #33
> [ 10.015595] Hardware name: Firefly-RK3399 Board (DT)
> [ 10.016043] task: ffff80007b510000 task.stack: ffff80007a160000
> [ 10.016575] PC is at cqhci_irq+0x2cc/0x42c
> [ 10.016946] LR is at cqhci_irq+0x2cc/0x42c
> [ 10.017321] pc : [<ffff0000087f7c3c>] lr : [<ffff0000087f7c3c>] pstate:
> 600001c5
> [ 10.017974] sp : ffff80007ef11db0
> [ 10.018275] x29: ffff80007ef11db0 x28: 0000000000000001
> [ 10.018759] x27: ffff80007ba7d600 x26: 0000000000000001
> [ 10.019242] x25: ffff000008d279a8 x24: ffff80007b8f4130
> [ 10.019725] x23: ffff000008fb0d00 x22: 0000000000000002
> [ 10.020208] x21: ffff80007ba7d000 x20: ffff80007b8f4118
> [ 10.020690] x19: 000000000000001f x18: 0000000000000000
> [ 10.021172] x17: 0000000000000000 x16: 0000000000000000
> [ 10.021654] x15: 0000000000000000 x14: 00000000f7b60065
> [ 10.022138] x13: 00000000ffc54040 x12: 0000000000000000
> [ 10.022624] x11: 000000000000081b x10: 0000000000000006
> [ 10.023105] x9 : 000000000000081c x8 : ffff00000853de20
> [ 10.023587] x7 : ffff000008ec9df8 x6 : ffff00000900651b
> [ 10.024070] x5 : 0000000000000000 x4 : 0000000000000000
> [ 10.024553] x3 : 0000000000000000 x2 : ffff80007ef19970
> [ 10.025035] x1 : ffff80007b510000 x0 : 0000000000000024
> [ 10.025519] Call trace:
> [ 10.025761] Exception stack(0xffff80007ef11be0 to 0xffff80007ef11d10)
> [ 10.026342] 1be0: 000000000000001f 0001000000000000 ffff80007ef11db0
> ffff0000087f7c3c
> [ 10.027040] 1c00: ffff000008d279a8 0000000000000001 ffff80007ba7d600
> 0000000000000001
> [ 10.027738] 1c20: 0000000000000002 0000000000000000 ffff80007ef11db0
> ffff80007ef11db0
> [ 10.028437] 1c40: ffff80007ef11d70 00000000ffffffc8 ffff80007ef11c80
> ffff00000810f980
> [ 10.029135] 1c60: ffff80007ef11db0 ffff80007ef11db0 ffff80007ef11d70
> 00000000ffffffc8
> [ 10.029833] 1c80: 0000000000000024 ffff80007b510000 ffff80007ef19970
> 0000000000000000
> [ 10.030533] 1ca0: 0000000000000000 0000000000000000 ffff00000900651b
> ffff000008ec9df8
> [ 10.031230] 1cc0: ffff00000853de20 000000000000081c 0000000000000006
> 000000000000081b
> [ 10.031928] 1ce0: 0000000000000000 00000000ffc54040 00000000f7b60065
> 0000000000000000
> [ 10.032624] 1d00: 0000000000000000 0000000000000000
> [ 10.033068] [<ffff0000087f7c3c>] cqhci_irq+0x2cc/0x42c
> [ 10.033541] [<ffff0000087f2c90>] sdhci_arasan_cqhci_irq+0x44/0x58
> [ 10.034092] [<ffff0000087dec28>] sdhci_irq+0xb0/0xb74
> [ 10.034554] [<ffff00000811096c>] __handle_irq_event_percpu+0xa0/0x128
> [ 10.035133] [<ffff000008110a10>] handle_irq_event_percpu+0x1c/0x54
> [ 10.035687] [<ffff000008110a8c>] handle_irq_event+0x44/0x74
> [ 10.036192] [<ffff000008114040>] handle_fasteoi_irq+0x9c/0x154
> [ 10.036717] [<ffff00000810fa7c>] generic_handle_irq+0x24/0x38
> [ 10.037234] [<ffff0000081100fc>] __handle_domain_irq+0x60/0xac
> [ 10.037759] [<ffff00000808173c>] gic_handle_irq+0xd4/0x17c
>
>>
>> Changes since V3:
>> Adjusted ...blk_end_request...() for new block status codes
>> Fixed CQHCI transaction descriptor for "no DCMD" case
>>
>> Changes since V2:
>> Dropped patches that have been applied.
>> Re-based
>> Added "mmc: sdhci-pci: Add CQHCI support for Intel GLK"
>>
>> Changes since V1:
>>
>> "Share mmc request array between partitions" is dependent
>> on changes in "Introduce queue semantics", so added that
>> and block fixes:
>>
>> Added "Fix is_waiting_last_req set incorrectly"
>> Added "Fix cmd error reset failure path"
>> Added "Use local var for mqrq_cur"
>> Added "Introduce queue semantics"
>>
>> Changes since RFC:
>>
>> Re-based on next.
>> Added comment about command queue priority.
>> Added some acks and reviews.
>>
>>
>> Adrian Hunter (10):
>> mmc: core: Add mmc_retune_hold_now()
>> mmc: core: Add members to mmc_request and mmc_data for CQE's
>> mmc: host: Add CQE interface
>> mmc: core: Turn off CQE before sending commands
>> mmc: core: Add support for handling CQE requests
>> mmc: mmc: Enable Command Queuing
>> mmc: mmc: Enable CQE's
>> mmc: block: Prepare CQE data
>> mmc: block: Add CQE support
>> mmc: sdhci-pci: Add CQHCI support for Intel GLK
>>
>> Venkat Gopalakrishnan (1):
>> mmc: cqhci: support for command queue enabled host
>>
>> drivers/mmc/core/block.c | 240 +++++++-
>> drivers/mmc/core/block.h | 7 +
>> drivers/mmc/core/bus.c | 7 +
>> drivers/mmc/core/core.c | 156 ++++-
>> drivers/mmc/core/host.c | 6 +
>> drivers/mmc/core/host.h | 1 +
>> drivers/mmc/core/mmc.c | 30 +-
>> drivers/mmc/core/queue.c | 273 ++++++++-
>> drivers/mmc/core/queue.h | 42 +-
>> drivers/mmc/host/Kconfig | 14 +
>> drivers/mmc/host/Makefile | 1 +
>> drivers/mmc/host/cqhci.c | 1146
>> +++++++++++++++++++++++++++++++++++++
>> drivers/mmc/host/cqhci.h | 240 ++++++++
>> drivers/mmc/host/sdhci-pci-core.c | 153 ++++-
>> include/linux/mmc/core.h | 18 +-
>> include/linux/mmc/host.h | 24 +
>> include/trace/events/mmc.h | 36 +-
>> 17 files changed, 2354 insertions(+), 40 deletions(-)
>> create mode 100644 drivers/mmc/host/cqhci.c
>> create mode 100644 drivers/mmc/host/cqhci.h
>>
>>
>> Regards
>> Adrian
>>
>>
>>
>
>