[PATCH] drm/amdgpu: implement TMZ accessor

Christian König ckoenig.leichtzumerken at gmail.com
Thu Oct 31 07:29:09 UTC 2019


Am 31.10.19 um 00:43 schrieb Tuikov, Luben:
> Implement an accessor of adev->tmz.enabled. Let not
> code around access it as "if (adev->tmz.enabled)"
> as the organization may change. Instead...
>
> Recruit "bool amdgpu_is_tmz(adev)" to return
> exactly this Boolean value. That is, this function
> is now an accessor of an already initialized and
> set adev and adev->tmz.
>
> Add "void amdgpu_tmz_set(adev)" to check and set
> adev->tmz.* at initialization time. After which
> one uses "bool amdgpu_is_tmz(adev)" to query
> whether adev supports TMZ.

Actually I would rather completely remove the amdgpu_tmz.[hc] files. See 
TMZ is a feature and not a hardware block.

All that stuff should probably moved into the PSP handling, since the 
control of TMZ is enabled or disabled in the hardware is there.

Regards,
Christian.

>
> Also, remove circular header file include.
>
> Signed-off-by: Luben Tuikov <luben.tuikov at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  5 +++++
>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.c    | 23 +++++++++++-----------
>   drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.h    |  7 ++-----
>   4 files changed, 19 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 7d1e528cc783..23bd81a76570 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -1249,5 +1249,10 @@ _name##_show(struct device *dev,					\
>   									\
>   static struct device_attribute pmu_attr_##_name = __ATTR_RO(_name)
>   
> +static inline bool amdgpu_is_tmz(struct amdgpu_device *adev)
> +{
> +	return adev->tmz.enabled;
> +}
> +
>   #endif
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 4eee40b9d0b0..f12b817480bb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1058,7 +1058,7 @@ static int amdgpu_device_check_arguments(struct amdgpu_device *adev)
>   
>   	adev->firmware.load_type = amdgpu_ucode_get_load_type(adev, amdgpu_fw_load_type);
>   
> -	adev->tmz.enabled = amdgpu_is_tmz(adev);
> +	amdgpu_tmz_set(adev);
>   
>   	return ret;
>   }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.c
> index 823527a0fa47..518b9d335550 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.c
> @@ -27,26 +27,25 @@
>   #include "amdgpu.h"
>   #include "amdgpu_tmz.h"
>   
> -
>   /**
> - * amdgpu_is_tmz - validate trust memory zone
> - *
> + * amdgpu_tmz_set -- check and set if a device supports TMZ
>    * @adev: amdgpu_device pointer
>    *
> - * Return true if @dev supports trusted memory zones (TMZ), and return false if
> - * @dev does not support TMZ.
> + * Check and set if an the device @adev supports Trusted Memory
> + * Zones (TMZ).
>    */
> -bool amdgpu_is_tmz(struct amdgpu_device *adev)
> +void amdgpu_tmz_set(struct amdgpu_device *adev)
>   {
>   	if (!amdgpu_tmz)
> -		return false;
> +		return;
>   
> -	if (adev->asic_type < CHIP_RAVEN || adev->asic_type == CHIP_ARCTURUS) {
> -		dev_warn(adev->dev, "doesn't support trusted memory zones (TMZ)\n");
> -		return false;
> +	if (adev->asic_type < CHIP_RAVEN ||
> +	    adev->asic_type == CHIP_ARCTURUS) {
> +		dev_warn(adev->dev, "Trusted Memory Zone (TMZ) feature not supported\n");
> +		return;
>   	}
>   
> -	dev_info(adev->dev, "TMZ feature is enabled\n");
> +	adev->tmz.enabled = true;
>   
> -	return true;
> +	dev_info(adev->dev, "Trusted Memory Zone (TMZ) feature supported and enabled\n");
>   }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.h
> index 28e05177fb89..ad3ad8c011f9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_tmz.h
> @@ -24,16 +24,13 @@
>   #ifndef __AMDGPU_TMZ_H__
>   #define __AMDGPU_TMZ_H__
>   
> -#include "amdgpu.h"
> -
>   /*
> - * Trust memory zone stuff
> + * Trusted Memory Zone particulars
>    */
>   struct amdgpu_tmz {
>   	bool	enabled;
>   };
>   
> -
> -extern bool amdgpu_is_tmz(struct amdgpu_device *adev);
> +extern void amdgpu_tmz_set(struct amdgpu_device *adev);
>   
>   #endif



More information about the amd-gfx mailing list