mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-18 17:18:16 -04:00
drm/xe/tlb: fix expected_seqno calculation
It looks like when tlb_invalidation.seqno overflows
TLB_INVALIDATION_SEQNO_MAX, we start counting again from one, as per
send_tlb_invalidation(). This is also inline with initial value we give
it in xe_gt_tlb_invalidation_init(). When calculating the
expected_seqno we should also take this into account.
While we are here also print out the values if we ever trigger the
warning.
v2 (José):
- drm_WARN_ON() is preferred over plain WARN_ON(), since it gives
information on the originating device.
Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/248
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
committed by
Rodrigo Vivi
parent
a8a39c15b0
commit
fa4fe0db08
@@ -319,7 +319,12 @@ int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len)
|
||||
/* Sanity check on seqno */
|
||||
expected_seqno = (gt->tlb_invalidation.seqno_recv + 1) %
|
||||
TLB_INVALIDATION_SEQNO_MAX;
|
||||
XE_WARN_ON(expected_seqno != msg[0]);
|
||||
if (!expected_seqno)
|
||||
expected_seqno = 1;
|
||||
if (drm_WARN_ON(>->xe->drm, expected_seqno != msg[0])) {
|
||||
drm_err(>->xe->drm, "TLB expected_seqno(%d) != msg(%u)\n",
|
||||
expected_seqno, msg[0]);
|
||||
}
|
||||
|
||||
gt->tlb_invalidation.seqno_recv = msg[0];
|
||||
smp_wmb();
|
||||
|
||||
Reference in New Issue
Block a user