On Fri, Sep 17, 2010 at 12:14:59PM +0100, anthony.perard@xxxxxxxxxx wrote:
> +static int xen_platform_initfn(PCIDevice *dev)
> +{
> + PCIXenPlatformState *d = DO_UPCAST(PCIXenPlatformState, pci_dev, dev);
> + uint8_t *pci_conf;
> +
> + pci_conf = d->pci_dev.config;
> +
> + pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_XENSOURCE);
> + pci_config_set_device_id(pci_conf, 0x0001);
> + pci_set_word(pci_conf + PCI_COMMAND, PCI_COMMAND_IO |
> PCI_COMMAND_MEMORY);
> +
> + pci_config_set_revision(pci_conf, 1);
> + pci_config_set_prog_interface(pci_conf, 0);
> +
> + pci_config_set_class(pci_conf, PCI_CLASS_OTHERS << 8 | 0x80);
> +
> + pci_conf[PCI_HEADER_TYPE] = PCI_HEADER_TYPE_NORMAL;
Eliminate this line. Don't overwrite multifunction bit.
Please refer to
498238687fd3a2bf3efb32694732f88ceac72e99
6eab3de16d36c48a983366b09d0a0029a5260bc3
> + pci_conf[PCI_INTERRUPT_PIN] = 1;
> +
> + /* Microsoft WHQL requires non-zero subsystem IDs. */
> + /* http://www.pcisig.com/reflector/msg02205.html. */
> + pci_set_word(pci_conf + PCI_SUBSYSTEM_VENDOR_ID,
> pci_conf[PCI_VENDOR_ID]);
> + pci_set_word(pci_conf + PCI_SUBSYSTEM_ID, 0x0001);
> +
> + pci_register_bar(&d->pci_dev, 0, 0x100,
> + PCI_BASE_ADDRESS_SPACE_IO, platform_ioport_map);
> +
> + /* reserve 16MB mmio address for share memory*/
> + pci_register_bar(&d->pci_dev, 1, 0x1000000,
> + PCI_BASE_ADDRESS_MEM_PREFETCH, platform_mmio_map);
> +
> + platform_fixed_ioport_init(d);
> +
> + return 0;
> +}
--
yamahata
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|