From 50e28107bff234b4eb5e637abc22d0ece80ba23d Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 10 Jul 2017 15:38:21 +0200 Subject: vlib: fix issues with PCI handling code - PCI devices not properly discovered - vlib_pci_bus_master_enable () not working Change-Id: I7433ab1b19b890b8900635b43037b9a2017a1921 Signed-off-by: Damjan Marion --- src/vlib/pci/linux_pci.c | 12 ++++++------ src/vlib/pci/pci.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/vlib/pci/linux_pci.c b/src/vlib/pci/linux_pci.c index 623737d5355..2d3c0a8807d 100644 --- a/src/vlib/pci/linux_pci.c +++ b/src/vlib/pci/linux_pci.c @@ -562,8 +562,6 @@ scan_device (void *arg, u8 * dev_dir_name, u8 * ignored) hash_set (pm->pci_dev_index_by_pci_addr, dev->bus_address.as_u32, dev - pm->pci_devs); - error = init_device (vm, dev, &pdev); - vec_reset_length (f); f = format (f, "%v/vpd%c", dev_dir_name, 0); fd = open ((char *) f, O_RDONLY); @@ -601,10 +599,6 @@ scan_device (void *arg, u8 * dev_dir_name, u8 * ignored) close (fd); } - vec_reset_length (f); - f = format (f, "%v/driver%c", dev_dir_name, 0); - dev->driver_name = vlib_sysfs_link_to_name ((char *) f); - dev->numa_node = -1; vec_reset_length (f); f = format (f, "%v/numa_node%c", dev_dir_name, 0); @@ -625,6 +619,12 @@ scan_device (void *arg, u8 * dev_dir_name, u8 * ignored) vlib_sysfs_read ((char *) f, "0x%x", &tmp); dev->device_id = tmp; + error = init_device (vm, dev, &pdev); + + vec_reset_length (f); + f = format (f, "%v/driver%c", dev_dir_name, 0); + dev->driver_name = vlib_sysfs_link_to_name ((char *) f); + done: vec_free (f); return error; diff --git a/src/vlib/pci/pci.h b/src/vlib/pci/pci.h index 811a6ff2336..2141080936d 100644 --- a/src/vlib/pci/pci.h +++ b/src/vlib/pci/pci.h @@ -215,7 +215,7 @@ vlib_pci_bus_master_enable (vlib_pci_device_t * dev) if (err) return err; - if (!(command & PCI_COMMAND_BUS_MASTER)) + if (command & PCI_COMMAND_BUS_MASTER) return 0; command |= PCI_COMMAND_BUS_MASTER; -- cgit 1.2.3-korg