[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH v4 6/6] pci_bridge: make pci bridge aware of pci
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] Re: [PATCH v4 6/6] pci_bridge: make pci bridge aware of pci multi function bit. |
Date: |
Mon, 21 Jun 2010 16:22:41 +0300 |
User-agent: |
Mutt/1.5.19 (2009-01-05) |
On Mon, Jun 21, 2010 at 03:04:01PM +0900, Isaku Yamahata wrote:
> make pci bridge aware of pci multi function property and let pci generic
> code to set the bit.
>
> Cc: Blue Swirl <address@hidden>
> Signed-off-by: Isaku Yamahata <address@hidden>
> ---
> hw/apb_pci.c | 7 ++-----
> hw/dec_pci.c | 2 +-
> hw/pci.c | 5 +++--
> hw/pci.h | 3 ++-
> 4 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/hw/apb_pci.c b/hw/apb_pci.c
> index 69a774d..4b78704 100644
> --- a/hw/apb_pci.c
> +++ b/hw/apb_pci.c
> @@ -312,9 +312,6 @@ static void apb_pci_bridge_init(PCIBus *b)
> PCI_STATUS_FAST_BACK | PCI_STATUS_66MHZ |
> PCI_STATUS_DEVSEL_MEDIUM);
> pci_set_byte(dev->config + PCI_REVISION_ID, 0x11);
> - pci_set_byte(dev->config + PCI_HEADER_TYPE,
> - pci_get_byte(dev->config + PCI_HEADER_TYPE) |
> - PCI_HEADER_TYPE_MULTI_FUNCTION);
> }
>
> PCIBus *pci_apb_init(target_phys_addr_t special_base,
Was not the above added by another patch in these series?
If yes please just move the chunk here, do not change the same
line twice.
> @@ -350,13 +347,13 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base,
> pci_create_simple(d->bus, 0, "pbm");
>
> /* APB secondary busses */
> - *bus2 = pci_bridge_init(d->bus, PCI_DEVFN(1, 0),
> + *bus2 = pci_bridge_init(d->bus, PCI_DEVFN(1, 0), 1,
> PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_SIMBA,
> pci_apb_map_irq,
> "Advanced PCI Bus secondary bridge 1");
> apb_pci_bridge_init(*bus2);
>
> - *bus3 = pci_bridge_init(d->bus, PCI_DEVFN(1, 1),
> + *bus3 = pci_bridge_init(d->bus, PCI_DEVFN(1, 1), 1,
> PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_SIMBA,
> pci_apb_map_irq,
> "Advanced PCI Bus secondary bridge 2");
> diff --git a/hw/dec_pci.c b/hw/dec_pci.c
> index 83ce4cd..f042f80 100644
> --- a/hw/dec_pci.c
> +++ b/hw/dec_pci.c
> @@ -55,7 +55,7 @@ PCIBus *pci_dec_21154_init(PCIBus *parent_bus, int devfn)
>
> dev = qdev_create(NULL, "dec-21154");
> qdev_init_nofail(dev);
> - ret = pci_bridge_init(parent_bus, devfn,
> + ret = pci_bridge_init(parent_bus, devfn, 0,
> PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21154,
> dec_map_irq, "DEC 21154 PCI-PCI bridge");
>
> diff --git a/hw/pci.c b/hw/pci.c
> index abc3c1d..7e4fbae 100644
> --- a/hw/pci.c
> +++ b/hw/pci.c
> @@ -1613,13 +1613,14 @@ static int pci_bridge_exitfn(PCIDevice *pci_dev)
> return 0;
> }
>
> -PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did,
> +PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint8_t mf,
> + uint16_t vid, uint16_t did,
> pci_map_irq_fn map_irq, const char *name)
> {
> PCIDevice *dev;
> PCIBridge *s;
>
> - dev = pci_create(bus, devfn, "pci-bridge");
> + dev = pci_create_mf(bus, devfn, mf, "pci-bridge");
> qdev_prop_set_uint32(&dev->qdev, "vendorid", vid);
> qdev_prop_set_uint32(&dev->qdev, "deviceid", did);
> qdev_init_nofail(&dev->qdev);
> diff --git a/hw/pci.h b/hw/pci.h
> index 685fd44..889bbea 100644
> --- a/hw/pci.h
> +++ b/hw/pci.h
> @@ -231,7 +231,8 @@ int pci_read_devaddr(Monitor *mon, const char *addr, int
> *domp, int *busp,
>
> void do_pci_info_print(Monitor *mon, const QObject *data);
> void do_pci_info(Monitor *mon, QObject **ret_data);
> -PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did,
> +PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint8_t mf,
make it bool multifunction
even better - can this be initialized with qdev somehow?
> + uint16_t vid, uint16_t did,
> pci_map_irq_fn map_irq, const char *name);
> PCIDevice *pci_bridge_get_device(PCIBus *bus);
>
> --
> 1.6.6.1
- [Qemu-devel] [PATCH v4 0/6] pci: multi-function bit fixes, Isaku Yamahata, 2010/06/21
- [Qemu-devel] [PATCH v4 6/6] pci_bridge: make pci bridge aware of pci multi function bit., Isaku Yamahata, 2010/06/21
- [Qemu-devel] Re: [PATCH v4 6/6] pci_bridge: make pci bridge aware of pci multi function bit.,
Michael S. Tsirkin <=
- [Qemu-devel] [PATCH v4 5/6] pci: use pci_create_simple_mf(), Isaku Yamahata, 2010/06/21
- [Qemu-devel] [PATCH v4 2/6] pci: remove PCIDeviceInfo::header_type, Isaku Yamahata, 2010/06/21
- [Qemu-devel] [PATCH v4 4/6] pci: don't overwrite multi functio bit in pci header type., Isaku Yamahata, 2010/06/21
- [Qemu-devel] [PATCH v4 3/6] pci: set PCI multi-function bit appropriately., Isaku Yamahata, 2010/06/21