intel: Skip ioctls for querying device info when hardware is unsupported
While enumerating devices on a system with multiple implementations, unnecessary ioctls will be issued before a driver checks if it supports a given device. This patch makes the driver fail early based on a intel_device_info.ver check with 2 new parameters added to intel_get_device_info_from_fd. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27166>
This commit is contained in:
committed by
Marge Bot
parent
96504d51a2
commit
3fd44345c4
@@ -249,7 +249,7 @@ main(int argc, char *argv[])
|
||||
if (fd < 0)
|
||||
continue;
|
||||
|
||||
bool success = intel_get_device_info_from_fd(fd, &devinfo);
|
||||
bool success = intel_get_device_info_from_fd(fd, &devinfo, -1, -1);
|
||||
close(fd);
|
||||
|
||||
if (!success)
|
||||
|
||||
@@ -1618,7 +1618,7 @@ intel_device_info_calc_engine_prefetch(const struct intel_device_info *devinfo,
|
||||
}
|
||||
|
||||
bool
|
||||
intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo)
|
||||
intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo, int min_ver, int max_ver)
|
||||
{
|
||||
/* Get PCI info.
|
||||
*
|
||||
@@ -1639,6 +1639,12 @@ intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo)
|
||||
drmFreeDevice(&drmdev);
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((min_ver > 0 && devinfo->ver < min_ver) || (max_ver > 0 && devinfo->ver > max_ver)) {
|
||||
drmFreeDevice(&drmdev);
|
||||
return false;
|
||||
}
|
||||
|
||||
devinfo->pci_domain = drmdev->businfo.pci->domain;
|
||||
devinfo->pci_bus = drmdev->businfo.pci->bus;
|
||||
devinfo->pci_dev = drmdev->businfo.pci->dev;
|
||||
|
||||
@@ -641,7 +641,7 @@ intel_vram_all_mappable(const struct intel_device_info *devinfo)
|
||||
return devinfo->mem.vram.unmappable.size == 0;
|
||||
}
|
||||
|
||||
bool intel_get_device_info_from_fd(int fh, struct intel_device_info *devinfo);
|
||||
bool intel_get_device_info_from_fd(int fh, struct intel_device_info *devinfo, int min_ver, int max_ver);
|
||||
bool intel_get_device_info_from_pci_id(int pci_id,
|
||||
struct intel_device_info *devinfo);
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ main(int argc, char *argv[])
|
||||
if (fd < 0)
|
||||
continue;
|
||||
|
||||
bool success = intel_get_device_info_from_fd(fd, &devinfo);
|
||||
bool success = intel_get_device_info_from_fd(fd, &devinfo, -1, -1);
|
||||
close(fd);
|
||||
|
||||
if (!success)
|
||||
|
||||
Reference in New Issue
Block a user