<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/x86/kvm, branch linux-4.3.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.3.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.3.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-01-31T19:25:43Z</updated>
<entry>
<title>KVM: x86: correctly print #AC in traces</title>
<updated>2016-01-31T19:25:43Z</updated>
<author>
<name>Paolo Bonzini</name>
</author>
<published>2015-11-12T15:42:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9b10a6b10a0fea11d76c419a7aa5871a4dfbf769'/>
<id>urn:sha1:9b10a6b10a0fea11d76c419a7aa5871a4dfbf769</id>
<content type='text'>
commit aba2f06c070f604e388cf77b1dcc7f4cf4577eb0 upstream.

Poor #AC was so unimportant until a few days ago that we were
not even tracing its name correctly.  But now it's all over
the place.

Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: x86: expose MSR_TSC_AUX to userspace</title>
<updated>2016-01-31T19:25:43Z</updated>
<author>
<name>Paolo Bonzini</name>
</author>
<published>2015-11-12T13:49:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c97e738015688d5fd990940cf25dc9020d607537'/>
<id>urn:sha1:c97e738015688d5fd990940cf25dc9020d607537</id>
<content type='text'>
commit 9dbe6cf941a6fe82933aef565e4095fb10f65023 upstream.

If we do not do this, it is not properly saved and restored across
migration.  Windows notices due to its self-protection mechanisms,
and is very upset about it (blue screen of death).

Cc: Radim Krcmar &lt;rkrcmar@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: svm: unconditionally intercept #DB</title>
<updated>2016-01-31T19:25:43Z</updated>
<author>
<name>Paolo Bonzini</name>
</author>
<published>2015-11-10T08:14:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f43767aa051fbb303d22fb9c17872de084b189d4'/>
<id>urn:sha1:f43767aa051fbb303d22fb9c17872de084b189d4</id>
<content type='text'>
commit cbdb967af3d54993f5814f1cee0ed311a055377d upstream.

This is needed to avoid the possibility that the guest triggers
an infinite stream of #DB exceptions (CVE-2015-8104).

VMX is not affected: because it does not save DR6 in the VMCS,
it already intercepts #DB unconditionally.

Reported-by: Jan Beulich &lt;jbeulich@suse.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: VMX: fix SMEP and SMAP without EPT</title>
<updated>2016-01-31T19:25:43Z</updated>
<author>
<name>Radim Krčmář</name>
</author>
<published>2015-11-02T21:20:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5f47420681a1a92a0e07f561469719d87848bc18'/>
<id>urn:sha1:5f47420681a1a92a0e07f561469719d87848bc18</id>
<content type='text'>
commit 656ec4a4928a3db7d16e5cb9bce351a478cfd3d5 upstream.

The comment in code had it mostly right, but we enable paging for
emulated real mode regardless of EPT.

Without EPT (which implies emulated real mode), secondary VCPUs won't
start unless we disable SM[AE]P when the guest doesn't use paging.

Signed-off-by: Radim Krčmář &lt;rkrcmar@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: x86: work around infinite loop in microcode when #AC is delivered</title>
<updated>2015-12-09T19:34:17Z</updated>
<author>
<name>Eric Northup</name>
</author>
<published>2015-11-03T17:03:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=971cdbf756b5e29427ca8d94e0df3a25a66a7ed8'/>
<id>urn:sha1:971cdbf756b5e29427ca8d94e0df3a25a66a7ed8</id>
<content type='text'>
commit 54a20552e1eae07aa240fa370a0293e006b5faed upstream.

It was found that a guest can DoS a host by triggering an infinite
stream of "alignment check" (#AC) exceptions.  This causes the
microcode to enter an infinite loop where the core never receives
another interrupt.  The host kernel panics pretty quickly due to the
effects (CVE-2015-5307).

Signed-off-by: Eric Northup &lt;digitaleric@google.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: x86: obey KVM_X86_QUIRK_CD_NW_CLEARED in kvm_set_cr0()</title>
<updated>2015-12-09T19:34:17Z</updated>
<author>
<name>Laszlo Ersek</name>
</author>
<published>2015-11-04T11:54:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e143e741de2129c896e49eed917b8ff1d6c65bf'/>
<id>urn:sha1:1e143e741de2129c896e49eed917b8ff1d6c65bf</id>
<content type='text'>
commit 879ae1880449c88db11c1ebdaedc2da79b2fe73f upstream.

Commit b18d5431acc7 ("KVM: x86: fix CR0.CD virtualization") was
technically correct, but it broke OVMF guests by slowing down various
parts of the firmware.

Commit fb279950ba02 ("KVM: vmx: obey KVM_QUIRK_CD_NW_CLEARED") quirked the
first function modified by b18d5431acc7, vmx_get_mt_mask(), for OVMF's
sake. This restored the speed of the OVMF code that runs before
PlatformPei (including the memory intensive LZMA decompression in SEC).

This patch extends the quirk to the second function modified by
b18d5431acc7, kvm_set_cr0(). It eliminates the intrusive slowdown that
hits the EFI_MP_SERVICES_PROTOCOL implementation of edk2's
UefiCpuPkg/CpuDxe -- which is built into OVMF --, when CpuDxe starts up
all APs at once for initialization, in order to count them.

We also carry over the kvm_arch_has_noncoherent_dma() sub-condition from
the other half of the original commit b18d5431acc7.

Fixes: b18d5431acc7a2fd22767925f3a6f597aa4bd29e
Cc: Jordan Justen &lt;jordan.l.justen@intel.com&gt;
Cc: Alex Williamson &lt;alex.williamson@redhat.com&gt;
Reviewed-by: Xiao Guangrong &lt;guangrong.xiao@linux.intel.com&gt;
Tested-by: Janusz Mocek &lt;januszmk6@gmail.com&gt;
Signed-off-by: Laszlo Ersek &lt;lersek@redhat.com&gt;#
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: x86: allow RSM from 64-bit mode</title>
<updated>2015-12-09T19:34:17Z</updated>
<author>
<name>Paolo Bonzini</name>
</author>
<published>2015-11-03T12:43:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=15978cabaaf026f578661f069e18344dfd487cad'/>
<id>urn:sha1:15978cabaaf026f578661f069e18344dfd487cad</id>
<content type='text'>
commit 89651a3decbe03754f304a0b248f27eeb9a37937 upstream.

The SDM says that exiting system management mode from 64-bit mode
is invalid, but that would be too good to be true.  But actually,
most of the code is already there to support exiting from compat
mode (EFER.LME=1, EFER.LMA=0).  Getting all the way from 64-bit
mode to real mode only requires clearing CS.L and CR4.PCIDE.

Fixes: 660a5d517aaab9187f93854425c4c63f4a09195c
Tested-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Cc: Radim Krčmář &lt;rkrcmar@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: x86: handle SMBASE as physical address in RSM</title>
<updated>2015-12-09T19:34:17Z</updated>
<author>
<name>Radim Krčmář</name>
</author>
<published>2015-10-30T15:36:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b6b8b23bd73762dbb662b5a5a17d1c86f708fa01'/>
<id>urn:sha1:b6b8b23bd73762dbb662b5a5a17d1c86f708fa01</id>
<content type='text'>
commit f40606b147dd5b4678cedc877a71deb520ca507e upstream.

GET_SMSTATE depends on real mode to ensure that smbase+offset is treated
as a physical address, which has already caused a bug after shuffling
the code.  Enforce physical addressing.

Signed-off-by: Radim Krčmář &lt;rkrcmar@redhat.com&gt;
Reported-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Tested-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>KVM: x86: add read_phys to x86_emulate_ops</title>
<updated>2015-12-09T19:34:16Z</updated>
<author>
<name>Radim Krčmář</name>
</author>
<published>2015-10-30T15:36:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bead1229f821de2ec81b5d361e1750a8e564d248'/>
<id>urn:sha1:bead1229f821de2ec81b5d361e1750a8e564d248</id>
<content type='text'>
commit 7a036a6f670f63b32c5ee126425f9109271ca13f upstream.

We want to read the physical memory when emulating RSM.

X86EMUL_IO_NEEDED is returned on all errors for consistency with other
helpers.

Signed-off-by: Radim Krčmář &lt;rkrcmar@redhat.com&gt;
Tested-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>kvm: x86: zero EFER on INIT</title>
<updated>2015-12-09T19:34:16Z</updated>
<author>
<name>Paolo Bonzini</name>
</author>
<published>2015-10-19T09:30:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ff3a8601b8a4be9932c714b59392900ecb10bc84'/>
<id>urn:sha1:ff3a8601b8a4be9932c714b59392900ecb10bc84</id>
<content type='text'>
commit 5690891bcec5fcfda38da974ffa5488e36a59811 upstream.

Not zeroing EFER means that a 32-bit firmware cannot enter paging mode
without clearing EFER.LME first (which it should not know about).
Yang Zhang from Intel confirmed that the manual is wrong and EFER is
cleared to zero on INIT.

Fixes: d28bc9dd25ce023270d2e039e7c98d38ecbf7758
Cc: Yang Z Zhang &lt;yang.z.zhang@intel.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
