diff options
author | Tom St Denis <tom.stdenis@amd.com> | 2017-06-05 14:04:11 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-06-06 12:14:13 -0400 |
commit | b6f450e065a538d566c71872ce890ff07956e3eb (patch) | |
tree | 7e801e0c4205031debcb96d58b646f2dca85b140 /tests | |
parent | 16444e1061a2dcc80cdc80d64b6ae9ef2deee5fe (diff) | |
download | libdrm-b6f450e065a538d566c71872ce890ff07956e3eb.tar.gz libdrm-b6f450e065a538d566c71872ce890ff07956e3eb.tar.bz2 libdrm-b6f450e065a538d566c71872ce890ff07956e3eb.zip |
tests/amdgpu: Fix device_id option
The device_id option [-d] was badly broken. This commit fixes
the width (was 8 is now 16 bits) as well as enables searches
without specifying a bus id. It was also comparing "dev" from
the bus field which is not the PCI device id.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/amdgpu/amdgpu_test.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c index bc901a9e..1d44b09e 100644 --- a/tests/amdgpu/amdgpu_test.c +++ b/tests/amdgpu/amdgpu_test.c @@ -270,25 +270,25 @@ static void amdgpu_print_devices() /* Find a match AMD device in PCI bus * Return the index of the device or -1 if not found */ -static int amdgpu_find_device(uint8_t bus, uint8_t dev) +static int amdgpu_find_device(uint8_t bus, uint16_t dev) { int i; drmDevicePtr device; - for (i = 0; i < MAX_CARDS_SUPPORTED && drm_amdgpu[i] >=0; i++) + for (i = 0; i < MAX_CARDS_SUPPORTED && drm_amdgpu[i] >= 0; i++) { if (drmGetDevice2(drm_amdgpu[i], DRM_DEVICE_GET_PCI_REVISION, &device) == 0) { if (device->bustype == DRM_BUS_PCI) - if (device->businfo.pci->bus == bus && - device->businfo.pci->dev == dev) { - + if ((bus == 0xFF || device->businfo.pci->bus == bus) && + device->deviceinfo.pci->device_id == dev) { drmFreeDevice(&device); return i; } drmFreeDevice(&device); } + } return -1; } @@ -331,7 +331,7 @@ int main(int argc, char **argv) pci_bus_id = atoi(optarg); break; case 'd': - pci_device_id = atoi(optarg); + sscanf(optarg, "%x", &pci_device_id); break; case 'p': display_devices = 1; @@ -365,10 +365,10 @@ int main(int argc, char **argv) exit(EXIT_SUCCESS); } - if (pci_bus_id > 0) { + if (pci_bus_id > 0 || pci_device_id) { /* A device was specified to run the test */ - test_device_index = amdgpu_find_device((uint8_t)pci_bus_id, - (uint8_t)pci_device_id); + test_device_index = amdgpu_find_device(pci_bus_id, + pci_device_id); if (test_device_index >= 0) { /* Most tests run on device of drm_amdgpu[0]. |