diff mbox

[v8,RESEND,09/10] xen, gfx passthrough: register host bridge specific to passthrough

Message ID 1433493901-9332-10-git-send-email-tiejun.chen@intel.com
State New
Headers show

Commit Message

Tiejun Chen June 5, 2015, 8:45 a.m. UTC
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(-)

Comments

Stefano Stabellini July 1, 2015, 3:58 p.m. UTC | #1
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
> 
>
Tiejun Chen July 3, 2015, 3:11 a.m. UTC | #2
>>   #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 mbox

Patch

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) {