void arch_pci_write_config(u16 bdf, u16 address, u32 value, unsigned int size);
/**
- * Perform architecture-specific steps on PCI device addition.
+ * Perform architecture-specific steps on physical PCI device addition.
* @param cell Cell to which the device is added.
* @param device Device to be added.
*
* @return 0 on success, negative error code otherwise.
*
- * @see arch_pci_remove_device
+ * @see arch_pci_remove_physical_device
*/
-int arch_pci_add_device(struct cell *cell, struct pci_device *device);
+int arch_pci_add_physical_device(struct cell *cell, struct pci_device *device);
/**
- * Perform architecture-specific steps on PCI device removal.
+ * Perform architecture-specific steps on physical PCI device removal.
* @param device Device to be removed.
*
- * @see arch_pci_add_device
+ * @see arch_pci_add_physical_device
*/
-void arch_pci_remove_device(struct pci_device *device);
+void arch_pci_remove_physical_device(struct pci_device *device);
/**
* Avoid MSI vector delivery of a given device.
device->cell = cell;
device->next_virtual_device = cell->virtual_device_list;
cell->virtual_device_list = device;
- return arch_pci_add_device(cell, device);
+ return 0;
}
-static int pci_add_device(struct cell *cell, struct pci_device *device)
+static int pci_add_physical_device(struct cell *cell, struct pci_device *device)
{
unsigned int size = device->info->msix_region_size;
int err;
printk("Adding PCI device %02x:%02x.%x to cell \"%s\"\n",
PCI_BDF_PARAMS(device->info->bdf), cell->config->name);
- err = arch_pci_add_device(cell, device);
+ err = arch_pci_add_physical_device(cell, device);
if (!err && device->info->msix_address) {
device->msix_table = page_alloc(&remap_pool, size / PAGE_SIZE);
error_page_free:
page_free(&remap_pool, device->msix_table, size / PAGE_SIZE);
error_remove_dev:
- arch_pci_remove_device(device);
+ arch_pci_remove_physical_device(device);
return err;
}
{
struct pci_device *prev = device->cell->virtual_device_list;
- arch_pci_remove_device(device);
if (prev == device) {
device->cell->virtual_device_list = device->next_virtual_device;
} else {
}
}
-static void pci_remove_device(struct pci_device *device)
+static void pci_remove_physical_device(struct pci_device *device)
{
unsigned int size = device->info->msix_region_size;
struct pci_device *prev_msix_device;
printk("Removing PCI device %02x:%02x.%x from cell \"%s\"\n",
PCI_BDF_PARAMS(device->info->bdf), device->cell->config->name);
- arch_pci_remove_device(device);
+ arch_pci_remove_physical_device(device);
pci_write_config(device->info->bdf, PCI_CFG_COMMAND,
PCI_CMD_INTX_OFF, 2);
root_device = pci_get_assigned_device(&root_cell,
dev_infos[ndev].bdf);
if (root_device) {
- pci_remove_device(root_device);
+ pci_remove_physical_device(root_device);
root_device->cell = NULL;
}
- err = pci_add_device(cell, device);
+ err = pci_add_physical_device(cell, device);
if (err)
goto error;
for_each_configured_pci_device(root_device, &root_cell)
if (root_device->info->domain == device->info->domain &&
root_device->info->bdf == device->info->bdf) {
- if (pci_add_device(&root_cell, root_device) < 0)
+ if (pci_add_physical_device(&root_cell,
+ root_device) < 0)
printk("WARNING: Failed to re-assign PCI "
"device to root cell\n");
else
pci_ivshmem_exit(device);
pci_remove_virtual_device(device);
} else {
- pci_remove_device(device);
+ pci_remove_physical_device(device);
pci_return_device_to_root_cell(device);
}
}