v2: * v1 is making so much code inline, so try to move it to an out of line file. * rename pci-assign not pci_assign.
A you know I'm working on supporting IGD passthrough. Here we need load VGABIOS to work out IGD case. Obviously something may be duplicated to kvm codes, we should unify some codes but looks its not easy to finish that in short time. So as Michael suggestion, at least we'd better split assigned_dev_load_option_rom to reuse on both kvm and xen. I don't finish all IGD stuff patches but here I'd like to post some related codes to show how to use assigned_dev_load_option_rom() lately. +static int get_vgabios(XenPCIPassthroughState *s, void *ptr, + XenHostPCIDevice *dev) +{ + int size = 0; + + size = dev_load_option_rom(&s->dev, OBJECT(dev), ptr, dev->domain, + dev->bus, dev->dev, dev->func); + + return size; +} + +int xen_pt_setup_vga(XenPCIPassthroughState *s, XenHostPCIDevice *dev) +{ + void *bios = NULL; + int bios_size = 0; + int rc = 0; + + if (!is_vga_passthrough(dev)) { + return rc; + } + + bios_size = get_vgabios(s, bios, dev); + if (!bios || !bios_size) { + XEN_PT_ERR(NULL, "VGA: getting VBIOS!\n"); + rc = -1; + goto out; + } ... ---------------------------------------------------------------- Tiejun Chen (1): hw/pci-assign: split pci-assign.c hw/i386/kvm/pci-assign.c | 136 +++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------- include/hw/pci/pci-assign.h | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+), 108 deletions(-) create mode 100644 include/hw/pci/pci-assign.h Thanks Tiejun