[PATCH] drm/amd/amdgpu: Update PF2VF header
Alex Deucher
alexdeucher at gmail.com
Tue Apr 12 17:30:05 UTC 2022
On Tue, Apr 12, 2022 at 12:04 PM Bokun Zhang <Bokun.Zhang at amd.com> wrote:
>
> - Add proper indentation in the header file
> - In the latest version of the header, there is a variable name change.
> This should not cause any backward compatibility since the variable is
> at the same offset in the struct.
Please split this into two patches, one to change the variable name,
one to adjust the whitespace.
Thanks,
Alex
>
> Signed-off-by: Bokun Zhang <Bokun.Zhang at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 +-
> drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h | 101 ++++++++++----------
> 2 files changed, 51 insertions(+), 52 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index a2e0a81831e0..14c5ccf81e80 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -3725,7 +3725,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
> /* enable PCIE atomic ops */
> if (amdgpu_sriov_vf(adev))
> adev->have_atomics_support = ((struct amd_sriov_msg_pf2vf_info *)
> - adev->virt.fw_reserve.p_pf2vf)->pcie_atomic_ops_enabled_flags ==
> + adev->virt.fw_reserve.p_pf2vf)->pcie_atomic_ops_support_flags ==
> (PCI_EXP_DEVCAP2_ATOMIC_COMP32 | PCI_EXP_DEVCAP2_ATOMIC_COMP64);
> else
> adev->have_atomics_support =
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> index 7326b6c1b71c..43dc9026ef7a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
> @@ -1,34 +1,33 @@
> /*
> - * Copyright 2018-2019 Advanced Micro Devices, Inc.
> + * Copyright (c) 2018-2021 Advanced Micro Devices, Inc. All rights reserved.
> *
> - * 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:
> + * 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.
> - *
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> + * AUTHORS OR COPYRIGHT HOLDERS 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_KB AMD_SRIOV_MSG_VBIOS_SIZE_KB
> -#define AMD_SRIOV_MSG_DATAEXCHANGE_SIZE_KB 4
> +#define AMD_SRIOV_MSG_VBIOS_OFFSET 0
> +#define AMD_SRIOV_MSG_VBIOS_SIZE_KB 64
> +#define AMD_SRIOV_MSG_DATAEXCHANGE_OFFSET_KB AMD_SRIOV_MSG_VBIOS_SIZE_KB
> +#define AMD_SRIOV_MSG_DATAEXCHANGE_SIZE_KB 4
>
> /*
> * layout
> @@ -51,10 +50,10 @@
> * v2 defined in amdgim
> * v3 current
> */
> -#define AMD_SRIOV_MSG_FW_VRAM_PF2VF_VER 2
> -#define AMD_SRIOV_MSG_FW_VRAM_VF2PF_VER 3
> +#define AMD_SRIOV_MSG_FW_VRAM_PF2VF_VER 2
> +#define AMD_SRIOV_MSG_FW_VRAM_VF2PF_VER 3
>
> -#define AMD_SRIOV_MSG_RESERVE_UCODE 24
> +#define AMD_SRIOV_MSG_RESERVE_UCODE 24
>
> #define AMD_SRIOV_MSG_RESERVE_VCN_INST 4
>
> @@ -83,19 +82,19 @@ enum amd_sriov_ucode_engine_id {
> AMD_SRIOV_UCODE_ID__MAX
> };
>
> -#pragma pack(push, 1) // PF2VF / VF2PF data areas are byte packed
> +#pragma pack(push, 1) // PF2VF / VF2PF data areas are byte packed
>
> union amd_sriov_msg_feature_flags {
> struct {
> - uint32_t error_log_collect : 1;
> - uint32_t host_load_ucodes : 1;
> - uint32_t host_flr_vramlost : 1;
> - uint32_t mm_bw_management : 1;
> - uint32_t pp_one_vf_mode : 1;
> - uint32_t reg_indirect_acc : 1;
> - uint32_t reserved : 26;
> + uint32_t error_log_collect : 1;
> + uint32_t host_load_ucodes : 1;
> + uint32_t host_flr_vramlost : 1;
> + uint32_t mm_bw_management : 1;
> + uint32_t pp_one_vf_mode : 1;
> + uint32_t reg_indirect_acc : 1;
> + uint32_t reserved : 26;
> } flags;
> - uint32_t all;
> + uint32_t all;
> };
>
> union amd_sriov_reg_access_flags {
> @@ -110,10 +109,10 @@ union amd_sriov_reg_access_flags {
>
> union amd_sriov_msg_os_info {
> struct {
> - uint32_t windows : 1;
> - uint32_t reserved : 31;
> + uint32_t windows : 1;
> + uint32_t reserved : 31;
> } info;
> - uint32_t all;
> + uint32_t all;
> };
>
> struct amd_sriov_msg_uuid_info {
> @@ -156,6 +155,7 @@ struct amd_sriov_msg_pf2vf_info_header {
> uint32_t reserved[2];
> };
>
> +#define AMD_SRIOV_MSG_PF2VF_INFO_FILLED_SIZE (48)
> struct amd_sriov_msg_pf2vf_info {
> /* header contains size and version */
> struct amd_sriov_msg_pf2vf_info_header header;
> @@ -204,10 +204,10 @@ struct amd_sriov_msg_pf2vf_info {
> } mm_bw_management[AMD_SRIOV_MSG_RESERVE_VCN_INST];
> /* UUID info */
> struct amd_sriov_msg_uuid_info uuid_info;
> - /* pcie atomic Ops info */
> - uint32_t pcie_atomic_ops_enabled_flags;
> + /* PCIE atomic ops support flag */
> + uint32_t pcie_atomic_ops_support_flags;
> /* reserved */
> - uint32_t reserved[256 - 48];
> + uint32_t reserved[256 - AMD_SRIOV_MSG_PF2VF_INFO_FILLED_SIZE];
> };
>
> struct amd_sriov_msg_vf2pf_info_header {
> @@ -219,12 +219,13 @@ struct amd_sriov_msg_vf2pf_info_header {
> uint32_t reserved[2];
> };
>
> +#define AMD_SRIOV_MSG_VF2PF_INFO_FILLED_SIZE (70)
> struct amd_sriov_msg_vf2pf_info {
> /* header contains size and version */
> struct amd_sriov_msg_vf2pf_info_header header;
> uint32_t checksum;
> /* driver version */
> - uint8_t driver_version[64];
> + uint8_t driver_version[64];
> /* driver certification, 1=WHQL, 0=None */
> uint32_t driver_cert;
> /* guest OS type and version */
> @@ -258,13 +259,14 @@ struct amd_sriov_msg_vf2pf_info {
> uint32_t fb_size;
> /* guest ucode data, each one is 1.25 Dword */
> struct {
> - uint8_t id;
> + uint8_t id;
> uint32_t version;
> } ucode_info[AMD_SRIOV_MSG_RESERVE_UCODE];
> + /* dummy page addr */
> uint64_t dummy_page_addr;
>
> /* reserved */
> - uint32_t reserved[256-70];
> + uint32_t reserved[256 - AMD_SRIOV_MSG_VF2PF_INFO_FILLED_SIZE];
> };
>
> /* mailbox message send from guest to host */
> @@ -276,7 +278,8 @@ enum amd_sriov_mailbox_request_message {
> MB_REQ_MSG_REQ_GPU_RESET_ACCESS,
> MB_REQ_MSG_REQ_GPU_INIT_DATA,
>
> - MB_REQ_MSG_LOG_VF_ERROR = 200,
> + MB_REQ_MSG_LOG_VF_ERROR = 200,
> + MB_REQ_MSG_READY_TO_RESET = 201,
> };
>
> /* mailbox message send from host to guest */
> @@ -298,17 +301,15 @@ enum amd_sriov_gpu_init_data_version {
> GPU_INIT_DATA_READY_V1 = 1,
> };
>
> -#pragma pack(pop) // Restore previous packing option
> +#pragma pack(pop) // Restore previous packing option
>
> /* checksum function between host and guest */
> -unsigned int amd_sriov_msg_checksum(void *obj,
> - unsigned long obj_size,
> - unsigned int key,
> - unsigned int checksum);
> +unsigned int amd_sriov_msg_checksum(void *obj, unsigned long obj_size, unsigned int key,
> + unsigned int checksum);
>
> /* assertion at compile time */
> #ifdef __linux__
> -#define stringification(s) _stringification(s)
> +#define stringification(s) _stringification(s)
> #define _stringification(s) #s
>
> _Static_assert(
> @@ -319,13 +320,11 @@ _Static_assert(
> sizeof(struct amd_sriov_msg_pf2vf_info) == AMD_SRIOV_MSG_SIZE_KB << 10,
> "amd_sriov_msg_pf2vf_info must be " stringification(AMD_SRIOV_MSG_SIZE_KB) " KB");
>
> -_Static_assert(
> - AMD_SRIOV_MSG_RESERVE_UCODE % 4 == 0,
> - "AMD_SRIOV_MSG_RESERVE_UCODE must be multiple of 4");
> +_Static_assert(AMD_SRIOV_MSG_RESERVE_UCODE % 4 == 0,
> + "AMD_SRIOV_MSG_RESERVE_UCODE must be multiple of 4");
>
> -_Static_assert(
> - AMD_SRIOV_MSG_RESERVE_UCODE > AMD_SRIOV_UCODE_ID__MAX,
> - "AMD_SRIOV_MSG_RESERVE_UCODE must be bigger than AMD_SRIOV_UCODE_ID__MAX");
> +_Static_assert(AMD_SRIOV_MSG_RESERVE_UCODE > AMD_SRIOV_UCODE_ID__MAX,
> + "AMD_SRIOV_MSG_RESERVE_UCODE must be bigger than AMD_SRIOV_UCODE_ID__MAX");
>
> #undef _stringification
> #undef stringification
> --
> 2.25.1
>
More information about the amd-gfx
mailing list