All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiangliang Yu <Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	dl.SRDC_SW_GPUVirtualization-5C7GfCeVMHo@public.gmane.org
Cc: Xiangliang Yu <Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>,
	Monk Liu <Monk.Liu-5C7GfCeVMHo@public.gmane.org>
Subject: [PATCH 16/23] drm/amdgpu: add flag to indicate VF runtime state
Date: Sun, 18 Dec 2016 00:16:38 +0800	[thread overview]
Message-ID: <1481991405-30422-17-git-send-email-Xiangliang.Yu@amd.com> (raw)
In-Reply-To: <1481991405-30422-1-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>

Guest driver will select using KIQ to access gpu registers if
runtime flas is set, or will use MMIO method to r/w registers
directly.

When VF's initialization is done, VF should use set runtime flag
and use KIQ method. And clear runtime flag when starting to unload
driver.

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 ++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h   | 5 +++++
 drivers/gpu/drm/amd/mxgpu/mxgpu_mb.c       | 3 +++
 3 files changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index ab8c8bb5..b3c1820 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -94,6 +94,9 @@ uint32_t amdgpu_mm_rreg(struct amdgpu_device *adev, uint32_t reg,
 {
 	uint32_t ret;
 
+	if (amdgpu_sriov_runtime(adev))
+		return amdgpu_kiq_rreg(adev, reg);
+
 	if ((reg * 4) < adev->rmmio_size && !always_indirect)
 		ret = readl(((void __iomem *)adev->rmmio) + (reg * 4));
 	else {
@@ -113,6 +116,9 @@ void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v,
 {
 	trace_amdgpu_mm_wreg(adev->pdev->device, reg, v);
 
+	if (amdgpu_sriov_runtime(adev))
+		return amdgpu_kiq_wreg(adev, reg, v);
+
 	if ((reg * 4) < adev->rmmio_size && !always_indirect)
 		writel(v, ((void __iomem *)adev->rmmio) + (reg * 4));
 	else {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
index c78435d..eb2905e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
@@ -30,6 +30,8 @@ struct amdgpu_vm;
 #define AMDGPU_SRIOV_CAPS_ENABLE_IOV   (1 << 1) /* sr-iov is enabled on this GPU */
 #define AMDGPU_SRIOV_CAPS_IS_VF        (1 << 2) /* this GPU is a virtual function */
 #define AMDGPU_PASSTHROUGH_MODE        (1 << 3) /* thw whole GPU is pass through for VM */
+/* now GPU is not in init/fini stage */
+#define AMDGPU_SRIOV_CAPS_IS_RUNTIME	(1 << 4)
 /* GPU virtualization */
 struct amdgpu_virtualization {
 	uint32_t virtual_caps;
@@ -55,6 +57,9 @@ struct amdgpu_csa {
 #define amdgpu_passthrough(adev) \
 ((adev)->virtualization.virtual_caps & AMDGPU_PASSTHROUGH_MODE)
 
+#define amdgpu_sriov_runtime(adev) \
+((adev)->virtualization.virtual_caps & AMDGPU_SRIOV_CAPS_IS_RUNTIME)
+
 static inline bool is_virtual_machine(void)
 {
 #ifdef CONFIG_X86
diff --git a/drivers/gpu/drm/amd/mxgpu/mxgpu_mb.c b/drivers/gpu/drm/amd/mxgpu/mxgpu_mb.c
index 387246c..f0c7e97 100644
--- a/drivers/gpu/drm/amd/mxgpu/mxgpu_mb.c
+++ b/drivers/gpu/drm/amd/mxgpu/mxgpu_mb.c
@@ -134,6 +134,7 @@ int amdgpu_get_gpu(struct amdgpu_device *adev)
 	if (!adev->priv_data)
 		return 0;
 
+	adev->virtualization.virtual_caps &= ~AMDGPU_SRIOV_CAPS_IS_RUNTIME;
 	r = xgpu_request_full_gpu_access(adev, false);
 	if (r)
 		return r;
@@ -152,5 +153,7 @@ int amdgpu_put_gpu(struct amdgpu_device *adev)
 	if (r)
 		return r;
 
+	adev->virtualization.virtual_caps |= AMDGPU_SRIOV_CAPS_IS_RUNTIME;
+
 	return 0;
 }
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  parent reply	other threads:[~2016-12-17 16:16 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-17 16:16 [PATCH 00/23] Add support AMD GPU virtualization soultion Xiangliang Yu
     [not found] ` <1481991405-30422-1-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-17 16:16   ` [PATCH 01/23] drm/amdgpu: add support kernel interface queue(KIQ) Xiangliang Yu
     [not found]     ` <1481991405-30422-2-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:11       ` Alex Deucher
     [not found]         ` <CADnq5_P1An3GF9CJAdw5-av7oT0VDAN1YTgni9Q2waT81yyBtQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  5:32           ` Yu, Xiangliang
2016-12-17 16:16   ` [PATCH 02/23] drm/amdgpu: add kiq into compiling Xiangliang Yu
     [not found]     ` <CY4PR12MB170115ECFEEDEE2B92071FE7EB9E0@CY4PR12MB1701.namprd12.prod.outlook.com>
     [not found]       ` <CY4PR12MB170115ECFEEDEE2B92071FE7EB9E0-rpdhrqHFk05QaJCA3gGb3wdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-19  7:13         ` 转发: " Liu, Monk
     [not found]           ` <BY2PR12MB0054C15BB4903E12764EABF684910-K//h7OWB4q7GdVlgMuSljQdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-19  7:51             ` Yu, Xiangliang
2016-12-19 11:17             ` 转发: " Christian König
     [not found]               ` <beb83cf9-2683-569e-ea68-df3894e11dc0-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-12-19 23:38                 ` Alex Deucher
     [not found]                   ` <CADnq5_MDTdnOcarCkDFdb5d=nJxDpt4ATkvmDG+BFG5thLa-eA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  3:43                     ` 答复: " Liu, Monk
2016-12-20  5:26                 ` Liu, Monk
2016-12-20  3:48             ` Mike Lothian
     [not found]               ` <CAHbf0-EqT1YHuxButQkfb8s3mGT4WjVdcjCWMFetiqwjEME8pA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  4:07                 ` Bridgman, John
     [not found]                   ` <BN6PR12MB13487A20F8218E81FB87B846E8900-/b2+HYfkarQX0pEhCR5T8QdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-23 10:47                     ` Mike Lothian
2016-12-17 16:16   ` [PATCH 03/23] drm/amdgpu: export KIQ interfaces Xiangliang Yu
2016-12-17 16:16   ` [PATCH 04/23] drm/amdgpu: add new structure for KIQ memory allcation Xiangliang Yu
2016-12-17 16:16   ` [PATCH 05/23] drm/amdgpu/gfx8: add support KIQ for FIJI/TONGA chips Xiangliang Yu
2016-12-17 16:16   ` [PATCH 06/23] drm/amdgpu/gfx8: correct KIQ hdp flush Xiangliang Yu
     [not found]     ` <1481991405-30422-7-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:13       ` Alex Deucher
2016-12-20  5:34         ` Yu, Xiangliang
2016-12-17 16:16   ` [PATCH 07/23] drm/amdgpu: create new directory for GPU virtualization Xiangliang Yu
     [not found]     ` <CY4PR12MB1701171F8B54171FCF66B30EEB9E0@CY4PR12MB1701.namprd12.prod.outlook.com>
     [not found]       ` <BY2PR12MB005475C762077C442361FBD284910@BY2PR12MB0054.namprd12.prod.outlook.com>
     [not found]         ` <CY4PR12MB1701DB3B08413BBDA717E73FEB910@CY4PR12MB1701.namprd12.prod.outlook.com>
     [not found]           ` <CY4PR12MB1701DB3B08413BBDA717E73FEB910-rpdhrqHFk05QaJCA3gGb3wdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-19  7:09             ` 转发: " Liu, Monk
2016-12-17 16:16   ` [PATCH 08/23] drm/amdgpu: add new flag for virtual function Xiangliang Yu
2016-12-17 16:16   ` [PATCH 09/23] drm/amdgpu: enable virtualization feature for FIJI/TONGA Xiangliang Yu
     [not found]     ` <1481991405-30422-10-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19  6:27       ` 答复: " Liu, Monk
2016-12-19 23:17       ` Alex Deucher
     [not found]         ` <CADnq5_PC6oukr7dzoi=wpWthUd9A-zx+-WDW8P0wm1zbRdnz1A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  3:49           ` 答复: " Liu, Monk
2016-12-20  5:41           ` Yu, Xiangliang
     [not found]             ` <CY4PR12MB170197EFF75F8AB758618A21EB900-rpdhrqHFk05QaJCA3gGb3wdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-20 15:53               ` Deucher, Alexander
     [not found]                 ` <BN6PR12MB1652A9F6AB1818BD6C7D3542F7900-/b2+HYfkarQqUD6E6FAiowdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-21  1:59                   ` Yu, Xiangliang
     [not found]                     ` <CY4PR12MB1701ACAA1FD55685C05F0B73EB930-rpdhrqHFk05QaJCA3gGb3wdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-22  9:48                       ` Christian König
2016-12-17 16:16   ` [PATCH 10/23] drm/amdgpu: export gem va update interface Xiangliang Yu
2016-12-17 16:16   ` [PATCH 11/23] drm/amdgpu: implement context save area(CSA) feature Xiangliang Yu
     [not found]     ` <1481991405-30422-12-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:20       ` Alex Deucher
     [not found]         ` <CADnq5_P1hOrd7Vk1G01Gj7aM1RjkyhgLGWV6CnTu9mvrGhtxsg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  3:57           ` 答复: " Liu, Monk
     [not found]             ` <BY2PR12MB00547F38C7E612AE3A4D027184900-K//h7OWB4q7GdVlgMuSljQdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-20  5:43               ` Yu, Xiangliang
     [not found]                 ` <CY4PR12MB1701351D6DCEA18714735B3DEB900-rpdhrqHFk05QaJCA3gGb3wdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-01-03 14:30                   ` Christian König
2016-12-17 16:16   ` [PATCH 12/23] drm/amdgpu: Insert meta data during submitting IB Xiangliang Yu
     [not found]     ` <1481991405-30422-13-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:23       ` Alex Deucher
     [not found]         ` <CADnq5_M++bzSVb-58Mesk1eAyK7Phwfgnx-XGCtEGygAomP-iQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  5:53           ` Yu, Xiangliang
2016-12-17 16:16   ` [PATCH 13/23] drm/amdgpu/mxgpu: add support for mailbox communication Xiangliang Yu
     [not found]     ` <1481991405-30422-14-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:24       ` Alex Deucher
     [not found]         ` <CADnq5_MZVK4c_eiYqoxxKSSPCtazki=0uB4bOAX8OjVKDnZCBg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  6:05           ` Yu, Xiangliang
     [not found]             ` <CY4PR12MB1701DEB3053096F2E9CD1416EB900-rpdhrqHFk05QaJCA3gGb3wdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-01-03 17:02               ` Liu, Shaoyun
2016-12-17 16:16   ` [PATCH 14/23] drm/amdgpu: export two mailbox interface to amdgpu Xiangliang Yu
2016-12-17 16:16   ` [PATCH 15/23] drm/amdgpu/mxgpu: implement register access function with KIQ Xiangliang Yu
     [not found]     ` <1481991405-30422-16-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:26       ` Alex Deucher
     [not found]         ` <CADnq5_M2Mh-=wo0Aa-pS4P-59uLv6My0-LNn_Zuxy913MwhLbA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  6:08           ` Yu, Xiangliang
     [not found]             ` <CY4PR12MB170162420FF46FECF0D783B4EB900-rpdhrqHFk05QaJCA3gGb3wdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-20 13:59               ` Deucher, Alexander
2016-12-17 16:16   ` Xiangliang Yu [this message]
2016-12-17 16:16   ` [PATCH 17/23] drm/amdgpu: export vi common ip block Xiangliang Yu
     [not found]     ` <1481991405-30422-18-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:27       ` Alex Deucher
2016-12-17 16:16   ` [PATCH 18/23] drm/amdgpu: add new maroc to identify virtualization " Xiangliang Yu
2016-12-17 16:16   ` [PATCH 19/23] drm/amdgpu/mxgpu: add implementation of GPU virtualization of VI Xiangliang Yu
     [not found]     ` <1481991405-30422-20-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:34       ` Alex Deucher
     [not found]         ` <CADnq5_Oeoqx_MhuVODGz5ukU6qKWMU=v=VB9cV_jBd4V9HBKeg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  6:18           ` Yu, Xiangliang
2016-12-17 16:16   ` [PATCH 20/23] drm/amdgpu/mxgpu: enable VI virtualization Xiangliang Yu
     [not found]     ` <1481991405-30422-21-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:08       ` Deucher, Alexander
     [not found]         ` <BN6PR12MB1652B3D6D0409C00F89F4493F7910-/b2+HYfkarQqUD6E6FAiowdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-20  5:29           ` Yu, Xiangliang
2016-12-17 16:16   ` [PATCH 21/23] drm/amdgpu: change golden register program sequence of virtualization Xiangliang Yu
     [not found]     ` <1481991405-30422-22-git-send-email-Xiangliang.Yu-5C7GfCeVMHo@public.gmane.org>
2016-12-19 23:37       ` Alex Deucher
     [not found]         ` <CADnq5_PqscSCAOGn+suNGkoUQdF5Z7O69wrL_CvH27hfKE4b0A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-12-20  4:09           ` 答复: " Liu, Monk
     [not found]             ` <BY2PR12MB005449FC3CC2D91B41B3487884900-K//h7OWB4q7GdVlgMuSljQdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-12-20  6:09               ` Yu, Xiangliang
2016-12-20 13:50               ` Deucher, Alexander
2016-12-17 16:16   ` [PATCH 22/23] drm/amdgpu: do not reset gpu for virtualization Xiangliang Yu
2016-12-17 16:16   ` [PATCH 23/23] drm/amdgpu/mxgpu: add Makefie and Kconfig for GPU virtualization Xiangliang Yu
2016-12-19  5:15   ` 答复: [PATCH 00/23] Add support AMD GPU virtualization soultion Liu, Monk

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=1481991405-30422-17-git-send-email-Xiangliang.Yu@amd.com \
    --to=xiangliang.yu-5c7gfcevmho@public.gmane.org \
    --cc=Monk.Liu-5C7GfCeVMHo@public.gmane.org \
    --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=dl.SRDC_SW_GPUVirtualization-5C7GfCeVMHo@public.gmane.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.