<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/virt/kvm/ioapic.c, branch linux-3.7.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.7.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.7.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-08-15T01:35:22Z</updated>
<entry>
<title>KVM: x86: drop parameter validation in ioapic/pic</title>
<updated>2012-08-15T01:35:22Z</updated>
<author>
<name>Michael S. Tsirkin</name>
</author>
<published>2012-08-14T16:20:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=28a6fdabb3ea775d3d707afd9d2728b3ced2c34d'/>
<id>urn:sha1:28a6fdabb3ea775d3d707afd9d2728b3ced2c34d</id>
<content type='text'>
We validate irq pin number when routing is setup, so
code handling illegal irq # in pic and ioapic on each injection
is never called.
Drop it, replace with BUG_ON to catch out of bounds access bugs.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: fix race with level interrupts</title>
<updated>2012-07-20T19:12:00Z</updated>
<author>
<name>Michael S. Tsirkin</name>
</author>
<published>2012-07-19T10:45:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1a577b72475d161b6677c05abe57301362023bb2'/>
<id>urn:sha1:1a577b72475d161b6677c05abe57301362023bb2</id>
<content type='text'>
When more than 1 source id is in use for the same GSI, we have the
following race related to handling irq_states race:

CPU 0 clears bit 0. CPU 0 read irq_state as 0. CPU 1 sets level to 1.
CPU 1 calls kvm_ioapic_set_irq(1). CPU 0 calls kvm_ioapic_set_irq(0).
Now ioapic thinks the level is 0 but irq_state is not 0.

Fix by performing all irq_states bitmap handling under pic/ioapic lock.
This also removes the need for atomics with irq_states handling.

Reported-by: Gleb Natapov &lt;gleb@redhat.com&gt;
Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: dont clear TMR on EOI</title>
<updated>2012-04-16T23:36:38Z</updated>
<author>
<name>Michael S. Tsirkin</name>
</author>
<published>2012-04-11T15:49:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a0c9a822bf37e6282eb6006b407ec5aec22e08fb'/>
<id>urn:sha1:a0c9a822bf37e6282eb6006b407ec5aec22e08fb</id>
<content type='text'>
Intel spec says that TMR needs to be set/cleared
when IRR is set, but kvm also clears it on  EOI.

I did some tests on a real (AMD based) system,
and I see same TMR values both before
and after EOI, so I think it's a minor bug in kvm.

This patch fixes TMR to be set/cleared on IRR set
only as per spec.

And now that we don't clear TMR, we can save
an atomic read of TMR on EOI that's not propagated
to ioapic, by checking whether ioapic needs
a specific vector first and calculating
the mode afterwards.

Signed-off-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: drop bsp_vcpu pointer from kvm struct</title>
<updated>2011-12-27T09:22:32Z</updated>
<author>
<name>Gleb Natapov</name>
</author>
<published>2011-12-15T10:38:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d546cb406ea0d83e2d39ec14221957a24f88a622'/>
<id>urn:sha1:d546cb406ea0d83e2d39ec14221957a24f88a622</id>
<content type='text'>
Drop bsp_vcpu pointer from kvm struct since its only use is incorrect
anyway.

Signed-off-by: Gleb Natapov &lt;gleb@redhat.com&gt;
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: Allow aligned byte and word writes to IOAPIC registers.</title>
<updated>2011-12-27T09:17:44Z</updated>
<author>
<name>Julian Stecklina</name>
</author>
<published>2011-11-23T12:54:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d77fe6354d5b67f4d4eb62a47621da2b3ee3539e'/>
<id>urn:sha1:d77fe6354d5b67f4d4eb62a47621da2b3ee3539e</id>
<content type='text'>
This fixes byte accesses to IOAPIC_REG_SELECT as mandated by at least the
ICH10 and Intel Series 5 chipset specs. It also makes ioapic_mmio_write
consistent with ioapic_mmio_read, which also allows byte and word accesses.

Signed-off-by: Julian Stecklina &lt;js@alien8.de&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: Intelligent device lookup on I/O bus</title>
<updated>2011-09-25T16:17:59Z</updated>
<author>
<name>Sasha Levin</name>
</author>
<published>2011-07-27T13:00:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=743eeb0b01d2fbf4154bf87bff1ebb6fb18aeb7a'/>
<id>urn:sha1:743eeb0b01d2fbf4154bf87bff1ebb6fb18aeb7a</id>
<content type='text'>
Currently the method of dealing with an IO operation on a bus (PIO/MMIO)
is to call the read or write callback for each device registered
on the bus until we find a device which handles it.

Since the number of devices on a bus can be significant due to ioeventfds
and coalesced MMIO zones, this leads to a lot of overhead on each IO
operation.

Instead of registering devices, we now register ranges which points to
a device. Lookup is done using an efficient bsearch instead of a linear
search.

Performance test was conducted by comparing exit count per second with
200 ioeventfds created on one byte and the guest is trying to access a
different byte continuously (triggering usermode exits).
Before the patch the guest has achieved 259k exits per second, after the
patch the guest does 274k exits per second.

Cc: Avi Kivity &lt;avi@redhat.com&gt;
Cc: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;levinsasha928@gmail.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: ioapic: Fix an error field reference</title>
<updated>2011-05-22T12:39:27Z</updated>
<author>
<name>Liu Yuan</name>
</author>
<published>2011-04-21T06:53:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a38f84ca8c6991925cb8bb6371ade8df9d3cc1e6'/>
<id>urn:sha1:a38f84ca8c6991925cb8bb6371ade8df9d3cc1e6</id>
<content type='text'>
Function ioapic_debug() in the ioapic_deliver() misnames
one filed by reference. This patch correct it.

Signed-off-by: Liu Yuan &lt;tailai.ly@taobao.com&gt;
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: Convert mask notifiers to use irqchip/pin instead of gsi</title>
<updated>2010-08-02T03:40:39Z</updated>
<author>
<name>Gleb Natapov</name>
</author>
<published>2010-07-11T12:32:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4a994358b919c3b14de61be5e30d9edc9089ba3f'/>
<id>urn:sha1:4a994358b919c3b14de61be5e30d9edc9089ba3f</id>
<content type='text'>
Devices register mask notifier using gsi, but irqchip knows about
irqchip/pin, so conversion from irqchip/pin to gsi should be done before
looking for mask notifier to call.

Signed-off-by: Gleb Natapov &lt;gleb@redhat.com&gt;
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: Update Red Hat copyrights</title>
<updated>2010-08-01T07:35:51Z</updated>
<author>
<name>Avi Kivity</name>
</author>
<published>2010-05-23T15:37:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=221d059d15f1c8bd070a63fd45cd8d2598af5f99'/>
<id>urn:sha1:221d059d15f1c8bd070a63fd45cd8d2598af5f99</id>
<content type='text'>
Signed-off-by: Avi Kivity &lt;avi@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: read apic-&gt;irr with ioapic lock held</title>
<updated>2010-06-10T17:29:03Z</updated>
<author>
<name>Marcelo Tosatti</name>
</author>
<published>2010-06-02T14:26:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=07dc7263b99e4ddad2b4c69765a428ccb7d48938'/>
<id>urn:sha1:07dc7263b99e4ddad2b4c69765a428ccb7d48938</id>
<content type='text'>
Read ioapic-&gt;irr inside ioapic-&gt;lock protected section.

KVM-Stable-Tag
Signed-off-by: Marcelo Tosatti &lt;mtosatti@redhat.com&gt;
</content>
</entry>
</feed>
