Skip to content

Commit f8eb96b

Browse files
committed
Merge tag 'amd-drm-next-5.17-2021-12-02' of https://gitlab.freedesktop.org/agd5f/linux into drm-next
amd-drm-next-5.17-2021-12-02: amdgpu: - Use generic drm fb helpers - PSR fixes - Rework DCN3.1 clkmgr - DPCD 1.3 fixes - Misc display fixes can cleanups - Clock query fixes for APUs - LTTPR fixes - DSC fixes - Misc PM fixes - RAS fixes - OLED backlight fix - SRIOV fixes - Add STB (Smart Trace Buffer) for supported dGPUs - IH rework - Enable seamless boot for DCN3.01 amdkfd: - Rework more stuff around IP discovery enumeration - Further clean up of interfaces with amdgpu - SVM fixes radeon: - Indentation fixes UAPI: - Add a new KFD header that defines some of the sysfs bitfields and enums that userspace has been using for a while The corresponding bit-fields and enums in user mode are defined in https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/blob/master/include/hsakmttypes.h Signed-off-by: Dave Airlie <[email protected]> # Conflicts: # drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c From: Alex Deucher <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents c8a04cb + 7089784 commit f8eb96b

File tree

156 files changed

+5093
-2345
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

156 files changed

+5093
-2345
lines changed

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,7 @@ F: drivers/gpu/drm/amd/include/kgd_kfd_interface.h
966966
F: drivers/gpu/drm/amd/include/v9_structs.h
967967
F: drivers/gpu/drm/amd/include/vi_structs.h
968968
F: include/uapi/linux/kfd_ioctl.h
969+
F: include/uapi/linux/kfd_sysfs.h
969970

970971
AMD SPI DRIVER
971972
M: Sanjay R Mehta <[email protected]>

drivers/gpu/drm/amd/amdgpu/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ amdgpu-y += amdgpu_device.o amdgpu_kms.o \
4545
amdgpu_atombios.o atombios_crtc.o amdgpu_connectors.o \
4646
atom.o amdgpu_fence.o amdgpu_ttm.o amdgpu_object.o amdgpu_gart.o \
4747
amdgpu_encoders.o amdgpu_display.o amdgpu_i2c.o \
48-
amdgpu_fb.o amdgpu_gem.o amdgpu_ring.o \
48+
amdgpu_gem.o amdgpu_ring.o \
4949
amdgpu_cs.o amdgpu_bios.o amdgpu_benchmark.o amdgpu_test.o \
5050
atombios_dp.o amdgpu_afmt.o amdgpu_trace_points.o \
5151
atombios_encoders.o amdgpu_sa.o atombios_i2c.o \

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c

Lines changed: 36 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)
7272
if (!kfd_initialized)
7373
return;
7474

75-
adev->kfd.dev = kgd2kfd_probe((struct kgd_dev *)adev, vf);
75+
adev->kfd.dev = kgd2kfd_probe(adev, vf);
7676

7777
if (adev->kfd.dev)
7878
amdgpu_amdkfd_total_mem_size += adev->gmc.real_vram_size;
@@ -233,19 +233,16 @@ int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev)
233233
return r;
234234
}
235235

236-
void amdgpu_amdkfd_gpu_reset(struct kgd_dev *kgd)
236+
void amdgpu_amdkfd_gpu_reset(struct amdgpu_device *adev)
237237
{
238-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
239-
240238
if (amdgpu_device_should_recover_gpu(adev))
241239
amdgpu_device_gpu_recover(adev, NULL);
242240
}
243241

244-
int amdgpu_amdkfd_alloc_gtt_mem(struct kgd_dev *kgd, size_t size,
242+
int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
245243
void **mem_obj, uint64_t *gpu_addr,
246244
void **cpu_ptr, bool cp_mqd_gfx9)
247245
{
248-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
249246
struct amdgpu_bo *bo = NULL;
250247
struct amdgpu_bo_param bp;
251248
int r;
@@ -314,7 +311,7 @@ int amdgpu_amdkfd_alloc_gtt_mem(struct kgd_dev *kgd, size_t size,
314311
return r;
315312
}
316313

317-
void amdgpu_amdkfd_free_gtt_mem(struct kgd_dev *kgd, void *mem_obj)
314+
void amdgpu_amdkfd_free_gtt_mem(struct amdgpu_device *adev, void *mem_obj)
318315
{
319316
struct amdgpu_bo *bo = (struct amdgpu_bo *) mem_obj;
320317

@@ -325,10 +322,9 @@ void amdgpu_amdkfd_free_gtt_mem(struct kgd_dev *kgd, void *mem_obj)
325322
amdgpu_bo_unref(&(bo));
326323
}
327324

328-
int amdgpu_amdkfd_alloc_gws(struct kgd_dev *kgd, size_t size,
325+
int amdgpu_amdkfd_alloc_gws(struct amdgpu_device *adev, size_t size,
329326
void **mem_obj)
330327
{
331-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
332328
struct amdgpu_bo *bo = NULL;
333329
struct amdgpu_bo_user *ubo;
334330
struct amdgpu_bo_param bp;
@@ -355,18 +351,16 @@ int amdgpu_amdkfd_alloc_gws(struct kgd_dev *kgd, size_t size,
355351
return 0;
356352
}
357353

358-
void amdgpu_amdkfd_free_gws(struct kgd_dev *kgd, void *mem_obj)
354+
void amdgpu_amdkfd_free_gws(struct amdgpu_device *adev, void *mem_obj)
359355
{
360356
struct amdgpu_bo *bo = (struct amdgpu_bo *)mem_obj;
361357

362358
amdgpu_bo_unref(&bo);
363359
}
364360

365-
uint32_t amdgpu_amdkfd_get_fw_version(struct kgd_dev *kgd,
361+
uint32_t amdgpu_amdkfd_get_fw_version(struct amdgpu_device *adev,
366362
enum kgd_engine_type type)
367363
{
368-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
369-
370364
switch (type) {
371365
case KGD_ENGINE_PFP:
372366
return adev->gfx.pfp_fw_version;
@@ -399,11 +393,9 @@ uint32_t amdgpu_amdkfd_get_fw_version(struct kgd_dev *kgd,
399393
return 0;
400394
}
401395

402-
void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd,
396+
void amdgpu_amdkfd_get_local_mem_info(struct amdgpu_device *adev,
403397
struct kfd_local_mem_info *mem_info)
404398
{
405-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
406-
407399
memset(mem_info, 0, sizeof(*mem_info));
408400

409401
mem_info->local_mem_size_public = adev->gmc.visible_vram_size;
@@ -428,19 +420,15 @@ void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd,
428420
mem_info->mem_clk_max = 100;
429421
}
430422

431-
uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct kgd_dev *kgd)
423+
uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct amdgpu_device *adev)
432424
{
433-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
434-
435425
if (adev->gfx.funcs->get_gpu_clock_counter)
436426
return adev->gfx.funcs->get_gpu_clock_counter(adev);
437427
return 0;
438428
}
439429

440-
uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct kgd_dev *kgd)
430+
uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct amdgpu_device *adev)
441431
{
442-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
443-
444432
/* the sclk is in quantas of 10kHz */
445433
if (amdgpu_sriov_vf(adev))
446434
return adev->clock.default_sclk / 100;
@@ -450,9 +438,8 @@ uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct kgd_dev *kgd)
450438
return 100;
451439
}
452440

453-
void amdgpu_amdkfd_get_cu_info(struct kgd_dev *kgd, struct kfd_cu_info *cu_info)
441+
void amdgpu_amdkfd_get_cu_info(struct amdgpu_device *adev, struct kfd_cu_info *cu_info)
454442
{
455-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
456443
struct amdgpu_cu_info acu_info = adev->gfx.cu_info;
457444

458445
memset(cu_info, 0, sizeof(*cu_info));
@@ -473,13 +460,12 @@ void amdgpu_amdkfd_get_cu_info(struct kgd_dev *kgd, struct kfd_cu_info *cu_info)
473460
cu_info->lds_size = acu_info.lds_size;
474461
}
475462

476-
int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd,
477-
struct kgd_dev **dma_buf_kgd,
463+
int amdgpu_amdkfd_get_dmabuf_info(struct amdgpu_device *adev, int dma_buf_fd,
464+
struct amdgpu_device **dmabuf_adev,
478465
uint64_t *bo_size, void *metadata_buffer,
479466
size_t buffer_size, uint32_t *metadata_size,
480467
uint32_t *flags)
481468
{
482-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
483469
struct dma_buf *dma_buf;
484470
struct drm_gem_object *obj;
485471
struct amdgpu_bo *bo;
@@ -507,8 +493,8 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd,
507493
goto out_put;
508494

509495
r = 0;
510-
if (dma_buf_kgd)
511-
*dma_buf_kgd = (struct kgd_dev *)adev;
496+
if (dmabuf_adev)
497+
*dmabuf_adev = adev;
512498
if (bo_size)
513499
*bo_size = amdgpu_bo_size(bo);
514500
if (metadata_buffer)
@@ -528,32 +514,18 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd,
528514
return r;
529515
}
530516

531-
uint64_t amdgpu_amdkfd_get_vram_usage(struct kgd_dev *kgd)
517+
uint64_t amdgpu_amdkfd_get_vram_usage(struct amdgpu_device *adev)
532518
{
533-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
534519
struct ttm_resource_manager *vram_man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
535520

536521
return amdgpu_vram_mgr_usage(vram_man);
537522
}
538523

539-
uint64_t amdgpu_amdkfd_get_hive_id(struct kgd_dev *kgd)
540-
{
541-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
542-
543-
return adev->gmc.xgmi.hive_id;
544-
}
545-
546-
uint64_t amdgpu_amdkfd_get_unique_id(struct kgd_dev *kgd)
547-
{
548-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
549-
550-
return adev->unique_id;
551-
}
552-
553-
uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *src)
524+
uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct amdgpu_device *dst,
525+
struct amdgpu_device *src)
554526
{
555-
struct amdgpu_device *peer_adev = (struct amdgpu_device *)src;
556-
struct amdgpu_device *adev = (struct amdgpu_device *)dst;
527+
struct amdgpu_device *peer_adev = src;
528+
struct amdgpu_device *adev = dst;
557529
int ret = amdgpu_xgmi_get_hops_count(adev, peer_adev);
558530

559531
if (ret < 0) {
@@ -565,16 +537,18 @@ uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *s
565537
return (uint8_t)ret;
566538
}
567539

568-
int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct kgd_dev *dst, struct kgd_dev *src, bool is_min)
540+
int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct amdgpu_device *dst,
541+
struct amdgpu_device *src,
542+
bool is_min)
569543
{
570-
struct amdgpu_device *adev = (struct amdgpu_device *)dst, *peer_adev;
544+
struct amdgpu_device *adev = dst, *peer_adev;
571545
int num_links;
572546

573547
if (adev->asic_type != CHIP_ALDEBARAN)
574548
return 0;
575549

576550
if (src)
577-
peer_adev = (struct amdgpu_device *)src;
551+
peer_adev = src;
578552

579553
/* num links returns 0 for indirect peers since indirect route is unknown. */
580554
num_links = is_min ? 1 : amdgpu_xgmi_get_num_links(adev, peer_adev);
@@ -589,9 +563,8 @@ int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct kgd_dev *dst, struct kgd_dev
589563
return (num_links * 16 * 25000)/BITS_PER_BYTE;
590564
}
591565

592-
int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct kgd_dev *dev, bool is_min)
566+
int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct amdgpu_device *adev, bool is_min)
593567
{
594-
struct amdgpu_device *adev = (struct amdgpu_device *)dev;
595568
int num_lanes_shift = (is_min ? ffs(adev->pm.pcie_mlw_mask) :
596569
fls(adev->pm.pcie_mlw_mask)) - 1;
597570
int gen_speed_shift = (is_min ? ffs(adev->pm.pcie_gen_mask &
@@ -647,39 +620,11 @@ int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct kgd_dev *dev, bool is_min)
647620
return (num_lanes_factor * gen_speed_mbits_factor)/BITS_PER_BYTE;
648621
}
649622

650-
uint64_t amdgpu_amdkfd_get_mmio_remap_phys_addr(struct kgd_dev *kgd)
651-
{
652-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
653-
654-
return adev->rmmio_remap.bus_addr;
655-
}
656-
657-
uint32_t amdgpu_amdkfd_get_num_gws(struct kgd_dev *kgd)
658-
{
659-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
660-
661-
return adev->gds.gws_size;
662-
}
663-
664-
uint32_t amdgpu_amdkfd_get_asic_rev_id(struct kgd_dev *kgd)
665-
{
666-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
667-
668-
return adev->rev_id;
669-
}
670-
671-
int amdgpu_amdkfd_get_noretry(struct kgd_dev *kgd)
672-
{
673-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
674-
675-
return adev->gmc.noretry;
676-
}
677-
678-
int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine,
623+
int amdgpu_amdkfd_submit_ib(struct amdgpu_device *adev,
624+
enum kgd_engine_type engine,
679625
uint32_t vmid, uint64_t gpu_addr,
680626
uint32_t *ib_cmd, uint32_t ib_len)
681627
{
682-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
683628
struct amdgpu_job *job;
684629
struct amdgpu_ib *ib;
685630
struct amdgpu_ring *ring;
@@ -730,10 +675,8 @@ int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine,
730675
return ret;
731676
}
732677

733-
void amdgpu_amdkfd_set_compute_idle(struct kgd_dev *kgd, bool idle)
678+
void amdgpu_amdkfd_set_compute_idle(struct amdgpu_device *adev, bool idle)
734679
{
735-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
736-
737680
amdgpu_dpm_switch_power_profile(adev,
738681
PP_SMC_POWER_PROFILE_COMPUTE,
739682
!idle);
@@ -747,10 +690,9 @@ bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid)
747690
return false;
748691
}
749692

750-
int amdgpu_amdkfd_flush_gpu_tlb_vmid(struct kgd_dev *kgd, uint16_t vmid)
693+
int amdgpu_amdkfd_flush_gpu_tlb_vmid(struct amdgpu_device *adev,
694+
uint16_t vmid)
751695
{
752-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
753-
754696
if (adev->family == AMDGPU_FAMILY_AI) {
755697
int i;
756698

@@ -763,10 +705,9 @@ int amdgpu_amdkfd_flush_gpu_tlb_vmid(struct kgd_dev *kgd, uint16_t vmid)
763705
return 0;
764706
}
765707

766-
int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct kgd_dev *kgd, uint16_t pasid,
767-
enum TLB_FLUSH_TYPE flush_type)
708+
int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct amdgpu_device *adev,
709+
uint16_t pasid, enum TLB_FLUSH_TYPE flush_type)
768710
{
769-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
770711
bool all_hub = false;
771712

772713
if (adev->family == AMDGPU_FAMILY_AI)
@@ -775,21 +716,18 @@ int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct kgd_dev *kgd, uint16_t pasid,
775716
return amdgpu_gmc_flush_gpu_tlb_pasid(adev, pasid, flush_type, all_hub);
776717
}
777718

778-
bool amdgpu_amdkfd_have_atomics_support(struct kgd_dev *kgd)
719+
bool amdgpu_amdkfd_have_atomics_support(struct amdgpu_device *adev)
779720
{
780-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
781-
782721
return adev->have_atomics_support;
783722
}
784723

785-
void amdgpu_amdkfd_ras_poison_consumption_handler(struct kgd_dev *kgd)
724+
void amdgpu_amdkfd_ras_poison_consumption_handler(struct amdgpu_device *adev)
786725
{
787-
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
788726
struct ras_err_data err_data = {0, 0, 0, NULL};
789727

790728
/* CPU MCA will handle page retirement if connected_to_cpu is 1 */
791729
if (!adev->gmc.xgmi.connected_to_cpu)
792730
amdgpu_umc_process_ras_data_cb(adev, &err_data, NULL);
793731
else
794-
amdgpu_amdkfd_gpu_reset(kgd);
732+
amdgpu_amdkfd_gpu_reset(adev);
795733
}

0 commit comments

Comments
 (0)