1. 16 Aug, 2022 24 commits
  2. 10 Aug, 2022 16 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
    • Kenneth Feng's avatar
      drm/amd/pm: skip pptable override for smu_v13_0_7 · 4e64b529
      Kenneth Feng authored
      skip pptable override for smu_v13_0_7 secure boards only.
      Signed-off-by: default avatarKenneth Feng <kenneth.feng@amd.com>
      Reviewed-by: default avatarFeifei Xu <Feifei.Xu@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      4e64b529
    • Evan Quan's avatar
      drm/amd/pm: add 3715 softpptable support for SMU13.0.0 · b7ffeb4a
      Evan Quan authored
      Add support for 3715 softpptable.
      Signed-off-by: default avatarEvan Quan <evan.quan@amd.com>
      Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
      Reviewed-by: default avatarFeifei Xu <Feifei.Xu@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      b7ffeb4a
    • Joseph Greathouse's avatar
      drm/amdgpu: Enable translate_further to extend UTCL2 reach · 352e683b
      Joseph Greathouse authored
      Enable translate_further on Arcturus and Aldebaran server chips
      in order to increase the UTCL2 reach from 8 GiB to 64 GiB,
      which is more in line with the amount of framebuffer DRAM in
      the devices.
      Signed-off-by: default avatarJoseph Greathouse <Joseph.Greathouse@amd.com>
      Acked-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
      Acked-by: default avatarKent Russell <kent.russell@amd.com>
      Acked-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      352e683b
    • Aric Cyr's avatar
      drm/amd/display: 3.2.197 · 8da536d5
      Aric Cyr authored
      This version brings along following fixes:
      
      - Move fpu file to dml folder
      - Fix CAB allocation for multiple displays
      - Add a variable to update FCLK
      - Fix TMDS 4K@60Hz YCbCr420 corruption issue
      - Fix MPC tree infinite loop in some case
      - Fix HDMI VSIF V3 blank screen issue
      - Add some documentation to the code
      - Allow alternate prefetch modes in DML for DCN32
      - Fix VPG instancing for dcn314 HPO
      - Check correct bounds for stream encoder instances for DCN303
      - Enable SubVP by default on DCN32 & DCN321
      - Fix DTBCLK not correct for dcn314
      - Fix Compile-time warning
      - Fix the stereo mode hang issue
      - Fix display light up issue
      Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
      Signed-off-by: default avatarAric Cyr <aric.cyr@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      8da536d5
    • Alvin Lee's avatar
      drm/amd/display: Add 16 lines margin for SubVP · 9f5171ce
      Alvin Lee authored
      [Description]
      SUBVP_START_LINE must be aligned to 2 swaths, so add
      16 lines of margin so the start line can be adjusted by
      up to 16 lines for alignment purposes in FW.
      Reviewed-by: default avatarJun Lei <Jun.Lei@amd.com>
      Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
      Signed-off-by: default avatarAlvin Lee <alvin.lee2@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      9f5171ce
    • Meenakshikumar Somasundaram's avatar
      drm/amd/display: Fix TDR eDP and USB4 display light up issue · 30456ffa
      Meenakshikumar Somasundaram authored
      [Why]
      After TDR recovery, eDP and USB4 display does not light up. Because
      dmub outbox notifications are not enabled after dmub reload and link
      encoder assignments for the streams are not cleared before dc state
      reset.
      
      [How]
      - Dmub outbox notification is enabled after tdr recovery by issuing
        inbox command to dmub.
      - Link encoders for the streams are unassigned before dc state reset.
      Reviewed-by: default avatarJimmy Kizito <Jimmy.Kizito@amd.com>
      Reviewed-by: default avatarJun Lei <Jun.Lei@amd.com>
      Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
      Signed-off-by: default avatarMeenakshikumar Somasundaram <meenakshikumar.somasundaram@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      30456ffa
    • Fudong Wang's avatar
      drm/amd/display: clear optc underflow before turn off odm clock · b2a93490
      Fudong Wang authored
      [Why]
      After ODM clock off, optc underflow bit will be kept there always and clear not work.
      We need to clear that before clock off.
      
      [How]
      Clear that if have when clock off.
      Reviewed-by: default avatarAlvin Lee <alvin.lee2@amd.com>
      Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
      Signed-off-by: default avatarFudong Wang <Fudong.Wang@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      b2a93490