[dpdk-dev] [PATCH 00/15] Make VFIO support independent on PCI

2016-05-10 Thread Santosh Shukla
On Fri, Apr 29, 2016 at 7:14 PM, Jan Viktorin  
wrote:
>
> Hello,
>
> here follows several patchs extracting the general VFIO code out of the
> PCI + VFIO code base. Usually, it's just move and rename of functions.
> The most complicated ones are:
>
> * eal/linux: extract setup logic out of pci_vfio_map_resource
>
>   - separation of some setup code out of the pci_vfio_map_resource
> (which is otherwise quite PCI-speicific)
>   - it is required by the following one
>
> * eal/linux: move global vfio_cfg to eal_vfio.c
>
>   - moving the vfio_cfg global variable out of the eal_pci_vfio together with
> the functions working with this variable
>
> Some patchs make just temporary changes to avoid breakages throughout the
> patch set (dma mapping).
>
> I am not sure, how exactly is the mp_sync code intended to work. Should there
> be just a single socket connection (no matter how many bus-systems we 
> support)?
> I assume it works this way so I've generalized the eal_pci_vfio_mp_sync.
>
> The vfio initialization is moved out of the rte_eal_pci_init into EAL.
>
> The code is now prepared for adding of other infrastructures such as the SoC
> that I've introduced in [1]. I've partially done this in my workspace.
>

I haven't started reading patch set, we'll do so. But by referring to
your initiative [1] which is non-pci SoC infra, How about binding
those non-pci soc via vfio-platform-way? As because vfio-for-platform
device use-case is such non-pci accelerators in SoC. is your current
refactoring effort aligned towards vfio-platform direction?


[dpdk-dev] [PATCH 00/15] Make VFIO support independent on PCI

2016-05-10 Thread Jan Viktorin
Hello Santosh,

On Tue, 10 May 2016 17:48:23 +0530
Santosh Shukla  wrote:

> On Fri, Apr 29, 2016 at 7:14 PM, Jan Viktorin  
> wrote:
> >
> > Hello,
> >
> > here follows several patchs extracting the general VFIO code out of the
> > PCI + VFIO code base. Usually, it's just move and rename of functions.
> > The most complicated ones are:
> >
> > * eal/linux: extract setup logic out of pci_vfio_map_resource
> >
> >   - separation of some setup code out of the pci_vfio_map_resource
> > (which is otherwise quite PCI-speicific)
> >   - it is required by the following one
> >
> > * eal/linux: move global vfio_cfg to eal_vfio.c
> >
> >   - moving the vfio_cfg global variable out of the eal_pci_vfio together 
> > with
> > the functions working with this variable
> >
> > Some patchs make just temporary changes to avoid breakages throughout the
> > patch set (dma mapping).
> >
> > I am not sure, how exactly is the mp_sync code intended to work. Should 
> > there
> > be just a single socket connection (no matter how many bus-systems we 
> > support)?
> > I assume it works this way so I've generalized the eal_pci_vfio_mp_sync.
> >
> > The vfio initialization is moved out of the rte_eal_pci_init into EAL.
> >
> > The code is now prepared for adding of other infrastructures such as the SoC
> > that I've introduced in [1]. I've partially done this in my workspace.

Probably, I should have written here "later, vfio-platform will be
connected to this"...

> >  
> 
> I haven't started reading patch set, we'll do so. But by referring to
> your initiative [1] which is non-pci SoC infra, How about binding
> those non-pci soc via vfio-platform-way? As because vfio-for-platform
> device use-case is such non-pci accelerators in SoC. is your current
> refactoring effort aligned towards vfio-platform direction?

Sure, vfio-platform is the way to go. However, this patch set is just a
refactoring. The goal is to be able to connect with the vfio-platform.
Without this patch set, it leads to lots of duplicated code.

Jan

-- 
  Jan ViktorinE-mail: Viktorin at RehiveTech.com
  System ArchitectWeb:www.RehiveTech.com
  RehiveTech
  Brno, Czech Republic


[dpdk-dev] [PATCH 00/15] Make VFIO support independent on PCI

2016-04-29 Thread Jan Viktorin
Hello,

here follows several patchs extracting the general VFIO code out of the
PCI + VFIO code base. Usually, it's just move and rename of functions.
The most complicated ones are:

* eal/linux: extract setup logic out of pci_vfio_map_resource

  - separation of some setup code out of the pci_vfio_map_resource
(which is otherwise quite PCI-speicific)
  - it is required by the following one

* eal/linux: move global vfio_cfg to eal_vfio.c

  - moving the vfio_cfg global variable out of the eal_pci_vfio together with
the functions working with this variable

Some patchs make just temporary changes to avoid breakages throughout the
patch set (dma mapping).

I am not sure, how exactly is the mp_sync code intended to work. Should there
be just a single socket connection (no matter how many bus-systems we support)?
I assume it works this way so I've generalized the eal_pci_vfio_mp_sync.

The vfio initialization is moved out of the rte_eal_pci_init into EAL.

The code is now prepared for adding of other infrastructures such as the SoC
that I've introduced in [1]. I've partially done this in my workspace.

The VFIO code is quite complex and written in a spaghetti style so a more
maintainance would be helpful. I've did my best to preserve the semantics
(I hope) to be 100 % the same as before.

Important: I didn't test whether it's working as I have no VFIO-enabled machine
at the moment and the SoC infra is not so ready yet.

[1] http://comments.gmane.org/gmane.comp.networking.dpdk.devel/30913

Regards
Jan

---

Jan Viktorin (15):
  vfio: fix include of eal_private.h to be local
  vfio: move VFIO-specific stuff to eal_vfio.h
  vfio: move common vfio constants to eal_vfio.h
  vfio: move vfio_iommu_type and dma_map functions to eal_vfio
  vfio: generalize pci_vfio_set_iommu_type
  vfio: generalize pci_vfio_has_supported_extensions
  vfio: move vfio-specific SOCKET_* constants
  vfio: generalize pci_vfio_get_container_fd
  vfio: generalize pci_vfio_get_group_no
  vfio: extract setup logic out of pci_vfio_map_resource
  vfio: move global vfio_cfg to eal_vfio.c
  vfio: make vfio_*_dma_map and iommu_types private
  vfio: rename and generalize eal_pci_vfio_mp_sync
  vfio: initialize vfio out of the PCI subsystem
  vfio: change VFIO init to be extendable

 lib/librte_eal/linuxapp/eal/Makefile   |   5 +-
 lib/librte_eal/linuxapp/eal/eal.c  |  33 ++
 lib/librte_eal/linuxapp/eal/eal_pci.c  |  17 +-
 lib/librte_eal/linuxapp/eal/eal_pci_init.h |  41 --
 lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 517 +---
 lib/librte_eal/linuxapp/eal/eal_vfio.c | 528 +
 lib/librte_eal/linuxapp/eal/eal_vfio.h |  94 
 .../{eal_pci_vfio_mp_sync.c => eal_vfio_mp_sync.c} |  12 +-
 8 files changed, 672 insertions(+), 575 deletions(-)
 create mode 100644 lib/librte_eal/linuxapp/eal/eal_vfio.c
 rename lib/librte_eal/linuxapp/eal/{eal_pci_vfio_mp_sync.c => 
eal_vfio_mp_sync.c} (97%)

-- 
2.8.0