[PATCH libdrm v3 1/1] amdgpu: move asic id table to a separate file

Li, Samuel Samuel.Li at amd.com
Mon May 29 21:01:46 UTC 2017


Understood your point. However as discussed internally before, marketing names are there for a lot of reasons; my understanding of the policy is we do not need to touch them as long as there is no error in the names and they are allowed to be public.

Regards,
Sam

-----Original Message-----
From: Alex Deucher [mailto:alexdeucher at gmail.com] 
Sent: Friday, May 26, 2017 3:27 PM
To: Li, Samuel <Samuel.Li at amd.com>
Cc: amd-gfx list <amd-gfx at lists.freedesktop.org>; Yuan, Xiaojie <Xiaojie.Yuan at amd.com>
Subject: Re: [PATCH libdrm v3 1/1] amdgpu: move asic id table to a separate file

On Fri, May 26, 2017 at 3:23 PM, Samuel Li <Samuel.Li at amd.com> wrote:
> From: Xiaojie Yuan <Xiaojie.Yuan at amd.com>
>
> v2: fix an off by one error and leading white spaces
> v3: use thread safe strtok_r(); initialize len before calling getline();
>     change printf() to drmMsg(); add initial amdgpu.ids
>
> Change-Id: I12216da14910f5e2b0970bc1fafc2a20b0ef1ba9
> Reviewed-by: Junwei Zhang <Jerry.Zhang at amd.com>
> Signed-off-by: Samuel Li <Samuel.Li at amd.com>
> ---
>  Makefile.am              |   3 +
>  amdgpu/Makefile.am       |   2 +
>  amdgpu/Makefile.sources  |   2 +-
>  amdgpu/amdgpu_asic_id.c  | 199 
> +++++++++++++++++++++++++++++++++++++++++++++++
>  amdgpu/amdgpu_asic_id.h  | 165 ---------------------------------------
>  amdgpu/amdgpu_device.c   |  28 +++++--
>  amdgpu/amdgpu_internal.h |  10 +++
>  include/drm/amdgpu.ids   | 154 ++++++++++++++++++++++++++++++++++++
>  8 files changed, 390 insertions(+), 173 deletions(-)  create mode 
> 100644 amdgpu/amdgpu_asic_id.c  delete mode 100644 
> amdgpu/amdgpu_asic_id.h  create mode 100644 include/drm/amdgpu.ids
>
> diff --git a/Makefile.am b/Makefile.am index dfb8fcd..8de8f6c 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -45,6 +45,9 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
>
>  pkgconfigdir = @pkgconfigdir@
>  pkgconfig_DATA = libdrm.pc
> +libdrmdatadir = $(datadir)/libdrm
> +dist_libdrmdata_DATA = include/drm/amdgpu.ids export libdrmdatadir
>
>  if HAVE_LIBKMS
>  LIBKMS_SUBDIR = libkms
> diff --git a/amdgpu/Makefile.am b/amdgpu/Makefile.am index 
> cf7bc1b..da71c1c 100644
> --- a/amdgpu/Makefile.am
> +++ b/amdgpu/Makefile.am
> @@ -30,6 +30,8 @@ AM_CFLAGS = \
>         $(PTHREADSTUBS_CFLAGS) \
>         -I$(top_srcdir)/include/drm
>
> +AM_CPPFLAGS = -DAMDGPU_ASIC_ID_TABLE=\"${libdrmdatadir}/amdgpu.ids\"
> +
>  libdrm_amdgpu_la_LTLIBRARIES = libdrm_amdgpu.la  libdrm_amdgpu_ladir 
> = $(libdir)  libdrm_amdgpu_la_LDFLAGS = -version-number 1:0:0 
> -no-undefined diff --git a/amdgpu/Makefile.sources 
> b/amdgpu/Makefile.sources index 487b9e0..bc3abaa 100644
> --- a/amdgpu/Makefile.sources
> +++ b/amdgpu/Makefile.sources
> @@ -1,5 +1,5 @@
>  LIBDRM_AMDGPU_FILES := \
> -       amdgpu_asic_id.h \
> +       amdgpu_asic_id.c \
>         amdgpu_bo.c \
>         amdgpu_cs.c \
>         amdgpu_device.c \
> diff --git a/amdgpu/amdgpu_asic_id.c b/amdgpu/amdgpu_asic_id.c new 
> file mode 100644 index 0000000..5b415e3
> --- /dev/null
> +++ b/amdgpu/amdgpu_asic_id.c
> @@ -0,0 +1,199 @@
> +/*
> + * Copyright © 2017 Advanced Micro Devices, Inc.
> + * All Rights Reserved.
> + *
> + * Permission is hereby granted, free of charge, to any person 
> +obtaining a
> + * copy of this software and associated documentation files (the 
> +"Software"),
> + * to deal in the Software without restriction, including without 
> +limitation
> + * the rights to use, copy, modify, merge, publish, distribute, 
> +sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom 
> +the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be 
> +included in
> + * all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
> +EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
> +MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT 
> +SHALL
> + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, 
> +DAMAGES OR
> + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
> +OTHERWISE,
> + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 
> +OR
> + * OTHER DEALINGS IN THE SOFTWARE.
> + *
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <stdint.h>
> +#include <string.h>
> +#include <unistd.h>
> +#include <errno.h>
> +
> +#include "xf86drm.h"
> +#include "amdgpu_drm.h"
> +#include "amdgpu_internal.h"
> +
> +static int parse_one_line(const char *line, struct amdgpu_asic_id 
> +*id) {
> +       char *buf, *saveptr;
> +       char *s_did;
> +       char *s_rid;
> +       char *s_name;
> +       char *endptr;
> +       int r = 0;
> +
> +       buf = strdup(line);
> +       if (!buf)
> +               return -ENOMEM;
> +
> +       /* ignore empty line and commented line */
> +       if (strlen(line) == 0 || line[0] == '#') {
> +               r = -EAGAIN;
> +               goto out;
> +       }
> +
> +       /* device id */
> +       s_did = strtok_r(buf, ",", &saveptr);
> +       if (!s_did) {
> +               r = -EINVAL;
> +               goto out;
> +       }
> +
> +       id->did = strtol(s_did, &endptr, 16);
> +       if (*endptr) {
> +               r = -EINVAL;
> +               goto out;
> +       }
> +
> +       /* revision id */
> +       s_rid = strtok_r(NULL, ",", &saveptr);
> +       if (!s_rid) {
> +               r = -EINVAL;
> +               goto out;
> +       }
> +
> +       id->rid = strtol(s_rid, &endptr, 16);
> +       if (*endptr) {
> +               r = -EINVAL;
> +               goto out;
> +       }
> +
> +       /* marketing name */
> +       s_name = strtok_r(NULL, ",", &saveptr);
> +       if (!s_name) {
> +               r = -EINVAL;
> +               goto out;
> +       }
> +
> +       id->marketing_name = strdup(s_name);
> +       if (id->marketing_name == NULL) {
> +               r = -EINVAL;
> +               goto out;
> +       }
> +
> +out:
> +       free(buf);
> +
> +       return r;
> +}
> +
> +int amdgpu_parse_asic_ids(struct amdgpu_asic_id **p_asic_id_table) {
> +       struct amdgpu_asic_id *asic_id_table;
> +       struct amdgpu_asic_id *id;
> +       FILE *fp;
> +       char *line = NULL;
> +       size_t len = 0;
> +       ssize_t n;
> +       int line_num = 1;
> +       size_t table_size = 0;
> +       size_t table_max_size = 256;
> +       int r = 0;
> +
> +       fp = fopen(AMDGPU_ASIC_ID_TABLE, "r");
> +       if (!fp) {
> +               fprintf(stderr, "%s: %s\n", AMDGPU_ASIC_ID_TABLE,
> +                               strerror(errno));
> +               return -EINVAL;
> +       }
> +
> +       asic_id_table = calloc(table_max_size, sizeof(struct amdgpu_asic_id));
> +       if (!asic_id_table) {
> +               r = -ENOMEM;
> +               goto close;
> +       }
> +
> +       /* 1st line is file version */
> +       if ((n = getline(&line, &len, fp)) != -1) {
> +               /* trim trailing newline */
> +               if (line[n - 1] == '\n')
> +                       line[n - 1] = '\0';
> +               drmMsg("%s version: %s\n", AMDGPU_ASIC_ID_TABLE, line);
> +       } else {
> +               goto free;
> +       }
> +
> +       while ((n = getline(&line, &len, fp)) != -1) {
> +               id = asic_id_table + table_size;
> +
> +               /* trim trailing newline */
> +               if (line[n - 1] == '\n')
> +                       line[n - 1] = '\0';
> +
> +               /*
> +                * parse one line, its format looks like:
> +                * 6617,C7,AMD Radeon R7 240 Series
> +                */
> +               r = parse_one_line(line, id);
> +               if (r) {
> +                       if (r == -EAGAIN) {
> +                               line_num++;
> +                               continue;
> +                       }
> +                       fprintf(stderr, "Invalid format: %s: line %d: %s\n",
> +                                       AMDGPU_ASIC_ID_TABLE, line_num, line);
> +                       goto free;
> +               }
> +
> +               line_num++;
> +               table_size++;
> +
> +               if (table_size >= table_max_size) {
> +                       /* double table size */
> +                       table_max_size *= 2;
> +                       asic_id_table = realloc(asic_id_table, table_max_size *
> +                                       sizeof(struct amdgpu_asic_id));
> +                       if (!asic_id_table) {
> +                               r = -ENOMEM;
> +                               goto free;
> +                       }
> +               }
> +       }
> +
> +       /* end of table */
> +       id = asic_id_table + table_size;
> +       memset(id, 0, sizeof(struct amdgpu_asic_id));
> +
> +free:
> +       free(line);
> +
> +       if (r && asic_id_table) {
> +               while (table_size--) {
> +                       id = asic_id_table + table_size;
> +                       if (id->marketing_name !=  NULL)
> +                               free(id->marketing_name);
> +               }
> +               free(asic_id_table);
> +               asic_id_table = NULL;
> +       }
> +close:
> +       fclose(fp);
> +
> +       *p_asic_id_table = asic_id_table;
> +
> +       return r;
> +}
> diff --git a/amdgpu/amdgpu_asic_id.h b/amdgpu/amdgpu_asic_id.h deleted 
> file mode 100644 index 3e7d736..0000000
> --- a/amdgpu/amdgpu_asic_id.h
> +++ /dev/null
> @@ -1,165 +0,0 @@
> -/*
> - * Copyright © 2016 Advanced Micro Devices, Inc.
> - * All Rights Reserved.
> - *
> - * Permission is hereby granted, free of charge, to any person 
> obtaining a
> - * copy of this software and associated documentation files (the 
> "Software"),
> - * to deal in the Software without restriction, including without 
> limitation
> - * the rights to use, copy, modify, merge, publish, distribute, 
> sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom 
> the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be 
> included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
> EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
> MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT 
> SHALL
> - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, 
> DAMAGES OR
> - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
> OTHERWISE,
> - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 
> OR
> - * OTHER DEALINGS IN THE SOFTWARE.
> - *
> - */
> -
> -#ifndef __AMDGPU_ASIC_ID_H__
> -#define __AMDGPU_ASIC_ID_H__
> -
> -static struct amdgpu_asic_id_table_t {
> -       uint32_t did;
> -       uint32_t rid;
> -       const char *marketing_name;
> -} const amdgpu_asic_id_table [] = {
> -       {0x6600,        0x0,    "AMD Radeon HD 8600/8700M"},
> -       {0x6600,        0x81,   "AMD Radeon R7 M370"},
> -       {0x6601,        0x0,    "AMD Radeon HD 8500M/8700M"},
> -       {0x6604,        0x0,    "AMD Radeon R7 M265 Series"},
> -       {0x6604,        0x81,   "AMD Radeon R7 M350"},
> -       {0x6605,        0x0,    "AMD Radeon R7 M260 Series"},
> -       {0x6605,        0x81,   "AMD Radeon R7 M340"},
> -       {0x6606,        0x0,    "AMD Radeon HD 8790M"},
> -       {0x6607,        0x0,    "AMD Radeon HD8530M"},
> -       {0x6608,        0x0,    "AMD FirePro W2100"},
> -       {0x6610,        0x0,    "AMD Radeon HD 8600 Series"},
> -       {0x6610,        0x81,   "AMD Radeon R7 350"},
> -       {0x6610,        0x83,   "AMD Radeon R5 340"},
> -       {0x6611,        0x0,    "AMD Radeon HD 8500 Series"},
> -       {0x6613,        0x0,    "AMD Radeon HD 8500 series"},
> -       {0x6617,        0xC7,   "AMD Radeon R7 240 Series"},
> -       {0x6640,        0x0,    "AMD Radeon HD 8950"},
> -       {0x6640,        0x80,   "AMD Radeon R9 M380"},
> -       {0x6646,        0x0,    "AMD Radeon R9 M280X"},
> -       {0x6646,        0x80,   "AMD Radeon R9 M470X"},
> -       {0x6647,        0x0,    "AMD Radeon R9 M270X"},
> -       {0x6647,        0x80,   "AMD Radeon R9 M380"},
> -       {0x6649,        0x0,    "AMD FirePro W5100"},
> -       {0x6658,        0x0,    "AMD Radeon R7 200 Series"},
> -       {0x665C,        0x0,    "AMD Radeon HD 7700 Series"},
> -       {0x665D,        0x0,    "AMD Radeon R7 200 Series"},
> -       {0x665F,        0x81,   "AMD Radeon R7 300 Series"},
> -       {0x6660,        0x0,    "AMD Radeon HD 8600M Series"},
> -       {0x6660,        0x81,   "AMD Radeon R5 M335"},
> -       {0x6660,        0x83,   "AMD Radeon R5 M330"},
> -       {0x6663,        0x0,    "AMD Radeon HD 8500M Series"},
> -       {0x6663,        0x83,   "AMD Radeon R5 M320"},
> -       {0x6664,        0x0,    "AMD Radeon R5 M200 Series"},
> -       {0x6665,        0x0,    "AMD Radeon R5 M200 Series"},
> -       {0x6665,        0x83,   "AMD Radeon R5 M320"},
> -       {0x6667,        0x0,    "AMD Radeon R5 M200 Series"},
> -       {0x666F,        0x0,    "AMD Radeon HD 8500M"},
> -       {0x6780,        0x0,    "ATI FirePro V (FireGL V) Graphics Adapter"},
> -       {0x678A,        0x0,    "ATI FirePro V (FireGL V) Graphics Adapter"},
> -       {0x6798,        0x0,    "AMD Radeon HD 7900 Series"},
> -       {0x679A,        0x0,    "AMD Radeon HD 7900 Series"},
> -       {0x679B,        0x0,    "AMD Radeon HD 7900 Series"},
> -       {0x679E,        0x0,    "AMD Radeon HD 7800 Series"},
> -       {0x67A0,        0x0,    "HAWAII XTGL (67A0)"},
> -       {0x67A1,        0x0,    "HAWAII GL40 (67A1)"},
> -       {0x67B0,        0x0,    "AMD Radeon R9 200 Series"},
> -       {0x67B0,        0x80,   "AMD Radeon R9 390 Series"},
> -       {0x67B1,        0x0,    "AMD Radeon R9 200 Series"},
> -       {0x67B1,        0x80,   "AMD Radeon R9 390 Series"},
> -       {0x67B9,        0x0,    "AMD Radeon R9 200 Series"},
> -       {0x67DF,        0xC4,   "AMD Radeon RX 480 Graphics"},
> -       {0x67DF,        0xC5,   "AMD Radeon RX 470 Graphics"},
> -       {0x67DF,        0xC7,   "AMD Radeon RX 480 Graphics"},
> -       {0x67DF,        0xCF,   "AMD Radeon RX 470 Graphics"},
> -       {0x67C4,        0x00,   "AMD Radeon Pro WX 7100 Graphics"},
> -       {0x67C7,        0x00,   "AMD Radeon Pro WX 5100 Graphics"},
> -       {0x67C0,        0x00,   "AMD Radeon Pro WX 7100 Graphics"},
> -       {0x67E0,        0x00,   "AMD Radeon Pro WX Series Graphics"},
> -       {0x67E3,        0x00,   "AMD Radeon Pro WX 4100 Graphics"},
> -       {0x67E8,        0x00,   "AMD Radeon Pro WX Series Graphics"},
> -       {0x67E8,        0x01,   "AMD Radeon Pro WX Series Graphics"},
> -       {0x67E8,        0x80,   "AMD Radeon E9260 Graphics"},
> -       {0x67EB,        0x00,   "AMD Radeon Pro WX Series Graphics"},
> -       {0x67EF,        0xC0,   "AMD Radeon RX Graphics"},
> -       {0x67EF,        0xC1,   "AMD Radeon RX 460 Graphics"},
> -       {0x67EF,        0xC5,   "AMD Radeon RX 460 Graphics"},
> -       {0x67EF,        0xC7,   "AMD Radeon RX Graphics"},
> -       {0x67EF,        0xCF,   "AMD Radeon RX 460 Graphics"},
> -       {0x67EF,        0xEF,   "AMD Radeon RX Graphics"},
> -       {0x67FF,        0xC0,   "AMD Radeon RX Graphics"},
> -       {0x67FF,        0xC1,   "AMD Radeon RX Graphics"},
> -       {0x6800,        0x0,    "AMD Radeon HD 7970M"},
> -       {0x6801,        0x0,    "AMD Radeon(TM) HD8970M"},
> -       {0x6808,        0x0,    "ATI FirePro V(FireGL V) Graphics Adapter"},
> -       {0x6809,        0x0,    "ATI FirePro V(FireGL V) Graphics Adapter"},
> -       {0x6810,        0x0,    "AMD Radeon(TM) HD 8800 Series"},
> -       {0x6810,        0x81,   "AMD Radeon R7 370 Series"},
> -       {0x6811,        0x0,    "AMD Radeon(TM) HD8800 Series"},
> -       {0x6811,        0x81,   "AMD Radeon R7 300 Series"},
> -       {0x6818,        0x0,    "AMD Radeon HD 7800 Series"},
> -       {0x6819,        0x0,    "AMD Radeon HD 7800 Series"},
> -       {0x6820,        0x0,    "AMD Radeon HD 8800M Series"},
> -       {0x6820,        0x81,   "AMD Radeon R9 M375"},
> -       {0x6820,        0x83,   "AMD Radeon R9 M375X"},
> -       {0x6821,        0x0,    "AMD Radeon HD 8800M Series"},
> -       {0x6821,        0x87,   "AMD Radeon R7 M380"},
> -       {0x6821,        0x83,   "AMD Radeon R9 M370X"},
> -       {0x6822,        0x0,    "AMD Radeon E8860"},
> -       {0x6823,        0x0,    "AMD Radeon HD 8800M Series"},
> -       {0x6825,        0x0,    "AMD Radeon HD 7800M Series"},
> -       {0x6827,        0x0,    "AMD Radeon HD 7800M Series"},
> -       {0x6828,        0x0,    "ATI FirePro V(FireGL V) Graphics Adapter"},
> -       {0x682B,        0x0,    "AMD Radeon HD 8800M Series"},
> -       {0x682B,        0x87,   "AMD Radeon R9 M360"},
> -       {0x682C,        0x0,    "AMD FirePro W4100"},
> -       {0x682D,        0x0,    "AMD Radeon HD 7700M Series"},
> -       {0x682F,        0x0,    "AMD Radeon HD 7700M Series"},
> -       {0x6835,        0x0,    "AMD Radeon R7 Series / HD 9000 Series"},
> -       {0x6837,        0x0,    "AMD Radeon HD7700 Series"},
> -       {0x683D,        0x0,    "AMD Radeon HD 7700 Series"},
> -       {0x683F,        0x0,    "AMD Radeon HD 7700 Series"},
> -       {0x6900,        0x0,    "AMD Radeon R7 M260"},
> -       {0x6900,        0x81,   "AMD Radeon R7 M360"},
> -       {0x6900,        0x83,   "AMD Radeon R7 M340"},
> -       {0x6901,        0x0,    "AMD Radeon R5 M255"},
> -       {0x6907,        0x0,    "AMD Radeon R5 M255"},
> -       {0x6907,        0x87,   "AMD Radeon R5 M315"},
> -       {0x6920,        0x0,    "AMD Radeon R9 M395X"},
> -       {0x6920,        0x1,    "AMD Radeon R9 M390X"},
> -       {0x6921,        0x0,    "AMD Radeon R9 M295X"},
> -       {0x6929,        0x0,    "AMD FirePro S7150"},
> -       {0x692B,        0x0,    "AMD FirePro W7100"},
> -       {0x6938,        0x0,    "AMD Radeon R9 200 Series"},
> -       {0x6938,        0xF0,   "AMD Radeon R9 200 Series"},
> -       {0x6938,        0xF1,   "AMD Radeon R9 380 Series"},
> -       {0x6939,        0xF0,   "AMD Radeon R9 200 Series"},
> -       {0x6939,        0x0,    "AMD Radeon R9 200 Series"},
> -       {0x6939,        0xF1,   "AMD Radeon R9 380 Series"},
> -       {0x7300,        0xC8,   "AMD Radeon R9 Fury Series"},
> -       {0x7300,        0xCB,   "AMD Radeon R9 Fury Series"},
> -       {0x7300,        0xCA,   "AMD Radeon R9 Fury Series"},
> -       {0x9874,        0xC4,   "AMD Radeon R7 Graphics"},
> -       {0x9874,        0xC5,   "AMD Radeon R6 Graphics"},
> -       {0x9874,        0xC6,   "AMD Radeon R6 Graphics"},
> -       {0x9874,        0xC7,   "AMD Radeon R5 Graphics"},
> -       {0x9874,        0x81,   "AMD Radeon R6 Graphics"},
> -       {0x9874,        0x87,   "AMD Radeon R5 Graphics"},
> -       {0x9874,        0x85,   "AMD Radeon R6 Graphics"},
> -       {0x9874,        0x84,   "AMD Radeon R7 Graphics"},
> -
> -       {0x0000,        0x0,    "\0"},
> -};
> -#endif
> diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c index 
> f473d2d..9d08744 100644
> --- a/amdgpu/amdgpu_device.c
> +++ b/amdgpu/amdgpu_device.c
> @@ -44,7 +44,6 @@
>  #include "amdgpu_internal.h"
>  #include "util_hash_table.h"
>  #include "util_math.h"
> -#include "amdgpu_asic_id.h"
>
>  #define PTR_TO_UINT(x) ((unsigned)((intptr_t)(x)))  #define 
> UINT_TO_PTR(x) ((void *)((intptr_t)(x))) @@ -131,6 +130,7 @@ static 
> int amdgpu_get_auth(int fd, int *auth)
>
>  static void amdgpu_device_free_internal(amdgpu_device_handle dev)  {
> +       const struct amdgpu_asic_id *id;
>         amdgpu_vamgr_deinit(&dev->vamgr_32);
>         amdgpu_vamgr_deinit(&dev->vamgr);
>         util_hash_table_destroy(dev->bo_flink_names);
> @@ -140,6 +140,13 @@ static void amdgpu_device_free_internal(amdgpu_device_handle dev)
>         close(dev->fd);
>         if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd))
>                 close(dev->flink_fd);
> +       if (dev->asic_ids) {
> +               for (id = dev->asic_ids; id->did; id++) {
> +                       if (id->marketing_name !=  NULL)
> +                               free(id->marketing_name);
> +               }
> +               free(dev->asic_ids);
> +       }
>         free(dev);
>  }
>
> @@ -267,6 +274,11 @@ int amdgpu_device_initialize(int fd,
>         amdgpu_vamgr_init(&dev->vamgr_32, start, max,
>                           dev->dev_info.virtual_address_alignment);
>
> +       r = amdgpu_parse_asic_ids(&dev->asic_ids);
> +       if (r)
> +               fprintf(stderr, "%s: Can not parse asic ids, 0x%x.",
> +                       __func__, r);
> +
>         *major_version = dev->major_version;
>         *minor_version = dev->minor_version;
>         *device_handle = dev;
> @@ -297,13 +309,15 @@ int 
> amdgpu_device_deinitialize(amdgpu_device_handle dev)
>
>  const char *amdgpu_get_marketing_name(amdgpu_device_handle dev)  {
> -       const struct amdgpu_asic_id_table_t *t = amdgpu_asic_id_table;
> +       const struct amdgpu_asic_id *id;
> +
> +       if (!dev->asic_ids)
> +               return NULL;
>
> -       while (t->did) {
> -               if ((t->did == dev->info.asic_id) &&
> -                   (t->rid == dev->info.pci_rev_id))
> -                       return t->marketing_name;
> -               t++;
> +       for (id = dev->asic_ids; id->did; id++) {
> +               if ((id->did == dev->info.asic_id) &&
> +                               (id->rid == dev->info.pci_rev_id))
> +                       return id->marketing_name;
>         }
>
>         return NULL;
> diff --git a/amdgpu/amdgpu_internal.h b/amdgpu/amdgpu_internal.h index 
> cf119a5..e68246b 100644
> --- a/amdgpu/amdgpu_internal.h
> +++ b/amdgpu/amdgpu_internal.h
> @@ -69,6 +69,12 @@ struct amdgpu_va {
>         struct amdgpu_bo_va_mgr *vamgr;  };
>
> +struct amdgpu_asic_id {
> +       uint32_t did;
> +       uint32_t rid;
> +       char *marketing_name;
> +};
> +
>  struct amdgpu_device {
>         atomic_t refcount;
>         int fd;
> @@ -76,6 +82,8 @@ struct amdgpu_device {
>         unsigned major_version;
>         unsigned minor_version;
>
> +       /** Lookup table of asic device id, revision id and marketing name */
> +       struct amdgpu_asic_id *asic_ids;
>         /** List of buffer handles. Protected by bo_table_mutex. */
>         struct util_hash_table *bo_handles;
>         /** List of buffer GEM flink names. Protected by 
> bo_table_mutex. */ @@ -149,6 +157,8 @@ amdgpu_vamgr_find_va(struct 
> amdgpu_bo_va_mgr *mgr, uint64_t size,  drm_private void  
> amdgpu_vamgr_free_va(struct amdgpu_bo_va_mgr *mgr, uint64_t va, 
> uint64_t size);
>
> +drm_private int amdgpu_parse_asic_ids(struct amdgpu_asic_id 
> +**asic_ids);
> +
>  drm_private int amdgpu_query_gpu_info_init(amdgpu_device_handle dev);
>
>  drm_private uint64_t amdgpu_cs_calculate_timeout(uint64_t timeout); 
> diff --git a/include/drm/amdgpu.ids b/include/drm/amdgpu.ids new file 
> mode 100644 index 0000000..1b00b60
> --- /dev/null
> +++ b/include/drm/amdgpu.ids
> @@ -0,0 +1,154 @@
> +1.0.0
> +6600,0,AMD Radeon HD 8600/8700M
> +6600,81,AMD Radeon (TM) R7 M370
> +6601,0,AMD Radeon (TM) HD 8500M/8700M 6604,0,AMD Radeon R7 M265 
> +Series 6604,81,AMD Radeon (TM) R7 M350 6605,0,AMD Radeon R7 M260 
> +Series 6605,81,AMD Radeon (TM) R7 M340 6606,0,AMD Radeon HD 8790M 
> +6607,0,AMD Radeon (TM) HD8530M 6608,0,AMD FirePro W2100 6610,0,AMD 
> +Radeon HD 8600 Series 6610,81,AMD Radeon (TM) R7 350 6610,83,AMD 
> +Radeon (TM) R5 340 6611,0,AMD Radeon HD 8500 Series 6613,0,AMD Radeon 
> +HD 8500 series 6617,C7,AMD Radeon R7 240 Series 6640,0,AMD Radeon HD 
> +8950 6640,80,AMD Radeon (TM) R9 M380 6646,0,AMD Radeon R9 M280X 
> +6646,80,AMD Radeon (TM) R9 M470X 6647,0,AMD Radeon R9 M270X 
> +6647,80,AMD Radeon (TM) R9 M380 6649,0,AMD FirePro W5100 6658,0,AMD 
> +Radeon R7 200 Series 665C,0,AMD Radeon HD 7700 Series 665D,0,AMD 
> +Radeon R7 200 Series 665F,81,AMD Radeon (TM) R7 300 Series 6660,0,AMD 
> +Radeon HD 8600M Series 6660,81,AMD Radeon (TM) R5 M335 6660,83,AMD 
> +Radeon (TM) R5 M330 6663,0,AMD Radeon HD 8500M Series 6663,83,AMD 
> +Radeon (TM) R5 M320 6664,0,AMD Radeon R5 M200 Series 6665,0,AMD 
> +Radeon R5 M200 Series 6665,83,AMD Radeon (TM) R5 M320 6667,0,AMD 
> +Radeon R5 M200 Series 666F,0,AMD Radeon HD 8500M 6780,0,ATI FirePro V 
> +(FireGL V) Graphics Adapter 678A,0,ATI FirePro V (FireGL V) Graphics 
> +Adapter 6798,0,AMD Radeon HD 7900 Series 679A,0,AMD Radeon HD 7900 
> +Series 679B,0,AMD Radeon HD 7900 Series 679E,0,AMD Radeon HD 7800 
> +Series 67A0,0,AMD Radeon FirePro W9100 67A1,0,AMD Radeon FirePro 
> +W8100 67B0,0,AMD Radeon R9 200 Series 67B0,80,AMD Radeon (TM) R9 390 
> +Series 67B1,0,AMD Radeon R9 200 Series 67B1,80,AMD Radeon (TM) R9 390 
> +Series 67B9,0,AMD Radeon R9 200 Series 67DF,C1,Radeon RX 580 Series 
> +67DF,C2,Radeon RX 570 Series 67DF,C3,Radeon RX 580 Series 67DF,C4,AMD 
> +Radeon (TM) RX 480 Graphics 67DF,C5,AMD Radeon (TM) RX 470 Graphics 
> +67DF,C6,Radeon RX 570 Series 67DF,C7,AMD Radeon (TM) RX 480 Graphics 
> +67DF,CF,AMD Radeon (TM) RX 470 Graphics 67DF,E3,Radeon RX Series 
> +67DF,E7,Radeon RX 580 Series 67DF,EF,Radeon RX 570 Series
> +67C2,0,67C2:00

Please drop any entries that don't have any strings yet.


> +67C2,01,AMD Radeon (TM) Pro V7350x2
> +67C2,02,AMD Radeon (TM) Pro V7300X
> +67C4,00,AMD Radeon (TM) Pro WX 7100 Graphics 67C7,00,AMD Radeon (TM) 
> +Pro WX 5100 Graphics 67C0,00,AMD Radeon (TM) Pro WX 7100 Graphics
> +67D0,0,67D0:00

Here.


> +67D0,01,AMD Radeon (TM) Pro V7350x2
> +67D0,02,AMD Radeon (TM) Pro V7300X
> +67E0,00,AMD Radeon (TM) Pro WX Series 67E3,00,AMD Radeon (TM) Pro WX 
> +4100 67E8,00,AMD Radeon (TM) Pro WX Series 67E8,01,AMD Radeon (TM) 
> +Pro WX Series 67E8,80,AMD Radeon (TM) E9260 Graphics 67EB,00,AMD 
> +Radeon (TM) Pro V5300X 67EF,C0,AMD Radeon (TM) RX Graphics 
> +67EF,C1,AMD Radeon (TM) RX 460 Graphics 67EF,C3,Radeon RX Series 
> +67EF,C5,AMD Radeon (TM) RX 460 Graphics 67EF,C7,AMD Radeon (TM) RX 
> +Graphics 67EF,CF,AMD Radeon (TM) RX 460 Graphics
> +67EF,E0,67EF:E0

Here.

> +67EF,E1,Radeon RX Series
> +67EF,E3,Radeon RX Series
> +67EF,E5,67EF:E5
> +67EF,E7,Radeon RX Series
> +67EF,EF,AMD Radeon (TM) RX Graphics
> +67EF,FF,Radeon RX Series
> +67FF,C0,AMD Radeon (TM) RX Graphics
> +67FF,C1,AMD Radeon (TM) RX Graphics
> +67FF,CF,67FF:CF
> +67FF,EF,67FF:EF

Here.

> +67FF,FF,Radeon RX 550 Series
> +6800,0,AMD Radeon HD 7970M
> +6801,0,AMD Radeon(TM) HD8970M
> +6808,0,ATI FirePro V(FireGL V) Graphics Adapter 6809,0,ATI FirePro 
> +V(FireGL V) Graphics Adapter 6810,0,AMD Radeon(TM) HD 8800 Series 
> +6810,81,AMD Radeon (TM) R7 370 Series 6811,0,AMD Radeon(TM) HD8800 
> +Series 6811,81,AMD Radeon (TM) R7 300 Series 6818,0,AMD Radeon HD 
> +7800 Series 6819,0,AMD Radeon HD 7800 Series 6820,0,AMD Radeon HD 
> +8800M Series 6820,81,AMD Radeon (TM) R9 M375 6820,83,AMD Radeon (TM) 
> +R9 M375X 6821,0,AMD Radeon HD 8800M Series 6821,87,AMD Radeon (TM) R7 
> +M380 6821,83,AMD Radeon R9 (TM) M370X 6822,0,AMD Radeon E8860 
> +6823,0,AMD Radeon HD 8800M Series 6825,0,AMD Radeon HD 7800M Series 
> +6827,0,AMD Radeon HD 7800M Series 6828,0,ATI FirePro V(FireGL V) 
> +Graphics Adapter 682B,0,AMD Radeon HD 8800M Series 682B,87,AMD Radeon 
> +(TM) R9 M360 682C,0,AMD FirePro W4100 682D,0,AMD Radeon HD 7700M 
> +Series 682F,0,AMD Radeon HD 7700M Series 6835,0,AMD Radeon R7 Series 
> +/ HD 9000 Series 6837,0,AMD Radeon HD7700 Series 683D,0,AMD Radeon HD 
> +7700 Series 683F,0,AMD Radeon HD 7700 Series 6900,0,AMD Radeon R7 
> +M260 6900,81,AMD Radeon (TM) R7 M360 6900,83,AMD Radeon (TM) R7 M340 
> +6901,0,AMD Radeon R5 M255 6907,0,AMD Radeon R5 M255 6907,87,AMD 
> +Radeon (TM) R5 M315 6920,0,AMD RADEON R9 M395X 6920,1,AMD RADEON R9 
> +M390X 6921,0,AMD Radeon R9 M295X 6929,0,AMD FirePro S7150 692B,0,AMD 
> +FirePro W7100 6938,0,AMD Radeon R9 200 Series 6938,F0,AMD Radeon R9 
> +200 Series 6938,F1,AMD Radeon (TM) R9 380 Series 6939,F0,AMD Radeon 
> +R9 200 Series 6939,0,AMD Radeon R9 200 Series 6939,F1,AMD Radeon (TM) 
> +R9 380 Series 7300,C8,AMD Radeon (TM) R9 Fury Series 7300,C9,Radeon 
> +(TM) Pro Duo 7300,CB,AMD Radeon (TM) R9 Fury Series 7300,CA,AMD 
> +Radeon (TM) R9 Fury Series 9874,C4,AMD Radeon R7 Graphics 9874,C5,AMD 
> +Radeon R6 Graphics 9874,C6,AMD Radeon R6 Graphics 9874,C7,AMD Radeon 
> +R5 Graphics 9874,81,AMD Radeon R6 Graphics 9874,87,AMD Radeon R5 
> +Graphics 9874,85,AMD Radeon R6 Graphics 9874,84,AMD Radeon R7 
> +Graphics
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list