1. 16 Aug, 2022 31 commits
  2. 10 Aug, 2022 9 commits
    • Sebin Sebastian's avatar
      drm/amdgpu: double free error and freeing uninitialized null pointer · ad2feebd
      Sebin Sebastian authored
      Fix a double free and an uninitialized pointer read error. Both tmp and
      new are pointing at same address and both are freed which leads to
      double free. Adding a check to verify if new and tmp are free in the
      error_free label fixes the double free issue. new is not initialized to
      null which also leads to a free on an uninitialized pointer.
      Reviewed-by: default avatarAndré Almeida <andrealmeid@igalia.com>
      Suggested by: S. Amaranath <Amaranath.Somalapuram@amd.com>
      Signed-off-by: default avatarSebin Sebastian <mailmesebin00@gmail.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      ad2feebd
    • Alex Deucher's avatar
      drm/amdgpu: Only disable prefer_shadow on hawaii · a6250bdb
      Alex Deucher authored
      We changed it for all asics due to a hibernation regression
      on hawaii, but the workaround breaks suspend on a polaris12.
      Just disable it for hawaii.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=216119
      Fixes: 3a4b1cc2 ("drm/amdgpu/display: disable prefer_shadow for generic fb helpers")
      Reviewed-and-tested-by: default avatarMario Limonciello <mario.limonciello@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      a6250bdb
    • Melissa Wen's avatar
      drm/amd/display: set panel orientation before drm_dev_register · acc96ae0
      Melissa Wen authored
      To set the panel orientation property with quirk, we need the mode size
      provided by EDID. This info is available after EDID is read by dc_link_detect()
      and updated by amdgpu_dm_update_connector_after_detect(). The detection
      happens at driver load in amdgpu_dm_initialize_drm_device() and,
      therefore, we can get modes and set panel orientation before
      drm_dev_register() to avoid DRM warns on creating the connector property
      after device registration:
      
      [    2.563969] ------------[ cut here ]------------
      [    2.563971] WARNING: CPU: 6 PID: 325 at drivers/gpu/drm/drm_mode_object.c:45 drm_mode_object_add+0x72/0x80 [drm]
      [    2.563997] Modules linked in: btusb btrtl btbcm btintel btmtk bluetooth rfkill ecdh_generic ecc usbhid crc16 amdgpu(+) drm_ttm_helper ttm agpgart gpu_sched i2c_algo_bit drm_display_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm serio_raw sdhci_pci atkbd libps2 cqhci vivaldi_fmap ccp sdhci i8042 crct10dif_pclmul crc32_pclmul hid_multitouch ghash_clmulni_intel aesni_intel crypto_simd cryptd wdat_wdt mmc_core cec xhci_pci sp5100_tco rng_core xhci_pci_renesas serio 8250_dw i2c_hid_acpi i2c_hid btrfs blake2b_generic libcrc32c crc32c_generic crc32c_intel xor raid6_pq dm_mirror dm_region_hash dm_log dm_mod pkcs8_key_parser crypto_user
      [    2.564032] CPU: 6 PID: 325 Comm: systemd-udevd Not tainted 5.18.0-amd-staging-drm-next+ #67
      [    2.564034] Hardware name: Valve Jupiter/Jupiter, BIOS F7A0105 03/21/2022
      [    2.564036] RIP: 0010:drm_mode_object_add+0x72/0x80 [drm]
      [    2.564053] Code: f0 89 c3 85 c0 78 07 89 45 00 44 89 65 04 4c 89 ef e8 e2 99 04 f1 31 c0 85 db 0f 4e c3 5b 5d 41 5c 41 5d c3 80 7f 50 00 74 ac <0f> 0b eb a8 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 54 4c
      [    2.564055] RSP: 0018:ffffb2e880413860 EFLAGS: 00010202
      [    2.564056] RAX: ffffffffc0ba1440 RBX: ffff99508a860010 RCX: 0000000000000001
      [    2.564057] RDX: 00000000b0b0b0b0 RSI: ffff99508c050110 RDI: ffff99508a860010
      [    2.564058] RBP: ffff99508c050110 R08: 0000000000000020 R09: ffff99508c292c20
      [    2.564059] R10: 0000000000000000 R11: ffff99508c0507d8 R12: 00000000b0b0b0b0
      [    2.564060] R13: 0000000000000004 R14: ffffffffc068a4b6 R15: ffffffffc068a47f
      [    2.564061] FS:  00007fc69b5f1a40(0000) GS:ffff9953aff80000(0000) knlGS:0000000000000000
      [    2.564063] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [    2.564063] CR2: 00007f9506804000 CR3: 0000000107f92000 CR4: 0000000000350ee0
      [    2.564065] Call Trace:
      [    2.564068]  <TASK>
      [    2.564070]  drm_property_create+0xc9/0x170 [drm]
      [    2.564088]  drm_property_create_enum+0x1f/0x70 [drm]
      [    2.564105]  drm_connector_set_panel_orientation_with_quirk+0x96/0xc0 [drm]
      [    2.564123]  get_modes+0x4fb/0x530 [amdgpu]
      [    2.564378]  drm_helper_probe_single_connector_modes+0x1ad/0x850 [drm_kms_helper]
      [    2.564390]  drm_client_modeset_probe+0x229/0x1400 [drm]
      [    2.564411]  ? xas_store+0x52/0x5e0
      [    2.564416]  ? kmem_cache_alloc_trace+0x177/0x2c0
      [    2.564420]  __drm_fb_helper_initial_config_and_unlock+0x44/0x4e0 [drm_kms_helper]
      [    2.564430]  drm_fbdev_client_hotplug+0x173/0x210 [drm_kms_helper]
      [    2.564438]  drm_fbdev_generic_setup+0xa5/0x166 [drm_kms_helper]
      [    2.564446]  amdgpu_pci_probe+0x35e/0x370 [amdgpu]
      [    2.564621]  local_pci_probe+0x45/0x80
      [    2.564625]  ? pci_match_device+0xd7/0x130
      [    2.564627]  pci_device_probe+0xbf/0x220
      [    2.564629]  ? sysfs_do_create_link_sd+0x69/0xd0
      [    2.564633]  really_probe+0x19c/0x380
      [    2.564637]  __driver_probe_device+0xfe/0x180
      [    2.564639]  driver_probe_device+0x1e/0x90
      [    2.564641]  __driver_attach+0xc0/0x1c0
      [    2.564643]  ? __device_attach_driver+0xe0/0xe0
      [    2.564644]  ? __device_attach_driver+0xe0/0xe0
      [    2.564646]  bus_for_each_dev+0x78/0xc0
      [    2.564648]  bus_add_driver+0x149/0x1e0
      [    2.564650]  driver_register+0x8f/0xe0
      [    2.564652]  ? 0xffffffffc1023000
      [    2.564654]  do_one_initcall+0x44/0x200
      [    2.564657]  ? kmem_cache_alloc_trace+0x177/0x2c0
      [    2.564659]  do_init_module+0x4c/0x250
      [    2.564663]  __do_sys_init_module+0x12e/0x1b0
      [    2.564666]  do_syscall_64+0x3b/0x90
      [    2.564670]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      [    2.564673] RIP: 0033:0x7fc69bff232e
      [    2.564674] Code: 48 8b 0d 45 0b 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 af 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 12 0b 0c 00 f7 d8 64 89 01 48
      [    2.564676] RSP: 002b:00007ffe872ba3e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
      [    2.564677] RAX: ffffffffffffffda RBX: 000055873f797820 RCX: 00007fc69bff232e
      [    2.564678] RDX: 000055873f7bf390 RSI: 0000000001155e81 RDI: 00007fc699e4d010
      [    2.564679] RBP: 00007fc699e4d010 R08: 000055873f7bfe20 R09: 0000000001155e90
      [    2.564680] R10: 000000055873f7bf R11: 0000000000000246 R12: 000055873f7bf390
      [    2.564681] R13: 000000000000000d R14: 000055873f7c4cb0 R15: 000055873f797820
      [    2.564683]  </TASK>
      [    2.564683] ---[ end trace 0000000000000000 ]---
      [    2.564696] ------------[ cut here ]------------
      [    2.564696] WARNING: CPU: 6 PID: 325 at drivers/gpu/drm/drm_mode_object.c:242 drm_object_attach_property+0x52/0x80 [drm]
      [    2.564717] Modules linked in: btusb btrtl btbcm btintel btmtk bluetooth rfkill ecdh_generic ecc usbhid crc16 amdgpu(+) drm_ttm_helper ttm agpgart gpu_sched i2c_algo_bit drm_display_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm serio_raw sdhci_pci atkbd libps2 cqhci vivaldi_fmap ccp sdhci i8042 crct10dif_pclmul crc32_pclmul hid_multitouch ghash_clmulni_intel aesni_intel crypto_simd cryptd wdat_wdt mmc_core cec xhci_pci sp5100_tco rng_core xhci_pci_renesas serio 8250_dw i2c_hid_acpi i2c_hid btrfs blake2b_generic libcrc32c crc32c_generic crc32c_intel xor raid6_pq dm_mirror dm_region_hash dm_log dm_mod pkcs8_key_parser crypto_user
      [    2.564738] CPU: 6 PID: 325 Comm: systemd-udevd Tainted: G        W         5.18.0-amd-staging-drm-next+ #67
      [    2.564740] Hardware name: Valve Jupiter/Jupiter, BIOS F7A0105 03/21/2022
      [    2.564741] RIP: 0010:drm_object_attach_property+0x52/0x80 [drm]
      [    2.564759] Code: 2d 83 f8 18 74 33 48 89 74 c1 08 48 8b 4f 08 48 89 94 c1 c8 00 00 00 48 8b 47 08 83 00 01 c3 4d 85 d2 75 dd 83 7f 58 01 75 d7 <0f> 0b eb d3 41 80 78 50 00 74 cc 0f 0b eb c8 44 89 ce 48 c7 c7 28
      [    2.564760] RSP: 0018:ffffb2e8804138d8 EFLAGS: 00010246
      [    2.564761] RAX: 0000000000000010 RBX: ffff99508c1a2000 RCX: ffff99508c1a2180
      [    2.564762] RDX: 0000000000000003 RSI: ffff99508c050100 RDI: ffff99508c1a2040
      [    2.564763] RBP: 00000000ffffffff R08: ffff99508a860010 R09: 00000000c0c0c0c0
      [    2.564763] R10: 0000000000000000 R11: 0000000000000020 R12: ffff99508a860010
      [    2.564764] R13: ffff995088733008 R14: ffff99508c1a2000 R15: ffffffffc068a47f
      [    2.564765] FS:  00007fc69b5f1a40(0000) GS:ffff9953aff80000(0000) knlGS:0000000000000000
      [    2.564766] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [    2.564767] CR2: 00007f9506804000 CR3: 0000000107f92000 CR4: 0000000000350ee0
      [    2.564768] Call Trace:
      [    2.564769]  <TASK>
      [    2.564770]  drm_connector_set_panel_orientation_with_quirk+0x4a/0xc0 [drm]
      [    2.564789]  get_modes+0x4fb/0x530 [amdgpu]
      [    2.565024]  drm_helper_probe_single_connector_modes+0x1ad/0x850 [drm_kms_helper]
      [    2.565036]  drm_client_modeset_probe+0x229/0x1400 [drm]
      [    2.565056]  ? xas_store+0x52/0x5e0
      [    2.565060]  ? kmem_cache_alloc_trace+0x177/0x2c0
      [    2.565062]  __drm_fb_helper_initial_config_and_unlock+0x44/0x4e0 [drm_kms_helper]
      [    2.565072]  drm_fbdev_client_hotplug+0x173/0x210 [drm_kms_helper]
      [    2.565080]  drm_fbdev_generic_setup+0xa5/0x166 [drm_kms_helper]
      [    2.565088]  amdgpu_pci_probe+0x35e/0x370 [amdgpu]
      [    2.565261]  local_pci_probe+0x45/0x80
      [    2.565263]  ? pci_match_device+0xd7/0x130
      [    2.565265]  pci_device_probe+0xbf/0x220
      [    2.565267]  ? sysfs_do_create_link_sd+0x69/0xd0
      [    2.565268]  really_probe+0x19c/0x380
      [    2.565270]  __driver_probe_device+0xfe/0x180
      [    2.565272]  driver_probe_device+0x1e/0x90
      [    2.565274]  __driver_attach+0xc0/0x1c0
      [    2.565276]  ? __device_attach_driver+0xe0/0xe0
      [    2.565278]  ? __device_attach_driver+0xe0/0xe0
      [    2.565279]  bus_for_each_dev+0x78/0xc0
      [    2.565281]  bus_add_driver+0x149/0x1e0
      [    2.565283]  driver_register+0x8f/0xe0
      [    2.565285]  ? 0xffffffffc1023000
      [    2.565286]  do_one_initcall+0x44/0x200
      [    2.565288]  ? kmem_cache_alloc_trace+0x177/0x2c0
      [    2.565290]  do_init_module+0x4c/0x250
      [    2.565291]  __do_sys_init_module+0x12e/0x1b0
      [    2.565294]  do_syscall_64+0x3b/0x90
      [    2.565296]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      [    2.565297] RIP: 0033:0x7fc69bff232e
      [    2.565298] Code: 48 8b 0d 45 0b 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 af 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 12 0b 0c 00 f7 d8 64 89 01 48
      [    2.565299] RSP: 002b:00007ffe872ba3e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
      [    2.565301] RAX: ffffffffffffffda RBX: 000055873f797820 RCX: 00007fc69bff232e
      [    2.565302] RDX: 000055873f7bf390 RSI: 0000000001155e81 RDI: 00007fc699e4d010
      [    2.565303] RBP: 00007fc699e4d010 R08: 000055873f7bfe20 R09: 0000000001155e90
      [    2.565303] R10: 000000055873f7bf R11: 0000000000000246 R12: 000055873f7bf390
      [    2.565304] R13: 000000000000000d R14: 000055873f7c4cb0 R15: 000055873f797820
      [    2.565306]  </TASK>
      [    2.565307] ---[ end trace 0000000000000000 ]---
      
      --
      
      v2:
      - call amdgpu_dm_connector_get_modes() instead of ddc_get_modes() (Harry)
      
      Fixes: d77de788 ("amd/display: enable panel orientation quirks")
      Acked-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarMelissa Wen <mwen@igalia.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      acc96ae0
    • Zhen Ni's avatar
      drm/amd/pm: Fix a potential gpu_metrics_table memory leak · 541d54e4
      Zhen Ni authored
      Memory is allocated for gpu_metrics_table in
      smu_v13_0_5_init_smc_tables(), but not freed in
      smu_v13_0_5_fini_smc_tables(). This may cause memory leaks, fix it.
      Reviewed-by: default avatarEvan Quan <evan.quan@amd.com>
      Signed-off-by: default avatarZhen Ni <nizhen@uniontech.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      541d54e4
    • Zhen Ni's avatar
      drm/amd/pm: Fix a potential gpu_metrics_table memory leak · 5afb7652
      Zhen Ni authored
      Memory is allocated for gpu_metrics_table in
      smu_v13_0_4_init_smc_tables(), but not freed in
      smu_v13_0_4_fini_smc_tables(). This may cause memory leaks, fix it.
      Reviewed-by: default avatarEvan Quan <evan.quan@amd.com>
      Signed-off-by: default avatarZhen Ni <nizhen@uniontech.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      5afb7652
    • Tim Huang's avatar
      drm/amdgpu: add GFX Power Gating support for GC IP v11.0.1 · dc0a096b
      Tim Huang authored
      Add AMD_PG_SUPPORT_GFX_PG support.
      Signed-off-by: default avatarTim Huang <tim.huang@amd.com>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      dc0a096b
    • Tim Huang's avatar
      drm/amdgpu: enable GFX Power Gating for GC IP v11.0.1 · cb9c7ab1
      Tim Huang authored
      Enable GFX Power Gating control for GC IP v11.0.1.
      Signed-off-by: default avatarTim Huang <tim.huang@amd.com>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      cb9c7ab1
    • Felix Kuehling's avatar
      drm/amdkfd: Handle restart of kfd_ioctl_wait_events · bea9a56a
      Felix Kuehling authored
      When kfd_ioctl_wait_events needs to restart due to a signal, we need to
      update the timeout to account for the time already elapsed. We also need
      to undo auto_reset of events that have signaled already, so that the
      restarted ioctl will be able to count those signals again.
      
      This fixes infinite hangs when kfd_ioctl_wait_events is interrupted by a
      signal.
      Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
      Reviewed-and-tested-by: default avatarXiaogang Chen <Xiaogang.Chen@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      bea9a56a
    • Rajneesh Bhardwaj's avatar
      drm/amdgpu: Avoid direct cast to amdgpu_ttm_tt · c4c10a68
      Rajneesh Bhardwaj authored
      For typesafety, use container_of() instead of implicit cast from struct
      ttm_tt to struct amdgpu_ttm_tt.
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
      Signed-off-by: default avatarRajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      c4c10a68