[Mesa-dev] [PATCH v4 0/3] GEM BO padding to find OOB buffer writes

kevin.rogovin at intel.com kevin.rogovin at intel.com
Tue Jan 30 10:51:16 UTC 2018

From: Kevin Rogovin <kevin.rogovin at intel.com>

This patch series adds a new debug option to pad each GEM BO allocated
by the brw_bufmgr with (weak) pseudo-random noise values which are then
checked after each batchbuffer dispatch to the kernel. This can be quite
valuable to find diffucult to track down heisenberg style bugs.

A possible follow-up series would be to write to stderr (or another
logging mechanism) if the OOB write is to a GEM BO that backs a GL
buffer object; that features would be quite useful for application

 Change debug macro name value to DEBUG_CHECK_OOB.
 (suggested/requested by Jason Ekstrand)

 Use map as well when filling the noise values to make code style more
 (suggested/requested by Jason Ekstrand)

 Change from using pread to mapping buffer padding on checking noise
 (spawned from Chris Wilson feedback)

 Use gen_invalidate_range() to make sure values read are correct.
 (suggested/requested by Chris Wilson)

 Add comment to declaration of brw_bo_padding_is_good() indicating
 that one needs to wait for the GPU to finish the rendering of the
 contents of the batchbuffer that uses the GEM BO before calling
 (spawned from Chris Wilson feedback)

 Call brw_bo_wait_rendering() when DEBUG_OUT_OF_BOUND_CHK bit
 is up before using brw_bo_padding_is_good().
 (spawned from Chris Wilson feedback)

 Change from using rand() to using internal generating function
 (requested/suggested by Jason Ekstrand)

 Avoid having extra pointers in brw_bo struct via using the internal
 function and allocating buffer for pread at brw_bo_padding_is_good()
 (requested/suggested by Jason Ekstrand)

 Comments indicating that pread ioctl will do the required waiting
 for GPU commands to finish

Kevin Rogovin (3):
  intel/common:add debug flag for adding and checking padding on BO's
  i965: add noise padding to buffer object and function to check if
    noise is correct
  i965: if DEBUG_CHECK_OOB is up, check that noise padding for each bo
    used in batchbuffer is correct

 src/intel/common/gen_debug.c                  |   1 +
 src/intel/common/gen_debug.h                  |   1 +
 src/mesa/drivers/dri/i965/brw_bufmgr.c        | 101 +++++++++++++++++++++++++-
 src/mesa/drivers/dri/i965/brw_bufmgr.h        |  13 ++++
 src/mesa/drivers/dri/i965/intel_batchbuffer.c |  22 +++++-
 5 files changed, 136 insertions(+), 2 deletions(-)


More information about the mesa-dev mailing list