Commit 1ea2b260 authored by Kent Russell's avatar Kent Russell Committed by Alex Deucher

drm/amdgpu: Re-enable FRU check for most models v5

There is at least 1 VG20 DID that does not have an FRU, and trying to read
that will cause a hang. For now, explicitly support reading the FRU for
Arcturus and for the WKS VG20 DIDs, and skip for everything else.
This re-enables serial number reporting for server cards

v2: Add ASIC check
v3: Don't default to true for pre-VG20
v4: Use DID instead of parsing the VBIOS
v5: Sqaush in overflow warning fix
Signed-off-by: default avatarKent Russell <kent.russell@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3adf175e
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
* OTHER DEALINGS IN THE SOFTWARE. * OTHER DEALINGS IN THE SOFTWARE.
* *
*/ */
#include <linux/pci.h>
#include "amdgpu.h" #include "amdgpu.h"
#include "amdgpu_i2c.h" #include "amdgpu_i2c.h"
#include "smu_v11_0_i2c.h" #include "smu_v11_0_i2c.h"
...@@ -31,8 +33,16 @@ ...@@ -31,8 +33,16 @@
bool is_fru_eeprom_supported(struct amdgpu_device *adev) bool is_fru_eeprom_supported(struct amdgpu_device *adev)
{ {
/* TODO: Resolve supported ASIC type */ /* TODO: Gaming SKUs don't have the FRU EEPROM.
* Use this hack to address hangs on modprobe on gaming SKUs
* until a proper solution can be implemented by only supporting
* it on Arcturus, and the explicit chip IDs for VG20 Server cards
*/
if ((adev->asic_type == CHIP_ARCTURUS) ||
(adev->asic_type == CHIP_VEGA20 && adev->pdev->device == 0x66a0) ||
(adev->asic_type == CHIP_VEGA20 && adev->pdev->device == 0x66a1) ||
(adev->asic_type == CHIP_VEGA20 && adev->pdev->device == 0x66a4))
return true;
return false; return false;
} }
...@@ -75,7 +85,7 @@ int amdgpu_fru_read_eeprom(struct amdgpu_device *adev, uint32_t addrptr, ...@@ -75,7 +85,7 @@ int amdgpu_fru_read_eeprom(struct amdgpu_device *adev, uint32_t addrptr,
int amdgpu_fru_get_product_info(struct amdgpu_device *adev) int amdgpu_fru_get_product_info(struct amdgpu_device *adev)
{ {
unsigned char buff[32]; unsigned char buff[34];
int addrptr = 0, size = 0; int addrptr = 0, size = 0;
if (!is_fru_eeprom_supported(adev)) if (!is_fru_eeprom_supported(adev))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment