[AMD Official Use Only] Hi Alex The following patch series were ported from amd-staging-dkms to fix VCN IB test fail. Can you help to review it? [PATCH 1/2] drm/amd/amdgpu: Use IP discovery data to determine VCN enablement instead of MMSCH [PATCH 2/2] drm/amd/amdgpu: add instance_number check in amdgpu_discovery_get_ip_version ---------------------------------------------------------------------- BW Pengju Zhou > -----Original Message----- > From: Peng Ju Zhou <PengJu.Zhou@xxxxxxx> > Sent: Thursday, June 3, 2021 6:42 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Zhou, Peng Ju <PengJu.Zhou@xxxxxxx>; Zhang, Bokun > <Bokun.Zhang@xxxxxxx> > Subject: [PATCH 2/2] drm/amd/amdgpu: add instance_number check in > amdgpu_discovery_get_ip_version > > The original code returns IP version of instantce_0 for every IP. This > implementation may be correct for most of IPs. > > However, for certain IP block (VCN for example), it may have 2 instances and > both of them have the same hw_id, BUT they have different revision number > (0 and 1). > > In this case, the original amdgpu_discovery_get_ip_version cannot correct > reflects the result and returns false information > > Signed-off-by: Bokun Zhang <Bokun.Zhang@xxxxxxx> > Signed-off-by: Peng Ju Zhou <PengJu.Zhou@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.h | 2 +- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > index 99255c2f08f4..f949ed8bfd9e 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > @@ -325,7 +325,7 @@ int amdgpu_discovery_reg_base_init(struct > amdgpu_device *adev) > return 0; > } > > -int amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int hw_id, > +int amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int > +hw_id, int number_instance, > int *major, int *minor, int *revision) { > struct binary_header *bhdr; > @@ -357,7 +357,7 @@ int amdgpu_discovery_get_ip_version(struct > amdgpu_device *adev, int hw_id, > for (j = 0; j < num_ips; j++) { > ip = (struct ip *)(adev->mman.discovery_bin + > ip_offset); > > - if (le16_to_cpu(ip->hw_id) == hw_id) { > + if ((le16_to_cpu(ip->hw_id) == hw_id) && (ip- > >number_instance == > +number_instance)) { > if (major) > *major = ip->major; > if (minor) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.h > index 1b1ae21b1037..02e340cd3a38 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.h > @@ -30,7 +30,7 @@ > void amdgpu_discovery_fini(struct amdgpu_device *adev); int > amdgpu_discovery_reg_base_init(struct amdgpu_device *adev); void > amdgpu_discovery_harvest_ip(struct amdgpu_device *adev); -int > amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int hw_id, > +int amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int > +hw_id, int number_instance, > int *major, int *minor, int *revision); int > amdgpu_discovery_get_gfx_info(struct amdgpu_device *adev); > > -- > 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx