Hi Here is V6 of the hardware command queue patches without the software command queue patches. Patches "mmc: host: Add CQE interface" and "mmc: core: Turn off CQE before sending commands" have been applied to Ulf's next branch. "mmc: host: Add CQE interface" needs to be dropped in favour of the new version. HW CMDQ offers 25% - 50% better random multi-threaded I/O. I see a slight 2% drop in sequential read speed but no change to sequential write. We need to start with the legacy block API because people want to backport CQ to earlier kernels (we really need to get features upstream more quickly), but blk-mq has been evolving a lot (e.g. elevator support), so backporters face having either something quite different from upstream or trying to backport great chunks of the block layer. We also don't know how blk-mq will perform so it would be prudent to start with support for both the legacy API and blk-mq (as scsi does) so that we can find out first. RFC patches to support blk-mq can be found here: https://marc.info/?l=linux-block&m=150349582124880 Changes since V5: Re-based mmc: core: Add mmc_retune_hold_now() Dropped because it has been applied mmc: core: Add members to mmc_request and mmc_data for CQE's Dropped because it has been applied mmc: core: Move mmc_start_areq() declaration New patch at Ulf's request mmc: block: Fix block status codes Another un-related patch mmc: host: Add CQE interface Move recovery_notifier() callback to struct mmc_request mmc: core: Add support for handling CQE requests Roll __mmc_cqe_request_done() into mmc_cqe_request_done() Move function declarations requested by Ulf mmc: core: Remove unused MMC_CAP2_PACKED_CMD Dropped because it has been applied mmc: block: Add CQE support Add explanation to commit message Adjustment for changed recovery_notifier() callback mmc: cqhci: support for command queue enabled host Adjustment for changed recovery_notifier() callback mmc: sdhci-pci: Add CQHCI support for Intel GLK Add DCMD capability for Intel controllers except GLK Changes since V4: mmc: core: Add mmc_retune_hold_now() Add explanation to commit message. mmc: host: Add CQE interface Add comments to callback declarations. mmc: core: Turn off CQE before sending commands Add explanation to commit message. mmc: core: Add support for handling CQE requests Add comments as requested by Ulf. mmc: core: Remove unused MMC_CAP2_PACKED_CMD New patch. mmc: mmc: Enable Command Queuing Adjust for removal of MMC_CAP2_PACKED_CMD. Add a comment about Packed Commands. mmc: mmc: Enable CQE's Remove un-necessary check for MMC_CAP2_CQE mmc: block: Use local variables in mmc_blk_data_prep() New patch. mmc: block: Prepare CQE data Adjust due to "mmc: block: Use local variables in mmc_blk_data_prep()" Remove priority setting. Add explanation to commit message. mmc: cqhci: support for command queue enabled host Fix transfer descriptor setting in cqhci_set_tran_desc() for 32-bit DMA 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 (11): mmc: core: Move mmc_start_areq() declaration mmc: block: Fix block status codes 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: Use local variables in mmc_blk_data_prep() 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 | 246 +++++++- drivers/mmc/core/block.h | 7 + drivers/mmc/core/bus.c | 7 + drivers/mmc/core/core.c | 172 +++++- drivers/mmc/core/core.h | 10 + drivers/mmc/core/mmc.c | 29 + drivers/mmc/core/queue.c | 270 ++++++++- drivers/mmc/core/queue.h | 43 +- drivers/mmc/host/Kconfig | 14 + drivers/mmc/host/Makefile | 1 + drivers/mmc/host/cqhci.c | 1154 +++++++++++++++++++++++++++++++++++++ drivers/mmc/host/cqhci.h | 240 ++++++++ drivers/mmc/host/sdhci-pci-core.c | 154 ++++- include/linux/mmc/core.h | 10 +- include/linux/mmc/host.h | 55 ++ 15 files changed, 2381 insertions(+), 31 deletions(-) create mode 100644 drivers/mmc/host/cqhci.c create mode 100644 drivers/mmc/host/cqhci.h Regards Adrian -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html