mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-28 21:03:54 -06:00
qemu: return PCIDevice on net device init and record devfn (Marcelo Tosatti)
Change the PCI network drivers init functions to return the PCIDev, to inform which slot has been hot-plugged. Also record PCIDevice structure on NICInfo to locate for release on hot-removal. Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6593 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
3ae8061898
commit
72da420859
10 changed files with 44 additions and 28 deletions
15
hw/pci.c
15
hw/pci.c
|
@ -662,7 +662,7 @@ static const char * const pci_nic_models[] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
typedef void (*PCINICInitFn)(PCIBus *, NICInfo *, int);
|
||||
typedef PCIDevice *(*PCINICInitFn)(PCIBus *, NICInfo *, int);
|
||||
|
||||
static PCINICInitFn pci_nic_init_fns[] = {
|
||||
pci_ne2000_init,
|
||||
|
@ -677,16 +677,23 @@ static PCINICInitFn pci_nic_init_fns[] = {
|
|||
};
|
||||
|
||||
/* Initialize a PCI NIC. */
|
||||
void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn,
|
||||
PCIDevice *pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn,
|
||||
const char *default_model)
|
||||
{
|
||||
PCIDevice *pci_dev;
|
||||
int i;
|
||||
|
||||
qemu_check_nic_model_list(nd, pci_nic_models, default_model);
|
||||
|
||||
for (i = 0; pci_nic_models[i]; i++)
|
||||
if (strcmp(nd->model, pci_nic_models[i]) == 0)
|
||||
pci_nic_init_fns[i](bus, nd, devfn);
|
||||
if (strcmp(nd->model, pci_nic_models[i]) == 0) {
|
||||
pci_dev = pci_nic_init_fns[i](bus, nd, devfn);
|
||||
if (pci_dev)
|
||||
nd->private = pci_dev;
|
||||
return pci_dev;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue