Reviewed-by: Xiangliang Yu <Xiangliang.Yu at amd.com> Thanks! Xiangliang Yu > -----Original Message----- > From: Trigger Huang [mailto:trigger.huang at amd.com] > Sent: Thursday, April 27, 2017 3:18 PM > To: amd-gfx at lists.freedesktop.org > Cc: Liu, Monk <Monk.Liu at amd.com>; Yu, Xiangliang > <Xiangliang.Yu at amd.com>; Huang, Trigger <Trigger.Huang at amd.com> > Subject: [PATCH] drm/amdgpu: Enable chained IB MCBP support > > Support for MCBP/Virtualization in combination with chained IBs is formal > released on firmware feature version #46. So enable it according to firmware > feature version, otherwise, world switch will hang. > > Signed-off-by: Trigger Huang <trigger.huang at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > index 2ff5f19..9a8c042 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > @@ -941,12 +941,6 @@ static int gfx_v8_0_init_microcode(struct > amdgpu_device *adev) > cp_hdr = (const struct gfx_firmware_header_v1_0 *)adev- > >gfx.me_fw->data; > adev->gfx.me_fw_version = le32_to_cpu(cp_hdr- > >header.ucode_version); > > - /* chain ib ucode isn't formal released, just disable it by far > - * TODO: when ucod ready we should use ucode version to judge if > - * chain-ib support or not. > - */ > - adev->virt.chained_ib_support = false; > - > adev->gfx.me_feature_version = le32_to_cpu(cp_hdr- > >ucode_feature_version); > > snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", > chip_name); @@ -960,6 +954,17 @@ static int > gfx_v8_0_init_microcode(struct amdgpu_device *adev) > adev->gfx.ce_fw_version = le32_to_cpu(cp_hdr- > >header.ucode_version); > adev->gfx.ce_feature_version = le32_to_cpu(cp_hdr- > >ucode_feature_version); > > + /* > + * Support for MCBP/Virtualization in combination with chained IBs is > + * formal released on feature version #46 > + */ > + if (adev->gfx.ce_feature_version >= 46 && > + adev->gfx.pfp_feature_version >= 46) { > + adev->virt.chained_ib_support = true; > + DRM_INFO("Chained IB support enabled!\n"); > + } else > + adev->virt.chained_ib_support = false; > + > snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", > chip_name); > err = request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev); > if (err) > -- > 2.7.4