All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 06/13] convert pci bridge to qdev
Date: Wed, 23 Sep 2009 19:02:00 +0300	[thread overview]
Message-ID: <20090923160200.GC18203@redhat.com> (raw)
In-Reply-To: <1253611767-6483-7-git-send-email-kraxel@redhat.com>

On Tue, Sep 22, 2009 at 11:29:20AM +0200, Gerd Hoffmann wrote:
> @@ -890,15 +890,12 @@ PCIDevice *pci_find_device(int bus_num, int slot, int function)
>      return bus->devices[PCI_DEVFN(slot, function)];
>  }
>  
> -PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did,
> -                        pci_map_irq_fn map_irq, const char *name)
> +static int pci_bridge_initfn(PCIDevice *dev)

pci_bridge_dev_init a better name?

>  {
> -    PCIBridge *s;
> -    s = (PCIBridge *)pci_register_device(bus, name, sizeof(PCIBridge),
> -                                         devfn, NULL, pci_bridge_write_config);
> +    PCIBridge *s = DO_UPCAST(PCIBridge, dev, dev);
>  
> -    pci_config_set_vendor_id(s->dev.config, vid);
> -    pci_config_set_device_id(s->dev.config, did);
> +    pci_config_set_vendor_id(s->dev.config, s->vid);
> +    pci_config_set_device_id(s->dev.config, s->did);
>  
>      s->dev.config[0x04] = 0x06; // command = bus master, pci mem
>      s->dev.config[0x05] = 0x00;
> @@ -911,9 +908,23 @@ PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did,
>      s->dev.config[PCI_HEADER_TYPE] =
>          PCI_HEADER_TYPE_MULTI_FUNCTION | PCI_HEADER_TYPE_BRIDGE; // header_type
>      s->dev.config[0x1E] = 0xa0; // secondary status
> +    return 0;
> +}
>  
> -    s->bus = pci_register_secondary_bus(&s->dev, map_irq, name);
> -    return s->bus;
> +PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did,
> +                        pci_map_irq_fn map_irq, const char *name)
> +{
> +    PCIDevice *dev;
> +    PCIBridge *s;
> +
> +    dev = pci_create_noinit(bus, devfn, "pci-bridge");
> +    qdev_prop_set_uint32(&dev->qdev, "vendorid", vid);
> +    qdev_prop_set_uint32(&dev->qdev, "deviceid", did);
> +    qdev_init(&dev->qdev);
> +
> +    s = DO_UPCAST(PCIBridge, dev, dev);
> +    pci_register_secondary_bus(&s->bus, &s->dev, map_irq, name);
> +    return &s->bus;
>  }
>  
>  static int pci_qdev_init(DeviceState *qdev, DeviceInfo *base)
> @@ -1074,3 +1085,22 @@ static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent)
>                         r->addr, r->addr + r->size - 1);
>      }
>  }
> +
> +static PCIDeviceInfo bridge_info = {
> +    .qdev.name    = "pci-bridge",
> +    .qdev.size    = sizeof(PCIBridge),
> +    .init         = pci_bridge_initfn,
> +    .config_write = pci_bridge_write_config,
> +    .qdev.props   = (Property[]) {
> +        DEFINE_PROP_HEX32("vendorid", PCIBridge, vid, 0),
> +        DEFINE_PROP_HEX32("deviceid", PCIBridge, did, 0),
> +        DEFINE_PROP_END_OF_LIST(),
> +    }
> +};
> +
> +static void pci_register_devices(void)
> +{
> +    pci_qdev_register(&bridge_info);
> +}
> +
> +device_init(pci_register_devices)
> -- 
> 1.6.2.5
> 
> 

  reply	other threads:[~2009-09-23 16:04 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-22  9:29 [Qemu-devel] [PATCH 00/13] qdev: bus management updates Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 01/13] allow qdev busses allocations be inplace Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 02/13] switch scsi bus to inplace allocation Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 03/13] switch usb " Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 04/13] switch ide " Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 05/13] inplace allocation for pci, split irq init Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 06/13] convert pci bridge to qdev Gerd Hoffmann
2009-09-23 16:02   ` Michael S. Tsirkin [this message]
2009-09-24 18:29     ` Markus Armbruster
2009-09-24 18:51       ` Michael S. Tsirkin
2009-09-25  7:19         ` Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 07/13] piix_pci: kill PIIX3IrqState Gerd Hoffmann
2009-09-24 18:42   ` Markus Armbruster
2009-09-25  7:24     ` Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 08/13] qdev: device free fixups Gerd Hoffmann
2009-09-24 18:55   ` Markus Armbruster
2009-09-22  9:29 ` [Qemu-devel] [PATCH 09/13] Add exit callback to DeviceInfo Gerd Hoffmann
2009-09-22 10:06   ` Christoph Egger
2009-09-22 10:19     ` Gerd Hoffmann
2009-09-24 19:02   ` Markus Armbruster
2009-09-25  7:33     ` Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 10/13] Implement scsi device destruction Gerd Hoffmann
2009-09-24 19:15   ` Markus Armbruster
2009-09-25  7:45     ` Gerd Hoffmann
2009-09-25 13:10       ` Markus Armbruster
2009-09-25 14:54         ` Gerd Hoffmann
2009-09-25 15:59         ` Artyom Tarasenko
2009-09-25 16:31           ` Markus Armbruster
2009-09-22  9:29 ` [Qemu-devel] [PATCH 11/13] pci: use qdev for " Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 12/13] pci: move unregister from PCIDevice to PCIDeviceInfo Gerd Hoffmann
2009-09-23 15:58   ` Michael S. Tsirkin
2009-09-25  7:49     ` Gerd Hoffmann
2009-09-29 15:50       ` Michael S. Tsirkin
2009-09-29 18:16         ` Gerd Hoffmann
2009-09-22  9:29 ` [Qemu-devel] [PATCH 13/13] usb: hook unplug into qdev, cleanups + fixes Gerd Hoffmann
2009-09-24 19:18 ` [Qemu-devel] [PATCH 00/13] qdev: bus management updates Markus Armbruster

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=20090923160200.GC18203@redhat.com \
    --to=mst@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@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.