From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [agd5f:drm-next-7.3 236/308] drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:921 amdgpu_gfx_handle_priv_fault() warn: set_bit() takes a bit number
Date: Thu, 13 Aug 2026 12:12:33 +0800 [thread overview]
Message-ID: <202608131222.rn9Ecu9O-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Jesse Zhang <Jesse.Zhang@amd.com>
CC: Alex Deucher <alexander.deucher@amd.com>
Hi Jesse,
FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.
tree: https://gitlab.freedesktop.org/agd5f/linux.git drm-next-7.3
head: daaeec235e46b45a0dbd4facfb275cc43022028d
commit: e9e0bd23b55aec41f45d46007cb3cb38d40f552b [236/308] drm/amdgpu: recover user queues in the shared priv-fault helper
:::::: branch date: 6 days ago
:::::: commit date: 7 days ago
config: x86_64-randconfig-161-20260810 (https://download.01.org/0day-ci/archive/20260813/202608131222.rn9Ecu9O-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
smatch: v0.5.0-9187-g5189e3fb
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202608131222.rn9Ecu9O-lkp@intel.com/
New smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:921 amdgpu_gfx_handle_priv_fault() warn: set_bit() takes a bit number
Old smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:477 amdgpu_gfx_mqd_sw_init() error: buffer overflow 'adev->gfx.compute_ring' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:489 amdgpu_gfx_mqd_sw_init() error: buffer overflow 'adev->gfx.mec.mqd_backup' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:490 amdgpu_gfx_mqd_sw_init() error: buffer overflow 'adev->gfx.mec.mqd_backup' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:518 amdgpu_gfx_mqd_sw_fini() error: buffer overflow 'adev->gfx.compute_ring' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:519 amdgpu_gfx_mqd_sw_fini() error: buffer overflow 'adev->gfx.mec.mqd_backup' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:592 amdgpu_gfx_disable_kcq() error: buffer overflow 'adev->gfx.compute_ring' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:614 amdgpu_gfx_disable_kcq() error: buffer overflow 'adev->gfx.compute_ring' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:643 amdgpu_gfx_disable_kgq() error: buffer overflow 'adev->gfx.gfx_ring' 2 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:667 amdgpu_gfx_disable_kgq() error: buffer overflow 'adev->gfx.gfx_ring' 2 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:726 amdgpu_gfx_mes_enable_kcq() error: buffer overflow 'adev->gfx.compute_ring' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:784 amdgpu_gfx_enable_kcq() error: buffer overflow 'adev->gfx.compute_ring' 64 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:816 amdgpu_gfx_enable_kgq() error: buffer overflow 'adev->gfx.gfx_ring' 2 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:841 amdgpu_gfx_enable_kgq() error: buffer overflow 'adev->gfx.gfx_ring' 2 <= s32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:1828 amdgpu_gfx_run_cleaner_shader() error: buffer overflow 'adev->gfx.compute_ring' 64 <= u32max
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c:3089 amdgpu_gfx_ring_preempt_ib() warn: inconsistent indenting
vim +921 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
1156e1a60f024ce Alex Deucher 2023-04-24 858
9243cf4777fc780 Ulisses Paixao 2026-07-29 859 /**
9243cf4777fc780 Ulisses Paixao 2026-07-29 860 * amdgpu_gfx_handle_priv_fault - Handle privileged instruction fault
9243cf4777fc780 Ulisses Paixao 2026-07-29 861 *
9243cf4777fc780 Ulisses Paixao 2026-07-29 862 * @adev: amdgpu_device pointer
9243cf4777fc780 Ulisses Paixao 2026-07-29 863 * @entry: interrupt vector entry containing fault information
9243cf4777fc780 Ulisses Paixao 2026-07-29 864 * @me_id: micro-engine ID of the faulty ring
9243cf4777fc780 Ulisses Paixao 2026-07-29 865 * @pipe_id: pipe ID of the faulty ring
9243cf4777fc780 Ulisses Paixao 2026-07-29 866 * @queue_id: queue ID of the faulty ring
9243cf4777fc780 Ulisses Paixao 2026-07-29 867 *
9243cf4777fc780 Ulisses Paixao 2026-07-29 868 * This function handles privileged instruction faults by identifying
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 869 * the faulty ring (gfx or compute) and triggering a scheduler fault, or by
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 870 * recovering the faulting user queue.
9243cf4777fc780 Ulisses Paixao 2026-07-29 871 */
9243cf4777fc780 Ulisses Paixao 2026-07-29 872 void amdgpu_gfx_handle_priv_fault(struct amdgpu_device *adev,
9243cf4777fc780 Ulisses Paixao 2026-07-29 873 struct amdgpu_iv_entry *entry,
9243cf4777fc780 Ulisses Paixao 2026-07-29 874 u8 me_id, u8 pipe_id, u8 queue_id)
9243cf4777fc780 Ulisses Paixao 2026-07-29 875 {
9243cf4777fc780 Ulisses Paixao 2026-07-29 876 struct amdgpu_ring *ring;
9243cf4777fc780 Ulisses Paixao 2026-07-29 877 u32 doorbell_offset;
9243cf4777fc780 Ulisses Paixao 2026-07-29 878 int i;
9243cf4777fc780 Ulisses Paixao 2026-07-29 879
9243cf4777fc780 Ulisses Paixao 2026-07-29 880 /*
9243cf4777fc780 Ulisses Paixao 2026-07-29 881 * Try KQ first by ring_id (HW slot is authoritative). The
9243cf4777fc780 Ulisses Paixao 2026-07-29 882 * KMD compute_hqd_mask contract guarantees KCQ and user queues
9243cf4777fc780 Ulisses Paixao 2026-07-29 883 * never share a HW slot.
9243cf4777fc780 Ulisses Paixao 2026-07-29 884 */
9243cf4777fc780 Ulisses Paixao 2026-07-29 885 if (!adev->gfx.disable_kq) {
9243cf4777fc780 Ulisses Paixao 2026-07-29 886 for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
9243cf4777fc780 Ulisses Paixao 2026-07-29 887 ring = &adev->gfx.gfx_ring[i];
9243cf4777fc780 Ulisses Paixao 2026-07-29 888 if (ring->me == me_id && ring->pipe == pipe_id &&
9243cf4777fc780 Ulisses Paixao 2026-07-29 889 ring->queue == queue_id) {
9243cf4777fc780 Ulisses Paixao 2026-07-29 890 drm_sched_fault(&ring->sched);
9243cf4777fc780 Ulisses Paixao 2026-07-29 891 return;
9243cf4777fc780 Ulisses Paixao 2026-07-29 892 }
9243cf4777fc780 Ulisses Paixao 2026-07-29 893 }
9243cf4777fc780 Ulisses Paixao 2026-07-29 894
9243cf4777fc780 Ulisses Paixao 2026-07-29 895 for (i = 0; i < adev->gfx.num_compute_rings; i++) {
9243cf4777fc780 Ulisses Paixao 2026-07-29 896 ring = &adev->gfx.compute_ring[i];
9243cf4777fc780 Ulisses Paixao 2026-07-29 897 if (ring->me == me_id && ring->pipe == pipe_id &&
9243cf4777fc780 Ulisses Paixao 2026-07-29 898 ring->queue == queue_id) {
9243cf4777fc780 Ulisses Paixao 2026-07-29 899 drm_sched_fault(&ring->sched);
9243cf4777fc780 Ulisses Paixao 2026-07-29 900 return;
9243cf4777fc780 Ulisses Paixao 2026-07-29 901 }
9243cf4777fc780 Ulisses Paixao 2026-07-29 902 }
9243cf4777fc780 Ulisses Paixao 2026-07-29 903 }
9243cf4777fc780 Ulisses Paixao 2026-07-29 904
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 905 /* No KQ matched: the faulting slot belongs to a user queue. */
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 906 if (adev->gfx.disable_uq)
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 907 return;
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 908
9243cf4777fc780 Ulisses Paixao 2026-07-29 909 doorbell_offset = entry->src_data[0] & AMDGPU_CTXID0_DOORBELL_ID_MASK;
9243cf4777fc780 Ulisses Paixao 2026-07-29 910
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 911 /*
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 912 * A compute user-queue fault IV carries the doorbell offset, so reset
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 913 * the queue directly from it. A gfx user-queue fault is raised by the
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 914 * ME and carries only the HW slot (no doorbell); record the slot and
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 915 * let the worker read the doorbell back from the HQD.
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 916 */
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 917 if (doorbell_offset) {
9243cf4777fc780 Ulisses Paixao 2026-07-29 918 amdgpu_userq_process_reset_irq(adev, entry->pasid,
9243cf4777fc780 Ulisses Paixao 2026-07-29 919 doorbell_offset);
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 920 } else {
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 @921 set_bit(pipe_id | (queue_id << 2), &adev->gfx.userq_priv_fault_slots);
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 922 schedule_work(&adev->gfx.userq_priv_fault_work);
e9e0bd23b55aec4 Jesse Zhang 2026-07-31 923 }
9243cf4777fc780 Ulisses Paixao 2026-07-29 924 }
9243cf4777fc780 Ulisses Paixao 2026-07-29 925
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-08-13 4:12 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202608131222.rn9Ecu9O-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.