Patchwork [RFC,V1,11/11] config/make: Introduce --enable-xen-pci-passthrough, built it.

login
register
mail settings
Submitter Anthony PERARD
Date Oct. 4, 2011, 2:51 p.m.
Message ID <1317739882-4809-12-git-send-email-anthony.perard@citrix.com>
Download mbox | patch
Permalink /patch/117651/
State New
Headers show

Comments

Anthony PERARD - Oct. 4, 2011, 2:51 p.m.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
 Makefile.target |    7 +++++++
 configure       |   21 +++++++++++++++++++++
 2 files changed, 28 insertions(+), 0 deletions(-)
Stefano Stabellini - Oct. 5, 2011, 11:55 a.m.
On Tue, 4 Oct 2011, Anthony PERARD wrote:
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
> ---
>  Makefile.target |    7 +++++++
>  configure       |   21 +++++++++++++++++++++
>  2 files changed, 28 insertions(+), 0 deletions(-)
> 
> diff --git a/Makefile.target b/Makefile.target
> index f708453..b5fbc18 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -208,6 +208,13 @@ obj-$(CONFIG_NO_XEN) += xen-stub.o
>  
>  obj-i386-$(CONFIG_XEN) += xen_platform.o
>  
> +# Xen PCI Passthrough
> +obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += host-pci-device.o
> +obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough_helpers.o
> +obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough.o
> +obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough_config_init.o
> +obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough_msi.o
> +
>  # Inter-VM PCI shared memory
>  CONFIG_IVSHMEM =
>  ifeq ($(CONFIG_KVM), y)
> diff --git a/configure b/configure
> index 0875f95..b90cfe1 100755
> --- a/configure
> +++ b/configure
> @@ -127,6 +127,7 @@ vnc_png=""
>  vnc_thread="no"
>  xen=""
>  xen_ctrl_version=""
> +xen_pci_passthrough=""
>  linux_aio=""
>  attr=""
>  xfs=""
> @@ -635,6 +636,10 @@ for opt do
>    ;;
>    --enable-xen) xen="yes"
>    ;;
> +  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
> +  ;;
> +  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
> +  ;;
>    --disable-brlapi) brlapi="no"
>    ;;
>    --enable-brlapi) brlapi="yes"
> @@ -972,6 +977,8 @@ echo "                           (affects only QEMU, not qemu-img)"
>  echo "  --enable-mixemu          enable mixer emulation"
>  echo "  --disable-xen            disable xen backend driver support"
>  echo "  --enable-xen             enable xen backend driver support"
> +echo "  --disable-xen-pci-passthrough"
> +echo "  --enable-xen-pci-passthrough"
>  echo "  --disable-brlapi         disable BrlAPI"
>  echo "  --enable-brlapi          enable BrlAPI"
>  echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
> @@ -1335,6 +1342,17 @@ EOF
>    fi
>  fi
>  
> +if test "$xen_pci_passthrough" != "no"; then
> +  if test "$xen" = "yes"; then
> +    xen_pci_passthrough=yes
> +  else
> +    if test "$xen_pci_passthrough" = "yes"; then
> +      feature_not_found "Xen PCI Passthrough without Xen"
> +    fi
> +    xen_pci_passthrough=no
> +  fi
> +fi
> +

Xen works on many OSes that are not Linux, however host-pci-device only
works on Linux. 
For the moment we can turn off xen_pci_passthrough if we are not running
on Linux, but one day not too far I hope will have a host-pci-device
implementation that works on BSDs and Solaris.


>  ##########################################
>  # pkg-config probe
>  
> @@ -3378,6 +3396,9 @@ case "$target_arch2" in
>      if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
>        target_phys_bits=64
>        echo "CONFIG_XEN=y" >> $config_target_mak
> +      if test "$xen_pci_passthrough" = yes; then
> +        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
> +      fi
>      else
>        echo "CONFIG_NO_XEN=y" >> $config_target_mak
>      fi
> -- 
> Anthony PERARD
>

Patch

diff --git a/Makefile.target b/Makefile.target
index f708453..b5fbc18 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -208,6 +208,13 @@  obj-$(CONFIG_NO_XEN) += xen-stub.o
 
 obj-i386-$(CONFIG_XEN) += xen_platform.o
 
+# Xen PCI Passthrough
+obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += host-pci-device.o
+obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough_helpers.o
+obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough.o
+obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough_config_init.o
+obj-i386-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pci_passthrough_msi.o
+
 # Inter-VM PCI shared memory
 CONFIG_IVSHMEM =
 ifeq ($(CONFIG_KVM), y)
diff --git a/configure b/configure
index 0875f95..b90cfe1 100755
--- a/configure
+++ b/configure
@@ -127,6 +127,7 @@  vnc_png=""
 vnc_thread="no"
 xen=""
 xen_ctrl_version=""
+xen_pci_passthrough=""
 linux_aio=""
 attr=""
 xfs=""
@@ -635,6 +636,10 @@  for opt do
   ;;
   --enable-xen) xen="yes"
   ;;
+  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
+  ;;
+  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
+  ;;
   --disable-brlapi) brlapi="no"
   ;;
   --enable-brlapi) brlapi="yes"
@@ -972,6 +977,8 @@  echo "                           (affects only QEMU, not qemu-img)"
 echo "  --enable-mixemu          enable mixer emulation"
 echo "  --disable-xen            disable xen backend driver support"
 echo "  --enable-xen             enable xen backend driver support"
+echo "  --disable-xen-pci-passthrough"
+echo "  --enable-xen-pci-passthrough"
 echo "  --disable-brlapi         disable BrlAPI"
 echo "  --enable-brlapi          enable BrlAPI"
 echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
@@ -1335,6 +1342,17 @@  EOF
   fi
 fi
 
+if test "$xen_pci_passthrough" != "no"; then
+  if test "$xen" = "yes"; then
+    xen_pci_passthrough=yes
+  else
+    if test "$xen_pci_passthrough" = "yes"; then
+      feature_not_found "Xen PCI Passthrough without Xen"
+    fi
+    xen_pci_passthrough=no
+  fi
+fi
+
 ##########################################
 # pkg-config probe
 
@@ -3378,6 +3396,9 @@  case "$target_arch2" in
     if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
       target_phys_bits=64
       echo "CONFIG_XEN=y" >> $config_target_mak
+      if test "$xen_pci_passthrough" = yes; then
+        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
+      fi
     else
       echo "CONFIG_NO_XEN=y" >> $config_target_mak
     fi