[Intel-gfx] [PATCH 1/1] drm/i915/uc: Turn on GuC/HuC auto mode again
Arkadiusz Hiler
arkadiusz.hiler at intel.com
Thu Aug 22 07:51:19 UTC 2019
On Thu, Aug 22, 2019 at 09:31:07AM +0200, Michal Wajdeczko wrote:
> On Thu, 22 Aug 2019 08:40:33 +0200, Arkadiusz Hiler
> <arkadiusz.hiler at intel.com> wrote:
>
> > On Mon, Aug 19, 2019 at 11:09:15AM +0300, Martin Peres wrote:
> > > On 18/08/2019 18:51, Michal Wajdeczko wrote:
> > > > We hope that now all issues related to missing uC firmwares
> > > > are fixed and that driver can continue to load without GuC
> > > > or HuC firmware available and running:
> > > >
> > > > - missing or corrupted HuC firmware has no impact to driver
> > > > load (clients should continue to use HUC_STATUS to check
> > > > if HuC firmware was loaded and authenticated)
> > > >
> > > > - missing or corrupted GuC firmware has no impact to driver
> > > > load (unless GuC firmware blob was overridden by the user
> > > > or GuC submission was requested or GuC was previously
> > > > enabled on this system without reboot - then we will mark
> > > > GPU as wedged and continue with KMS only)
> > >
> > > Please hold merging this patch, as many more items need to be crossed
> > > off before such a patch can land.
> > >
> > > Such items include:
> > >
> > > - Assess all the existing GUC-related bugs, and prove they won't
> > > suddenly get seen by more users
> > > - add fault injection to the FW loading path
> > > - add IGT tests to make sure driver behaves well on different FW
> > > loading errors
> >
> > If this is going to get enabled by default we should add some tests to
> > verify that HuC is indeed loaded and operational. Otherwise this may
> > degrade without anyone noticing.
>
> we were discussing such test some time ago [1], but we couldn't get
> into final agreement.
>
> [1] https://patchwork.freedesktop.org/series/60800/
Oh, that's a good start. It would be good to land this along the default
enabling of HuC and have the agreement on the "best error codes" by then.
> > Something along those lines:
> > int huc_status = getparam(I915_PARAM_HUC_STATUS);
> >
> > assert(MI_PREDICATE(HUC_STATUS) == !!huc_status);
> > skip_on_f(huc_status == 0, "HuC disabled\n");
> >
> > assert_f(huc_status == 1, "HuC status is not enabled: %d\n",
> > huc_status);
> > assert(submit_commands_to_check_that_huc_is_operational());
> >
> >
> >
> > The issue is that the PARAM_HUC_STATUS won't even work right now because:
> >
> > case I915_PARAM_HUC_STATUS:
> > value = intel_huc_check_status(&i915->gt.uc.huc);
> > if (value < 0)
> > return value;
> > break;
> > /* ... */
> > return 0;
>
> Please note that this return if for ioctl() call status
>
> >
> >
> > /**
> > * intel_huc_check_status() - check HuC status
> > * @huc: intel_huc structure
> > *
> > * This function reads status register to verify if HuC
> > * firmware was successfully loaded.
> > *
> > * Returns: 1 if HuC firmware is loaded and verified,
> > * 0 if HuC firmware is not loaded and -ENODEV if HuC
> > * is not present on this platform.
> > */
> >
> > This is broken - we will get 0 whether it's enabled or disabled.
>
> I don't think so. Negative values returned by this function are simply
> used as ioctl() errors, while 0/1 values are returned as 'value' field
> that holds reply with actual HuC status:
>
> if (put_user(value, param->value))
> return -EFAULT;
>
> More coffee?
My bad. coffee++ would have helped
More information about the Intel-gfx
mailing list