DPDK patches and discussions
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Santosh Shukla <sshukla@mvista.com>
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v5 10/11] virtio: pci: add dummy func definition for in/outb for non-x86 arch
Date: Fri, 29 Jan 2016 15:01:12 +0800	[thread overview]
Message-ID: <20160129070112.GO4257@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <1453203972-24855-11-git-send-email-sshukla@mvista.com>

On Tue, Jan 19, 2016 at 05:16:11PM +0530, Santosh Shukla wrote:
> For non-x86 arch, Compiler will throw build error for in/out apis. Including
> dummy api function so to pass build.
> 
> Note that: For virtio to work for non-x86 arch - RTE_EAL_VFIO is the only
> supported method. RTE_EAL_IGB_UIO is not supported for non-x86 arch.
> 
> So, Virtio support for arch and supported interface by that arch:
> 
> ARCH       IGB_UIO 	VFIO
> x86		Y	Y
> ARM64		N/A	Y
> PPC_64		N/A	Y	(Not tested but likely should work, as vfio is
> arch independent)
> 
> Note: Applicable for virtio spec 0.95
> 
> Signed-off-by: Santosh Shukla <sshukla@mvista.com>
> ---
>  drivers/net/virtio/virtio_pci.h |   46 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 46 insertions(+)
> 
> diff --git a/drivers/net/virtio/virtio_pci.h b/drivers/net/virtio/virtio_pci.h
> index f550d22..b88f9ec 100644
> --- a/drivers/net/virtio/virtio_pci.h
> +++ b/drivers/net/virtio/virtio_pci.h
> @@ -46,6 +46,7 @@
>  #endif
>  
>  #include <rte_ethdev.h>
> +#include "virtio_logs.h"
>  
>  struct virtqueue;
>  
> @@ -320,6 +321,51 @@ outl_p(unsigned int data, unsigned int port)
>  }
>  #endif
>  
> +#if !defined(RTE_ARCH_X86_64) && !defined(RTE_ARCH_I686) && \
> +		defined(RTE_EXEC_ENV_LINUXAPP)
> +static inline uint8_t
> +inb(unsigned long addr __rte_unused)
> +{
> +	PMD_INIT_LOG(ERR, "inb() not supported for this RTE_ARCH\n");
> +	return 0;
> +}

The whole port read/write stuff is getting messy here: we not only have
to care the FreeBSD and Linux difference, but also the x86 and non-x86
difference. And you just added yet another vfio layer.

First of all, they are not belong here (virtio_pci.h). A new place like
virtio_io.h sounds much better to me. Therefore, I'd suggest you to
put all those stuff there, like the one I have just cooked up:


    #ifndef __VIRTIO_IO_H__
    
    #if defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_I686)
    
    #ifdef __FreeBSD__
      #include <sys/types.h>
      #include <machine/cpufunc.h>
    
      #define outb_p outb
      #define outw_p outw
      #define outl_p outl
    #else
      #include <sys/io.h>
    #endif
    
    #else /* ! X86 */
    
    static inline uint8_t
    inb(unsigned long addr __rte_unused)
    {
    	PMD_INIT_LOG(ERR, "inb() not supported for this RTE_ARCH\n");
    	return 0;
    }
    
    
    ....
    #endif /* X86 */


    /* And put the vfio io port read/write here */
    
    #endif /* __VIRTIO_IO_H__ */

Note that you may need squash patch 4 (build fix for sys/io.h ...)
here. They both resolve one thing: to make it build on non-x86 platforms.

Another minor note is that while you are trying this way, I'd suggest
you to make a patch to introduce virtio_io.h, and then make another
patch to fix build errors on non-x86 platforms.

Another generic comment about this patchset is that it VERY okay to
include several components change in one set, but putting them in
order helps review a lot.

Say, this patch set has dependence on VFIO stuff, therefore, it'd be
much better __IF__ you can put all VFIO related patches first, and
then virtio related patches follows, but not in an interleaved way
you did. If, for somereason, you can't do that, you should at least
try to minimise the chance of interleave.

	--yliu

  parent reply	other threads:[~2016-01-29  7:00 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-19 11:46 [dpdk-dev] [PATCH v5 00/11] Add virtio support for arm/arm64 Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 01/11] virtio: Introduce config RTE_VIRTIO_INC_VECTOR Santosh Shukla
2016-01-27  2:23   ` Santosh Shukla
2016-01-27  2:33     ` Yuanhan Liu
2016-01-29  4:32       ` Santosh Shukla
2016-01-29  4:42         ` Yuanhan Liu
2016-01-29  4:45           ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 02/11] linuxapp: eal: arm: Always return 0 for rte_eal_iopl_init() Santosh Shukla
2016-01-21  9:41   ` David Marchand
2016-01-21 10:07     ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 03/11] linuxapp/vfio: ignore mapping for ioport region Santosh Shukla
2016-01-27  2:24   ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 04/11] virtio_pci.h: build fix for sys/io.h for non-x86 arch Santosh Shukla
2016-01-27  2:25   ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 05/11] eal: pci: vfio: add rd/wr func for pci bar space Santosh Shukla
2016-01-21  9:42   ` David Marchand
2016-01-21 10:08     ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 06/11] virtio: vfio: add api support to rd/wr ioport bar Santosh Shukla
2016-01-29  7:07   ` Yuanhan Liu
2016-01-29  7:16     ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 07/11] virtio: pci: extend virtio pci rw api for vfio interface Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 08/11] eal: pci: introduce RTE_KDRV_VFIO_NOIOMMUi driver mode Santosh Shukla
2016-01-19 14:18   ` Burakov, Anatoly
2016-01-19 18:36     ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 09/11] virtio_pci: do not parse if interface is vfio-noiommu Santosh Shukla
2016-01-29  7:17   ` Yuanhan Liu
2016-01-29  7:22     ` Santosh Shukla
2016-01-29  7:34       ` Yuanhan Liu
2016-01-29  9:02         ` Thomas Monjalon
2016-01-29  9:14           ` Yuanhan Liu
2016-01-29  9:16           ` Santosh Shukla
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 10/11] virtio: pci: add dummy func definition for in/outb for non-x86 arch Santosh Shukla
2016-01-27 10:37   ` Santosh Shukla
2016-01-29  7:01   ` Yuanhan Liu [this message]
2016-01-29  7:31     ` Santosh Shukla
2016-01-29  7:38       ` Yuanhan Liu
2016-01-19 11:46 ` [dpdk-dev] [PATCH v5 11/11] vfio: Support for no-IOMMU mode Santosh Shukla
2016-01-25  7:25 ` [dpdk-dev] [PATCH v5 00/11] Add virtio support for arm/arm64 Santosh Shukla

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160129070112.GO4257@yliu-dev.sh.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=dev@dpdk.org \
    --cc=sshukla@mvista.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).