From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f49.google.com (mail-dl1-f49.google.com [74.125.82.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E975181334 for ; Fri, 24 Apr 2026 00:49:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776991799; cv=none; b=kDAgo9Mt4u6RS+rtLF+13X+w0oXDSERa2QZR2eFf+tmxbo+fntk6qBoeXeeG+WJBD6rJl/GjMCdIu+tAiiF0/AeA1ROqQSJnjV3E586GzsiLDCf0+1Q9/6xLVma9pxnmXJgDsnNydTuzG6Mp9YFe2CQE5gJXAYMiuFXK9oTtt8o= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776991799; c=relaxed/simple; bh=/Lg43oEAVN4R/LXB0Ye/b6N6UJjf5SN7aWWjZXEDYDk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YiDcUsMQbJNauvtodE6PpjNoF9lEWQwtK977w2OrCmxtRzwwMdtVTbum2j3BkqM+umoJeIhNTbV/Tv9/9NIEdAT4i40SCRrpK3AIqiGmBU8fKf4L1Y5Fh/Lx0NODKIIdK7RLNmi3h3SJMH7tqwvR3xqMR15A+s+IOlIn05vAHuw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fmZEqSbq; arc=none smtp.client-ip=74.125.82.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fmZEqSbq" Received: by mail-dl1-f49.google.com with SMTP id a92af1059eb24-12dbd0f8063so2737713c88.0 for ; Thu, 23 Apr 2026 17:49:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776991797; x=1777596597; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/6kEj1wIg3L0vvI4zp06FIgoSHqbRAMXfy1o/X7ZFcc=; b=fmZEqSbqrZn+kjBD5P1e6xH5HatFzGVA6xWNhPyaOuXsPvgT+cReQ1GXvPj9Ayk5fY pbGMPmPx0M6+qz8GrqFl/RKBBwhHMZ9ktzAxUREs2rtkGyu2egrC2RvYcCRZnBJkueZa LKGa61K3B3IWT6aDjnkCMt0SR1YT/eZRLyB6GckOnx+weklxSXcwZfVpoyLireIYGY1P Pi5qgdWlWToz1hk+RcthmTX9xiq9rRvwKg58CmxL/zqGpPt0OjT2YuRNLBBoKLRexLbV ubLvfkCGtartxDjGWAUTEgfqk7cWcGxY1NNx7hNrFEO5NE+zR7LWNLWFuds1R58h5UkF Ug4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776991797; x=1777596597; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/6kEj1wIg3L0vvI4zp06FIgoSHqbRAMXfy1o/X7ZFcc=; b=NcmgZkNA4ZnRJdPmWXJWdADo88dolcaFVVLYqBSASj+wshICrTWjaqUx8RERSMNlCb 9MRSQNOCDQpuSI4e15FlaYV+4XUacWAP1FN3SUsIXv4wtOwwlAjPIKaO0VVg9/4TYLWS fCaKRBX5MzbLnRof1mbXEVmAO/gDgjZpEWynI2b2SJ/iuUsV2szON4qmBizm5dF/NMXG 4hF5Jq0y1RrSdvwgZ4teOOJ1zMGsOc4NIdrap5A4uWP87COUV5r1LmuTY4wJpwiuP+0D KofAJk1bgCpcU68FJ2/YBO4+Lh3014lI4AkclEp0iwnENLbZUkio6Bit3PANJD7+qx19 CclQ== X-Gm-Message-State: AOJu0YxthmvtzuXvFT57GqZH0NfUGyLC1wYLXIP64hXNR7KrjD7i0aLN V3kYL6BvgsSZIItN+PwYWut1E6HSOvKoSyIdiOclKgsSJy2EKRs/xPvI X-Gm-Gg: AeBDievFkH6KxBHSIDk+ePMHsMHAaC/Ei2b0D5MPabZZYzp156PoxjvjrJYhS+G2SG7 GOKbX2thuf8dQWINWXb+2FXgPcP4bOTIqh0R/BacOmyNv8MNpFs+HMZPbQFidGwpXkqp5YzVueX hsyGFzH/aSfxQ/ED3vS1G2gKhUyd9R5DF+4/UUL6Hih9Ddqp3QDb5KMIw5qeDI0P4UDgKHKRQs8 QXBAUNrGBhFDxwrHVZ3DnRoi1Db1keDNoOsi/t5yeCqKNuHhSTojjKunOAMBaVKhNr0YD4OX2Yb pJM+za/8IT09WPmQtHtrQROTxm8yFskllxOFwmiz7IaF22ZJNYr6ijzIWzlc+oENsQ9Ak/XISdM tQaFHUCpwVoekSxprVxBJzAGBHEV9cjbnFm6oFX1nOTGYrqw2fx08c6V7Tu8yNup2KowsDm0Yir WxTKw7qe4A89I6Yh7L2SeKqEPpbYrZ/mkXBxzcng== X-Received: by 2002:a05:7022:11c:b0:12b:ec67:3523 with SMTP id a92af1059eb24-12c73f726eamr15041738c88.9.1776991797381; Thu, 23 Apr 2026 17:49:57 -0700 (PDT) Received: from osabio.. ([2804:14c:498:1391:e297:f15e:34f:a801]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12c74a185a8sm30930634c88.9.2026.04.23.17.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 17:49:56 -0700 (PDT) From: Gabriel Almeida To: alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch Cc: linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, gabrielsousa230@gmail.com Subject: [PATCH v3 2/2] drm/amdgpu: move read_indexed_register to amdgpu_reg_access Date: Thu, 23 Apr 2026 21:49:10 -0300 Message-ID: <20260424004910.21003-2-gabrielsousa230@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424004910.21003-1-gabrielsousa230@gmail.com> References: <20260424004910.21003-1-gabrielsousa230@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The read_indexed_register helper is duplicated across multiple files with identical logic. Move it to amdgpu_reg_access.c as amdgpu_read_indexed_register and update all users accordingly. No functional changes intended. Signed-off-by: Gabriel Almeida --- v3: - split into two patches as requested v2: - move read_indexed_register to amdgpu_reg_access.c - drop amdgpu_common .../gpu/drm/amd/amdgpu/amdgpu_reg_access.c | 18 ++++++++++++++++ .../gpu/drm/amd/amdgpu/amdgpu_reg_access.h | 3 +++ drivers/gpu/drm/amd/amdgpu/nv.c | 19 +---------------- drivers/gpu/drm/amd/amdgpu/soc15.c | 19 +---------------- drivers/gpu/drm/amd/amdgpu/soc21.c | 19 +---------------- drivers/gpu/drm/amd/amdgpu/soc24.c | 21 +------------------ drivers/gpu/drm/amd/amdgpu/soc_v1_0.c | 20 +----------------- 7 files changed, 26 insertions(+), 93 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c index 540040c76..daefbeeee 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.c @@ -956,3 +956,21 @@ uint32_t amdgpu_device_wait_on_rreg(struct amdgpu_device *adev, uint32_t inst, } return ret; } + + +uint32_t amdgpu_read_indexed_register(struct amdgpu_device *adev, + u32 se_num, u32 sh_num, u32 reg_offset) +{ + uint32_t val; + + mutex_lock(&adev->grbm_idx_mutex); + if (se_num != 0xffffffff || sh_num != 0xffffffff) + amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0xffffffff, 0); + + val = RREG32(reg_offset); + + if (se_num != 0xffffffff || sh_num != 0xffffffff) + amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff, 0); + mutex_unlock(&adev->grbm_idx_mutex); + return val; +} diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h index 4d88e5cd1..a1011af6b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h @@ -160,4 +160,7 @@ uint32_t amdgpu_device_wait_on_rreg(struct amdgpu_device *adev, uint32_t inst, uint32_t reg_addr, char reg_name[], uint32_t expected_value, uint32_t mask); +uint32_t amdgpu_read_indexed_register(struct amdgpu_device *adev, + u32 se_num, u32 sh_num, u32 reg_offset); + #endif /* __AMDGPU_REG_ACCESS_H__ */ diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c b/drivers/gpu/drm/amd/amdgpu/nv.c index 030d80664..72edf5326 100644 --- a/drivers/gpu/drm/amd/amdgpu/nv.c +++ b/drivers/gpu/drm/amd/amdgpu/nv.c @@ -354,29 +354,12 @@ static struct soc15_allowed_register_entry nv_allowed_read_registers[] = { { SOC15_REG_ENTRY(GC, 0, mmGB_ADDR_CONFIG)}, }; -static uint32_t nv_read_indexed_register(struct amdgpu_device *adev, u32 se_num, - u32 sh_num, u32 reg_offset) -{ - uint32_t val; - - mutex_lock(&adev->grbm_idx_mutex); - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0xffffffff, 0); - - val = RREG32(reg_offset); - - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff, 0); - mutex_unlock(&adev->grbm_idx_mutex); - return val; -} - static uint32_t nv_get_register_value(struct amdgpu_device *adev, bool indexed, u32 se_num, u32 sh_num, u32 reg_offset) { if (indexed) { - return nv_read_indexed_register(adev, se_num, sh_num, reg_offset); + return amdgpu_read_indexed_register(adev, se_num, sh_num, reg_offset); } else { if (reg_offset == SOC15_REG_OFFSET(GC, 0, mmGB_ADDR_CONFIG)) return adev->gfx.config.gb_addr_config; diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c index 27bcbbae5..87b398dd0 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc15.c +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c @@ -401,29 +401,12 @@ static struct soc15_allowed_register_entry soc15_allowed_read_registers[] = { { SOC15_REG_ENTRY(GC, 0, mmDB_DEBUG2)}, }; -static uint32_t soc15_read_indexed_register(struct amdgpu_device *adev, u32 se_num, - u32 sh_num, u32 reg_offset) -{ - uint32_t val; - - mutex_lock(&adev->grbm_idx_mutex); - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0xffffffff, 0); - - val = RREG32(reg_offset); - - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff, 0); - mutex_unlock(&adev->grbm_idx_mutex); - return val; -} - static uint32_t soc15_get_register_value(struct amdgpu_device *adev, bool indexed, u32 se_num, u32 sh_num, u32 reg_offset) { if (indexed) { - return soc15_read_indexed_register(adev, se_num, sh_num, reg_offset); + return amdgpu_read_indexed_register(adev, se_num, sh_num, reg_offset); } else { if (reg_offset == SOC15_REG_OFFSET(GC, 0, mmGB_ADDR_CONFIG)) return adev->gfx.config.gb_addr_config; diff --git a/drivers/gpu/drm/amd/amdgpu/soc21.c b/drivers/gpu/drm/amd/amdgpu/soc21.c index 7e4353d0c..93c002e51 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc21.c +++ b/drivers/gpu/drm/amd/amdgpu/soc21.c @@ -306,29 +306,12 @@ static struct soc15_allowed_register_entry soc21_allowed_read_registers[] = { { SOC15_REG_ENTRY(GC, 0, regGB_ADDR_CONFIG)}, }; -static uint32_t soc21_read_indexed_register(struct amdgpu_device *adev, u32 se_num, - u32 sh_num, u32 reg_offset) -{ - uint32_t val; - - mutex_lock(&adev->grbm_idx_mutex); - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0xffffffff, 0); - - val = RREG32(reg_offset); - - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff, 0); - mutex_unlock(&adev->grbm_idx_mutex); - return val; -} - static uint32_t soc21_get_register_value(struct amdgpu_device *adev, bool indexed, u32 se_num, u32 sh_num, u32 reg_offset) { if (indexed) { - return soc21_read_indexed_register(adev, se_num, sh_num, reg_offset); + return amdgpu_read_indexed_register(adev, se_num, sh_num, reg_offset); } else { if (reg_offset == SOC15_REG_OFFSET(GC, 0, regGB_ADDR_CONFIG) && adev->gfx.config.gb_addr_config) return adev->gfx.config.gb_addr_config; diff --git a/drivers/gpu/drm/amd/amdgpu/soc24.c b/drivers/gpu/drm/amd/amdgpu/soc24.c index d1adf19a5..265db9331 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc24.c +++ b/drivers/gpu/drm/amd/amdgpu/soc24.c @@ -132,31 +132,12 @@ static struct soc15_allowed_register_entry soc24_allowed_read_registers[] = { { SOC15_REG_ENTRY(GC, 0, regGB_ADDR_CONFIG)}, }; -static uint32_t soc24_read_indexed_register(struct amdgpu_device *adev, - u32 se_num, - u32 sh_num, - u32 reg_offset) -{ - uint32_t val; - - mutex_lock(&adev->grbm_idx_mutex); - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0xffffffff, 0); - - val = RREG32(reg_offset); - - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff, 0); - mutex_unlock(&adev->grbm_idx_mutex); - return val; -} - static uint32_t soc24_get_register_value(struct amdgpu_device *adev, bool indexed, u32 se_num, u32 sh_num, u32 reg_offset) { if (indexed) { - return soc24_read_indexed_register(adev, se_num, sh_num, reg_offset); + return amdgpu_read_indexed_register(adev, se_num, sh_num, reg_offset); } else { if (reg_offset == SOC15_REG_OFFSET(GC, 0, regGB_ADDR_CONFIG) && adev->gfx.config.gb_addr_config) diff --git a/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c b/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c index 709b1669b..4a5fe8e9d 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c @@ -184,31 +184,13 @@ static struct soc15_allowed_register_entry soc_v1_0_allowed_read_registers[] = { { SOC15_REG_ENTRY(GC, 0, regGB_ADDR_CONFIG_1) }, }; -static uint32_t soc_v1_0_read_indexed_register(struct amdgpu_device *adev, - u32 se_num, - u32 sh_num, - u32 reg_offset) -{ - uint32_t val; - - mutex_lock(&adev->grbm_idx_mutex); - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, se_num, sh_num, 0xffffffff, 0); - - val = RREG32(reg_offset); - - if (se_num != 0xffffffff || sh_num != 0xffffffff) - amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff, 0); - mutex_unlock(&adev->grbm_idx_mutex); - return val; -} static uint32_t soc_v1_0_get_register_value(struct amdgpu_device *adev, bool indexed, u32 se_num, u32 sh_num, u32 reg_offset) { if (indexed) { - return soc_v1_0_read_indexed_register(adev, se_num, sh_num, reg_offset); + return amdgpu_read_indexed_register(adev, se_num, sh_num, reg_offset); } else { if (reg_offset == SOC15_REG_OFFSET(GC, 0, regGB_ADDR_CONFIG_1) && adev->gfx.config.gb_addr_config) -- 2.43.0