From 826d00617c8dad9f535e98fa3191683a3af4e797 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Thu, 1 Aug 2024 00:02:47 +0200 Subject: [PATCH] nouveau: add nv_device_uuid Cc: mesa-stable Part-of: --- src/nouveau/headers/nv_device_info.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/nouveau/headers/nv_device_info.h b/src/nouveau/headers/nv_device_info.h index 3f4a7af5271..476de2ee3c9 100644 --- a/src/nouveau/headers/nv_device_info.h +++ b/src/nouveau/headers/nv_device_info.h @@ -1,6 +1,9 @@ #ifndef NV_DEVINFO_H #define NV_DEVINFO_H +#include +#include + #include "util/macros.h" #define NVIDIA_VENDOR_ID 0x10de @@ -46,4 +49,25 @@ struct nv_device_info { uint64_t bar_size_B; }; +static inline void +nv_device_uuid(const struct nv_device_info *info, uint8_t *uuid, size_t len, bool vm_bind) +{ + uint16_t vendor_id = NVIDIA_VENDOR_ID; + + assert(len >= 16); + + memset(uuid, 0, len); + memcpy(&uuid[0], &info->chipset, 2); + memcpy(&uuid[2], &vendor_id, 2); + memcpy(&uuid[4], &info->device_id, 2); + + if (info->type != NV_DEVICE_TYPE_SOC) { + memcpy(&uuid[6], &info->pci.domain, 2); + uuid[8] = info->pci.bus; + uuid[9] = info->pci.dev; + uuid[10] = info->pci.func; + } + uuid[11] = vm_bind; +} + #endif /* NV_DEVINFO_H */