• Michal Wajdeczko's avatar
    drm/xe: Introduce Xe assert macros · 1975b591
    Michal Wajdeczko authored
    As we are moving away from the controversial XE_BUG_ON macro,
    relying just on WARN_ON or drm_err does not cover the cases
    where we want to annotate functions with additional detailed
    debug checks to assert that all prerequisites are satisfied,
    without paying footprint or performance penalty on non-debug
    builds, where all misuses introduced during code integration
    were already fixed.
    
    Introduce family of Xe assert macros that try to follow classic
    assert() utility and can be compiled out on non-debug builds.
    
    Macros are based on drm_WARN, but unlikely to origin, disallow
    use in expressions since we will compile that code out.
    
    As we are operating on the xe pointers, we can print additional
    information about the device, like tile or GT identifier, that
    is not available from generic WARN report:
    
    [ ] xe 0000:00:02.0: [drm] Assertion `true == false` failed!
        platform: 1 subplatform: 1
        graphics: Xe_LP 12.00 step B0
        media: Xe_M 12.00 step B0
        display: enabled step D0
        tile: 0 VRAM 0 B
        GT: 0 type 1
    
    [ ] xe 0000:b3:00.0: [drm] Assertion `true == false` failed!
        platform: 7 subplatform: 3
        graphics: Xe_HPG 12.55 step A1
        media: Xe_HPM 12.55 step A1
        display: disabled step **
        tile: 0 VRAM 14.0 GiB
        GT: 0 type 1
    
    [ ] WARNING: CPU: 0 PID: 2687 at drivers/gpu/drm/xe/xe_device.c:281 xe_device_probe+0x374/0x520 [xe]
    [ ] RIP: 0010:xe_device_probe+0x374/0x520 [xe]
    [ ] Call Trace:
    [ ]  ? __warn+0x7b/0x160
    [ ]  ? xe_device_probe+0x374/0x520 [xe]
    [ ]  ? report_bug+0x1c3/0x1d0
    [ ]  ? handle_bug+0x42/0x70
    [ ]  ? exc_invalid_op+0x14/0x70
    [ ]  ? asm_exc_invalid_op+0x16/0x20
    [ ]  ? xe_device_probe+0x374/0x520 [xe]
    [ ]  ? xe_device_probe+0x374/0x520 [xe]
    [ ]  xe_pci_probe+0x6e3/0x950 [xe]
    [ ]  ? lockdep_hardirqs_on+0xc7/0x140
    [ ]  pci_device_probe+0x9e/0x160
    [ ]  really_probe+0x19d/0x400
    
    v2: use lowercase names
    v3: apply xe coding style
    v4: fix non-debug build and improve kernel-doc
    Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
    Cc: Oded Gabbay <ogabbay@kernel.org>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
    Acked-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    1975b591
xe_assert.h 6.04 KB