<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/virt, branch v2.6.31.1</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v2.6.31.1</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v2.6.31.1'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2009-09-24T15:44:04Z</updated>
<entry>
<title>KVM: Fix coalesced interrupt reporting in IOAPIC</title>
<updated>2009-09-24T15:44:04Z</updated>
<author>
<name>Gleb Natapov</name>
<email>gleb@redhat.com</email>
</author>
<published>2009-09-03T09:10:34Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=fc7a2de55c6ba0088d219a12f9825db54112e1a4'/>
<id>urn:sha1:fc7a2de55c6ba0088d219a12f9825db54112e1a4</id>
<content type='text'>
commit 65a82211636f156a276cac3f8665605ae18f371f upstream.

This bug was introduced by b4a2f5e723e4f7df467.

Signed-off-by: Gleb Natapov &lt;gleb@redhat.com&gt;
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>KVM: Avoid redelivery of edge interrupt before next edge</title>
<updated>2009-08-09T08:45:49Z</updated>
<author>
<name>Gleb Natapov</name>
<email>gleb@redhat.com</email>
</author>
<published>2009-07-05T15:48:11Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=b4a2f5e723e4f7df46731106faf9e2405673c073'/>
<id>urn:sha1:b4a2f5e723e4f7df46731106faf9e2405673c073</id>
<content type='text'>
The check for an edge is broken in current ioapic code. ioapic-&gt;irr is
cleared on each edge interrupt by ioapic_service() and this makes
old_irr != ioapic-&gt;irr condition in kvm_ioapic_set_irq() to be always
true. The patch fixes the code to properly recognise edge.

Some HW emulation calls set_irq() without level change. If each such
call is propagated to an OS it may confuse a device driver. This is the
case with keyboard device emulation and Windows XP x64  installer on SMP VM.
Each keystroke produce two interrupts (down/up) one interrupt is
submitted to CPU0 and another to CPU1. This confuses Windows somehow
and it ignores keystrokes.

Signed-off-by: Gleb Natapov &lt;gleb@redhat.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: fix ack not being delivered when msi present</title>
<updated>2009-08-05T11:03:43Z</updated>
<author>
<name>Michael S. Tsirkin</name>
<email>mst@redhat.com</email>
</author>
<published>2009-07-26T14:10:01Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=5116d8f6b977970ebefc1932c0f313163a6ec91f'/>
<id>urn:sha1:5116d8f6b977970ebefc1932c0f313163a6ec91f</id>
<content type='text'>
kvm_notify_acked_irq does not check irq type, so that it sometimes
interprets msi vector as irq.  As a result, ack notifiers are not
called, which typially hangs the guest.  The fix is to track and
check irq type.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: protect concurrent make_all_cpus_request</title>
<updated>2009-06-28T11:10:29Z</updated>
<author>
<name>Marcelo Tosatti</name>
<email>mtosatti@redhat.com</email>
</author>
<published>2009-06-17T13:53:47Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=84261923d3dddb766736023bead6fa07b7e218d5'/>
<id>urn:sha1:84261923d3dddb766736023bead6fa07b7e218d5</id>
<content type='text'>
make_all_cpus_request contains a race condition which can
trigger false request completed status, as follows:

CPU0                                              CPU1

if (test_and_set_bit(req,&amp;vcpu-&gt;requests))
   ....                                        	   if (test_and_set_bit(req,&amp;vcpu-&gt;requests))
   ..                                                  return
proceed to smp_call_function_many(wait=1)

Use a spinlock to serialize concurrent CPUs.

Cc: stable@kernel.org
Signed-off-by: Andrea Arcangeli &lt;aarcange@redhat.com&gt;
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: Fix dirty bit tracking for slots with large pages</title>
<updated>2009-06-28T11:10:29Z</updated>
<author>
<name>Izik Eidus</name>
<email>ieidus@redhat.com</email>
</author>
<published>2009-06-10T16:23:24Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=e244584fe3a5c20deddeca246548ac86dbc6e1d1'/>
<id>urn:sha1:e244584fe3a5c20deddeca246548ac86dbc6e1d1</id>
<content type='text'>
When slot is already allocated and being asked to be tracked we need
to break the large pages.

This code flush the mmu when someone ask a slot to start dirty bit
tracking.

Cc: stable@kernel.org
Signed-off-by: Izik Eidus &lt;ieidus@redhat.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>kvm: remove the duplicated cpumask_clear</title>
<updated>2009-06-12T03:04:37Z</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2009-06-11T22:09:00Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=aee74f3bb3f4fb5dbeae8c1947c6d8ebdc19ee01'/>
<id>urn:sha1:aee74f3bb3f4fb5dbeae8c1947c6d8ebdc19ee01</id>
<content type='text'>
zalloc_cpumask_var already cleared it.

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>KVM: Prevent overflow in largepages calculation</title>
<updated>2009-06-10T12:18:16Z</updated>
<author>
<name>Avi Kivity</name>
<email>avi@redhat.com</email>
</author>
<published>2009-06-08T12:55:21Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=09f8ca74ae6c2d78b2c7f6c0751ed0cbe815a3d9'/>
<id>urn:sha1:09f8ca74ae6c2d78b2c7f6c0751ed0cbe815a3d9</id>
<content type='text'>
If userspace specifies a memory slot that is larger than 8 petabytes, it
could overflow the largepages variable.

Cc: stable@kernel.org
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: Disable large pages on misaligned memory slots</title>
<updated>2009-06-10T12:17:58Z</updated>
<author>
<name>Avi Kivity</name>
<email>avi@redhat.com</email>
</author>
<published>2009-06-08T12:52:39Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ac04527f7947020c5890090b2ac87af4e98d977e'/>
<id>urn:sha1:ac04527f7947020c5890090b2ac87af4e98d977e</id>
<content type='text'>
If a slots guest physical address and host virtual address unequal (mod
large page size), then we would erronously try to back guest large pages
with host large pages.  Detect this misalignment and diable large page
support for the trouble slot.

Cc: stable@kernel.org
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: take mmu_lock when updating a deleted slot</title>
<updated>2009-06-10T08:48:54Z</updated>
<author>
<name>Marcelo Tosatti</name>
<email>mtosatti@redhat.com</email>
</author>
<published>2009-05-12T21:55:44Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=b43b1901ad282aeb74161837fb403927102687a1'/>
<id>urn:sha1:b43b1901ad282aeb74161837fb403927102687a1</id>
<content type='text'>
kvm_handle_hva relies on mmu_lock protection to safely access
the memslot structures.

Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: protect assigned dev workqueue, int handler and irq acker</title>
<updated>2009-06-10T08:48:53Z</updated>
<author>
<name>Marcelo Tosatti</name>
<email>mtosatti@redhat.com</email>
</author>
<published>2009-05-07T20:55:13Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=547de29e5b1662deb05b5f90917902dc0e9ac182'/>
<id>urn:sha1:547de29e5b1662deb05b5f90917902dc0e9ac182</id>
<content type='text'>
kvm_assigned_dev_ack_irq is vulnerable to a race condition with the
interrupt handler function. It does:

        if (dev-&gt;host_irq_disabled) {
                enable_irq(dev-&gt;host_irq);
                dev-&gt;host_irq_disabled = false;
        }

If an interrupt triggers before the host-&gt;dev_irq_disabled assignment,
it will disable the interrupt and set dev-&gt;host_irq_disabled to true.

On return to kvm_assigned_dev_ack_irq, dev-&gt;host_irq_disabled is set to
false, and the next kvm_assigned_dev_ack_irq call will fail to reenable
it.

Other than that, having the interrupt handler and work handlers run in
parallel sounds like asking for trouble (could not spot any obvious
problem, but better not have to, its fragile).

CC: sheng.yang@intel.com
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
</feed>
