Quoting Michel Thierry (2017-07-12 20:30:32) > Using the HWSP ggtt_offset to get the lrca offset is only correct if the > HWSP happens to be before it (when we reuse the PPHWSP of the kernel > context as the engine HWSP). Instead of making this assumption, get the > lrca offset from the kernel_context engine state. > > And while looking at this part of the GuC interaction, it was also > noticed that the firmware expects the size of only the engine context > (context minus the execlist part, i.e. don't include the first 80 > dwords), so pass the right size. > > v2: Use the new macros to prevent abusive overuse of the old ones (Chris). > > Reported-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@xxxxxxxxx> > Signed-off-by: Michel Thierry <michel.thierry@xxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@xxxxxxxxx> > Cc: Michal Wajdeczko <michal.wajdeczko@xxxxxxxxx> > Cc: Oscar Mateo <oscar.mateo@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_guc_submission.c | 21 ++++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c > index b7ca13860677..8b96935cf96a 100644 > --- a/drivers/gpu/drm/i915/i915_guc_submission.c > +++ b/drivers/gpu/drm/i915/i915_guc_submission.c > @@ -1018,6 +1018,12 @@ static void guc_policies_init(struct guc_policies *policies) > policies->is_valid = 1; > } > > +/* > + * The first 80 dwords of the register state context, containing the > + * execlists and ppgtt registers. > + */ > +#define LR_HW_CONTEXT_SIZE (80 * sizeof(u32)) > + > static int guc_ads_create(struct intel_guc *guc) > { > struct drm_i915_private *dev_priv = guc_to_i915(guc); > @@ -1032,6 +1038,8 @@ static int guc_ads_create(struct intel_guc *guc) > } __packed *blob; > struct intel_engine_cs *engine; > enum intel_engine_id id; > + const u32 skipped_offset = LRC_HEADER_PAGES * PAGE_SIZE; > + const u32 skipped_size = LRC_PPHWSP_SZ * PAGE_SIZE + LR_HW_CONTEXT_SIZE; I think I preferred the constants rather than the variables, but that's a matter of taste. Since you confirmed the guc works the way you describe and now have a big warning in place, Reviewed-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Though I would get Daniele to confirm the interpretation. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx