mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
pci: Convert to realize
Convert i82801b11, io3130_upstream, io3130_downstream and pcie_root_port devices to realize. Cc: mst@redhat.com Cc: marcel@redhat.com Cc: armbru@redhat.com Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
2784127857
commit
f8cd1b0201
8 changed files with 56 additions and 50 deletions
|
@ -41,15 +41,14 @@
|
|||
#define PCI_SSVID_SSID 6
|
||||
|
||||
int pci_bridge_ssvid_init(PCIDevice *dev, uint8_t offset,
|
||||
uint16_t svid, uint16_t ssid)
|
||||
uint16_t svid, uint16_t ssid,
|
||||
Error **errp)
|
||||
{
|
||||
int pos;
|
||||
Error *local_err = NULL;
|
||||
|
||||
pos = pci_add_capability(dev, PCI_CAP_ID_SSVID, offset,
|
||||
PCI_SSVID_SIZEOF, &local_err);
|
||||
PCI_SSVID_SIZEOF, errp);
|
||||
if (pos < 0) {
|
||||
error_report_err(local_err);
|
||||
return pos;
|
||||
}
|
||||
|
||||
|
|
|
@ -86,19 +86,19 @@ pcie_cap_v1_fill(PCIDevice *dev, uint8_t port, uint8_t type, uint8_t version)
|
|||
pci_set_word(cmask + PCI_EXP_LNKSTA, 0);
|
||||
}
|
||||
|
||||
int pcie_cap_init(PCIDevice *dev, uint8_t offset, uint8_t type, uint8_t port)
|
||||
int pcie_cap_init(PCIDevice *dev, uint8_t offset,
|
||||
uint8_t type, uint8_t port,
|
||||
Error **errp)
|
||||
{
|
||||
/* PCIe cap v2 init */
|
||||
int pos;
|
||||
uint8_t *exp_cap;
|
||||
Error *local_err = NULL;
|
||||
|
||||
assert(pci_is_express(dev));
|
||||
|
||||
pos = pci_add_capability(dev, PCI_CAP_ID_EXP, offset,
|
||||
PCI_EXP_VER2_SIZEOF, &local_err);
|
||||
PCI_EXP_VER2_SIZEOF, errp);
|
||||
if (pos < 0) {
|
||||
error_report_err(local_err);
|
||||
return pos;
|
||||
}
|
||||
dev->exp.exp_cap = pos;
|
||||
|
@ -147,6 +147,8 @@ static int
|
|||
pcie_endpoint_cap_common_init(PCIDevice *dev, uint8_t offset, uint8_t cap_size)
|
||||
{
|
||||
uint8_t type = PCI_EXP_TYPE_ENDPOINT;
|
||||
Error *local_err = NULL;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Windows guests will report Code 10, device cannot start, if
|
||||
|
@ -157,9 +159,17 @@ pcie_endpoint_cap_common_init(PCIDevice *dev, uint8_t offset, uint8_t cap_size)
|
|||
type = PCI_EXP_TYPE_RC_END;
|
||||
}
|
||||
|
||||
return (cap_size == PCI_EXP_VER1_SIZEOF)
|
||||
? pcie_cap_v1_init(dev, offset, type, 0)
|
||||
: pcie_cap_init(dev, offset, type, 0);
|
||||
if (cap_size == PCI_EXP_VER1_SIZEOF) {
|
||||
return pcie_cap_v1_init(dev, offset, type, 0);
|
||||
} else {
|
||||
ret = pcie_cap_init(dev, offset, type, 0, &local_err);
|
||||
|
||||
if (ret < 0) {
|
||||
error_report_err(local_err);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
int pcie_endpoint_cap_init(PCIDevice *dev, uint8_t offset)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue