Message ID | 1433493901-9332-10-git-send-email-tiejun.chen@intel.com |
---|---|
State | New |
Headers | show |
On Fri, 5 Jun 2015, Tiejun Chen wrote: > Just register that pci host bridge specific to passthrough. > > Signed-off-by: Tiejun Chen <tiejun.chen@intel.com> > --- > hw/i386/pc_piix.c | 27 +++++++++++++++++++++++++-- > 1 file changed, 25 insertions(+), 2 deletions(-) > > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > index 6054b5a..938b1be 100644 > --- a/hw/i386/pc_piix.c > +++ b/hw/i386/pc_piix.c > @@ -50,7 +50,8 @@ > #include "cpu.h" > #include "qemu/error-report.h" > #ifdef CONFIG_XEN > -# include <xen/hvm/hvm_info_table.h> > +#include <xen/hvm/hvm_info_table.h> > +#include "hw/xen/xen_pt.h" > #endif > > #define MAX_IDE_BUS 2 > @@ -442,11 +443,33 @@ static void pc_init_isa(MachineState *machine) > } > > #ifdef CONFIG_XEN > +static void igd_passthrough_pc_init_pci(MachineState *machine) > +{ > + pc_init1(machine, > + TYPE_I440FX_PCI_HOST_BRIDGE, > + TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE); > +} > + > +static void pc_init_pci(MachineState *machine) > +{ > + pc_init1(machine, > + TYPE_I440FX_PCI_HOST_BRIDGE, > + TYPE_I440FX_PCI_DEVICE); > +} > + > +static void pc_xen_hvm_init_pci(MachineState *machine) > +{ > + if (has_igd_gfx_passthru) > + igd_passthrough_pc_init_pci(machine); > + else > + pc_init_pci(machine); > +} I don't see any value in introducing pc_init_pci and igd_passthrough_pc_init_pci. I would expand both of them here. > static void pc_xen_hvm_init(MachineState *machine) > { > PCIBus *bus; > > - pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, TYPE_I440FX_PCI_DEVICE); > + pc_xen_hvm_init_pci(machine); > > bus = pci_find_primary_bus(); > if (bus != NULL) { > -- > 1.9.1 > >
>> #ifdef CONFIG_XEN >> +static void igd_passthrough_pc_init_pci(MachineState *machine) >> +{ >> + pc_init1(machine, >> + TYPE_I440FX_PCI_HOST_BRIDGE, >> + TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE); >> +} >> + >> +static void pc_init_pci(MachineState *machine) >> +{ >> + pc_init1(machine, >> + TYPE_I440FX_PCI_HOST_BRIDGE, >> + TYPE_I440FX_PCI_DEVICE); >> +} >> + >> +static void pc_xen_hvm_init_pci(MachineState *machine) >> +{ >> + if (has_igd_gfx_passthru) >> + igd_passthrough_pc_init_pci(machine); >> + else >> + pc_init_pci(machine); >> +} > > I don't see any value in introducing pc_init_pci and > igd_passthrough_pc_init_pci. I would expand both of them here. > Agree, and what about this? static void pc_xen_hvm_init_pci(MachineState *machine) { const char *pci_type = has_igd_gfx_passthru ? TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE : TYPE_I440FX_PCI_DEVICE; pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, pci_type); } Thanks Tiejun
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 6054b5a..938b1be 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -50,7 +50,8 @@ #include "cpu.h" #include "qemu/error-report.h" #ifdef CONFIG_XEN -# include <xen/hvm/hvm_info_table.h> +#include <xen/hvm/hvm_info_table.h> +#include "hw/xen/xen_pt.h" #endif #define MAX_IDE_BUS 2 @@ -442,11 +443,33 @@ static void pc_init_isa(MachineState *machine) } #ifdef CONFIG_XEN +static void igd_passthrough_pc_init_pci(MachineState *machine) +{ + pc_init1(machine, + TYPE_I440FX_PCI_HOST_BRIDGE, + TYPE_IGD_PASSTHROUGH_I440FX_PCI_DEVICE); +} + +static void pc_init_pci(MachineState *machine) +{ + pc_init1(machine, + TYPE_I440FX_PCI_HOST_BRIDGE, + TYPE_I440FX_PCI_DEVICE); +} + +static void pc_xen_hvm_init_pci(MachineState *machine) +{ + if (has_igd_gfx_passthru) + igd_passthrough_pc_init_pci(machine); + else + pc_init_pci(machine); +} + static void pc_xen_hvm_init(MachineState *machine) { PCIBus *bus; - pc_init1(machine, TYPE_I440FX_PCI_HOST_BRIDGE, TYPE_I440FX_PCI_DEVICE); + pc_xen_hvm_init_pci(machine); bus = pci_find_primary_bus(); if (bus != NULL) {
Just register that pci host bridge specific to passthrough. Signed-off-by: Tiejun Chen <tiejun.chen@intel.com> --- hw/i386/pc_piix.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-)