[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4/4] scsi: Convert remaining PCI HBAs to realize
From: |
Peter Crosthwaite |
Subject: |
Re: [Qemu-devel] [PATCH 4/4] scsi: Convert remaining PCI HBAs to realize() |
Date: |
Sat, 21 Feb 2015 10:29:30 -0800 |
On Fri, Feb 20, 2015 at 11:20 AM, Markus Armbruster <address@hidden> wrote:
> These are "am53c974", "dc390", "lsi53c895a", "lsi53c810", "megasas",
> "megasas-gen2".
>
> Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Peter Crosthwaite <address@hidden>
> ---
> hw/scsi/esp-pci.c | 30 +++++++++++-------------------
> hw/scsi/lsi53c895a.c | 14 +++-----------
> hw/scsi/megasas.c | 14 +++-----------
> 3 files changed, 17 insertions(+), 41 deletions(-)
>
> diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c
> index a75fcfa..8d2242d 100644
> --- a/hw/scsi/esp-pci.c
> +++ b/hw/scsi/esp-pci.c
> @@ -28,7 +28,6 @@
> #include "hw/scsi/esp.h"
> #include "trace.h"
> #include "qemu/log.h"
> -#include "qapi/qmp/qerror.h"
>
> #define TYPE_AM53C974_DEVICE "am53c974"
>
> @@ -343,13 +342,12 @@ static const struct SCSIBusInfo esp_pci_scsi_info = {
> .cancel = esp_request_cancelled,
> };
>
> -static int esp_pci_scsi_init(PCIDevice *dev)
> +static void esp_pci_scsi_realize(PCIDevice *dev, Error **errp)
> {
> PCIESPState *pci = PCI_ESP(dev);
> DeviceState *d = DEVICE(dev);
> ESPState *s = &pci->esp;
> uint8_t *pci_conf;
> - Error *err = NULL;
>
> pci_conf = dev->config;
>
> @@ -368,14 +366,8 @@ static int esp_pci_scsi_init(PCIDevice *dev)
>
> scsi_bus_new(&s->bus, sizeof(s->bus), d, &esp_pci_scsi_info, NULL);
> if (!d->hotplugged) {
> - scsi_bus_legacy_handle_cmdline(&s->bus, &err);
> - if (err != NULL) {
> - qerror_report_err(err);
> - error_free(err);
> - return -1;
> - }
> + scsi_bus_legacy_handle_cmdline(&s->bus, errp);
> }
> - return 0;
> }
>
> static void esp_pci_scsi_uninit(PCIDevice *d)
> @@ -390,7 +382,7 @@ static void esp_pci_class_init(ObjectClass *klass, void
> *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>
> - k->init = esp_pci_scsi_init;
> + k->realize = esp_pci_scsi_realize;
> k->exit = esp_pci_scsi_uninit;
> k->vendor_id = PCI_VENDOR_ID_AMD;
> k->device_id = PCI_DEVICE_ID_AMD_SCSI;
> @@ -468,17 +460,19 @@ static void dc390_write_config(PCIDevice *dev,
> }
> }
>
> -static int dc390_scsi_init(PCIDevice *dev)
> +static void dc390_scsi_realize(PCIDevice *dev, Error **errp)
> {
> DC390State *pci = DC390(dev);
> + Error *err = NULL;
> uint8_t *contents;
> uint16_t chksum = 0;
> - int i, ret;
> + int i;
>
> /* init base class */
> - ret = esp_pci_scsi_init(dev);
> - if (ret < 0) {
> - return ret;
> + esp_pci_scsi_realize(dev, &err);
> + if (err) {
> + error_propagate(errp, err);
> + return;
> }
>
> /* EEPROM */
> @@ -505,8 +499,6 @@ static int dc390_scsi_init(PCIDevice *dev)
> chksum = 0x1234 - chksum;
> contents[EE_CHKSUM1] = chksum & 0xff;
> contents[EE_CHKSUM2] = chksum >> 8;
> -
> - return 0;
> }
>
> static void dc390_class_init(ObjectClass *klass, void *data)
> @@ -514,7 +506,7 @@ static void dc390_class_init(ObjectClass *klass, void
> *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>
> - k->init = dc390_scsi_init;
> + k->realize = dc390_scsi_realize;
> k->config_read = dc390_read_config;
> k->config_write = dc390_write_config;
> set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
> index 4ffab03..c5b0cc5 100644
> --- a/hw/scsi/lsi53c895a.c
> +++ b/hw/scsi/lsi53c895a.c
> @@ -19,7 +19,6 @@
> #include "hw/pci/pci.h"
> #include "hw/scsi/scsi.h"
> #include "sysemu/dma.h"
> -#include "qapi/qmp/qerror.h"
>
> //#define DEBUG_LSI
> //#define DEBUG_LSI_REG
> @@ -2089,12 +2088,11 @@ static const struct SCSIBusInfo lsi_scsi_info = {
> .cancel = lsi_request_cancelled
> };
>
> -static int lsi_scsi_init(PCIDevice *dev)
> +static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
> {
> LSIState *s = LSI53C895A(dev);
> DeviceState *d = DEVICE(dev);
> uint8_t *pci_conf;
> - Error *err = NULL;
>
> pci_conf = dev->config;
>
> @@ -2117,14 +2115,8 @@ static int lsi_scsi_init(PCIDevice *dev)
>
> scsi_bus_new(&s->bus, sizeof(s->bus), d, &lsi_scsi_info, NULL);
> if (!d->hotplugged) {
> - scsi_bus_legacy_handle_cmdline(&s->bus, &err);
> - if (err != NULL) {
> - qerror_report_err(err);
> - error_free(err);
> - return -1;
> - }
> + scsi_bus_legacy_handle_cmdline(&s->bus, errp);
> }
> - return 0;
> }
>
> static void lsi_class_init(ObjectClass *klass, void *data)
> @@ -2132,7 +2124,7 @@ static void lsi_class_init(ObjectClass *klass, void
> *data)
> DeviceClass *dc = DEVICE_CLASS(klass);
> PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
>
> - k->init = lsi_scsi_init;
> + k->realize = lsi_scsi_realize;
> k->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
> k->device_id = PCI_DEVICE_ID_LSI_53C895A;
> k->class_id = PCI_CLASS_STORAGE_SCSI;
> diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
> index 69ffdbd..bf83b65 100644
> --- a/hw/scsi/megasas.c
> +++ b/hw/scsi/megasas.c
> @@ -28,7 +28,6 @@
> #include "hw/scsi/scsi.h"
> #include "block/scsi.h"
> #include "trace.h"
> -#include "qapi/qmp/qerror.h"
>
> #include "mfi.h"
>
> @@ -2321,14 +2320,13 @@ static const struct SCSIBusInfo megasas_scsi_info = {
> .cancel = megasas_command_cancel,
> };
>
> -static int megasas_scsi_init(PCIDevice *dev)
> +static void megasas_scsi_realize(PCIDevice *dev, Error **errp)
> {
> DeviceState *d = DEVICE(dev);
> MegasasState *s = MEGASAS(dev);
> MegasasBaseClass *b = MEGASAS_DEVICE_GET_CLASS(s);
> uint8_t *pci_conf;
> int i, bar_type;
> - Error *err = NULL;
>
> pci_conf = dev->config;
>
> @@ -2408,14 +2406,8 @@ static int megasas_scsi_init(PCIDevice *dev)
> scsi_bus_new(&s->bus, sizeof(s->bus), DEVICE(dev),
> &megasas_scsi_info, NULL);
> if (!d->hotplugged) {
> - scsi_bus_legacy_handle_cmdline(&s->bus, &err);
> - if (err != NULL) {
> - qerror_report_err(err);
> - error_free(err);
> - return -1;
> - }
> + scsi_bus_legacy_handle_cmdline(&s->bus, errp);
> }
> - return 0;
> }
>
> static void
> @@ -2509,7 +2501,7 @@ static void megasas_class_init(ObjectClass *oc, void
> *data)
> MegasasBaseClass *e = MEGASAS_DEVICE_CLASS(oc);
> const MegasasInfo *info = data;
>
> - pc->init = megasas_scsi_init;
> + pc->realize = megasas_scsi_realize;
> pc->exit = megasas_scsi_uninit;
> pc->vendor_id = PCI_VENDOR_ID_LSI_LOGIC;
> pc->device_id = info->device_id;
> --
> 1.9.3
>
>