<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/arch/x86/include/asm/kvm_emulate.h, branch dev</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2015-06-04T14:01:45+00:00</updated>
<entry>
<title>KVM: x86: stubs for SMM support</title>
<updated>2015-06-04T14:01:45+00:00</updated>
<author>
<name>Paolo Bonzini</name>
<email>pbonzini@redhat.com</email>
</author>
<published>2015-05-07T09:36:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=64d6067057d9658acb8675afcfba549abdb7fc16'/>
<id>urn:sha1:64d6067057d9658acb8675afcfba549abdb7fc16</id>
<content type='text'>
This patch adds the interface between x86.c and the emulator: the
SMBASE register, a new emulator flag, the RSM instruction.  It also
adds a new request bit that will be used by the KVM_SMI ioctl.

Reviewed-by: Radim Krčmář &lt;rkrcmar@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: x86: pass the whole hflags field to emulator and back</title>
<updated>2015-06-04T14:01:05+00:00</updated>
<author>
<name>Paolo Bonzini</name>
<email>pbonzini@redhat.com</email>
</author>
<published>2015-04-01T16:18:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=a584539b24b87dc8be83a713006396cabec47833'/>
<id>urn:sha1:a584539b24b87dc8be83a713006396cabec47833</id>
<content type='text'>
The hflags field will contain information about system management mode
and will be useful for the emulator.  Pass the entire field rather than
just the guest-mode information.

Reviewed-by: Radim Krčmář &lt;rkrcmar@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: x86: IRET emulation does not clear NMI masking</title>
<updated>2015-01-26T11:14:42+00:00</updated>
<author>
<name>Nadav Amit</name>
<email>namit@cs.technion.ac.il</email>
</author>
<published>2015-01-26T07:32:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=801806d956c2c198b9fdd3afd156a536f9a3a139'/>
<id>urn:sha1:801806d956c2c198b9fdd3afd156a536f9a3a139</id>
<content type='text'>
The IRET instruction should clear NMI masking, but the current implementation
does not do so.

Signed-off-by: Nadav Amit &lt;namit@cs.technion.ac.il&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: emulate: put pointers in the fetch_cache</title>
<updated>2014-07-11T07:14:03+00:00</updated>
<author>
<name>Paolo Bonzini</name>
<email>pbonzini@redhat.com</email>
</author>
<published>2014-05-06T14:33:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=17052f16a51af6d8f4b7eee0631af675ac204f65'/>
<id>urn:sha1:17052f16a51af6d8f4b7eee0631af675ac204f65</id>
<content type='text'>
This simplifies the code a bit, especially the overflow checks.

Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: emulate: do not initialize memopp</title>
<updated>2014-07-11T07:14:01+00:00</updated>
<author>
<name>Bandan Das</name>
<email>bsd@redhat.com</email>
</author>
<published>2014-04-16T16:46:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=41061cdb98a0bec464278b4db8e894a3121671f5'/>
<id>urn:sha1:41061cdb98a0bec464278b4db8e894a3121671f5</id>
<content type='text'>
rip_relative is only set if decode_modrm runs, and if you have ModRM
you will also have a memopp.  We can then access memopp unconditionally.
Note that rip_relative cannot be hoisted up to decode_modrm, or you
break "mov $0, xyz(%rip)".

Also, move typecast on "out of range value" of mem.ea to decode_modrm.

Together, all these optimizations save about 50 cycles on each emulated
instructions (4-6%).

Signed-off-by: Bandan Das &lt;bsd@redhat.com&gt;
[Fix immediate operands with rip-relative addressing. - Paolo]
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: emulate: rework seg_override</title>
<updated>2014-07-11T07:14:01+00:00</updated>
<author>
<name>Bandan Das</name>
<email>bsd@redhat.com</email>
</author>
<published>2014-04-16T16:46:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=573e80fe04db1aa44e8303037f65716ba5c3a343'/>
<id>urn:sha1:573e80fe04db1aa44e8303037f65716ba5c3a343</id>
<content type='text'>
x86_decode_insn already sets a default for seg_override,
so remove it from the zeroed area. Also replace set/get functions
with direct access to the field.

Signed-off-by: Bandan Das &lt;bsd@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: emulate: clean up initializations in init_decode_cache</title>
<updated>2014-07-11T07:14:00+00:00</updated>
<author>
<name>Bandan Das</name>
<email>bsd@redhat.com</email>
</author>
<published>2014-04-16T16:46:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c44b4c6ab80eef3a9c52c7b3f0c632942e6489aa'/>
<id>urn:sha1:c44b4c6ab80eef3a9c52c7b3f0c632942e6489aa</id>
<content type='text'>
A lot of initializations are unnecessary as they get set to
appropriate values before actually being used. Optimize
placement of fields in x86_emulate_ctxt

Signed-off-by: Bandan Das &lt;bsd@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: emulate: move init_decode_cache to emulate.c</title>
<updated>2014-07-11T07:13:59+00:00</updated>
<author>
<name>Bandan Das</name>
<email>bsd@redhat.com</email>
</author>
<published>2014-04-16T16:46:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=1498507a47867596de158d4db8728e92385a4919'/>
<id>urn:sha1:1498507a47867596de158d4db8728e92385a4919</id>
<content type='text'>
Core emulator functions all belong in emulator.c,
x86 should have no knowledge of emulator internals

Signed-off-by: Bandan Das &lt;bsd@redhat.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: emulate: speed up emulated moves</title>
<updated>2014-07-11T07:13:58+00:00</updated>
<author>
<name>Paolo Bonzini</name>
<email>pbonzini@redhat.com</email>
</author>
<published>2014-03-27T10:36:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=54cfdb3e95d4f70409a7d3432a42cffc9a232be7'/>
<id>urn:sha1:54cfdb3e95d4f70409a7d3432a42cffc9a232be7</id>
<content type='text'>
We can just blindly move all 16 bytes of ctxt-&gt;src's value to ctxt-&gt;dst.
write_register_operand will take care of writing only the lower bytes.

Avoiding a call to memcpy (the compiler optimizes it out) gains about
200 cycles on kvm-unit-tests for register-to-register moves, and makes
them about as fast as arithmetic instructions.

We could perhaps get a larger speedup by moving all instructions _except_
moves out of x86_emulate_insn, removing opcode_len, and replacing the
switch statement with an inlined em_mov.

Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
<entry>
<title>KVM: nSVM: Set correct port for IOIO interception evaluation</title>
<updated>2014-07-09T16:09:56+00:00</updated>
<author>
<name>Jan Kiszka</name>
<email>jan.kiszka@siemens.com</email>
</author>
<published>2014-06-30T10:52:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=6cbc5f5a80a9ae5a80bc81efc574b5a85bfd4a84'/>
<id>urn:sha1:6cbc5f5a80a9ae5a80bc81efc574b5a85bfd4a84</id>
<content type='text'>
Obtaining the port number from DX is bogus as a) there are immediate
port accesses and b) user space may have changed the register content
while processing the PIO access. Forward the correct value from the
instruction emulator instead.

Signed-off-by: Jan Kiszka &lt;jan.kiszka@siemens.com&gt;
Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
</content>
</entry>
</feed>
