mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
amd-drm-fixes-6.13-2024-12-18:
amdgpu: - Disable BOCO when CONFIG_HOTPLUG_PCI_PCIE is not enabled - scheduler job fixes - IP version check fixes - devcoredump fix - GPUVM update fix - NBIO 2.5 fix -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQQgO5Idg2tXNTSZAr293/aFa7yZ2AUCZ2MzjwAKCRC93/aFa7yZ 2IO+AP90PiK6m0CsYmbGc2S5m+vYvMAifFQJUyeDjF3SYS6i5QEAk3sXOoRTnoQd uquhF86731SVwuZEXi+8057ot0UYlwY= =15nQ -----END PGP SIGNATURE----- Merge tag 'amd-drm-fixes-6.13-2024-12-18' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes amd-drm-fixes-6.13-2024-12-18: amdgpu: - Disable BOCO when CONFIG_HOTPLUG_PCI_PCIE is not enabled - scheduler job fixes - IP version check fixes - devcoredump fix - GPUVM update fix - NBIO 2.5 fix Signed-off-by: Dave Airlie <airlied@redhat.com> From: Alex Deucher <alexander.deucher@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241218204637.2966198-1-alexander.deucher@amd.com
This commit is contained in:
commit
e639fb046b
@ -343,11 +343,10 @@ void amdgpu_coredump(struct amdgpu_device *adev, bool skip_vram_check,
|
|||||||
coredump->skip_vram_check = skip_vram_check;
|
coredump->skip_vram_check = skip_vram_check;
|
||||||
coredump->reset_vram_lost = vram_lost;
|
coredump->reset_vram_lost = vram_lost;
|
||||||
|
|
||||||
if (job && job->vm) {
|
if (job && job->pasid) {
|
||||||
struct amdgpu_vm *vm = job->vm;
|
|
||||||
struct amdgpu_task_info *ti;
|
struct amdgpu_task_info *ti;
|
||||||
|
|
||||||
ti = amdgpu_vm_get_task_info_vm(vm);
|
ti = amdgpu_vm_get_task_info_pasid(adev, job->pasid);
|
||||||
if (ti) {
|
if (ti) {
|
||||||
coredump->reset_task_info = *ti;
|
coredump->reset_task_info = *ti;
|
||||||
amdgpu_vm_put_task_info(ti);
|
amdgpu_vm_put_task_info(ti);
|
||||||
|
@ -417,6 +417,9 @@ bool amdgpu_device_supports_boco(struct drm_device *dev)
|
|||||||
{
|
{
|
||||||
struct amdgpu_device *adev = drm_to_adev(dev);
|
struct amdgpu_device *adev = drm_to_adev(dev);
|
||||||
|
|
||||||
|
if (!IS_ENABLED(CONFIG_HOTPLUG_PCI_PCIE))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (adev->has_pr3 ||
|
if (adev->has_pr3 ||
|
||||||
((adev->flags & AMD_IS_PX) && amdgpu_is_atpx_hybrid()))
|
((adev->flags & AMD_IS_PX) && amdgpu_is_atpx_hybrid()))
|
||||||
return true;
|
return true;
|
||||||
|
@ -255,7 +255,6 @@ void amdgpu_job_set_resources(struct amdgpu_job *job, struct amdgpu_bo *gds,
|
|||||||
|
|
||||||
void amdgpu_job_free_resources(struct amdgpu_job *job)
|
void amdgpu_job_free_resources(struct amdgpu_job *job)
|
||||||
{
|
{
|
||||||
struct amdgpu_ring *ring = to_amdgpu_ring(job->base.sched);
|
|
||||||
struct dma_fence *f;
|
struct dma_fence *f;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
@ -268,7 +267,7 @@ void amdgpu_job_free_resources(struct amdgpu_job *job)
|
|||||||
f = NULL;
|
f = NULL;
|
||||||
|
|
||||||
for (i = 0; i < job->num_ibs; ++i)
|
for (i = 0; i < job->num_ibs; ++i)
|
||||||
amdgpu_ib_free(ring->adev, &job->ibs[i], f);
|
amdgpu_ib_free(NULL, &job->ibs[i], f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void amdgpu_job_free_cb(struct drm_sched_job *s_job)
|
static void amdgpu_job_free_cb(struct drm_sched_job *s_job)
|
||||||
|
@ -1266,10 +1266,9 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev, struct amdgpu_bo_va *bo_va,
|
|||||||
* next command submission.
|
* next command submission.
|
||||||
*/
|
*/
|
||||||
if (amdgpu_vm_is_bo_always_valid(vm, bo)) {
|
if (amdgpu_vm_is_bo_always_valid(vm, bo)) {
|
||||||
uint32_t mem_type = bo->tbo.resource->mem_type;
|
if (bo->tbo.resource &&
|
||||||
|
!(bo->preferred_domains &
|
||||||
if (!(bo->preferred_domains &
|
amdgpu_mem_type_to_domain(bo->tbo.resource->mem_type)))
|
||||||
amdgpu_mem_type_to_domain(mem_type)))
|
|
||||||
amdgpu_vm_bo_evicted(&bo_va->base);
|
amdgpu_vm_bo_evicted(&bo_va->base);
|
||||||
else
|
else
|
||||||
amdgpu_vm_bo_idle(&bo_va->base);
|
amdgpu_vm_bo_idle(&bo_va->base);
|
||||||
|
@ -4123,7 +4123,7 @@ static int gfx_v12_0_set_clockgating_state(void *handle,
|
|||||||
if (amdgpu_sriov_vf(adev))
|
if (amdgpu_sriov_vf(adev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
switch (adev->ip_versions[GC_HWIP][0]) {
|
switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
|
||||||
case IP_VERSION(12, 0, 0):
|
case IP_VERSION(12, 0, 0):
|
||||||
case IP_VERSION(12, 0, 1):
|
case IP_VERSION(12, 0, 1):
|
||||||
gfx_v12_0_update_gfx_clock_gating(adev,
|
gfx_v12_0_update_gfx_clock_gating(adev,
|
||||||
|
@ -108,7 +108,7 @@ mmhub_v4_1_0_print_l2_protection_fault_status(struct amdgpu_device *adev,
|
|||||||
dev_err(adev->dev,
|
dev_err(adev->dev,
|
||||||
"MMVM_L2_PROTECTION_FAULT_STATUS_LO32:0x%08X\n",
|
"MMVM_L2_PROTECTION_FAULT_STATUS_LO32:0x%08X\n",
|
||||||
status);
|
status);
|
||||||
switch (adev->ip_versions[MMHUB_HWIP][0]) {
|
switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
|
||||||
case IP_VERSION(4, 1, 0):
|
case IP_VERSION(4, 1, 0):
|
||||||
mmhub_cid = mmhub_client_ids_v4_1_0[cid][rw];
|
mmhub_cid = mmhub_client_ids_v4_1_0[cid][rw];
|
||||||
break;
|
break;
|
||||||
|
@ -271,8 +271,19 @@ const struct nbio_hdp_flush_reg nbio_v7_0_hdp_flush_reg = {
|
|||||||
.ref_and_mask_sdma1 = GPU_HDP_FLUSH_DONE__SDMA1_MASK,
|
.ref_and_mask_sdma1 = GPU_HDP_FLUSH_DONE__SDMA1_MASK,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define regRCC_DEV0_EPF6_STRAP4 0xd304
|
||||||
|
#define regRCC_DEV0_EPF6_STRAP4_BASE_IDX 5
|
||||||
|
|
||||||
static void nbio_v7_0_init_registers(struct amdgpu_device *adev)
|
static void nbio_v7_0_init_registers(struct amdgpu_device *adev)
|
||||||
{
|
{
|
||||||
|
uint32_t data;
|
||||||
|
|
||||||
|
switch (amdgpu_ip_version(adev, NBIO_HWIP, 0)) {
|
||||||
|
case IP_VERSION(2, 5, 0):
|
||||||
|
data = RREG32_SOC15(NBIO, 0, regRCC_DEV0_EPF6_STRAP4) & ~BIT(23);
|
||||||
|
WREG32_SOC15(NBIO, 0, regRCC_DEV0_EPF6_STRAP4, data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MMIO_REG_HOLE_OFFSET (0x80000 - PAGE_SIZE)
|
#define MMIO_REG_HOLE_OFFSET (0x80000 - PAGE_SIZE)
|
||||||
|
@ -275,7 +275,7 @@ static void nbio_v7_11_init_registers(struct amdgpu_device *adev)
|
|||||||
if (def != data)
|
if (def != data)
|
||||||
WREG32_SOC15(NBIO, 0, regBIF_BIF256_CI256_RC3X4_USB4_PCIE_MST_CTRL_3, data);
|
WREG32_SOC15(NBIO, 0, regBIF_BIF256_CI256_RC3X4_USB4_PCIE_MST_CTRL_3, data);
|
||||||
|
|
||||||
switch (adev->ip_versions[NBIO_HWIP][0]) {
|
switch (amdgpu_ip_version(adev, NBIO_HWIP, 0)) {
|
||||||
case IP_VERSION(7, 11, 0):
|
case IP_VERSION(7, 11, 0):
|
||||||
case IP_VERSION(7, 11, 1):
|
case IP_VERSION(7, 11, 1):
|
||||||
case IP_VERSION(7, 11, 2):
|
case IP_VERSION(7, 11, 2):
|
||||||
|
@ -247,7 +247,7 @@ static void nbio_v7_7_init_registers(struct amdgpu_device *adev)
|
|||||||
if (def != data)
|
if (def != data)
|
||||||
WREG32_SOC15(NBIO, 0, regBIF0_PCIE_MST_CTRL_3, data);
|
WREG32_SOC15(NBIO, 0, regBIF0_PCIE_MST_CTRL_3, data);
|
||||||
|
|
||||||
switch (adev->ip_versions[NBIO_HWIP][0]) {
|
switch (amdgpu_ip_version(adev, NBIO_HWIP, 0)) {
|
||||||
case IP_VERSION(7, 7, 0):
|
case IP_VERSION(7, 7, 0):
|
||||||
data = RREG32_SOC15(NBIO, 0, regRCC_DEV0_EPF5_STRAP4) & ~BIT(23);
|
data = RREG32_SOC15(NBIO, 0, regRCC_DEV0_EPF5_STRAP4) & ~BIT(23);
|
||||||
WREG32_SOC15(NBIO, 0, regRCC_DEV0_EPF5_STRAP4, data);
|
WREG32_SOC15(NBIO, 0, regRCC_DEV0_EPF5_STRAP4, data);
|
||||||
|
@ -2096,7 +2096,7 @@ static int smu_v14_0_2_enable_gfx_features(struct smu_context *smu)
|
|||||||
{
|
{
|
||||||
struct amdgpu_device *adev = smu->adev;
|
struct amdgpu_device *adev = smu->adev;
|
||||||
|
|
||||||
if (adev->ip_versions[MP1_HWIP][0] == IP_VERSION(14, 0, 2))
|
if (amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(14, 0, 2))
|
||||||
return smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_EnableAllSmuFeatures,
|
return smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_EnableAllSmuFeatures,
|
||||||
FEATURE_PWR_GFX, NULL);
|
FEATURE_PWR_GFX, NULL);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user