From bfb9738132288ac335355175a3f81b53369f3258 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Sat, 18 Dec 2021 10:35:51 +0100 Subject: [PATCH] [v0.11] Do not show error message when there is no Intel iGPU --- src/common/pci.cpp | 22 +++++++++++++--------- src/intel/intel.cpp | 6 ++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/common/pci.cpp b/src/common/pci.cpp index 62cf60f..e1cb7fd 100644 --- a/src/common/pci.cpp +++ b/src/common/pci.cpp @@ -4,15 +4,15 @@ #define CLASS_VGA_CONTROLLER 0x0300 -uint16_t pciutils_get_pci_vendor_id(struct pci_dev *devices, int id) { +bool pciutils_is_vendor_id_present(struct pci_dev *devices, int id) { for(struct pci_dev *dev=devices; dev != NULL; dev=dev->next) { if(dev->vendor_id == id && dev->device_class == CLASS_VGA_CONTROLLER) { - return dev->vendor_id; + return true; } } - printErr("Unable to find a valid device for id %d using pciutils", id); - return 0; + printWarn("Unable to find a valid device for id %d using pciutils", id); + return false; } uint16_t pciutils_get_pci_device_id(struct pci_dev *devices, int id) { @@ -46,11 +46,15 @@ struct pci* get_pci_from_pciutils(struct pci_dev *devices, int id) { struct pci* pci = (struct pci*) emalloc(sizeof(struct pci)); // TODO: Refactor this; instead of 2xGet + 1xSet, do it better - pci->vendor_id = pciutils_get_pci_vendor_id(devices, id); - pci->device_id = pciutils_get_pci_device_id(devices, id); - pciutils_set_pci_bus(pci, devices, id); - - return pci; + if(pciutils_is_vendor_id_present(devices, id)) { + pci->vendor_id = id; + pci->device_id = pciutils_get_pci_device_id(devices, id); + pciutils_set_pci_bus(pci, devices, id); + return pci; + } + else { + return NULL; + } } struct pci_dev *get_pci_devices_from_pciutils() { diff --git a/src/intel/intel.cpp b/src/intel/intel.cpp index 09a6a7b..da32506 100644 --- a/src/intel/intel.cpp +++ b/src/intel/intel.cpp @@ -18,6 +18,12 @@ struct gpu_info* get_gpu_info_intel() { struct pci_dev *devices = get_pci_devices_from_pciutils(); gpu->pci = get_pci_from_pciutils(devices, PCI_VENDOR_ID_INTEL); + + if(gpu->pci == NULL) { + // No Intel iGPU found in PCI, which means it is not present + return NULL; + } + gpu->arch = get_uarch_from_pci(gpu->pci); gpu->name = get_name_from_uarch(gpu->arch); gpu->topo_i = get_topology_info(gpu->arch);