qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-ppc] [PATCH 2/4] libqos: add PCI management in qt


From: Laurent Vivier
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 2/4] libqos: add PCI management in qtest_vboot()/qtest_shutdown()
Date: Tue, 27 Sep 2016 09:33:58 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1


On 27/09/2016 05:48, David Gibson wrote:
> On Mon, Sep 26, 2016 at 04:10:47PM +0200, Laurent Vivier wrote:
>> Signed-off-by: Laurent Vivier <address@hidden>
>> ---
>>  tests/e1000e-test.c         |  2 +-
>>  tests/i440fx-test.c         |  2 +-
>>  tests/ide-test.c            |  2 +-
>>  tests/ivshmem-test.c        |  2 +-
>>  tests/libqos/ahci.c         |  2 +-
>>  tests/libqos/libqos-pc.c    |  5 ++++-
>>  tests/libqos/libqos-spapr.c |  5 ++++-
>>  tests/libqos/libqos.c       | 21 ++++++++++++++++-----
>>  tests/libqos/libqos.h       |  3 +++
>>  tests/libqos/pci-pc.c       |  2 +-
>>  tests/libqos/pci-pc.h       |  3 ++-
>>  tests/q35-test.c            |  2 +-
>>  tests/rtl8139-test.c        |  2 +-
>>  tests/tco-test.c            |  2 +-
>>  tests/usb-hcd-ehci-test.c   |  2 +-
>>  tests/usb-hcd-uhci-test.c   |  2 +-
>>  tests/vhost-user-test.c     |  2 +-
>>  tests/virtio-9p-test.c      |  2 +-
>>  tests/virtio-blk-test.c     |  2 +-
>>  tests/virtio-net-test.c     |  2 +-
>>  tests/virtio-scsi-test.c    |  2 +-
>>  21 files changed, 45 insertions(+), 24 deletions(-)
> 
> Couple of queries below.
> 

...

>> @@ -49,9 +54,15 @@ QOSState *qtest_boot(QOSOps *ops, const char 
>> *cmdline_fmt, ...)
>>   */
>>  void qtest_shutdown(QOSState *qs)
>>  {
>> -    if (qs->alloc && qs->ops && qs->ops->uninit_allocator) {
>> -        qs->ops->uninit_allocator(qs->alloc);
>> -        qs->alloc = NULL;
>> +    if (qs->ops) {
>> +        if (qs->alloc && qs->ops->uninit_allocator) {
>> +            qs->ops->uninit_allocator(qs->alloc);
>> +            qs->alloc = NULL;
>> +        }
>> +        if (qs->pcibus && qs->ops->qpci_free) {
>> +            qs->ops->qpci_free(qs->pcibus);
>> +            qs->pcibus = NULL;
>> +        }
> 
> Is it safe to cleanup the allocator before the PCI stuff?  Usually
> cleanups want to go in the opposite order to initialization.

Yes, you're right. Im' going to fix that.

>>      }
>>      qtest_quit(qs->qts);
>>      g_free(qs);
>> diff --git a/tests/libqos/libqos.h b/tests/libqos/libqos.h
>> index 604980d..a9f6990 100644
>> --- a/tests/libqos/libqos.h
>> +++ b/tests/libqos/libqos.h
>> @@ -8,11 +8,14 @@
>>  typedef struct QOSOps {
>>      QGuestAllocator *(*init_allocator)(QAllocOpts);
>>      void (*uninit_allocator)(QGuestAllocator *);
>> +    QPCIBus *(*qpci_init)(QGuestAllocator *alloc);
>> +    void (*qpci_free)(QPCIBus *bus);
>>  } QOSOps;
>>  
>>  typedef struct QOSState {
>>      QTestState *qts;
>>      QGuestAllocator *alloc;
>> +    QPCIBus *pcibus;
>>      QOSOps *ops;
>>  } QOSState;
>>  
>> diff --git a/tests/libqos/pci-pc.c b/tests/libqos/pci-pc.c
>> index 82066b8..9600ed6 100644
>> --- a/tests/libqos/pci-pc.c
>> +++ b/tests/libqos/pci-pc.c
>> @@ -212,7 +212,7 @@ static void qpci_pc_iounmap(QPCIBus *bus, void *data)
>>      /* FIXME */
>>  }
>>  
>> -QPCIBus *qpci_init_pc(void)
>> +QPCIBus *qpci_init_pc(QGuestAllocator *alloc)
>>  {
>>      QPCIBusPC *ret;
>>
> 
> You've added the alloc parameter, but you don't actually appear to use it..

It's normal: qpci_init_spapr() needs it and to have the same function
signature we have to add it to qpci_init_pc() even if it is not used.
(it's why I have added a lot of of qpci_init_pc(NULL)), so we can add
init in a generic way in "struct QOSOps". Perhaps we can use "void
*opaque" instead of "QGuestAllocator *alloc"?

Thanks,
Laurent



reply via email to

[Prev in Thread] Current Thread [Next in Thread]