Re: ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/guc: Don't enable GuC when vGPU is active

Joonas Lahtinen
2018-01-18T09:42:52Z

On Tue, 2018-01-16 at 11:17 +0100, Michal Wajdeczko wrote:
> On Tue, 16 Jan 2018 10:53:47 +0100, Joonas Lahtinen
> <joonas.lahtinen@linux.intel.com> wrote:
>
> > On Mon, 2018-01-15 at 13:10 +0200, Tomi Sarvela wrote:
> > > On 15/01/18 12:28, Zhenyu Wang wrote:
> > > > On 2018.01.15 12:07:28 +0200, Joonas Lahtinen wrote:
> > > > > On Fri, 2018-01-12 at 14:08 +0800, Du, Changbin wrote:
> > > > > > On Fri, Jan 12, 2018 at 11:32:30AM +0530, Sagar Arun Kamble wrote:
> > > > > > > Is skl-gvtdvm not having vGPU active?
> > > > > > >
> > > > > > > It has flag X86_FEATURE_HYPERVISOR set however it might be set
> > >
> > > on host too
> > > > > > > so relying intel_vgpu_active().
> > > > > > >
> > > > > >
> > > > > > Do you mean flag X86_FEATURE_HYPERVISOR is set on host, too? This
> > >
> > > is weird since this
> > > > > > flag indicates the OS is running on a hypervisor.
> > > > >
> > > > > + CI folks and Zhenyu
> > > > >
> > > > > Somehow, magically, the virtual machine seems to starts skipping all
> > > > > tests when GuC is disabled?
> > > > >
> > > > > Has somebody actually validated that the tests results are valid for
> > > > > the virtual machine? Or is this a one-off CI quirk?
> > > >
> > > > Are these tests really run in VM with GVT-g enabled on host?
> > >
> > > These tests are ran on VM running on GVT-d (as name implies), not GVT-g.
> >
> > I don't still understand how explicitly disabling GuC could make all
> > the tests skip on a machine that didn't use GuC to begin with. There
> > must be something wrong in the initialization code.
> >
> > That intel_vgpu_active() check by my logic should not trigger in GVT-d
> > (because we don't have virtual GPU, we have the real deal, just without
> > stolen etc.), so I'm bit baffled.
>
> True. This intel_vgpu_active() check added by Sagar is not active in these
> scenarios so we keep turn on GuC on that platform (as default from auto)
>
> - param(int, enable_guc, 0) \
> + param(int, enable_guc, -1) \
>
> [drm:intel_uc_sanitize_options [i915]] enable_guc=3 (submission:yes
> huc:yes)
>
> but since i915_memcpy_from_wc() check still fails due to running under
> hypervisor (introduced by "drm/i915: Do not enable movntdqa optimization
> in hypervisor guest"), initialization of the GuC log fails
>
> WARN_ON(!i915_memcpy_from_wc(((void *)0), ((void *)0), 0))
> WARNING: CPU: 0 PID: 228 at drivers/gpu/drm/i915/intel_guc_log.c:527
> intel_guc_log_create
>
> and that is treated as driver load error (as we no longer support silent
> fallback from GuC to execlist, if GuC was selected using auto(-1) or
> explicit
> load(1) modparam option.

Seems like this already bit us (earlier than expected), so I guess it's
time to fix it sooner than later.

As previously stated, it's not really reasonable for the user to leave
them with no working driver at all if the GuC load fails. I think WARN
would be justified for the user in case they explicitly requested for
GuC and we couldn't deliver, as the functional experience might differ.

When you combine that with a kselftest which will report a failure when
explicit GuC submission was set in enable_guc but no GuC could be
contacted, we will keep getting a CI failure when we want to test GuC
functionality and ELSP is used instead. So in those cases, I expect a
clear indication that something-something-guc@explicit-enable subtest
will fail.

In the future, we can then make that WARN then trigger in the event of
an automatic loading failure after we've gained solid experience that
it works more times than it breaks. But that's for future.

Regards, Joonas

>
> On the other mail thread there was proposal to make GuC log optional in
> case of running under hypervisor and disable it, but in my opinion it is
> not a solution but just short term fix, as we want to keep GuC log enabled
> since it works as is with other hypervisors.
>
> Michal
>
> >
> > Regards, Joonas
> >
> > >
> > > Tomi
> > >
> > > > > PS. I'd do the check as early return condition at the top, like vGPU
> > > > > feature disabling elsewhere. It's not much point calculating the
> > > > > details (calling into functions like intel_uc_fw_is_selected) and
> > >
> > > then
> > > > > throwing results out afterwards :)
> > > > >
> > > >
> > > > yeah, better, and we do plan to support vGuC from ICL for vGPU.
> > > >
> > > > > >
> > > > > > >
> > > > > > > On 1/11/2018 10:27 PM, Patchwork wrote:
> > > > > > > > == Series Details ==
> > > > > > > >
> > > > > > > > Series: series starting with [1/2] drm/i915/guc: Don't enable
> > >
> > > GuC when vGPU is active
> > > > > > > > URL : https://patchwork.freedesktop.org/series/36343/
> > > > > > > > State : failure
> > > > > > > >
> > > > > > > > == Summary ==
> > > > > > > >
> > > > > > > > Series 36343v1 series starting with [1/2] drm/i915/guc: Don't
> > >
> > > enable GuC when vGPU is active
> > > > > > > >
> > >
> > > https://patchwork.freedesktop.org/api/1.0/series/36343/revisions/1/mbox/
> > > > > > > >
> > > > > > > > Test core_auth:
> > > > > > > > Subgroup basic-auth:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test core_prop_blob:
> > > > > > > > Subgroup basic:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test debugfs_test:
> > > > > > > > Subgroup read_all_entries:
> > > > > > > > dmesg-warn -> DMESG-FAIL (fi-elk-e7500)
> > >
> > > fdo#103989
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test drv_getparams_basic:
> > > > > > > > Subgroup basic-eu-total:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-subslice-total:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test drv_hangman:
> > > > > > > > Subgroup error-state-basic:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_basic:
> > > > > > > > Subgroup bad-close:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup create-close:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup create-fd-close:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_busy:
> > > > > > > > Subgroup basic-busy-default:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-hang-default:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > >
> > > fdo#104108 +2
> > > > > > > > Test gem_close_race:
> > > > > > > > Subgroup basic-process:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-threads:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_cpu_reloc:
> > > > > > > > Subgroup basic:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_cs_tlb:
> > > > > > > > Subgroup basic-default:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_ctx_create:
> > > > > > > > Subgroup basic:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-files:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_ctx_exec:
> > > > > > > > Subgroup basic:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_ctx_param:
> > > > > > > > Subgroup basic:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-default:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_ctx_switch:
> > > > > > > > Subgroup basic-default:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-default-heavy:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Test gem_exec_basic:
> > > > > > > > Subgroup basic-blt:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-bsd:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-bsd1:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-bsd2:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-default:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-render:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup basic-vebox:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup gtt-blt:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup gtt-bsd:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup gtt-bsd1:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup gtt-bsd2:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup gtt-default:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup gtt-render:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup gtt-vebox:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup readonly-blt:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup readonly-bsd:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup readonly-bsd1:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup readonly-bsd2:
> > > > > > > > pass -> SKIP (fi-skl-gvtdvm)
> > > > > > > > Subgroup readonly-default:
> > > > > > > > WARNING: Long output truncated
> > > > > > > >
> > > > > > > > da4321c7c088d01ad62b18d37dcfe5ef8d0b855d drm-tip:
> > >
> > > 2018y-01m-11d-14h-59m-37s UTC integration manifest
> > > > > > > > a0e8e84432b0 HAX: drm/i915/uc: Enable GuC/HuC for CI
> > > > > > > > 973357da236a drm/i915/guc: Don't enable GuC when vGPU is
> > >
> > > active
> > > > > > > >
> > > > > > > > == Logs ==
> > > > > > > >
> > > > > > > > For more details see:
> > >
> > > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7651/issues.html
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > Joonas Lahtinen
> > > > > Open Source Technology Center
> > > > > Intel Corporation
> > >
> > >
> > > Tomi
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation