Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu:cleanup firmware.fw_buf alloc/free

use bo_create/free_kernel instead of manually doing it

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Monk Liu and committed by
Alex Deucher
a95b0275 84e5b516

+9 -34
+9 -34
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
··· 359 359 360 360 int amdgpu_ucode_init_bo(struct amdgpu_device *adev) 361 361 { 362 - struct amdgpu_bo **bo = &adev->firmware.fw_buf; 363 362 uint64_t fw_offset = 0; 364 363 int i, err; 365 364 struct amdgpu_firmware_info *ucode = NULL; ··· 370 371 } 371 372 372 373 if (!adev->in_gpu_reset) { 373 - err = amdgpu_bo_create(adev, adev->firmware.fw_size, PAGE_SIZE, true, 374 + err = amdgpu_bo_create_kernel(adev, adev->firmware.fw_size, PAGE_SIZE, 374 375 amdgpu_sriov_vf(adev) ? AMDGPU_GEM_DOMAIN_VRAM : AMDGPU_GEM_DOMAIN_GTT, 375 - AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS|AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED, 376 - NULL, NULL, 0, bo); 376 + &adev->firmware.fw_buf, 377 + &adev->firmware.fw_buf_mc, 378 + &adev->firmware.fw_buf_ptr); 377 379 if (err) { 378 - dev_err(adev->dev, "(%d) Firmware buffer allocate failed\n", err); 380 + dev_err(adev->dev, "failed to create kernel buffer for firmware.fw_buf\n"); 379 381 goto failed; 380 382 } 381 - 382 - err = amdgpu_bo_reserve(*bo, false); 383 - if (err) { 384 - dev_err(adev->dev, "(%d) Firmware buffer reserve failed\n", err); 385 - goto failed_reserve; 386 - } 387 - 388 - err = amdgpu_bo_pin(*bo, amdgpu_sriov_vf(adev) ? AMDGPU_GEM_DOMAIN_VRAM : AMDGPU_GEM_DOMAIN_GTT, 389 - &adev->firmware.fw_buf_mc); 390 - if (err) { 391 - dev_err(adev->dev, "(%d) Firmware buffer pin failed\n", err); 392 - goto failed_pin; 393 - } 394 - 395 - err = amdgpu_bo_kmap(*bo, &adev->firmware.fw_buf_ptr); 396 - if (err) { 397 - dev_err(adev->dev, "(%d) Firmware buffer kmap failed\n", err); 398 - goto failed_kmap; 399 - } 400 - 401 - amdgpu_bo_unreserve(*bo); 402 383 } 403 384 404 385 memset(adev->firmware.fw_buf_ptr, 0, adev->firmware.fw_size); ··· 415 436 } 416 437 return 0; 417 438 418 - failed_kmap: 419 - amdgpu_bo_unpin(*bo); 420 - failed_pin: 421 - amdgpu_bo_unreserve(*bo); 422 - failed_reserve: 423 - amdgpu_bo_unref(bo); 424 439 failed: 425 440 if (err) 426 441 adev->firmware.load_type = AMDGPU_FW_LOAD_DIRECT; ··· 437 464 ucode->kaddr = NULL; 438 465 } 439 466 } 440 - amdgpu_bo_unref(&adev->firmware.fw_buf); 441 - adev->firmware.fw_buf = NULL; 467 + 468 + amdgpu_bo_free_kernel(&adev->firmware.fw_buf, 469 + &adev->firmware.fw_buf_mc, 470 + &adev->firmware.fw_buf_ptr); 442 471 443 472 return 0; 444 473 }