On Mon, Aug 10, 2015 at 10:47 AM, Paolo Bonzini pbonz...@redhat.com wrote:
On 10/08/2015 16:14, Jintack Lim wrote:
Yes, you just use the TSC. :) However, you first have to check that the
TSC is consistent across CPUs. On older machines it's not, but the
kernel can detect it.
Thanks,
On 10/08/2015 16:14, Jintack Lim wrote:
Yes, you just use the TSC. :) However, you first have to check that the
TSC is consistent across CPUs. On older machines it's not, but the
kernel can detect it.
Thanks, Paolo.
What would be the best way to check if TSC is consistent across
2015-08-07 12:54+0200, Paolo Bonzini:
The recent BlackHat 2015 presentation The Memory Sinkhole
mentions that the IDT limit is zeroed on entry to SMM.
Slide 64 of
On 10/08/2015 17:21, nick wrote:
Seems good.
Paolo
If it makes it easier for you to trust my patches I can show at least 10 bug
fixes for other subsystems
to prove that I am trying to do this correctly.
That's up to those maintainers...
I definitely see some improvement in your
Michael S. Tsirkin m...@redhat.com writes:
On Mon, Jul 13, 2015 at 12:07:32AM -0400, Bandan Das wrote:
vhost threads are per-device, but in most cases a single thread
is enough. This change creates a single thread that is used to
serve all guests.
However, this complicates cgroups
Bandan Das b...@redhat.com writes:
Michael S. Tsirkin m...@redhat.com writes:
On Mon, Jul 13, 2015 at 12:07:32AM -0400, Bandan Das wrote:
vhost threads are per-device, but in most cases a single thread
is enough. This change creates a single thread that is used to
serve all guests.
https://bugzilla.kernel.org/show_bug.cgi?id=102651
Bug ID: 102651
Summary: vcpuX unhandled rdmsr: 0x570
Product: Virtualization
Version: unspecified
Kernel Version: 4.1.4
Hardware: All
OS: Linux
Tree:
https://bugzilla.kernel.org/show_bug.cgi?id=102651
--- Comment #1 from jamespharve...@gmail.com ---
The libvirt/qemu log shows:
2015-08-11 03:29:38.508+: starting up libvirt version: 1.2.18, qemu
version: 2.3.94
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Michael S. Tsirkin m...@redhat.com writes:
On Sat, Aug 08, 2015 at 07:06:38PM -0400, Bandan Das wrote:
Hi Michael,
...
- does the design address the issue of VM 1 being blocked
(e.g. because it hits swap) and blocking VM 2?
Good question. I haven't thought of this yet. But IIUC,
the
https://bugzilla.kernel.org/show_bug.cgi?id=102301
Will Marler will.mar...@gmail.com changed:
What|Removed |Added
Status|NEW |RESOLVED
On 08/07/2015 10:09 PM, Alex Williamson wrote:
On Mon, 2015-08-03 at 19:20 +0200, Eric Auger wrote:
This patch introduces
- kvm_arch_irq_bypass_add_producer
- kvm_arch_irq_bypass_del_producer
- kvm_arch_irq_bypass_stop
- kvm_arch_irq_bypass_start
They make possible to specialize the KVM
On 07/08/2015 21:19, Jintack Lim wrote:
Hi all,
While I was looking at rdtsc() code in kvm-unit-tests (e.g. x86/vmexit.c),
I was getting curious that out-of-order execution on the processor
may make rdtsc() executed not in the place we expect.
Referring to this document from intel,
Hi Alex,
On 08/07/2015 10:09 PM, Alex Williamson wrote:
On Mon, 2015-08-03 at 19:20 +0200, Eric Auger wrote:
This patch adds the registration/unregistration of an
irq_bypass_consumer on irqfd assignment/deassignment.
Signed-off-by: Eric Auger eric.au...@linaro.org
Signed-off-by: Feng Wu
On Mon, Jul 13, 2015 at 12:07:32AM -0400, Bandan Das wrote:
vhost threads are per-device, but in most cases a single thread
is enough. This change creates a single thread that is used to
serve all guests.
However, this complicates cgroups associations. The current policy
is to attach the
On Fri, Aug 07, 2015 at 10:48:50AM +0530, sai kiran wrote:
I am experimenting on Virtio-net frontend driver. And I observe that
the virtio ring size is communicated to guest as 256.
I tried changing backend-qemu code manually, to propagate 512 ring size.
But other than changing code and
This patch populates the IRQ bypass callacks:
- stop/start producer simply consist in disabling/enabling the host irq
- add/del consumer: basically set the automasked flag to false/true
Signed-off-by: Eric Auger eric.au...@linaro.org
---
v2 - v3:
- vfio_platform_irq_bypass_add_consumer now
There are too many cp15 traps, so we don't reuse the cp15 trace event
but add a new trace event to trace the access of debug registers.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
Acked-by: Christoffer Dall christoffer.d...@linaro.org
---
arch/arm/kvm/coproc.c | 14 ++
Add handlers for all the 64-bit debug registers.
There is an overlap between 32 and 64bit registers. Make sure that
64-bit registers preceding 32-bit ones.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
Reviewed-by: Christoffer Dall christoffer.d...@linaro.org
---
arch/arm/kvm/coproc.c |
Implement switching of the debug registers. While the number
of registers is massive, CPUs usually don't implement them all
(A15 has 6 breakpoints and 4 watchpoints, which gives us a total
of 22 registers only).
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
---
Enable trapping of the debug registers unconditionally, allowing guests to
use the debug infrastructure.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
Reviewed-by: Christoffer Dall christoffer.d...@linaro.org
---
arch/arm/kvm/interrupts_head.S | 2 +-
1 file changed, 1 insertion(+), 1
This series transforms irqfd into an IRQ bypass consumer and
introduce the infrastructure shared by Intel posted-interrupts
and ARM forwarded IRQ series.
The bypass manager gets compiled for x86 and arm/arm64 when
KVM is used. A new kvm_irqfd.h header is created to externalize
some irqfd
From: Feng Wu feng...@intel.com
Select IRQ_BYPASS_MANAGER for x86 when CONFIG_KVM is set
Signed-off-by: Feng Wu feng...@intel.com
---
arch/x86/kvm/Kconfig | 2 ++
arch/x86/kvm/Makefile | 3 +++
2 files changed, 5 insertions(+)
diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
index
Select IRQ_BYPASS_MANAGER when CONFIG_KVM is set
Also add compilation of virt/lib.
Signed-off-by: Eric Auger eric.au...@linaro.org
Signed-off-by: Feng Wu feng...@intel.com
---
v3 - v4:
- add compilation of virt/lib in arm/arm64 KVM
v2 - v3:
- [Feng Wu] Correct a typo in
Hi Pavel,
On 08/06/2015 02:06 PM, Pavel Fedin wrote:
Tested-by: Pavel Fedin p.fe...@samsung.com
Many thanks for testing!
Best Regards
Eric
Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia
-Original Message-
From: Eric Auger
Implement IRQ bypass callbacks for arm/arm64 IRQ forwarding:
- kvm_arch_irq_bypass_add_producer: perform VGIC/irqchip
settings for forwarding
- kvm_arch_irq_bypass_del_producer: same for inverse operation
- kvm_arch_irq_bypass_stop: halt guest execution
- kvm_arch_irq_bypass_start: resume guest
From: Marc Zyngier marc.zyng...@arm.com
So far, the only use of the HW interrupt facility was the timer,
implying that the active state is context-switched for each vcpu,
as the device is is shared across all vcpus.
This does not work for a device that has been assigned to a VM,
as the guest is
Implements kvm_vgic_[set|unset]_forward.
Handle low-level VGIC programming: physical IRQ/guest IRQ mapping,
list register cleanup, VGIC state machine. Also interacts with
the irqchip.
Signed-off-by: Eric Auger eric.au...@linaro.org
---
v2 - v3:
- on unforward, we do not compute output the
Currently irqfd injection relies on kvm_vgic_inject_irq function.
However this function cannot be used anymore for mapped IRQs. So
let's change the implementation to use kvm_vgic_inject_mapped_irq
when the IRQ is forwarded.
Signed-off-by: Eric Auger eric.au...@linaro.org
---
virt/kvm/arm/vgic.c
This function returns whether the IRQ is active at irqchip level or
VFIO masked. If either is true, it is considered the IRQ is active.
Currently there is no way to differentiate userspace masked IRQ from
automasked IRQ. There might be false detection of activity. However
it is currently
This series allows to set ARM IRQ forwarding between a VFIO platform
device physical IRQ and a guest virtual IRQ. The link is coordinated
by the IRQ bypass manager.
The principle is the VFIO platform driver registers an IRQ bypass producer
struct on VFIO_IRQ_SET_ACTION_TRIGGER while KVM irqfd
Register a dummy producer with void callbacks
Signed-off-by: Eric Auger eric.au...@linaro.org
---
v2 - v3:
- rename vfio_platform_irq_bypass_resume into *_start
---
drivers/vfio/platform/vfio_platform_irq.c | 32 +++
drivers/vfio/platform/vfio_platform_private.h |
As we're about to trap a bunch of CP14 registers, let's rework
the CP15 handling so it can be generalized and work with multiple
tables.
We stop trapping access here, because we haven't finished our trap
handlers. We will enable trapping agian until everything is OK.
Signed-off-by: Zhichao Huang
Add #ifndef __ASSEMBLY__ in hw_breakpoint.h, in order to use
the ARM_DSCR_MDBGEN macro from KVM assembly code.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
Reviewed-by: Alex Bennee alex.ben...@linaro.org
Acked-by: Christoffer Dall christoffer.d...@linaro.org
---
Hardware debugging in guests is not intercepted currently, it means
that a malicious guest can bring down the entire machine by writing
to the debug registers.
This patch enable trapping of all debug registers, preventing the guests
to access the debug registers.
This patch also disable the
A single handler now is registered whatever the use case: automasked
or not. A function pointer is set according to the wished behavior
and the handler calls this function.
The irq lock is taken/released in the root handler. eventfd_signal can
be called in regions not allowed to sleep.
We now have multiple tables for the various system registers
we trap. Make sure we check the order of all of them, as it is
critical that we get the order right (been there, done that...).
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
Reviewed-by: Christoffer Dall
This patch series adds debug support, a key feature missing from the
KVM/armv7 port.
The main idea is to keep track of whether the host and the guest have any
break/watch points enabled or not. We only do the world switch for debug
registers when the host or the guest is actually using it.
We
Add a new forwarded flag in vfio_platform_irq. In case the IRQ
is forwarded, the VFIO platform IRQ handler does not need to
disable the IRQ anymore.
When setting the IRQ handler we now also test the forwarded state. In
case the IRQ is forwarded we select the vfio_irq_handler.
Signed-off-by:
pm_fake doesn't quite describe what the handler does (ignoring writes
and returning 0 for reads).
As we're about to use it (a lot) in a different context, rename it
with a (admitedly cryptic) name that make sense for all users.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
Reviewed-by:
This function makes possible to change the automasked mode.
Signed-off-by: Eric Auger eric.au...@linaro.org
---
v1 - v2:
- set forwarded flag
---
drivers/vfio/platform/vfio_platform_irq.c | 19 +++
1 file changed, 19 insertions(+)
diff --git
Add handlers for all the 32-bit debug registers.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
---
arch/arm/include/asm/kvm_asm.h | 12
arch/arm/include/asm/kvm_host.h | 3 +
arch/arm/kernel/asm-offsets.c | 1 +
arch/arm/kvm/coproc.c | 124
Redefine kvm_cpu_context_t as a new struct that include the cp14 states,
which we used to save the host cp14 states.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
---
arch/arm/include/asm/kvm_host.h | 6 +-
arch/arm/kernel/asm-offsets.c | 4 +++-
arch/arm/kvm/interrupts.S | 6
Avoid world-switching all the debug registers when neither the host
nor the guest has configured any [WB]points.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
---
arch/arm/kvm/interrupts_head.S | 23 +--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git
Every guest entry, we need to keep track of host use of the debug
registers.
We only call the function upon guest entry, after preempt_disable()
and local_irq_disable(), so there is no race for it.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
---
arch/arm/include/asm/kvm_asm.h| 3
As we're about to implement a lazy world switch for debug registers,
we add a function reading the break/watch control variables directly to
indicate whether the host has enabled any break/watch points or not.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
---
We trap debug register accesses from guest all the time, and read the
BCR/WCR to indicate whether the guest has enabled any break/watch points
or not.
Signed-off-by: Zhichao Huang zhichao.hu...@linaro.org
---
arch/arm/include/asm/kvm_asm.h | 2 ++
arch/arm/kvm/coproc.c | 75
This patch adds the registration/unregistration of an
irq_bypass_consumer on irqfd assignment/deassignment.
Signed-off-by: Eric Auger eric.au...@linaro.org
Signed-off-by: Feng Wu feng...@intel.com
---
v4 - v5:
- due to removal of static inline stubs, add
#ifdef CONFIG_HAVE_KVM_IRQ_BYPASS
This patch introduces
- kvm_arch_irq_bypass_add_producer
- kvm_arch_irq_bypass_del_producer
- kvm_arch_irq_bypass_stop
- kvm_arch_irq_bypass_start
They make possible to specialize the KVM IRQ bypass consumer in
case CONFIG_KVM_HAVE_IRQ_BYPASS is set.
Signed-off-by: Eric Auger
Move _irqfd_resampler and _irqfd struct declarations in a new
public header: kvm_irqfd.h. They are respectively renamed into
kvm_kernel_irqfd_resampler and kvm_kernel_irqfd. Those datatypes
will be used by architecture specific code, in the context of
IRQ bypass manager integration.
On 10/08/2015 11:42, Christoffer Dall wrote:
Thanks for the reply.
On this note, is there an easy mechanism on x86 to obtain a TSC which is
synchronized across PCPUs and between the host and the guest?
We can use the physical arch timer counter on arm64, but I'm not sure if
there's
On Mon, Aug 10, 2015 at 9:58 AM, Paolo Bonzini pbonz...@redhat.com wrote:
On 10/08/2015 11:42, Christoffer Dall wrote:
Thanks for the reply.
On this note, is there an easy mechanism on x86 to obtain a TSC which is
synchronized across PCPUs and between the host and the guest?
We can use
51 matches
Mail list logo