diff options
author | Tom St Denis <tom.stdenis@amd.com> | 2019-03-05 14:09:19 -0500 |
---|---|---|
committer | Tom St Denis <tom.stdenis@amd.com> | 2019-03-05 14:09:19 -0500 |
commit | 1efd9e01d40da508c492f85aeea88aa5eaf03bce (patch) | |
tree | 4b809fb53ddb5675d625c1f4be66648dccf48161 | |
parent | 9d05a446321dce2bf90ec1555d46916fe60f1db6 (diff) |
read gtt/vram sizes from sysfs into asic config
Handy info that will also be used for things like proper XGMI
support in the future.
Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
-rw-r--r-- | src/app/print_config.c | 4 | ||||
-rw-r--r-- | src/lib/scan_config.c | 21 | ||||
-rw-r--r-- | src/umr.h | 3 |
3 files changed, 28 insertions, 0 deletions
diff --git a/src/app/print_config.c b/src/app/print_config.c index 8228656..a8263b9 100644 --- a/src/app/print_config.c +++ b/src/app/print_config.c @@ -106,6 +106,10 @@ void umr_print_config(struct umr_asic *asic) printf("\tasic.instance == %d\n", asic->instance); printf("\tasic.devname == %s\n", asic->options.pci.name); + printf("\n\tasic.gtt_size == %llu\n", (unsigned long long)asic->config.gtt_size); + printf("\tasic.vis_vram_size == %llu\n", (unsigned long long)asic->config.vis_vram_size); + printf("\tasic.vram_size == %llu\n", (unsigned long long)asic->config.vram_size); + printf("\n\tumr.version == %s\n\n", UMR_BUILD_REV); printf("\tvbios.version == %s\n\n", asic->config.vbios_version); diff --git a/src/lib/scan_config.c b/src/lib/scan_config.c index 10f1f74..43ff50d 100644 --- a/src/lib/scan_config.c +++ b/src/lib/scan_config.c @@ -83,6 +83,22 @@ static void parse_rev3(struct umr_asic *asic, uint32_t *data, int *r) asic->config.pci.subsystem_vendor = data[(*r)++]; } +static uint64_t read_int(char *pci_name, char *fname) +{ + char buf[256]; + FILE *f; + uint64_t n; + + snprintf(buf, sizeof(buf)-1, "/sys/bus/pci/devices/%s/%s", pci_name, fname); + f = fopen(buf, "r"); + if (f) { + fscanf(f, "%"SCNu64"\n", &n); + fclose(f); + return n; + } + return 0; +} + /** * umr_scan_config - Scan the debugfs confiruration data */ @@ -96,6 +112,11 @@ int umr_scan_config(struct umr_asic *asic) if (asic->options.no_kernel) return -1; + // read memory sizes + asic->config.gtt_size = read_int(asic->options.pci.name, "mem_info_gtt_total"); + asic->config.vis_vram_size = read_int(asic->options.pci.name, "mem_info_vis_vram_total"); + asic->config.vram_size = read_int(asic->options.pci.name, "mem_info_vram_total"); + // read vbios version snprintf(fname, sizeof(fname)-1, "/sys/bus/pci/devices/%s/vbios_version", asic->options.pci.name); f = fopen(fname, "r"); @@ -312,6 +312,9 @@ struct umr_asic { struct umr_fw_config fw[UMR_MAX_FW]; struct umr_pci_config pci; char vbios_version[128]; + uint64_t vram_size, + vis_vram_size, + gtt_size; } config; struct { int mmio, |