[PATCH 1/2] drm/i915/gvt: add RING_INSTDONE and SC_INSTDONE mmio handler in GVT-g
Zhenyu Wang
zhenyuw at linux.intel.com
Wed May 17 05:40:56 UTC 2017
On 2017.05.17 11:22:52 +0800, Weinan Li wrote:
> kernel hangcheck needs to check RING_INSTDONE and SC_INSTDONE registers'
> state to know if hardware is still running. In GVT-g environment, we need
> to emulate these registers change for all the vgpus, otherwise if one
> workload runs for a long time with no ACTHD and INSTDONE change will cause
> hangcheck failed then trigger gfx reset, especially in multi-vgpus
> environment, one vgpu has been scheduled out for a long time, it will try
> to check is there INSTDONE registers change to know if hardware is still
> running.
>
> here we return the physical state for all the vgpus, let them know the
> hardware's running state, avoid unnecessary gfx reset from vgpu.
>
> Signed-off-by: Weinan Li <weinan.z.li at intel.com>
> ---
> drivers/gpu/drm/i915/gvt/handlers.c | 23 +++++++++++++++++++++++
> drivers/gpu/drm/i915/gvt/mmio.c | 7 -------
> 2 files changed, 23 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
> index c995e54..a70892e 100644
> --- a/drivers/gpu/drm/i915/gvt/handlers.c
> +++ b/drivers/gpu/drm/i915/gvt/handlers.c
> @@ -1409,6 +1409,23 @@ static int ring_timestamp_mmio_read(struct intel_vgpu *vgpu,
> return intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes);
> }
>
> +static int instdone_mmio_read(struct intel_vgpu *vgpu,
> + unsigned int offset, void *p_data, unsigned int bytes)
> +{
> + struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
> +
> + if (offset == 0x206c) {
> + gvt_vgpu_err("------------------------------------------\n");
> + gvt_vgpu_err(" likely triggers a gfx reset or scheduled out for a long time.\n");
> + gvt_vgpu_err("------------------------------------------\n");
> + vgpu->mmio.disable_warn_untrack = true;
> + }
So shouldn't remove this message completely here but might have some debug
info when guest really issue reset by GDRST write?
> +
> + vgpu_vreg(vgpu, offset) = I915_READ(_MMIO(offset));
> + return intel_vgpu_default_mmio_read(vgpu, offset, p_data, bytes);
> +
> +}
> +
> static int elsp_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
> void *p_data, unsigned int bytes)
> {
> @@ -1593,6 +1610,12 @@ static int init_generic_mmio_info(struct intel_gvt *gvt)
> MMIO_RING_DFH(RING_REG, D_ALL, F_CMD_ACCESS, NULL, NULL);
> #undef RING_REG
>
> +#define RING_REG(base) (base + 0x6c)
> + MMIO_RING_DFH(RING_REG, D_ALL, 0, instdone_mmio_read, NULL);
> + MMIO_DH(RING_REG(GEN8_BSD2_RING_BASE), D_ALL, instdone_mmio_read, NULL);
> +#undef RING_REG
> + MMIO_DH(GEN7_SC_INSTDONE, D_HSW_PLUS, instdone_mmio_read, NULL);
> +
> MMIO_GM_RDR(0x2148, D_ALL, NULL, NULL);
> MMIO_GM_RDR(CCID, D_ALL, NULL, NULL);
> MMIO_GM_RDR(0x12198, D_ALL, NULL, NULL);
> diff --git a/drivers/gpu/drm/i915/gvt/mmio.c b/drivers/gpu/drm/i915/gvt/mmio.c
> index 1ba3bdb..35f6c47 100644
> --- a/drivers/gpu/drm/i915/gvt/mmio.c
> +++ b/drivers/gpu/drm/i915/gvt/mmio.c
> @@ -202,13 +202,6 @@ int intel_vgpu_emulate_mmio_read(struct intel_vgpu *vgpu, uint64_t pa,
> if (!vgpu->mmio.disable_warn_untrack) {
> gvt_vgpu_err("read untracked MMIO %x(%dB) val %x\n",
> offset, bytes, *(u32 *)p_data);
> -
> - if (offset == 0x206c) {
> - gvt_vgpu_err("------------------------------------------\n");
> - gvt_vgpu_err("likely triggers a gfx reset\n");
> - gvt_vgpu_err("------------------------------------------\n");
> - vgpu->mmio.disable_warn_untrack = true;
> - }
> }
> }
>
> --
> 1.9.1
>
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
--
Open Source Technology Center, Intel ltd.
$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gvt-dev/attachments/20170517/502a83ec/attachment.sig>
More information about the intel-gvt-dev
mailing list