mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
pci: Make errp the last parameter of pci_add_capability()
Add Error argument for pci_add_capability() to leverage the errp to pass info on errors. This way is helpful for its callers to make a better error handling when moving to 'realize'. Cc: pbonzini@redhat.com Cc: rth@twiddle.net Cc: ehabkost@redhat.com Cc: mst@redhat.com Cc: jasowang@redhat.com Cc: marcel@redhat.com Cc: alex.williamson@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
9a815774bb
commit
9a7c2a5970
12 changed files with 95 additions and 43 deletions
|
@ -48,6 +48,7 @@
|
|||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/dma.h"
|
||||
#include "qemu/bitops.h"
|
||||
#include "qapi/error.h"
|
||||
|
||||
/* QEMU sends frames smaller than 60 bytes to ethernet nics.
|
||||
* Such frames are rejected by real nics and their emulations.
|
||||
|
@ -494,7 +495,7 @@ static void eepro100_fcp_interrupt(EEPRO100State * s)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void e100_pci_reset(EEPRO100State * s)
|
||||
static void e100_pci_reset(EEPRO100State *s, Error **errp)
|
||||
{
|
||||
E100PCIDeviceInfo *info = eepro100_get_class(s);
|
||||
uint32_t device = s->device;
|
||||
|
@ -570,8 +571,12 @@ static void e100_pci_reset(EEPRO100State * s)
|
|||
/* Power Management Capabilities */
|
||||
int cfg_offset = 0xdc;
|
||||
int r = pci_add_capability(&s->dev, PCI_CAP_ID_PM,
|
||||
cfg_offset, PCI_PM_SIZEOF);
|
||||
assert(r > 0);
|
||||
cfg_offset, PCI_PM_SIZEOF,
|
||||
errp);
|
||||
if (r < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
pci_set_word(pci_conf + cfg_offset + PCI_PM_PMC, 0x7e21);
|
||||
#if 0 /* TODO: replace dummy code for power management emulation. */
|
||||
/* TODO: Power Management Control / Status. */
|
||||
|
@ -1858,12 +1863,17 @@ static void e100_nic_realize(PCIDevice *pci_dev, Error **errp)
|
|||
{
|
||||
EEPRO100State *s = DO_UPCAST(EEPRO100State, dev, pci_dev);
|
||||
E100PCIDeviceInfo *info = eepro100_get_class(s);
|
||||
Error *local_err = NULL;
|
||||
|
||||
TRACE(OTHER, logout("\n"));
|
||||
|
||||
s->device = info->device;
|
||||
|
||||
e100_pci_reset(s);
|
||||
e100_pci_reset(s, &local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Add 64 * 2 EEPROM. i82557 and i82558 support a 64 word EEPROM,
|
||||
* i82559 and later support 64 or 256 word EEPROM. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue