Message ID | 1424886882-8117-2-git-send-email-arun.siluvery@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 25/02/15 17:54, Arun Siluvery wrote: > From: Namrta <namrta.salonie@intel.com> > > This can be used to enable WA BB infrastructure for features like > RC6, SSEU and in between context save/restore etc. > The patch which would need WA BB will have to declare the wa_bb obj > utilizing the function here. Update the WA BB with required commands > and update the address of the WA BB at appropriate place. > > Change-Id: I9cc49ae7426560215e7b6a6d10ba411caeb9321b > Signed-off-by: Namrta <namrta.salonie@intel.com> > Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_lrc.c | 32 ++++++++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c > index 9c851d8..47473e5 100644 > --- a/drivers/gpu/drm/i915/intel_lrc.c > +++ b/drivers/gpu/drm/i915/intel_lrc.c > @@ -1337,6 +1337,38 @@ static int gen8_emit_request(struct intel_ringbuffer *ringbuf, > return 0; > } > > +static struct intel_ringbuffer * > +create_wa_bb(struct intel_engine_cs *ring, uint32_t bb_size) > +{ > + struct drm_device *dev = ring->dev; > + struct intel_ringbuffer *ringbuf; > + int ret; > + > + ringbuf = kzalloc(sizeof(*ringbuf), GFP_KERNEL); > + if (!ringbuf) > + return NULL; > + > + ringbuf->ring = ring; > + > + ringbuf->size = roundup(bb_size, PAGE_SIZE); > + ringbuf->effective_size = ringbuf->size; > + ringbuf->head = 0; > + ringbuf->tail = 0; > + ringbuf->space = ringbuf->size; > + ringbuf->last_retired_head = -1; > + > + ret = intel_alloc_ringbuffer_obj(dev, ringbuf); > + if (ret) { > + DRM_DEBUG_DRIVER( > + "Failed to allocate ringbuf obj for wa_bb%s: %d\n", > + ring->name, ret); > + kfree(ringbuf); > + return NULL; > + } > + > + return ringbuf; > +} > + > static int intel_lr_context_render_state_init(struct intel_engine_cs *ring, > struct intel_context *ctx) > { Maybe add an extra line between the 2 paragraphs in the commit message. Reviewed-by: Michel Thierry <michel.thierry@intel.com>
On 27/02/15 17:32, Michel Thierry wrote: > > > On 25/02/15 17:54, Arun Siluvery wrote: >> From: Namrta <namrta.salonie@intel.com> >> >> This can be used to enable WA BB infrastructure for features like >> RC6, SSEU and in between context save/restore etc. >> The patch which would need WA BB will have to declare the wa_bb obj >> utilizing the function here. Update the WA BB with required commands >> and update the address of the WA BB at appropriate place. >> >> Change-Id: I9cc49ae7426560215e7b6a6d10ba411caeb9321b >> Signed-off-by: Namrta <namrta.salonie@intel.com> >> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com> >> --- >> drivers/gpu/drm/i915/intel_lrc.c | 32 ++++++++++++++++++++++++++++++++ >> 1 file changed, 32 insertions(+) >> >> diff --git a/drivers/gpu/drm/i915/intel_lrc.c >> b/drivers/gpu/drm/i915/intel_lrc.c >> index 9c851d8..47473e5 100644 >> > Maybe add an extra line between the 2 paragraphs in the commit message. > > Reviewed-by: Michel Thierry <michel.thierry@intel.com> Also, your next patch moves the function around, it'd be nice to add it in the right place since here, so the diffs are clearer.
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c index 9c851d8..47473e5 100644 --- a/drivers/gpu/drm/i915/intel_lrc.c +++ b/drivers/gpu/drm/i915/intel_lrc.c @@ -1337,6 +1337,38 @@ static int gen8_emit_request(struct intel_ringbuffer *ringbuf, return 0; } +static struct intel_ringbuffer * +create_wa_bb(struct intel_engine_cs *ring, uint32_t bb_size) +{ + struct drm_device *dev = ring->dev; + struct intel_ringbuffer *ringbuf; + int ret; + + ringbuf = kzalloc(sizeof(*ringbuf), GFP_KERNEL); + if (!ringbuf) + return NULL; + + ringbuf->ring = ring; + + ringbuf->size = roundup(bb_size, PAGE_SIZE); + ringbuf->effective_size = ringbuf->size; + ringbuf->head = 0; + ringbuf->tail = 0; + ringbuf->space = ringbuf->size; + ringbuf->last_retired_head = -1; + + ret = intel_alloc_ringbuffer_obj(dev, ringbuf); + if (ret) { + DRM_DEBUG_DRIVER( + "Failed to allocate ringbuf obj for wa_bb%s: %d\n", + ring->name, ret); + kfree(ringbuf); + return NULL; + } + + return ringbuf; +} + static int intel_lr_context_render_state_init(struct intel_engine_cs *ring, struct intel_context *ctx) {