Patchwork [RESEND,v5,4/4] vfio: Enable vfio-pci and mark supported

login
register
mail settings
Submitter Alex Williamson
Date Sept. 26, 2012, 3:38 a.m.
Message ID <20120926033856.29058.47896.stgit@bling.home>
Download mbox | patch
Permalink /patch/186944/
State New
Headers show

Comments

Alex Williamson - Sept. 26, 2012, 3:38 a.m.
Enabled for all softmmu guests supporting PCI on Linux hosts.  Note
that currently only x86 hosts have the kernel side VFIO IOMMU support
for this.  PPC (g3beige) is the only non-x86 guest known to work.
ARM (veratile) hangs in firmware, others untested.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
---

 MAINTAINERS      |    5 +++++
 configure        |    6 ++++++
 hw/Makefile.objs |    3 ++-
 3 files changed, 13 insertions(+), 1 deletion(-)
Anthony Liguori - Sept. 26, 2012, 1:50 p.m.
Alex Williamson <alex.williamson@redhat.com> writes:

> Enabled for all softmmu guests supporting PCI on Linux hosts.  Note
> that currently only x86 hosts have the kernel side VFIO IOMMU support
> for this.  PPC (g3beige) is the only non-x86 guest known to work.
> ARM (veratile) hangs in firmware, others untested.
>
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>
>  MAINTAINERS      |    5 +++++
>  configure        |    6 ++++++
>  hw/Makefile.objs |    3 ++-
>  3 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 25733fc..29aac4f 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -474,6 +474,11 @@ M: Gerd Hoffmann <kraxel@redhat.com>
>  S: Maintained
>  F: hw/usb*
>  
> +VFIO
> +M: Alex Williamson <alex.williamson@redhat.com>
> +S: Supported
> +F: hw/vfio*
> +
>  vhost
>  M: Michael S. Tsirkin <mst@redhat.com>
>  S: Supported
> diff --git a/configure b/configure
> index 1b86517..c2c0d4f 100755
> --- a/configure
> +++ b/configure
> @@ -165,6 +165,7 @@ attr=""
>  libattr=""
>  xfs=""
>  
> +vfio_pci="no"
>  vhost_net="no"
>  kvm="no"
>  gprof="no"
> @@ -509,6 +510,7 @@ Haiku)
>    usb="linux"
>    kvm="yes"
>    vhost_net="yes"
> +  vfio_pci="yes"
>    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
>      audio_possible_drivers="$audio_possible_drivers fmod"
>    fi
> @@ -3174,6 +3176,7 @@ echo "libiscsi support  $libiscsi"
>  echo "build guest agent $guest_agent"
>  echo "seccomp support   $seccomp"
>  echo "coroutine backend $coroutine_backend"
> +echo "VFIO PCI support  $vfio_pci"
>  
>  if test "$sdl_too_old" = "yes"; then
>  echo "-> Your SDL version is too old - please upgrade to have SDL support"
> @@ -3911,6 +3914,9 @@ if test "$target_softmmu" = "yes" ; then
>    if test "$smartcard_nss" = "yes" ; then
>      echo "subdir-$target: subdir-libcacard" >> $config_host_mak
>    fi
> +  if test "$vfio_pci" = "yes" ; then
> +    echo "CONFIG_VFIO_PCI=y" >> $config_target_mak
> +  fi
>    case "$target_arch2" in
>      i386|x86_64)
>        echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
> diff --git a/hw/Makefile.objs b/hw/Makefile.objs
> index 6dfebd2..7f8d3e4 100644
> --- a/hw/Makefile.objs
> +++ b/hw/Makefile.objs
> @@ -198,7 +198,8 @@ obj-$(CONFIG_VGA) += vga.o
>  obj-$(CONFIG_SOFTMMU) += device-hotplug.o
>  obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
>  
> -# Inter-VM PCI shared memory
> +# Inter-VM PCI shared memory & VFIO PCI device assignment
>  ifeq ($(CONFIG_PCI), y)
>  obj-$(CONFIG_KVM) += ivshmem.o
> +obj-$(CONFIG_VFIO_PCI) += vfio_pci.o

Why not just make this

obj-$(CONFIG_LINUX) += vfio_pci.o

?

All you're doing in configure is setting CONFIG_VFIO_PCI if
CONFIG_LINUX.

Regards,

Anthony Liguori

>  endif
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alex Williamson - Sept. 26, 2012, 2:15 p.m.
On Wed, 2012-09-26 at 08:50 -0500, Anthony Liguori wrote:
> Alex Williamson <alex.williamson@redhat.com> writes:
> 
> > Enabled for all softmmu guests supporting PCI on Linux hosts.  Note
> > that currently only x86 hosts have the kernel side VFIO IOMMU support
> > for this.  PPC (g3beige) is the only non-x86 guest known to work.
> > ARM (veratile) hangs in firmware, others untested.
> >
> > Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> > Acked-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >
> >  MAINTAINERS      |    5 +++++
> >  configure        |    6 ++++++
> >  hw/Makefile.objs |    3 ++-
> >  3 files changed, 13 insertions(+), 1 deletion(-)
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index 25733fc..29aac4f 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -474,6 +474,11 @@ M: Gerd Hoffmann <kraxel@redhat.com>
> >  S: Maintained
> >  F: hw/usb*
> >  
> > +VFIO
> > +M: Alex Williamson <alex.williamson@redhat.com>
> > +S: Supported
> > +F: hw/vfio*
> > +
> >  vhost
> >  M: Michael S. Tsirkin <mst@redhat.com>
> >  S: Supported
> > diff --git a/configure b/configure
> > index 1b86517..c2c0d4f 100755
> > --- a/configure
> > +++ b/configure
> > @@ -165,6 +165,7 @@ attr=""
> >  libattr=""
> >  xfs=""
> >  
> > +vfio_pci="no"
> >  vhost_net="no"
> >  kvm="no"
> >  gprof="no"
> > @@ -509,6 +510,7 @@ Haiku)
> >    usb="linux"
> >    kvm="yes"
> >    vhost_net="yes"
> > +  vfio_pci="yes"
> >    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
> >      audio_possible_drivers="$audio_possible_drivers fmod"
> >    fi
> > @@ -3174,6 +3176,7 @@ echo "libiscsi support  $libiscsi"
> >  echo "build guest agent $guest_agent"
> >  echo "seccomp support   $seccomp"
> >  echo "coroutine backend $coroutine_backend"
> > +echo "VFIO PCI support  $vfio_pci"
> >  
> >  if test "$sdl_too_old" = "yes"; then
> >  echo "-> Your SDL version is too old - please upgrade to have SDL support"
> > @@ -3911,6 +3914,9 @@ if test "$target_softmmu" = "yes" ; then
> >    if test "$smartcard_nss" = "yes" ; then
> >      echo "subdir-$target: subdir-libcacard" >> $config_host_mak
> >    fi
> > +  if test "$vfio_pci" = "yes" ; then
> > +    echo "CONFIG_VFIO_PCI=y" >> $config_target_mak
> > +  fi
> >    case "$target_arch2" in
> >      i386|x86_64)
> >        echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
> > diff --git a/hw/Makefile.objs b/hw/Makefile.objs
> > index 6dfebd2..7f8d3e4 100644
> > --- a/hw/Makefile.objs
> > +++ b/hw/Makefile.objs
> > @@ -198,7 +198,8 @@ obj-$(CONFIG_VGA) += vga.o
> >  obj-$(CONFIG_SOFTMMU) += device-hotplug.o
> >  obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
> >  
> > -# Inter-VM PCI shared memory
> > +# Inter-VM PCI shared memory & VFIO PCI device assignment
> >  ifeq ($(CONFIG_PCI), y)
> >  obj-$(CONFIG_KVM) += ivshmem.o
> > +obj-$(CONFIG_VFIO_PCI) += vfio_pci.o
> 
> Why not just make this
> 
> obj-$(CONFIG_LINUX) += vfio_pci.o
> 
> ?
> 
> All you're doing in configure is setting CONFIG_VFIO_PCI if
> CONFIG_LINUX.

Ok.  I thought I needed linux + softmmu + pci, but maybe the softmmu is
implied with CONFIG_PCI?  Thanks,

Alex
Anthony Liguori - Sept. 26, 2012, 4:41 p.m.
Alex Williamson <alex.williamson@redhat.com> writes:

> On Wed, 2012-09-26 at 08:50 -0500, Anthony Liguori wrote:
>> Alex Williamson <alex.williamson@redhat.com> writes:
>> 
>> > Enabled for all softmmu guests supporting PCI on Linux hosts.  Note
>> > that currently only x86 hosts have the kernel side VFIO IOMMU support
>> > for this.  PPC (g3beige) is the only non-x86 guest known to work.
>> > ARM (veratile) hangs in firmware, others untested.
>> >
>> > Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
>> > Acked-by: Michael S. Tsirkin <mst@redhat.com>
>> > ---
>> >
>> >  MAINTAINERS      |    5 +++++
>> >  configure        |    6 ++++++
>> >  hw/Makefile.objs |    3 ++-
>> >  3 files changed, 13 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/MAINTAINERS b/MAINTAINERS
>> > index 25733fc..29aac4f 100644
>> > --- a/MAINTAINERS
>> > +++ b/MAINTAINERS
>> > @@ -474,6 +474,11 @@ M: Gerd Hoffmann <kraxel@redhat.com>
>> >  S: Maintained
>> >  F: hw/usb*
>> >  
>> > +VFIO
>> > +M: Alex Williamson <alex.williamson@redhat.com>
>> > +S: Supported
>> > +F: hw/vfio*
>> > +
>> >  vhost
>> >  M: Michael S. Tsirkin <mst@redhat.com>
>> >  S: Supported
>> > diff --git a/configure b/configure
>> > index 1b86517..c2c0d4f 100755
>> > --- a/configure
>> > +++ b/configure
>> > @@ -165,6 +165,7 @@ attr=""
>> >  libattr=""
>> >  xfs=""
>> >  
>> > +vfio_pci="no"
>> >  vhost_net="no"
>> >  kvm="no"
>> >  gprof="no"
>> > @@ -509,6 +510,7 @@ Haiku)
>> >    usb="linux"
>> >    kvm="yes"
>> >    vhost_net="yes"
>> > +  vfio_pci="yes"
>> >    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
>> >      audio_possible_drivers="$audio_possible_drivers fmod"
>> >    fi
>> > @@ -3174,6 +3176,7 @@ echo "libiscsi support  $libiscsi"
>> >  echo "build guest agent $guest_agent"
>> >  echo "seccomp support   $seccomp"
>> >  echo "coroutine backend $coroutine_backend"
>> > +echo "VFIO PCI support  $vfio_pci"
>> >  
>> >  if test "$sdl_too_old" = "yes"; then
>> >  echo "-> Your SDL version is too old - please upgrade to have SDL support"
>> > @@ -3911,6 +3914,9 @@ if test "$target_softmmu" = "yes" ; then
>> >    if test "$smartcard_nss" = "yes" ; then
>> >      echo "subdir-$target: subdir-libcacard" >> $config_host_mak
>> >    fi
>> > +  if test "$vfio_pci" = "yes" ; then
>> > +    echo "CONFIG_VFIO_PCI=y" >> $config_target_mak
>> > +  fi
>> >    case "$target_arch2" in
>> >      i386|x86_64)
>> >        echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
>> > diff --git a/hw/Makefile.objs b/hw/Makefile.objs
>> > index 6dfebd2..7f8d3e4 100644
>> > --- a/hw/Makefile.objs
>> > +++ b/hw/Makefile.objs
>> > @@ -198,7 +198,8 @@ obj-$(CONFIG_VGA) += vga.o
>> >  obj-$(CONFIG_SOFTMMU) += device-hotplug.o
>> >  obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
>> >  
>> > -# Inter-VM PCI shared memory
>> > +# Inter-VM PCI shared memory & VFIO PCI device assignment
>> >  ifeq ($(CONFIG_PCI), y)
>> >  obj-$(CONFIG_KVM) += ivshmem.o
>> > +obj-$(CONFIG_VFIO_PCI) += vfio_pci.o
>> 
>> Why not just make this
>> 
>> obj-$(CONFIG_LINUX) += vfio_pci.o
>> 
>> ?
>> 
>> All you're doing in configure is setting CONFIG_VFIO_PCI if
>> CONFIG_LINUX.
>
> Ok.  I thought I needed linux + softmmu + pci, but maybe the softmmu is
> implied with CONFIG_PCI?  Thanks,

obj-y is only used for softmmu so your covered.

Regards,

Anthony Liguori

>
> Alex
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alex Williamson - Sept. 26, 2012, 4:52 p.m.
On Wed, 2012-09-26 at 11:41 -0500, Anthony Liguori wrote:
> Alex Williamson <alex.williamson@redhat.com> writes:
> 
> > On Wed, 2012-09-26 at 08:50 -0500, Anthony Liguori wrote:
> >> Alex Williamson <alex.williamson@redhat.com> writes:
> >> 
> >> > Enabled for all softmmu guests supporting PCI on Linux hosts.  Note
> >> > that currently only x86 hosts have the kernel side VFIO IOMMU support
> >> > for this.  PPC (g3beige) is the only non-x86 guest known to work.
> >> > ARM (veratile) hangs in firmware, others untested.
> >> >
> >> > Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> >> > Acked-by: Michael S. Tsirkin <mst@redhat.com>
> >> > ---
> >> >
> >> >  MAINTAINERS      |    5 +++++
> >> >  configure        |    6 ++++++
> >> >  hw/Makefile.objs |    3 ++-
> >> >  3 files changed, 13 insertions(+), 1 deletion(-)
> >> >
> >> > diff --git a/MAINTAINERS b/MAINTAINERS
> >> > index 25733fc..29aac4f 100644
> >> > --- a/MAINTAINERS
> >> > +++ b/MAINTAINERS
> >> > @@ -474,6 +474,11 @@ M: Gerd Hoffmann <kraxel@redhat.com>
> >> >  S: Maintained
> >> >  F: hw/usb*
> >> >  
> >> > +VFIO
> >> > +M: Alex Williamson <alex.williamson@redhat.com>
> >> > +S: Supported
> >> > +F: hw/vfio*
> >> > +
> >> >  vhost
> >> >  M: Michael S. Tsirkin <mst@redhat.com>
> >> >  S: Supported
> >> > diff --git a/configure b/configure
> >> > index 1b86517..c2c0d4f 100755
> >> > --- a/configure
> >> > +++ b/configure
> >> > @@ -165,6 +165,7 @@ attr=""
> >> >  libattr=""
> >> >  xfs=""
> >> >  
> >> > +vfio_pci="no"
> >> >  vhost_net="no"
> >> >  kvm="no"
> >> >  gprof="no"
> >> > @@ -509,6 +510,7 @@ Haiku)
> >> >    usb="linux"
> >> >    kvm="yes"
> >> >    vhost_net="yes"
> >> > +  vfio_pci="yes"
> >> >    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
> >> >      audio_possible_drivers="$audio_possible_drivers fmod"
> >> >    fi
> >> > @@ -3174,6 +3176,7 @@ echo "libiscsi support  $libiscsi"
> >> >  echo "build guest agent $guest_agent"
> >> >  echo "seccomp support   $seccomp"
> >> >  echo "coroutine backend $coroutine_backend"
> >> > +echo "VFIO PCI support  $vfio_pci"
> >> >  
> >> >  if test "$sdl_too_old" = "yes"; then
> >> >  echo "-> Your SDL version is too old - please upgrade to have SDL support"
> >> > @@ -3911,6 +3914,9 @@ if test "$target_softmmu" = "yes" ; then
> >> >    if test "$smartcard_nss" = "yes" ; then
> >> >      echo "subdir-$target: subdir-libcacard" >> $config_host_mak
> >> >    fi
> >> > +  if test "$vfio_pci" = "yes" ; then
> >> > +    echo "CONFIG_VFIO_PCI=y" >> $config_target_mak
> >> > +  fi
> >> >    case "$target_arch2" in
> >> >      i386|x86_64)
> >> >        echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
> >> > diff --git a/hw/Makefile.objs b/hw/Makefile.objs
> >> > index 6dfebd2..7f8d3e4 100644
> >> > --- a/hw/Makefile.objs
> >> > +++ b/hw/Makefile.objs
> >> > @@ -198,7 +198,8 @@ obj-$(CONFIG_VGA) += vga.o
> >> >  obj-$(CONFIG_SOFTMMU) += device-hotplug.o
> >> >  obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
> >> >  
> >> > -# Inter-VM PCI shared memory
> >> > +# Inter-VM PCI shared memory & VFIO PCI device assignment
> >> >  ifeq ($(CONFIG_PCI), y)
> >> >  obj-$(CONFIG_KVM) += ivshmem.o
> >> > +obj-$(CONFIG_VFIO_PCI) += vfio_pci.o
> >> 
> >> Why not just make this
> >> 
> >> obj-$(CONFIG_LINUX) += vfio_pci.o
> >> 
> >> ?
> >> 
> >> All you're doing in configure is setting CONFIG_VFIO_PCI if
> >> CONFIG_LINUX.
> >
> > Ok.  I thought I needed linux + softmmu + pci, but maybe the softmmu is
> > implied with CONFIG_PCI?  Thanks,
> 
> obj-y is only used for softmmu so your covered.

Great, I'll make the change.  Thanks,

Alex

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 25733fc..29aac4f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -474,6 +474,11 @@  M: Gerd Hoffmann <kraxel@redhat.com>
 S: Maintained
 F: hw/usb*
 
+VFIO
+M: Alex Williamson <alex.williamson@redhat.com>
+S: Supported
+F: hw/vfio*
+
 vhost
 M: Michael S. Tsirkin <mst@redhat.com>
 S: Supported
diff --git a/configure b/configure
index 1b86517..c2c0d4f 100755
--- a/configure
+++ b/configure
@@ -165,6 +165,7 @@  attr=""
 libattr=""
 xfs=""
 
+vfio_pci="no"
 vhost_net="no"
 kvm="no"
 gprof="no"
@@ -509,6 +510,7 @@  Haiku)
   usb="linux"
   kvm="yes"
   vhost_net="yes"
+  vfio_pci="yes"
   if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
     audio_possible_drivers="$audio_possible_drivers fmod"
   fi
@@ -3174,6 +3176,7 @@  echo "libiscsi support  $libiscsi"
 echo "build guest agent $guest_agent"
 echo "seccomp support   $seccomp"
 echo "coroutine backend $coroutine_backend"
+echo "VFIO PCI support  $vfio_pci"
 
 if test "$sdl_too_old" = "yes"; then
 echo "-> Your SDL version is too old - please upgrade to have SDL support"
@@ -3911,6 +3914,9 @@  if test "$target_softmmu" = "yes" ; then
   if test "$smartcard_nss" = "yes" ; then
     echo "subdir-$target: subdir-libcacard" >> $config_host_mak
   fi
+  if test "$vfio_pci" = "yes" ; then
+    echo "CONFIG_VFIO_PCI=y" >> $config_target_mak
+  fi
   case "$target_arch2" in
     i386|x86_64)
       echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
diff --git a/hw/Makefile.objs b/hw/Makefile.objs
index 6dfebd2..7f8d3e4 100644
--- a/hw/Makefile.objs
+++ b/hw/Makefile.objs
@@ -198,7 +198,8 @@  obj-$(CONFIG_VGA) += vga.o
 obj-$(CONFIG_SOFTMMU) += device-hotplug.o
 obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
 
-# Inter-VM PCI shared memory
+# Inter-VM PCI shared memory & VFIO PCI device assignment
 ifeq ($(CONFIG_PCI), y)
 obj-$(CONFIG_KVM) += ivshmem.o
+obj-$(CONFIG_VFIO_PCI) += vfio_pci.o
 endif