All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
	Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] spapr-pci: convert init() callback to realize()
Date: Thu, 13 Mar 2014 10:25:53 +1100	[thread overview]
Message-ID: <5320ED01.9030100@ozlabs.ru> (raw)
In-Reply-To: <20140312135617.GA10381@pixel.localdomain>

On 03/13/2014 12:56 AM, Mike Day wrote:
> On 21/11/13 15:08 +1100, Alexey Kardashevskiy wrote:
>> This converts the old-style init() callback to a new style realize()
>> callback as init() now is supposed to do only trivial initialization.
>>
>> As a part of convertion, this replaces fprintf(stderr) with error_setg()
>> as realize() does not "return" any value, instead it puts the extended
>> error into **errp.
>>
>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> Reviewed-by: Mike Day <ncmike@ncultra.org>
> 
>> ---
>> Changes:
>> v5:
>> * finish_finalize() moved to a separate patch
>> ---
>>  hw/ppc/spapr_pci.c | 44 ++++++++++++++++++++++----------------------
>>  1 file changed, 22 insertions(+), 22 deletions(-)
>>
>> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
>> index 7763149..aeb012d 100644
>> --- a/hw/ppc/spapr_pci.c
>> +++ b/hw/ppc/spapr_pci.c
>> @@ -32,6 +32,7 @@
>>  #include "exec/address-spaces.h"
>>  #include <libfdt.h>
>>  #include "trace.h"
>> +#include "qemu/error-report.h"
>>  
>>  #include "hw/pci/pci_bus.h"
>>  
>> @@ -494,9 +495,9 @@ static AddressSpace *spapr_pci_dma_iommu(PCIBus *bus, void *opaque, int devfn)
>>      return &phb->iommu_as;
>>  }
>>  
>> -static int spapr_phb_init(SysBusDevice *s)
>> +static void spapr_phb_realize(DeviceState *dev, Error **errp)
>>  {
>> -    DeviceState *dev = DEVICE(s);
>> +    SysBusDevice *s = SYS_BUS_DEVICE(dev);
>>      sPAPRPHBState *sphb = SPAPR_PCI_HOST_BRIDGE(s);
>>      PCIHostState *phb = PCI_HOST_BRIDGE(s);
>>      const char *busname;
>> @@ -510,9 +511,9 @@ static int spapr_phb_init(SysBusDevice *s)
>>          if ((sphb->buid != -1) || (sphb->dma_liobn != -1)
>>              || (sphb->mem_win_addr != -1)
>>              || (sphb->io_win_addr != -1)) {
>> -            fprintf(stderr, "Either \"index\" or other parameters must"
>> -                    " be specified for PAPR PHB, not both\n");
>> -            return -1;
>> +            error_setg(errp, "Either \"index\" or other parameters must"
>> +                       " be specified for PAPR PHB, not both");
>> +            return;
>>          }
> 
> Seems like these exit clauses should return an integer here and below.


Nope. Bad initfn (which returns int) became good realizefn (which does not
return anything and uses Error** instead) :)

Thanks for review!

>   
>>          sphb->buid = SPAPR_PCI_BASE_BUID + sphb->index;
>> @@ -525,28 +526,28 @@ static int spapr_phb_init(SysBusDevice *s)
>>      }
>>  
>>      if (sphb->buid == -1) {
>> -        fprintf(stderr, "BUID not specified for PHB\n");
>> -        return -1;
>> +        error_setg(errp, "BUID not specified for PHB");
>> +        return;
>>      }
>>  
>>      if (sphb->dma_liobn == -1) {
>> -        fprintf(stderr, "LIOBN not specified for PHB\n");
>> -        return -1;
>> +        error_setg(errp, "LIOBN not specified for PHB");
>> +        return;
>>      }
>>  
>>      if (sphb->mem_win_addr == -1) {
>> -        fprintf(stderr, "Memory window address not specified for PHB\n");
>> -        return -1;
>> +        error_setg(errp, "Memory window address not specified for PHB");
>> +        return;
>>      }
>>  
>>      if (sphb->io_win_addr == -1) {
>> -        fprintf(stderr, "IO window address not specified for PHB\n");
>> -        return -1;
>> +        error_setg(errp, "IO window address not specified for PHB");
>> +        return;
>>      }
>>  
>>      if (find_phb(spapr, sphb->buid)) {
>> -        fprintf(stderr, "PCI host bridges must have unique BUIDs\n");
>> -        return -1;
>> +        error_setg(errp, "PCI host bridges must have unique BUIDs");
>> +        return;
>>      }
>>  
>>      sphb->dtbusname = g_strdup_printf("pci@%" PRIx64, sphb->buid);
>> @@ -613,8 +614,9 @@ static int spapr_phb_init(SysBusDevice *s)
>>      sphb->tcet = spapr_tce_new_table(dev, sphb->dma_liobn,
>>                                       sphb->dma_window_size);
>>      if (!sphb->tcet) {
>> -        fprintf(stderr, "Unable to create TCE table for %s\n", sphb->dtbusname);
>> -        return -1;
>> +        error_setg(errp, "Unable to create TCE table for %s",
>> +                   sphb->dtbusname);
>> +        return;
>>      }
>>      address_space_init(&sphb->iommu_as, spapr_tce_get_iommu(sphb->tcet),
>>                         sphb->dtbusname);
>> @@ -631,13 +633,12 @@ static int spapr_phb_init(SysBusDevice *s)
>>  
>>          irq = spapr_allocate_lsi(0);
>>          if (!irq) {
>> -            return -1;
>> +            error_setg(errp, "spapr_allocate_lsi failed");
>> +            return;
>>          }
>>  
>>          sphb->lsi_table[i].irq = irq;
>>      }
>> -
>> -    return 0;
>>  }
>>  
>>  static void spapr_phb_reset(DeviceState *qdev)
>> @@ -720,11 +721,10 @@ static const char *spapr_phb_root_bus_path(PCIHostState *host_bridge,
>>  static void spapr_phb_class_init(ObjectClass *klass, void *data)
>>  {
>>      PCIHostBridgeClass *hc = PCI_HOST_BRIDGE_CLASS(klass);
>> -    SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass);
>>      DeviceClass *dc = DEVICE_CLASS(klass);
>>  
>>      hc->root_bus_path = spapr_phb_root_bus_path;
>> -    sdc->init = spapr_phb_init;
>> +    dc->realize = spapr_phb_realize;
>>      dc->props = spapr_phb_properties;
>>      dc->reset = spapr_phb_reset;
>>      dc->vmsd = &vmstate_spapr_pci;
>> -- 
>> 1.8.4.rc4
>>
>>
>>
>>


-- 
Alexey

  reply	other threads:[~2014-03-12 23:26 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-21  4:08 [Qemu-devel] [PATCH 0/4] spapr-pci: prepare for vfio Alexey Kardashevskiy
2013-11-21  4:08 ` [Qemu-devel] [PATCH 1/4] spapr-pci: convert init() callback to realize() Alexey Kardashevskiy
2014-03-12 13:20   ` [Qemu-devel] " Mike Day
2014-03-12 13:56   ` Mike Day
2014-03-12 23:25     ` Alexey Kardashevskiy [this message]
2014-03-13  1:45   ` [Qemu-devel] [PATCH 1/4] " Andreas Färber
2013-11-21  4:08 ` [Qemu-devel] [PATCH 2/4] spapr-pci: introduce a finish_realize() callback Alexey Kardashevskiy
2014-03-12 15:30   ` [Qemu-devel] " Mike Day
2014-03-13  1:56   ` [Qemu-devel] [PATCH 2/4] " Andreas Färber
2014-03-13  7:29     ` Alexey Kardashevskiy
2013-11-21  4:08 ` [Qemu-devel] [PATCH 3/4] spapr-pci: add spapr_pci trace Alexey Kardashevskiy
2014-03-13  1:46   ` Andreas Färber
2014-03-13  7:37     ` Alexey Kardashevskiy
2013-11-21  4:08 ` [Qemu-devel] [PATCH 4/4] spapr-pci: converts fprintf to error_report Alexey Kardashevskiy
2014-03-12 15:41   ` [Qemu-devel] " Mike Day
2014-03-13  1:50   ` [Qemu-devel] [PATCH 4/4] " Andreas Färber
2013-12-05  9:39 ` [Qemu-devel] [PATCH 0/4] spapr-pci: prepare for vfio Alexey Kardashevskiy
2013-12-20  2:47   ` Alexey Kardashevskiy
2014-01-15  7:10     ` Alexey Kardashevskiy
2014-02-12 11:44       ` Alexey Kardashevskiy
2014-03-12  3:33         ` Alexey Kardashevskiy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5320ED01.9030100@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=agraf@suse.de \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.