cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

etnaviv_hwdb.c (4136B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (C) 2018 Etnaviv Project
      4 */
      5
      6#include "etnaviv_gpu.h"
      7
      8static const struct etnaviv_chip_identity etnaviv_chip_identities[] = {
      9	{
     10		.model = 0x400,
     11		.revision = 0x4652,
     12		.product_id = 0x70001,
     13		.customer_id = 0x100,
     14		.eco_id = 0,
     15		.stream_count = 4,
     16		.register_max = 64,
     17		.thread_count = 128,
     18		.shader_core_count = 1,
     19		.vertex_cache_size = 8,
     20		.vertex_output_buffer_size = 1024,
     21		.pixel_pipes = 1,
     22		.instruction_count = 256,
     23		.num_constants = 320,
     24		.buffer_size = 0,
     25		.varyings_count = 8,
     26		.features = 0xa0e9e004,
     27		.minor_features0 = 0xe1299fff,
     28		.minor_features1 = 0xbe13b219,
     29		.minor_features2 = 0xce110010,
     30		.minor_features3 = 0x8000001,
     31		.minor_features4 = 0x20102,
     32		.minor_features5 = 0x120000,
     33		.minor_features6 = 0x0,
     34		.minor_features7 = 0x0,
     35		.minor_features8 = 0x0,
     36		.minor_features9 = 0x0,
     37		.minor_features10 = 0x0,
     38		.minor_features11 = 0x0,
     39	},
     40	{
     41		.model = 0x7000,
     42		.revision = 0x6202,
     43		.product_id = 0x70003,
     44		.customer_id = 0,
     45		.eco_id = 0,
     46		.stream_count = 8,
     47		.register_max = 64,
     48		.thread_count = 512,
     49		.shader_core_count = 2,
     50		.vertex_cache_size = 16,
     51		.vertex_output_buffer_size = 1024,
     52		.pixel_pipes = 1,
     53		.instruction_count = 512,
     54		.num_constants = 320,
     55		.buffer_size = 0,
     56		.varyings_count = 16,
     57		.features = 0xe0287cad,
     58		.minor_features0 = 0xc1489eff,
     59		.minor_features1 = 0xfefbfad9,
     60		.minor_features2 = 0xeb9d4fbf,
     61		.minor_features3 = 0xedfffced,
     62		.minor_features4 = 0xdb0dafc7,
     63		.minor_features5 = 0x3b5ac333,
     64		.minor_features6 = 0xfccee201,
     65		.minor_features7 = 0x03fffa6f,
     66		.minor_features8 = 0x00e10ef0,
     67		.minor_features9 = 0x0088003c,
     68		.minor_features10 = 0x00004040,
     69		.minor_features11 = 0x00000024,
     70	},
     71	{
     72		.model = 0x7000,
     73		.revision = 0x6204,
     74		.product_id = ~0U,
     75		.customer_id = ~0U,
     76		.eco_id = 0,
     77		.stream_count = 16,
     78		.register_max = 64,
     79		.thread_count = 512,
     80		.shader_core_count = 2,
     81		.vertex_cache_size = 16,
     82		.vertex_output_buffer_size = 1024,
     83		.pixel_pipes = 1,
     84		.instruction_count = 512,
     85		.num_constants = 320,
     86		.buffer_size = 0,
     87		.varyings_count = 16,
     88		.features = 0xe0287c8d,
     89		.minor_features0 = 0xc1589eff,
     90		.minor_features1 = 0xfefbfad9,
     91		.minor_features2 = 0xeb9d4fbf,
     92		.minor_features3 = 0xedfffced,
     93		.minor_features4 = 0xdb0dafc7,
     94		.minor_features5 = 0x3b5ac333,
     95		.minor_features6 = 0xfcce6000,
     96		.minor_features7 = 0xfffbfa6f,
     97		.minor_features8 = 0x00e10ef3,
     98		.minor_features9 = 0x04c8003c,
     99		.minor_features10 = 0x00004060,
    100		.minor_features11 = 0x00000024,
    101	},
    102	{
    103		.model = 0x7000,
    104		.revision = 0x6214,
    105		.product_id = ~0U,
    106		.customer_id = ~0U,
    107		.eco_id = ~0U,
    108		.stream_count = 16,
    109		.register_max = 64,
    110		.thread_count = 1024,
    111		.shader_core_count = 4,
    112		.vertex_cache_size = 16,
    113		.vertex_output_buffer_size = 1024,
    114		.pixel_pipes = 2,
    115		.instruction_count = 512,
    116		.num_constants = 320,
    117		.buffer_size = 0,
    118		.varyings_count = 16,
    119		.features = 0xe0287cad,
    120		.minor_features0 = 0xc1799eff,
    121		.minor_features1 = 0xfefbfad9,
    122		.minor_features2 = 0xeb9d4fbf,
    123		.minor_features3 = 0xedfffced,
    124		.minor_features4 = 0xdb0dafc7,
    125		.minor_features5 = 0xbb5ac333,
    126		.minor_features6 = 0xfc8ee200,
    127		.minor_features7 = 0x03fbfa6f,
    128		.minor_features8 = 0x00ef0ef0,
    129		.minor_features9 = 0x0edbf03c,
    130		.minor_features10 = 0x90044250,
    131		.minor_features11 = 0x00000024,
    132	},
    133};
    134
    135bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
    136{
    137	struct etnaviv_chip_identity *ident = &gpu->identity;
    138	int i;
    139
    140	for (i = 0; i < ARRAY_SIZE(etnaviv_chip_identities); i++) {
    141		if (etnaviv_chip_identities[i].model == ident->model &&
    142		    etnaviv_chip_identities[i].revision == ident->revision &&
    143		    (etnaviv_chip_identities[i].product_id == ident->product_id ||
    144			 etnaviv_chip_identities[i].product_id == ~0U) &&
    145		    (etnaviv_chip_identities[i].customer_id == ident->customer_id ||
    146			 etnaviv_chip_identities[i].customer_id == ~0U) &&
    147		    (etnaviv_chip_identities[i].eco_id == ident->eco_id ||
    148			 etnaviv_chip_identities[i].eco_id == ~0U)) {
    149			memcpy(ident, &etnaviv_chip_identities[i],
    150			       sizeof(*ident));
    151			return true;
    152		}
    153	}
    154
    155	return false;
    156}