Skip to content

Commit

Permalink
[Script] Media IP RevID check on linux
Browse files Browse the repository at this point in the history
Add code for Media ip RevID check for new platforms
  • Loading branch information
Effieyu0 authored and intel-mediadev committed Mar 15, 2022
1 parent 15e7286 commit 34d9e78
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 0 deletions.
3 changes: 3 additions & 0 deletions media_driver/linux/Xe_M/ddi/media_sysinfo_xe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ static struct GfxDeviceInfo xehpGt4Info = {
.productFamily = IGFX_XE_HP_SDV,
.displayFamily = IGFX_XE_HP_CORE,
.renderFamily = IGFX_XE_HP_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT4,
.L3CacheSizeInKb = 0,
.L3BankCount = 0,
Expand All @@ -263,6 +264,7 @@ static struct GfxDeviceInfo pvcGt4Info = {
.productFamily = IGFX_PVC,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_XE_HPC_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT4,
.L3CacheSizeInKb = 0,
.L3BankCount = 0,
Expand All @@ -283,6 +285,7 @@ static struct GfxDeviceInfo dg2Gt4Info = {
.productFamily = IGFX_DG2,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_XE_HPG_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_UNDEFINED,
.L3CacheSizeInKb = 0,
.L3BankCount = 0,
Expand Down
78 changes: 78 additions & 0 deletions media_driver/linux/common/os/hwinfo_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,51 @@ static bool MediaGetParam(int fd, int32_t param, uint32_t *retValue)
return drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp) == 0;
}

/*****************************************************************************\
Description:
Get IpGmdID for separate IP products according to input engine_class
Input:
fd - file descriptor to the /dev/dri/cardX
engine_class - engine class
Output:
ipVerInfo - GmdID info describing current IP version info
\*****************************************************************************/
static MOS_STATUS MediaGetIpGmdID(int32_t fd,
MOS_BUFMGR *pDrmBufMgr,
uint16_t engine_class,
unsigned int maxNengine,
GFX_GMD_ID *ipVerInfo)
{
unsigned int nengine = maxNengine;
struct i915_engine_class_instance *uengines = nullptr;

if ((fd < 0) || (pDrmBufMgr == nullptr) || (maxNengine == 0) || (ipVerInfo == nullptr))
{
MOS_OS_ASSERTMESSAGE("Invalid parameter \n");
return MOS_STATUS_INVALID_PARAMETER;
}

uengines = (struct i915_engine_class_instance *)MOS_AllocAndZeroMemory(nengine * sizeof(struct i915_engine_class_instance));
MOS_OS_CHK_NULL_RETURN(uengines);
if (mos_query_engines(pDrmBufMgr, engine_class, 0, &nengine, uengines) || (nengine == 0))
{
MOS_OS_ASSERTMESSAGE("Failed to query engine\n");
MOS_SafeFreeMemory(uengines);
return MOS_STATUS_PLATFORM_NOT_SUPPORTED;
}

if (mos_query_hw_ip_version(fd, uengines[0], ipVerInfo))
{
MOS_OS_ASSERTMESSAGE("Failed to query hw_ip_version\n");
MOS_SafeFreeMemory(uengines);
return MOS_STATUS_PLATFORM_NOT_SUPPORTED;
}

MOS_SafeFreeMemory(uengines);

return MOS_STATUS_SUCCESS;
}
/*****************************************************************************\
Description:
Get ProductFamily according to input device FD
Expand Down Expand Up @@ -239,6 +284,39 @@ MOS_STATUS HWInfo_GetGfxInfo(int32_t fd,
devInit->InitMediaWa(devInfo, waTable, &drvInfo))
{
MOS_OS_NORMALMESSAGE("Init Media SKU/WA info successfully\n");
if (MEDIA_IS_SKU(skuTable, FtrMediaIPSeparation))
{
gfxPlatform->eMediaCoreFamily = (GFXCORE_FAMILY)devInfo->mediaFamily;

if (0 == gfxPlatform->sMediaBlockID.Value)
{
if (MediaGetIpGmdID(fd, pDrmBufMgr, I915_ENGINE_CLASS_VIDEO, maxNengine, &(gfxPlatform->sMediaBlockID)))
{
MOS_OS_ASSERTMESSAGE("Failed to query vdbox engine GmdID\n");
return MOS_STATUS_PLATFORM_NOT_SUPPORTED;
}
else
{
MOS_OS_NORMALMESSAGE("Media mediaRevID arch:%d, release:%d, RevisionID:%d\n", gfxPlatform->sMediaBlockID.GmdID.GMDArch,
gfxPlatform->sMediaBlockID.GmdID.GMDRelease, gfxPlatform->sMediaBlockID.GmdID.RevisionID);
}
}

if (0 == gfxPlatform->sRenderBlockID.Value)
{
if (MediaGetIpGmdID(fd, pDrmBufMgr, I915_ENGINE_CLASS_RENDER, maxNengine, &(gfxPlatform->sRenderBlockID)))
{
MOS_OS_ASSERTMESSAGE("Failed to query render GmdID\n");
return MOS_STATUS_PLATFORM_NOT_SUPPORTED;
}

else
{
MOS_OS_NORMALMESSAGE("Media sRenderBlockID arch:%d, release:%d, RevisionID:%d\n", gfxPlatform->sRenderBlockID.GmdID.GMDArch,
gfxPlatform->sRenderBlockID.GmdID.GMDRelease, gfxPlatform->sRenderBlockID.GmdID.RevisionID);
}
}
}
}
else
{
Expand Down
2 changes: 2 additions & 0 deletions media_driver/linux/common/os/i915/include/mos_bufmgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include <stdint.h>
#include <stdio.h>
#include "libdrm_macros.h"
#include "igfxfmid.h"

#define S_SUCCESS 0
#define mos_safe_free(p) \
Expand Down Expand Up @@ -387,6 +388,7 @@ int mos_get_slice_mask(int fd, unsigned int *slice_mask);
uint8_t mos_switch_off_n_bits(uint8_t in_mask, int n);
unsigned int mos_hweight8(uint8_t w);
int mos_query_device_blob(int fd, MEDIA_SYSTEM_INFO* gfx_info);
int mos_query_hw_ip_version(int fd, struct i915_engine_class_instance engine, GFX_GMD_ID *ipVerInfo);

#if defined(__cplusplus)
extern "C" {
Expand Down
5 changes: 5 additions & 0 deletions media_driver/linux/common/os/i915/mos_bufmgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -5057,3 +5057,8 @@ int mos_query_device_blob(int fd, MEDIA_SYSTEM_INFO* gfx_info)
{
return -1;
}

int mos_query_hw_ip_version(int fd, struct i915_engine_class_instance engine, GFX_GMD_ID *ipVerInfo)
{
return -1;
}
5 changes: 5 additions & 0 deletions media_driver/linux/common/os/i915_production/mos_bufmgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -5522,3 +5522,8 @@ int mos_query_device_blob(int fd, MEDIA_SYSTEM_INFO* gfx_info)

return ret;
}

int mos_query_hw_ip_version(int fd, struct i915_engine_class_instance engine, GFX_GMD_ID *ipVerInfo)
{
return -1;
}
1 change: 1 addition & 0 deletions media_driver/linux/common/os/linux_system_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ struct GfxDeviceInfo
uint32_t productFamily;
uint32_t displayFamily;
uint32_t renderFamily;
uint32_t mediaFamily;
uint32_t eGTType;
uint32_t L3CacheSizeInKb;
uint32_t L3BankCount;
Expand Down
5 changes: 5 additions & 0 deletions media_driver/linux/gen10/ddi/media_sysinfo_g10.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ static struct GfxDeviceInfo cnlGt1Info = {
.productFamily = IGFX_CANNONLAKE,
.displayFamily = IGFX_GEN10_CORE,
.renderFamily = IGFX_GEN10_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 512,
.L3BankCount = 2,
Expand All @@ -190,6 +191,7 @@ static struct GfxDeviceInfo cnlGt1f5Info = {
.productFamily = IGFX_CANNONLAKE,
.displayFamily = IGFX_GEN10_CORE,
.renderFamily = IGFX_GEN10_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1_5,
.L3CacheSizeInKb = 768,
.L3BankCount = 3,
Expand All @@ -210,6 +212,7 @@ static struct GfxDeviceInfo cnlGt2Info = {
.productFamily = IGFX_CANNONLAKE,
.displayFamily = IGFX_GEN10_CORE,
.renderFamily = IGFX_GEN10_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT2,
.L3CacheSizeInKb = 1536,
.L3BankCount = 6,
Expand All @@ -230,6 +233,7 @@ static struct GfxDeviceInfo cnlGt3Info = {
.productFamily = IGFX_CANNONLAKE,
.displayFamily = IGFX_GEN10_CORE,
.renderFamily = IGFX_GEN10_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT3,
.L3CacheSizeInKb = 3072,
.L3BankCount = 12,
Expand All @@ -250,6 +254,7 @@ static struct GfxDeviceInfo cnlGt3eInfo = {
.productFamily = IGFX_CANNONLAKE,
.displayFamily = IGFX_GEN10_CORE,
.renderFamily = IGFX_GEN10_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT3,
.L3CacheSizeInKb = 3072,
.L3BankCount = 12,
Expand Down
5 changes: 5 additions & 0 deletions media_driver/linux/gen11/ddi/media_sysinfo_g11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ static struct GfxDeviceInfo icllpGt1Info = {
.productFamily = IGFX_ICELAKE_LP,
.displayFamily = IGFX_GEN11_CORE,
.renderFamily = IGFX_GEN11_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 2304,
.L3BankCount = 6,
Expand All @@ -289,6 +290,7 @@ static struct GfxDeviceInfo icllpGt05Info = {
.productFamily = IGFX_ICELAKE_LP,
.displayFamily = IGFX_GEN11_CORE,
.renderFamily = IGFX_GEN11_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 2304,
.L3BankCount = 6,
Expand All @@ -308,6 +310,7 @@ static struct GfxDeviceInfo icllpGt2Info = {
.productFamily = IGFX_ICELAKE_LP,
.displayFamily = IGFX_GEN11_CORE,
.renderFamily = IGFX_GEN11_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT2,
.L3CacheSizeInKb = 3072,
.L3BankCount = 8,
Expand All @@ -327,6 +330,7 @@ static struct GfxDeviceInfo ehlDevInfo = {
.productFamily = IGFX_ELKHARTLAKE,
.displayFamily = IGFX_GEN11_CORE,
.renderFamily = IGFX_GEN11_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 1280,
.L3BankCount = 4,
Expand All @@ -346,6 +350,7 @@ static struct GfxDeviceInfo ehlDevInfo16EU = {
.productFamily = IGFX_ELKHARTLAKE,
.displayFamily = IGFX_GEN11_CORE,
.renderFamily = IGFX_GEN11_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 1280,
.L3BankCount = 4,
Expand Down
9 changes: 9 additions & 0 deletions media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ static struct GfxDeviceInfo tgllpGt1Info = {
.productFamily = IGFX_TIGERLAKE_LP,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 0,
.L3BankCount = 4,
Expand All @@ -206,6 +207,7 @@ static struct GfxDeviceInfo tgllpGt2Info = {
.productFamily = IGFX_TIGERLAKE_LP,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT2,
.L3CacheSizeInKb = 0,
.L3BankCount = 8,
Expand All @@ -227,6 +229,7 @@ static struct GfxDeviceInfo dg1Gt2Info = {
.productFamily = IGFX_DG1,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT2,
.L3CacheSizeInKb = 0,
.L3BankCount = 8,
Expand Down Expand Up @@ -261,6 +264,7 @@ static struct GfxDeviceInfo rklGt1Info = {
.productFamily = IGFX_ROCKETLAKE,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 0,
.L3BankCount = 4,
Expand All @@ -281,6 +285,7 @@ static struct GfxDeviceInfo rklGt1fInfo = {
.productFamily = IGFX_ROCKETLAKE,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT0_5,
.L3CacheSizeInKb = 0,
.L3BankCount = 4,
Expand Down Expand Up @@ -321,6 +326,7 @@ static struct GfxDeviceInfo adlsGt1Info = {
.productFamily = IGFX_ALDERLAKE_S,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 0,
.L3BankCount = 4,
Expand All @@ -342,6 +348,7 @@ static struct GfxDeviceInfo adlsGt1fInfo = {
.productFamily = IGFX_ALDERLAKE_S,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT0_5,
.L3CacheSizeInKb = 0,
.L3BankCount = 4,
Expand Down Expand Up @@ -415,6 +422,7 @@ static struct GfxDeviceInfo adlpGt2Info = {
.productFamily = IGFX_ALDERLAKE_P,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT2,
.L3CacheSizeInKb = 0,
.L3BankCount = 8,
Expand Down Expand Up @@ -494,6 +502,7 @@ static struct GfxDeviceInfo adlnGt1Info = {
.productFamily = IGFX_ALDERLAKE_N,
.displayFamily = IGFX_GEN12_CORE,
.renderFamily = IGFX_GEN12_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 0,
.L3BankCount = 8,
Expand Down
4 changes: 4 additions & 0 deletions media_driver/linux/gen8/ddi/media_sysinfo_g8.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ static struct GfxDeviceInfo bdwGt1Info = {
.productFamily = IGFX_BROADWELL,
.displayFamily = IGFX_GEN8_CORE,
.renderFamily = IGFX_GEN8_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT1,
.L3CacheSizeInKb = 384,
.L3BankCount = 2,
Expand All @@ -178,6 +179,7 @@ static struct GfxDeviceInfo bdwGt2Info = {
.productFamily = IGFX_BROADWELL,
.displayFamily = IGFX_GEN8_CORE,
.renderFamily = IGFX_GEN8_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT2,
.L3CacheSizeInKb = 768,
.L3BankCount = 4,
Expand All @@ -198,6 +200,7 @@ static struct GfxDeviceInfo bdwGt3Info = {
.productFamily = IGFX_BROADWELL,
.displayFamily = IGFX_GEN8_CORE,
.renderFamily = IGFX_GEN8_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT3,
.L3CacheSizeInKb = 1536,
.L3BankCount = 8,
Expand All @@ -218,6 +221,7 @@ static struct GfxDeviceInfo bdwGt3eInfo = {
.productFamily = IGFX_BROADWELL,
.displayFamily = IGFX_GEN8_CORE,
.renderFamily = IGFX_GEN8_CORE,
.mediaFamily = IGFX_UNKNOWN_CORE,
.eGTType = GTTYPE_GT3,
.L3CacheSizeInKb = 1536,
.L3BankCount = 8,
Expand Down
Loading

0 comments on commit 34d9e78

Please sign in to comment.