RE: [PATCH] SWDEV-220451 - Query guest's information by VF2PF message - Guest side - part 1
[AMD Official Use Only - Internal Distribution Only] Reviewed-by: Monk Liu _ Monk Liu|GPU Virtualization Team |AMD -Original Message- From: amd-gfx On Behalf Of Bokun Zhang Sent: Wednesday, August 5, 2020 11:32 PM To: amd-gfx@lists.freedesktop.org Cc: Zhang, Bokun Subject: [PATCH] SWDEV-220451 - Query guest's information by VF2PF message - Guest side - part 1 - Add guest side change to support VF2PF message - Fix coding style Change-Id: I82e5518cb10ec0b19fecaba7e05b02f4b7f2b409 Signed-off-by: Bokun Zhang --- drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h| 29 +- drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h | 276 2 files changed, 285 insertions(+), 20 deletions(-) create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h index b0b2bdc750df..ad2b2628ab67 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h @@ -24,6 +24,8 @@ #ifndef AMDGPU_VIRT_H #define AMDGPU_VIRT_H +#include "amdgv_sriovmsg.h" + #define AMDGPU_SRIOV_CAPS_SRIOV_VBIOS (1 << 0) /* vBIOS is sr-iov ready */ #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 */ @@ -69,7 +71,10 @@ struct amdgpu_virt_fw_reserve { struct amd_sriov_msg_vf2pf_info_header *p_vf2pf; unsigned int checksum_key; }; + /* + * Legacy GIM header + * * Defination between PF and VF * Structures forcibly aligned to 4 to keep the same style as PF. */ @@ -89,15 +94,7 @@ enum AMDGIM_FEATURE_FLAG { AMDGIM_FEATURE_HW_PERF_SIMULATION = (1 << 3), }; -struct amd_sriov_msg_pf2vf_info_header { -/* the total structure size in byte. */ -uint32_t size; -/* version of this structure, written by the GIM */ -uint32_t version; -/* reserved */ -uint32_t reserved[2]; -} __aligned(4); -struct amdgim_pf2vf_info_v1 { +struct amdgim_pf2vf_info_v1 { /* header contains size and version */ struct amd_sriov_msg_pf2vf_info_header header; /* max_width * max_height */ @@ -116,6 +113,7 @@ struct amdgim_pf2vf_info_v1 { unsigned int checksum; } __aligned(4); +/* TODO: below struct is duplicated to amd_sriov_msg_pf2vf_info */ struct amdgim_pf2vf_info_v2 { /* header contains size and version */ struct amd_sriov_msg_pf2vf_info_header header; @@ -146,16 +144,6 @@ struct amdgim_pf2vf_info_v2 { uint32_t reserved[AMDGIM_GET_STRUCTURE_RESERVED_SIZE(256, 0, 0, (9 + sizeof(struct amd_sriov_msg_pf2vf_info_header)/sizeof(uint32_t)), 3)]; } __aligned(4); - -struct amd_sriov_msg_vf2pf_info_header { -/* the total structure size in byte. */ -uint32_t size; -/*version of this structure, written by the guest */ -uint32_t version; -/* reserved */ -uint32_t reserved[2]; -} __aligned(4); - struct amdgim_vf2pf_info_v1 { /* header contains size and version */ struct amd_sriov_msg_vf2pf_info_header header; @@ -217,8 +205,9 @@ struct amdgim_vf2pf_info_v2 { uint32_t reserved[AMDGIM_GET_STRUCTURE_RESERVED_SIZE(256, 64, 0, (12 + sizeof(struct amd_sriov_msg_vf2pf_info_header)/sizeof(uint32_t)), 0)]; } __aligned(4); +/* TODO: below macro and typedef will cause compile error, need to +remove */ #define AMDGPU_FW_VRAM_VF2PF_VER 2 -typedef struct amdgim_vf2pf_info_v2 amdgim_vf2pf_info ; +typedef struct amd_sriov_msg_vf2pf_info amdgim_vf2pf_info; #define AMDGPU_FW_VRAM_VF2PF_WRITE(adev, field, val) \ do { \ diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h new file mode 100644 index ..5355827ed0ae --- /dev/null +++ b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h @@ -0,0 +1,276 @@ +/* + * Copyright 2018-2019 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person +obtaining a + * copy of this software and associated documentation files (the +"Software"), + * to deal in the Software without restriction, including without +limitation + * the rights to use, copy, modify, merge, publish, distribute, +sublicense, + * and/or sell copies of the Software, and to permit persons to whom +the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be +included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, +DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR + * OTHER DEALINGS IN THE
RE: [PATCH] SWDEV-220451 - Query guest's information by VF2PF message - Guest side - part 1
[AMD Official Use Only - Internal Distribution Only] Reviewed-by: Emily.Deng >-Original Message- >From: amd-gfx On Behalf Of Bokun >Zhang >Sent: Wednesday, August 5, 2020 11:32 PM >To: amd-gfx@lists.freedesktop.org >Cc: Zhang, Bokun >Subject: [PATCH] SWDEV-220451 - Query guest's information by VF2PF >message - Guest side - part 1 > >- Add guest side change to support VF2PF message >- Fix coding style > >Change-Id: I82e5518cb10ec0b19fecaba7e05b02f4b7f2b409 >Signed-off-by: Bokun Zhang >--- > drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h| 29 +- > drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h | 276 > > 2 files changed, 285 insertions(+), 20 deletions(-) create mode 100644 >drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h > >diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h >b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h >index b0b2bdc750df..ad2b2628ab67 100644 >--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h >+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h >@@ -24,6 +24,8 @@ > #ifndef AMDGPU_VIRT_H > #define AMDGPU_VIRT_H > >+#include "amdgv_sriovmsg.h" >+ > #define AMDGPU_SRIOV_CAPS_SRIOV_VBIOS (1 << 0) /* vBIOS is sr-iov ready >*/ > #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 */ >@@ -69,7 +71,10 @@ struct amdgpu_virt_fw_reserve { > struct amd_sriov_msg_vf2pf_info_header *p_vf2pf; > unsigned int checksum_key; > }; >+ > /* >+ * Legacy GIM header >+ * > * Defination between PF and VF > * Structures forcibly aligned to 4 to keep the same style as PF. > */ >@@ -89,15 +94,7 @@ enum AMDGIM_FEATURE_FLAG { > AMDGIM_FEATURE_HW_PERF_SIMULATION = (1 << 3), }; > >-struct amd_sriov_msg_pf2vf_info_header { >-/* the total structure size in byte. */ >-uint32_t size; >-/* version of this structure, written by the GIM */ >-uint32_t version; >-/* reserved */ >-uint32_t reserved[2]; >-} __aligned(4); >-struct amdgim_pf2vf_info_v1 { >+struct amdgim_pf2vf_info_v1 { > /* header contains size and version */ > struct amd_sriov_msg_pf2vf_info_header header; > /* max_width * max_height */ >@@ -116,6 +113,7 @@ struct amdgim_pf2vf_info_v1 { > unsigned int checksum; > } __aligned(4); > >+/* TODO: below struct is duplicated to amd_sriov_msg_pf2vf_info */ > struct amdgim_pf2vf_info_v2 { > /* header contains size and version */ > struct amd_sriov_msg_pf2vf_info_header header; @@ -146,16 +144,6 >@@ struct amdgim_pf2vf_info_v2 { > uint32_t reserved[AMDGIM_GET_STRUCTURE_RESERVED_SIZE(256, 0, >0, (9 + sizeof(struct amd_sriov_msg_pf2vf_info_header)/sizeof(uint32_t)), 3)]; > } >__aligned(4); > >- >-struct amd_sriov_msg_vf2pf_info_header { >-/* the total structure size in byte. */ >-uint32_t size; >-/*version of this structure, written by the guest */ >-uint32_t version; >-/* reserved */ >-uint32_t reserved[2]; >-} __aligned(4); >- > struct amdgim_vf2pf_info_v1 { > /* header contains size and version */ > struct amd_sriov_msg_vf2pf_info_header header; @@ -217,8 +205,9 >@@ struct amdgim_vf2pf_info_v2 { > uint32_t reserved[AMDGIM_GET_STRUCTURE_RESERVED_SIZE(256, >64, 0, (12 + sizeof(struct amd_sriov_msg_vf2pf_info_header)/sizeof(uint32_t)), >0)]; } __aligned(4); > >+/* TODO: below macro and typedef will cause compile error, need to >+remove */ > #define AMDGPU_FW_VRAM_VF2PF_VER 2 >-typedef struct amdgim_vf2pf_info_v2 amdgim_vf2pf_info ; >+typedef struct amd_sriov_msg_vf2pf_info amdgim_vf2pf_info; > > #define AMDGPU_FW_VRAM_VF2PF_WRITE(adev, field, val) \ > do { \ >diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h >b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h >new file mode 100644 >index ..5355827ed0ae >--- /dev/null >+++ b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h >@@ -0,0 +1,276 @@ >+/* >+ * Copyright 2018-2019 Advanced Micro Devices, Inc. >+ * >+ * Permission is hereby granted, free of charge, to any person >+obtaining a >+ * copy of this software and associated documentation files (the >+"Software"), >+ * to deal in the Software without restriction, including without >+limitation >+ * the rights to use, copy, modify, merge, publish, distribute, >+sublicense, >+ * and/or sell copies of the Software, and to permit persons to whom >+the >+ * Software is furnished to do so, subject to the following conditions: >+ * >+ * The above copyright notice and this permission notice shall be >+included in >+ * all copies or substantial portions of the Software. >+ * >+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
[PATCH] SWDEV-220451 - Query guest's information by VF2PF message - Guest side - part 1
- Add guest side change to support VF2PF message - Fix coding style Change-Id: I82e5518cb10ec0b19fecaba7e05b02f4b7f2b409 Signed-off-by: Bokun Zhang --- drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h| 29 +- drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h | 276 2 files changed, 285 insertions(+), 20 deletions(-) create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h index b0b2bdc750df..ad2b2628ab67 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h @@ -24,6 +24,8 @@ #ifndef AMDGPU_VIRT_H #define AMDGPU_VIRT_H +#include "amdgv_sriovmsg.h" + #define AMDGPU_SRIOV_CAPS_SRIOV_VBIOS (1 << 0) /* vBIOS is sr-iov ready */ #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 */ @@ -69,7 +71,10 @@ struct amdgpu_virt_fw_reserve { struct amd_sriov_msg_vf2pf_info_header *p_vf2pf; unsigned int checksum_key; }; + /* + * Legacy GIM header + * * Defination between PF and VF * Structures forcibly aligned to 4 to keep the same style as PF. */ @@ -89,15 +94,7 @@ enum AMDGIM_FEATURE_FLAG { AMDGIM_FEATURE_HW_PERF_SIMULATION = (1 << 3), }; -struct amd_sriov_msg_pf2vf_info_header { - /* the total structure size in byte. */ - uint32_t size; - /* version of this structure, written by the GIM */ - uint32_t version; - /* reserved */ - uint32_t reserved[2]; -} __aligned(4); -struct amdgim_pf2vf_info_v1 { +struct amdgim_pf2vf_info_v1 { /* header contains size and version */ struct amd_sriov_msg_pf2vf_info_header header; /* max_width * max_height */ @@ -116,6 +113,7 @@ struct amdgim_pf2vf_info_v1 { unsigned int checksum; } __aligned(4); +/* TODO: below struct is duplicated to amd_sriov_msg_pf2vf_info */ struct amdgim_pf2vf_info_v2 { /* header contains size and version */ struct amd_sriov_msg_pf2vf_info_header header; @@ -146,16 +144,6 @@ struct amdgim_pf2vf_info_v2 { uint32_t reserved[AMDGIM_GET_STRUCTURE_RESERVED_SIZE(256, 0, 0, (9 + sizeof(struct amd_sriov_msg_pf2vf_info_header)/sizeof(uint32_t)), 3)]; } __aligned(4); - -struct amd_sriov_msg_vf2pf_info_header { - /* the total structure size in byte. */ - uint32_t size; - /*version of this structure, written by the guest */ - uint32_t version; - /* reserved */ - uint32_t reserved[2]; -} __aligned(4); - struct amdgim_vf2pf_info_v1 { /* header contains size and version */ struct amd_sriov_msg_vf2pf_info_header header; @@ -217,8 +205,9 @@ struct amdgim_vf2pf_info_v2 { uint32_t reserved[AMDGIM_GET_STRUCTURE_RESERVED_SIZE(256, 64, 0, (12 + sizeof(struct amd_sriov_msg_vf2pf_info_header)/sizeof(uint32_t)), 0)]; } __aligned(4); +/* TODO: below macro and typedef will cause compile error, need to remove */ #define AMDGPU_FW_VRAM_VF2PF_VER 2 -typedef struct amdgim_vf2pf_info_v2 amdgim_vf2pf_info ; +typedef struct amd_sriov_msg_vf2pf_info amdgim_vf2pf_info; #define AMDGPU_FW_VRAM_VF2PF_WRITE(adev, field, val) \ do { \ diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h new file mode 100644 index ..5355827ed0ae --- /dev/null +++ b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h @@ -0,0 +1,276 @@ +/* + * Copyright 2018-2019 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef AMDGV_SRIOV_MSG__H_ +#define AMDGV_SRIOV_MSG__H_ + +/* unit in kilobytes */ +#define AMD_SRIOV_MSG_VBIOS_OFFSET 0 +#define AMD_SRIOV_MSG_VBIOS_SIZE_KB 64 +#define AMD_SRIOV_MSG_DATAEXCHANGE_OFFSET_KBAMD_SRIOV_MSG_VBIOS_SIZE_KB +#define AMD_SRIOV_MSG_DATAEXCHANGE_