[Feature] GLK/CNL:eMMC 5.1 support

Bug #1685723 reported by quanxian on 2017-04-24
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Medium
Canonical Kernel Team
Bionic
Medium
Canonical Kernel Team

Bug Description

CNL will have eMMC5.1 capable host controller that includes new features:
1) Command queue support – making the data transfers highly efficient by offloading the software overhead into the controller.
2) eMMC 5.1 further improves the reliability of operation by utilizing an “enhanced strobe” at the PHY layer.
The eMMC5.1 is backward compatible with the existing eMMC 4.51 and eMMC 5.0 Devices.

Target Kernel:4.16

Target Release: 18.10

Target Platform: GLK/CNL

quanxian (quanxian-wang) on 2017-04-24
affects: firefox (Ubuntu) → intel
quanxian (quanxian-wang) on 2017-04-24
information type: Public → Proprietary
quanxian (quanxian-wang) on 2017-06-14
summary: - [Feature] CNL:eMMC 5.1 support
+ [Feature] GLK/CNL:eMMC 5.1 support
description: updated

Do we have a list of upstream kernel commits that we should confirm we are carrying in our Ubuntu kernel target for 17.10? Thanks.

In review currently, plan for 4.13

quanxian (quanxian-wang) wrote :

upstream moves it to 4.14. Therefore I change it to 18.04. I will provide commit id once Upstream finish it.

Canonical could determine if backport it into 17.10.

description: updated
Alice Liu (dxliu) on 2017-11-15
description: updated
quanxian (quanxian-wang) wrote :
Download full text (4.1 KiB)

Commits for this feature. The commit list is same as LP#1645959

Command Queue support is now dependent on blk-mq (block layer multi-queue) support. Backporting to old release will be a big challenge. Here are the directly-related patches:

925ff3a7a334b3fe968ae15f07d22df21addad26 mmc: mmc: Add Command Queue definitions
f12e39dbf3e6eb521435085712addc131d803bfd mmc: sdhci: Add CQE support
9d4579a85c84340044b10ffa6cd576397f59dc93 mmc: mmc_test: Disable Command Queue while mmc_test is used
025e3d5fe157e8a12ed4ab59d0e147046c87cbd9 mmc: block: Disable Command Queue while RPMB is used
d2f82254e4e862662e7820953b049b7d4d660ec7 mmc: core: Add members to mmc_request and mmc_data for CQE's
d3bf68ae04c7e29ed3c30b7f4b1f0c6a4a11c7f1 mmc: host: Add CQE interface
3e207c8cfaa900590590d2dfdbc5be155f258d7b mmc: core: Turn off CQE before sending commands
6c0cedd1ef9527ef13e66875746570e76a3188a7 mmc: core: Introduce host claiming by context
72a5af554df837e373efb0d6c8fc68c568f9a7ac mmc: core: Add support for handling CQE requests
98d4f7809d99bbf456f93816ef9895616cdd1b2d mmc: mmc: Enable Command Queuing
f690f4409ddd79a481efddaf6e4cb65cf1a747cb mmc: mmc: Enable CQE's
d3377c012f4d7a0a822e289f1effba997da3e295 mmc: block: Use local variables in mmc_blk_data_prep()
93482b3d70c2120aadb0f1d1281a59199866e70a mmc: block: Prepare CQE data
34c089e806793a66e450b11bd167db6047399fcd mmc: block: Fix missing blk_put_request()
fb8e456e547ed2c699f64665bd8a3b9bde7b9728 mmc: block: Check return value of blk_get_request()
ebe7dd45cf49e3b49cacbaace17f9f878f21fbea mmc: core: Do not leave the block driver in a suspended state
f9f0da98819503b06b35e61869d18cf3a8cd3323 mmc: block: Ensure that debugfs files are removed
4512bd370b111dd7ffc437ddd3179391df68fe1b mmc: block: No need to export mmc_cleanup_queue()
41e3efd07d5a02c80f503e29d755aa1bbb4245de mmc: block: Simplify cleaning up the queue
afab1bb8b40c61458e009fdc323c9740f95fcd5b mmc: core: Make mmc_pre_req() and mmc_post_req() available
6d3898a6a517d0effa1d1e337c03b16bafb6fc96 mmc: block: Add error-handling comments
c3d53d0da69d127f488dc85638e9440220b268e8 mmc: core: Add parameter use_blk_mq
81196976ed946cbf36bb41ddda402853c7df7cfa mmc: block: Add blk-mq support
1e8e55b67030c6a2fef893d428bdcd611f73705c mmc: block: Add CQE support
a4080225f51dcea129d26185a35acfbb3770a32d mmc: cqhci: support for command queue enabled host
8ee82bda230fc972c7ee3bb15ce1260eefb4721c mmc: sdhci-pci: Add CQHCI support for Intel GLK

Here are subsequent patches that affect the blk-mq support and should be taken to have equivalent code to upstream:

10f21df4a23540b5da8e88d1030ff8c37818e04f mmc: block: blk-mq: Add support for direct completion
88a516461ee07a994c0e7016faf85f3466de1d09 mmc: block: blk-mq: Separate card polling from recovery
c89b4851c67fb7354862850ae181de883269487d mmc: block: Make card_busy_detect() accumulate all response error bits
f47a1fe346b1568df0e9b158574b2939432313df mmc: block: blk-mq: Check error bits and save the exception bit when polling card busy
7701885e56cee3de4447c0653f9059b62844983b mmc: block: Check the timeout correctly in card_busy_detect()
0987c6b046e199b9b922a585c62e9503486fe0bc mmc: block: Check for transfer state in card_busy_det...

Read more...

The following landed in 4.16-rc1 and would need to be considered for backporting. Adding a linux task for Bionic.

10f21df4a23540b5da8e88d1030ff8c37818e04f mmc: block: blk-mq: Add support for direct completion
88a516461ee07a994c0e7016faf85f3466de1d09 mmc: block: blk-mq: Separate card polling from recovery
c89b4851c67fb7354862850ae181de883269487d mmc: block: Make card_busy_detect() accumulate all response error bits
f47a1fe346b1568df0e9b158574b2939432313df mmc: block: blk-mq: Check error bits and save the exception bit when polling card busy
7701885e56cee3de4447c0653f9059b62844983b mmc: block: Check the timeout correctly in card_busy_detect()
0987c6b046e199b9b922a585c62e9503486fe0bc mmc: block: Check for transfer state in card_busy_detect()
92c0a0cc9483c6b9cc1b61273d30a0a601cb5e15 mmc: block: Add timeout_clks when calculating timeout
6b7a363d2ce83e3940dc0c3628e478fe95f23985 mmc: block: Reduce polling timeout from 10 minutes to 10 seconds
7eb43d537166c7d767af450901acd0ecbf94625c mmc: block: blk-mq: Stop using legacy recovery
42f532da3a44843668dbacc1838a028b0a9b7373 mmc: mmc_test: Do not use mmc_start_areq() anymore
d2383318c5a626312d166217e3788e54b1650c56 mmc: core: Ensure cmd_completion is initialized
23a185254ace8e63dc4ca36e0315aed9440ae749 mmc: mmc_test: Ensure command queue is disabled for testing
1bec43a3b181baebdf8a4cd739b480a9132601d7 mmc: core: Remove option not to use blk-mq
0fbfd12518303e9b32ac9fd231439459eac848f9 mmc: block: Remove code no longer needed after the switch to blk-mq
126b62700386da782f83579e9b0431ea76c2da3d mmc: core: Remove code no longer needed after the switch to blk-mq
0562315b86372d2cdd9cc8924b92cfab37049fbc mmc: cqhci: Ensure macro parameters are wrapped in parentheses

information type: Proprietary → Public
tags: added: kernel
Changed in linux (Ubuntu Bionic):
status: New → Triaged
importance: Undecided → Medium
assignee: nobody → Canonical Kernel Team (canonical-kernel-team)
tags: added: bionic kernel-da-key

Following commits are not on 4.15 and were successfully cherry-picked. The changes are limited to mmc, but that impacts lots of hardware and platforms.

4512bd370b111dd7ffc437ddd3179391df68fe1b mmc: block: No need to export mmc_cleanup_queue()
41e3efd07d5a02c80f503e29d755aa1bbb4245de mmc: block: Simplify cleaning up the queue
afab1bb8b40c61458e009fdc323c9740f95fcd5b mmc: core: Make mmc_pre_req() and mmc_post_req() available
6d3898a6a517d0effa1d1e337c03b16bafb6fc96 mmc: block: Add error-handling comments
c3d53d0da69d127f488dc85638e9440220b268e8 mmc: core: Add parameter use_blk_mq
81196976ed946cbf36bb41ddda402853c7df7cfa mmc: block: Add blk-mq support
1e8e55b67030c6a2fef893d428bdcd611f73705c mmc: block: Add CQE support
a4080225f51dcea129d26185a35acfbb3770a32d mmc: cqhci: support for command queue enabled host
8ee82bda230fc972c7ee3bb15ce1260eefb4721c mmc: sdhci-pci: Add CQHCI support for Intel GLK
10f21df4a23540b5da8e88d1030ff8c37818e04f mmc: block: blk-mq: Add support for direct completion
88a516461ee07a994c0e7016faf85f3466de1d09 mmc: block: blk-mq: Separate card polling from recovery
c89b4851c67fb7354862850ae181de883269487d mmc: block: Make card_busy_detect() accumulate all response error bits
f47a1fe346b1568df0e9b158574b2939432313df mmc: block: blk-mq: Check error bits and save the exception bit when polling card busy
7701885e56cee3de4447c0653f9059b62844983b mmc: block: Check the timeout correctly in card_busy_detect()
0987c6b046e199b9b922a585c62e9503486fe0bc mmc: block: Check for transfer state in card_busy_detect()
92c0a0cc9483c6b9cc1b61273d30a0a601cb5e15 mmc: block: Add timeout_clks when calculating timeout
6b7a363d2ce83e3940dc0c3628e478fe95f23985 mmc: block: Reduce polling timeout from 10 minutes to 10 seconds
7eb43d537166c7d767af450901acd0ecbf94625c mmc: block: blk-mq: Stop using legacy recovery
42f532da3a44843668dbacc1838a028b0a9b7373 mmc: mmc_test: Do not use mmc_start_areq() anymore
d2383318c5a626312d166217e3788e54b1650c56 mmc: core: Ensure cmd_completion is initialized
23a185254ace8e63dc4ca36e0315aed9440ae749 mmc: mmc_test: Ensure command queue is disabled for testing
1bec43a3b181baebdf8a4cd739b480a9132601d7 mmc: core: Remove option not to use blk-mq
0fbfd12518303e9b32ac9fd231439459eac848f9 mmc: block: Remove code no longer needed after the switch to blk-mq
126b62700386da782f83579e9b0431ea76c2da3d mmc: core: Remove code no longer needed after the switch to blk-mq
0562315b86372d2cdd9cc8924b92cfab37049fbc mmc: cqhci: Ensure macro parameters are wrapped in parentheses

That is correct. This feature capability first introduced in Geminilake (GLK). Same code capability is used in Coffelake and Cannonlake SKUs.

This is a huge series that affects a lot of users out there as it changes lots of common MMC code. We should target 18.10 for that.

Cascardo.

quanxian (quanxian-wang) wrote :

move it into 18.10 as discussed

quanxian (quanxian-wang) wrote :

the commit should be the same as 1645959.

tags: added: intel-kernel-18.10
description: updated
no longer affects: intel
Seth Forshee (sforshee) wrote :

All of the requested commits should be present in the 4.18 kernel for Ubuntu Cosmic, please advise if anything additional is needed.

Changed in linux (Ubuntu):
status: Triaged → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers