From: Alexey Kardashevskiy a...@ozlabs.ru
This initializes IOMMU groups based on the IOMMU configuration
discovered during the PCI scan on POWERNV (POWER non virtualized)
platform. The IOMMU groups are to be used later by the VFIO driver,
which is used for PCI pass through.
It also implements
From: Alexey Kardashevskiy a...@ozlabs.ru
The IOMMU API implements groups creating/deletion, device binding
and IOMMU map/unmap operations.
The PowerPC implementation uses most of the API except map/unmap
operations, which are implemented on POWER using hypercalls.
However, in order to link a
This adds real mode handlers for the H_PUT_TCE_INDIRECT and
H_STUFF_TCE hypercalls for QEMU emulated devices such as virtio
devices or emulated PCI. These calls allow adding multiple entries
(up to 512) into the TCE table in one call which saves time on
transition to/from real mode.
This adds a
The current VFIO-on-POWER implementation supports only user mode
driven mapping, i.e. QEMU is sending requests to map/unmap pages.
However this approach is really slow, so we want to move that to KVM.
Since H_PUT_TCE can be extremely performance sensitive (especially with
network adapters where
This adds special support for huge pages (16MB). The reference
counting cannot be easily done for such pages in real mode (when
MMU is off) so we added a list of huge pages. It is populated in
virtual mode and get_page is called just once per a huge page.
Real mode handlers check if the
This series is supposed to accelerate IOMMU operations in real and virtual
mode in the host kernel for the KVM guest.
The first user is VFIO however this series does not contain any VFIO related
code as the connection between VFIO and the new handlers is to be made in QEMU
via ioctl to the KVM
This allows the host kernel to handle H_PUT_TCE, H_PUT_TCE_INDIRECT
and H_STUFF_TCE requests without passing them to QEMU, which should
save time on switching to QEMU and back.
Both real and virtual modes are supported - whenever the kernel
fails to handle TCE request, it passes it to the virtual
As IOMMU groups are exposed to the user space by their numbers,
the user space can use them in various kernel APIs so the kernel
might need an API to find a group by its ID.
As an example, QEMU VFIO on PPC64 platform needs it to associate
a logical bus number (LIOBN) with a specific IOMMU group
The lookup_linux_pte() function returns a linux PTE which is needed in
the process of converting KVM guest physical address into host real
address in real mode.
This conversion will be used by upcoming support of H_PUT_TCE_INDIRECT,
as the TCE list address comes from the guest and is a guest
On 05/06/2013 04:53 AM, Tiejun Chen wrote:
Actually E500MC also support doorbell exception, and CONFIG_PPC_E500MC
can cover BOOK3E/BOOK3E_64 as well.
Signed-off-by: Tiejun Chentiejun.c...@windriver.com
---
arch/powerpc/kvm/booke.c |2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
On Mon, 2013-05-06 at 17:21 +1000, a...@ozlabs.ru wrote:
From: Alexey Kardashevskiy a...@ozlabs.ru
The IOMMU API implements groups creating/deletion, device binding
and IOMMU map/unmap operations.
The PowerPC implementation uses most of the API except map/unmap
operations, which are
On 05/05/2013 04:03:08 PM, Benjamin Herrenschmidt wrote:
On Fri, 2013-05-03 at 18:45 -0500, Scott Wood wrote:
kvmppc_lazy_ee_enable() was causing interrupts to be soft-enabled
(albeit hard-disabled) in kvmppc_restart_interrupt(). This led to
warnings, and possibly breakage if the interrupt
On Mon, 2013-05-06 at 18:53 -0500, Scott Wood wrote:
Ie. The last stage of entry will hard enable, so they should be
soft-enabled too... if not, latency trackers will consider the whole
guest periods as interrupt disabled...
OK... I guess we already have that problem on 32-bit as well?
On 05/07/2013 07:07 AM, Alex Williamson wrote:
On Mon, 2013-05-06 at 17:21 +1000, a...@ozlabs.ru wrote:
From: Alexey Kardashevskiy a...@ozlabs.ru
The IOMMU API implements groups creating/deletion, device binding
and IOMMU map/unmap operations.
The PowerPC implementation uses most of the API
On 05/06/2013 10:58 PM, Alexander Graf wrote:
On 05/06/2013 04:53 AM, Tiejun Chen wrote:
Actually E500MC also support doorbell exception, and CONFIG_PPC_E500MC
can cover BOOK3E/BOOK3E_64 as well.
Signed-off-by: Tiejun Chentiejun.c...@windriver.com
---
arch/powerpc/kvm/booke.c |2 +-
1
On 05/07/2013 07:50 AM, Scott Wood wrote:
On 05/05/2013 10:13:17 PM, tiejun.chen wrote:
On 05/06/2013 11:10 AM, Tiejun Chen wrote:
For the external interrupt, the decrementer exception and the doorbell
excpetion, we also need to soft-disable interrupts while doing as host
interrupt handlers
On 05/07/2013 10:06 AM, Scott Wood wrote:
On 05/06/2013 08:56:25 PM, tiejun.chen wrote:
On 05/07/2013 07:50 AM, Scott Wood wrote:
On 05/05/2013 10:13:17 PM, tiejun.chen wrote:
On 05/06/2013 11:10 AM, Tiejun Chen wrote:
For the external interrupt, the decrementer exception and the doorbell
On 05/06/2013 07:03:14 PM, Benjamin Herrenschmidt wrote:
On Mon, 2013-05-06 at 18:53 -0500, Scott Wood wrote:
Ie. The last stage of entry will hard enable, so they should be
soft-enabled too... if not, latency trackers will consider the
whole
guest periods as interrupt disabled...
On 05/07/2013 11:42 AM, Alex Williamson wrote:
On Tue, 2013-05-07 at 10:49 +1000, Alexey Kardashevskiy wrote:
On 05/07/2013 07:07 AM, Alex Williamson wrote:
On Mon, 2013-05-06 at 17:21 +1000, a...@ozlabs.ru wrote:
From: Alexey Kardashevskiy a...@ozlabs.ru
The IOMMU API implements groups
booke64 was not maintaing consistent lazy ee state when exiting the
guest, leading to warnings and worse.
booke32 was less affected due to the absence of lazy ee, but it was
still feeding bad information into trace_hardirqs_off/on -- we don't
want guest execution to be seen as an IRQs off
On Mon, 2013-05-06 at 22:05 -0500, Scott Wood wrote:
On 05/06/2013 07:03:14 PM, Benjamin Herrenschmidt wrote:
On Mon, 2013-05-06 at 18:53 -0500, Scott Wood wrote:
Ie. The last stage of entry will hard enable, so they should be
soft-enabled too... if not, latency trackers will
On Mon, 2013-05-06 at 22:32 -0500, Scott Wood wrote:
+ hard_irq_disable();
+ trace_hardirqs_off();
I still think hard_irq_disable() should be fixed to do the right thing
here :-)
I'll do that standalone patch here and give it a spin.
Cheers,
Ben.
--
To unsubscribe from this
On Mon, May 06, 2013 at 05:25:53PM +1000, Alexey Kardashevskiy wrote:
This adds real mode handlers for the H_PUT_TCE_INDIRECT and
H_STUFF_TCE hypercalls for QEMU emulated devices such as virtio
devices or emulated PCI. These calls allow adding multiple entries
(up to 512) into the TCE table
On Mon, May 06, 2013 at 05:25:56PM +1000, Alexey Kardashevskiy wrote:
This allows the host kernel to handle H_PUT_TCE, H_PUT_TCE_INDIRECT
and H_STUFF_TCE requests without passing them to QEMU, which should
save time on switching to QEMU and back.
Both real and virtual modes are supported -
101 - 124 of 124 matches
Mail list logo