qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 07/13] piix_pci: kill PIIX3IrqState


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH 07/13] piix_pci: kill PIIX3IrqState
Date: Thu, 24 Sep 2009 20:42:31 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (gnu/linux)

Gerd Hoffmann <address@hidden> writes:

> The splitted init + irq setup for the pci bus untangles a initialization
> order issue and allows to remove the PIIX3IrqState struct.  We can
> carry the state directly in PIIX3State insted.
>
> Signed-off-by: Gerd Hoffmann <address@hidden>
> ---
>  hw/piix_pci.c |   37 +++++++++++++++++--------------------
>  1 files changed, 17 insertions(+), 20 deletions(-)
>
> diff --git a/hw/piix_pci.c b/hw/piix_pci.c
> index edd6df0..0be3b02 100644
> --- a/hw/piix_pci.c
> +++ b/hw/piix_pci.c
[...]
> @@ -232,23 +228,24 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int 
> *piix3_devfn, qemu_irq *
>      PCIBus *b;
>      PCIDevice *d;
>      I440FXState *s;
> -    PIIX3IrqState *irq_state = qemu_malloc(sizeof(*irq_state));
> +    PIIX3State *piix3;
>  
> -    irq_state->pic = pic;
>      dev = qdev_create(NULL, "i440FX-pcihost");
>      s = FROM_SYSBUS(I440FXState, sysbus_from_qdev(dev));
> -    b = pci_register_bus(&s->busdev.qdev, "pci.0",
> -                         piix3_set_irq, pci_slot_get_pirq, irq_state, 0, 4);
> +    b = pci_bus_new(&s->busdev.qdev, NULL, 0);

Passes null name to pci_bus_new().  Intentional?  Before, we passed
"pci.0" to pci_register_bus().

>      s->bus = b;
>      qdev_init(dev);
>  
>      d = pci_create_simple(b, 0, "i440FX");
>      *pi440fx_state = DO_UPCAST(PCII440FXState, dev, d);
> -    (*pi440fx_state)->irq_state = irq_state;
>  
> -    irq_state->piix3 = DO_UPCAST(PIIX3State, dev,
> +    piix3 = DO_UPCAST(PIIX3State, dev,
>                                   pci_create_simple(b, -1, "PIIX3"));
> -    *piix3_devfn = irq_state->piix3->dev.devfn;
> +    piix3->pic = pic;
> +    pci_bus_irqs(b, piix3_set_irq, pci_slot_get_pirq, piix3, 4);
> +    (*pi440fx_state)->piix3 = piix3;
> +
> +    *piix3_devfn = piix3->dev.devfn;
>  
>      return b;
>  }
[...]




reply via email to

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