On Tue, Sep 02, 2025 at 12:53:32PM -0400, Alex Deucher wrote: > Older GPUs did not support memory protection, so the kernel > driver would validate the command submissions (CS) from userspace > to avoid the GPU accessing any memory it shouldn't. > > Change any error messages in that validatio to dev_warn_once() to > avoid spamming the kernel log in the event of a bad CS. If users > see any of these messages they should report them to the user space > component, which in most cases is mesa > (https://gitlab.freedesktop.org/mesa/mesa/-/issues). > > Cc: Borislav Petkov (AMD) <b...@alien8.de> > Link: > https://lore.kernel.org/r/20250829171655.GBaLHgh3VOvuM1UfJg@fat_crate.local > Signed-off-by: Alex Deucher <alexander.deuc...@amd.com> > --- > drivers/gpu/drm/radeon/evergreen_cs.c | 520 +++++++++++++------------- > drivers/gpu/drm/radeon/r100.c | 215 +++++------ > drivers/gpu/drm/radeon/r200.c | 34 +- > drivers/gpu/drm/radeon/r300.c | 66 ++-- > drivers/gpu/drm/radeon/r600_cs.c | 445 +++++++++++----------- > drivers/gpu/drm/radeon/radeon_cs.c | 2 +- > 6 files changed, 648 insertions(+), 634 deletions(-)
Btw, now that I had to reboot the workstation, I thought I'll apply yours to test it. You've missed one spot, see below. :-) With that additional debug added, I see now: [ 25.877593] radeon 0000:1d:00.0: vbo resource seems too big (524289) for the bo (524288) which looks like some buffer limits mis-counting. The bo is obviously of 1^19 buffer size while one of those "size" and "offset" things are off by one. If anyone wants to debug, the program which causes this is conky version: 1.11.6-2 in debian. It starts spewing the warnings when I start it and since it. Thx. --- diff --git a/drivers/gpu/drm/radeon/evergreen_cs.c b/drivers/gpu/drm/radeon/evergreen_cs.c index d49e59626e39..1162cb5d75ed 100644 --- a/drivers/gpu/drm/radeon/evergreen_cs.c +++ b/drivers/gpu/drm/radeon/evergreen_cs.c @@ -2418,7 +2418,8 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p, size = radeon_get_ib_value(p, idx+1+(i*8)+1); if (p->rdev && (size + offset) > radeon_bo_size(reloc->robj)) { /* force size to size of the buffer */ - dev_warn_ratelimited(p->dev, "vbo resource seems too big for the bo\n"); + dev_warn_once(p->dev, "vbo resource seems too big (%d) for the bo (%ld)\n", + size + offset, radeon_bo_size(reloc->robj)); ib[idx+1+(i*8)+1] = radeon_bo_size(reloc->robj) - offset; } -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette