linux-samsung-soc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chanho Park <chanho61.park@samsung.com>
To: Alim Akhtar <alim.akhtar@samsung.com>,
	"James E . J . Bottomley" <jejb@linux.ibm.com>,
	"Martin K . Petersen" <martin.petersen@oracle.com>
Cc: Can Guo <cang@codeaurora.org>, Jaegeuk Kim <jaegeuk@kernel.org>,
	Kiwoong Kim <kwmad.kim@samsung.com>,
	Avri Altman <avri.altman@wdc.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Christoph Hellwig <hch@infradead.org>,
	Bart Van Assche <bvanassche@acm.org>,
	jongmin jeong <jjmin.jeong@samsung.com>,
	Gyunghoon Kwon <goodjob.kwon@samsung.com>,
	linux-samsung-soc@vger.kernel.org, linux-scsi@vger.kernel.org,
	Chanho Park <chanho61.park@samsung.com>
Subject: [PATCH 00/15] introduce exynosauto v9 ufs driver
Date: Fri,  9 Jul 2021 15:56:56 +0900	[thread overview]
Message-ID: <20210709065711.25195-1-chanho61.park@samsung.com> (raw)
In-Reply-To: CGME20210709065721epcas2p46f7aae35571c10f233b71a6381214419@epcas2p4.samsung.com

In ExynosAuto(variant of the Exynos for automotive), the UFS Storage needs
to be accessed from multi-OS. To increase IO performance and reduce SW
complexity, we implemented UFS-IOV to support storage IO virtualization
feature on UFS.

IO virtualization increases IO performance and reduce SW complexity
with small area cost. And IO virtualization supports virtual machine
isolation for Security and Safety which are requested by Multi-OS system
such as automotive application.

Below figure is the conception of UFS-IOV architeture.

    +------+          +------+
    | OS#1 |          | OS#2 |
    +------+          +------+
       |                 |
 +------------+     +------------+
 |  Physical  |     |   Virtual  |
 |    Host    |     |    Host    |
 +------------+     +------------+
   |      |              | <-- UTP_CMD_SAP, UTP_TM_SAP
   |   +-------------------------+
   |   |    Function Arbitor     |
   |   +-------------------------+
 +-------------------------------+
 |           UTP Layer           |
 +-------------------------------+
 +-------------------------------+
 |           UIC Layer           |
 +-------------------------------+

There are two types of host controllers on the UFS host controller
that we designed.
The UFS device has a Function Arbitor that arranges commands of each host.
When each host transmits a command to the Arbitor, the Arbitor transmits it
to the UTP layer.
Physical Host(PH) support all UFSHCI functions(all SAPs) same as
conventional UFSHCI.
Virtual Host(VH) support only data transfer function(UTP_CMD_SAP and
UTP_TM_SAP).

In an environment where multiple OSs are used, the OS that has the
leadership of the system is called System OS(Dom0). This system OS uses
PH and controls error handling.

Since VH can only use less functions than PH, it is necessary to send a
request to PH for Detected Error Handling in VH. To interface among PH
and VHs, UFSHCI HW supports mailbox. PH can broadcast mail to other VH at
the same time with arguments and VH can mail to PH with arguments.
PH and VH generate interrupts when mails from PH or VH.

In this structure, the virtual host can't support some feature and need
to skip the some part of ufshcd code by using quirk.
This patchs add quirks so that the UIC command is ignored and the ufshcd
init process can be skipped for VH. Also, according to our UFS-IOV policy,

First two patches, I picked them up from Jonmin's patchset[1] and the third
patch has been dropped because we need to check it again.

[1]: https://lore.kernel.org/linux-scsi/20210527030901.88403-1-jjmin.jeong@samsung.com/

Patch 0003 ~ 0012, they are changes of exynos7 ufs driver to apply
exynosauto v9 variant and PH/VH capabilities.
Patch 0013 ~ 0015, they introduce exynosauto v9 ufs MHCI which includes
PH and VH.

Chanho Park (13):
  scsi: ufs: ufs-exynos: change pclk available max value
  scsi: ufs: ufs-exynos: simplify drv_data retrieval
  scsi: ufs: ufs-exynos: get sysreg regmap for io-coherency
  scsi: ufs: ufs-exynos: add refclkout_stop control
  scsi: ufs: ufs-exynos: add setup_clocks callback
  scsi: ufs: ufs-exynos: correct timeout value setting registers
  scsi: ufs: ufs-exynos: support custom version of ufs_hba_variant_ops
  scsi: ufs: ufs-exynos: add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR option
  scsi: ufs: ufs-exynos: factor out priv data init
  scsi: ufs: ufs-exynos: add pre/post_hce_enable drv callbacks
  scsi: ufs: ufs-exynos: support exynosauto v9 ufs driver
  scsi: ufs: ufs-exynos: multi-host configuration for exynosauto
  scsi: ufs: ufs-exynos: introduce exynosauto v9 virtual host

jongmin jeong (2):
  scsi: ufs: add quirk to handle broken UIC command
  scsi: ufs: add quirk to enable host controller without interface
    configuration

 drivers/scsi/ufs/ufs-exynos.c | 318 +++++++++++++++++++++++++++++++---
 drivers/scsi/ufs/ufs-exynos.h |  10 +-
 drivers/scsi/ufs/ufshcd.c     |   6 +
 drivers/scsi/ufs/ufshcd.h     |  12 ++
 4 files changed, 320 insertions(+), 26 deletions(-)

-- 
2.32.0


       reply	other threads:[~2021-07-09  6:57 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20210709065721epcas2p46f7aae35571c10f233b71a6381214419@epcas2p4.samsung.com>
2021-07-09  6:56 ` Chanho Park [this message]
     [not found]   ` <CGME20210709065746epcas2p10d43898e863a873594f81f4a5a4f0ef2@epcas2p1.samsung.com>
2021-07-09  6:56     ` [PATCH 01/15] scsi: ufs: add quirk to handle broken UIC command Chanho Park
     [not found]   ` <CGME20210709065746epcas2p2f353983bbc64c1a21571fda2be59df34@epcas2p2.samsung.com>
2021-07-09  6:56     ` [PATCH 02/15] scsi: ufs: add quirk to enable host controller without interface configuration Chanho Park
2021-07-13 18:10       ` Alim Akhtar
2021-07-14  3:26         ` Chanho Park
     [not found]   ` <CGME20210709065746epcas2p47985fa3c33297a36d772fb9d45f30972@epcas2p4.samsung.com>
2021-07-09  6:56     ` [PATCH 03/15] scsi: ufs: ufs-exynos: change pclk available max value Chanho Park
2021-07-13 18:18       ` Alim Akhtar
     [not found]   ` <CGME20210709065746epcas2p26f07099abcb946400ff2777fd9df975d@epcas2p2.samsung.com>
2021-07-09  6:57     ` [PATCH 04/15] scsi: ufs: ufs-exynos: simplify drv_data retrieval Chanho Park
2021-07-13 18:59       ` Alim Akhtar
     [not found]   ` <CGME20210709065746epcas2p4cd871004fa034dace5046a8acf1d1b96@epcas2p4.samsung.com>
2021-07-09  6:57     ` [PATCH 05/15] scsi: ufs: ufs-exynos: get sysreg regmap for io-coherency Chanho Park
     [not found]   ` <CGME20210709065746epcas2p1367527fd1299b15fc339876281cb8af1@epcas2p1.samsung.com>
2021-07-09  6:57     ` [PATCH 06/15] scsi: ufs: ufs-exynos: add refclkout_stop control Chanho Park
2021-07-14  1:41       ` Alim Akhtar
     [not found]   ` <CGME20210709065746epcas2p20094c97a7abfd7704c30ca6bac04f924@epcas2p2.samsung.com>
2021-07-09  6:57     ` [PATCH 07/15] scsi: ufs: ufs-exynos: add setup_clocks callback Chanho Park
     [not found]   ` <CGME20210709065746epcas2p1b3e10cef9024d2092b019bddd7580256@epcas2p1.samsung.com>
2021-07-09  6:57     ` [PATCH 08/15] scsi: ufs: ufs-exynos: correct timeout value setting registers Chanho Park
     [not found]   ` <CGME20210709065746epcas2p35975dfa47363d0ea792988047f83a0ae@epcas2p3.samsung.com>
2021-07-09  6:57     ` [PATCH 09/15] scsi: ufs: ufs-exynos: support custom version of ufs_hba_variant_ops Chanho Park
     [not found]   ` <CGME20210709065747epcas2p2e966883390d1e77a43a897eae9ef0ad3@epcas2p2.samsung.com>
2021-07-09  6:57     ` [PATCH 10/15] scsi: ufs: ufs-exynos: add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR option Chanho Park
     [not found]   ` <CGME20210709065747epcas2p11576f5bd85eb2d99ae24a7241869a2f9@epcas2p1.samsung.com>
2021-07-09  6:57     ` [PATCH 11/15] scsi: ufs: ufs-exynos: factor out priv data init Chanho Park
     [not found]   ` <CGME20210709065747epcas2p284a0f5eac2e46bf03283b7a7363616c4@epcas2p2.samsung.com>
2021-07-09  6:57     ` [PATCH 12/15] scsi: ufs: ufs-exynos: add pre/post_hce_enable drv callbacks Chanho Park
     [not found]   ` <CGME20210709065747epcas2p483ee186906567e9e61a2a2c10209fc79@epcas2p4.samsung.com>
2021-07-09  6:57     ` [PATCH 13/15] scsi: ufs: ufs-exynos: support exynosauto v9 ufs driver Chanho Park
2021-07-13 10:57       ` Krzysztof Kozlowski
2021-07-13 12:07         ` Chanho Park
2021-07-13 12:11         ` Alim Akhtar
2021-07-16 15:03           ` Rob Herring
     [not found]   ` <CGME20210709065747epcas2p10c59e097d9770fc02134cb0545c9de4f@epcas2p1.samsung.com>
2021-07-09  6:57     ` [PATCH 14/15] scsi: ufs: ufs-exynos: multi-host configuration for exynosauto Chanho Park
2021-08-03 16:57       ` Bean Huo
2021-08-03 23:35         ` Chanho Park
     [not found]   ` <CGME20210709065747epcas2p37d1d2fc1ce5b582b71fa5187099d1801@epcas2p3.samsung.com>
2021-07-09  6:57     ` [PATCH 15/15] scsi: ufs: ufs-exynos: introduce exynosauto v9 virtual host Chanho Park

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210709065711.25195-1-chanho61.park@samsung.com \
    --to=chanho61.park@samsung.com \
    --cc=adrian.hunter@intel.com \
    --cc=alim.akhtar@samsung.com \
    --cc=avri.altman@wdc.com \
    --cc=bvanassche@acm.org \
    --cc=cang@codeaurora.org \
    --cc=goodjob.kwon@samsung.com \
    --cc=hch@infradead.org \
    --cc=jaegeuk@kernel.org \
    --cc=jejb@linux.ibm.com \
    --cc=jjmin.jeong@samsung.com \
    --cc=kwmad.kim@samsung.com \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).