<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/arm64/kvm, branch linux-3.17.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-08-29T09:53:53Z</updated>
<entry>
<title>arm/arm64: KVM: Complete WFI/WFE instructions</title>
<updated>2014-08-29T09:53:53Z</updated>
<author>
<name>Christoffer Dall</name>
</author>
<published>2014-08-26T12:33:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=05e0127f9e362b36aa35f17b1a3d52bca9322a3a'/>
<id>urn:sha1:05e0127f9e362b36aa35f17b1a3d52bca9322a3a</id>
<content type='text'>
The architecture specifies that when the processor wakes up from a WFE
or WFI instruction, the instruction is considered complete, however we
currrently return to EL1 (or EL0) at the WFI/WFE instruction itself.

While most guests may not be affected by this because their local
exception handler performs an exception returning setting the event bit
or with an interrupt pending, some guests like UEFI will get wedged due
this little mishap.

Simply skip the instruction when we have completed the emulation.

Cc: &lt;stable@vger.kernel.org&gt;
Acked-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Cc: Ard Biesheuvel &lt;ard.biesheuvel@linaro.org&gt;
Signed-off-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
</content>
</entry>
<entry>
<title>ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU</title>
<updated>2014-08-29T09:53:26Z</updated>
<author>
<name>Pranavkumar Sawargaonkar</name>
</author>
<published>2014-07-31T06:53:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6edbbf36da3a27b298b66c7955fc84e1dcca305'/>
<id>urn:sha1:f6edbbf36da3a27b298b66c7955fc84e1dcca305</id>
<content type='text'>
X-Gene u-boot runs in EL2 mode with MMU enabled hence we might
have stale EL2 tlb enteris when we enable EL2 MMU on each host CPU.

This can happen on any ARM/ARM64 board running bootloader in
Hyp-mode (or EL2-mode) with MMU enabled.

This patch ensures that we flush all Hyp-mode (or EL2-mode) TLBs
on each host CPU before enabling Hyp-mode (or EL2-mode) MMU.

Cc: &lt;stable@vger.kernel.org&gt;
Tested-by: Mark Rutland &lt;mark.rutland@arm.com&gt;
Reviewed-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Signed-off-by: Pranavkumar Sawargaonkar &lt;pranavkumar@linaro.org&gt;
Signed-off-by: Anup Patel &lt;anup.patel@linaro.org&gt;
Signed-off-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: fix 64bit CP15 VM access for 32bit guests</title>
<updated>2014-08-01T12:05:06Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-08-01T11:00:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dedf97e8ff2c7513b1370e36b56e08b6bd0f0290'/>
<id>urn:sha1:dedf97e8ff2c7513b1370e36b56e08b6bd0f0290</id>
<content type='text'>
Commit f0a3eaff71b8 (ARM64: KVM: fix big endian issue in
access_vm_reg for 32bit guest) changed the way we handle CP15
VM accesses, so that all 64bit accesses are done via vcpu_sys_reg.

This looks like a good idea as it solves indianness issues in an
elegant way, except for one small detail: the register index is
doesn't refer to the same array! We end up corrupting some random
data structure instead.

Fix this by reverting to the original code, except for the introduction
of a vcpu_cp15_64_high macro that deals with the endianness thing.

Tested on Juno with 32bit SMP guests.

Cc: Victor Kamensky &lt;victor.kamensky@linaro.org&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Signed-off-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: GICv3: move system register access to msr_s/mrs_s</title>
<updated>2014-07-31T13:52:14Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-07-31T13:16:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f4c321eb268e932786c112e0b902ee942d91a336'/>
<id>urn:sha1:f4c321eb268e932786c112e0b902ee942d91a336</id>
<content type='text'>
Commit 72c583951526 (arm64: gicv3: Allow GICv3 compilation with
older binutils) changed the way we express the GICv3 system registers,
but couldn't change the occurences used by KVM as the code wasn't
merged yet.

Just fix the accessors.

Cc: Will Deacon &lt;will.deacon@arm.com&gt;
Cc: Catalin Marinas &lt;catalin.marinas@arm.com&gt;
Cc: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Acked-by: Will Deacon &lt;will.deacon@arm.com&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Signed-off-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: enable trapping of all debug registers</title>
<updated>2014-07-11T11:57:46Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-04-24T09:32:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d329de09333aeee127aaf22eb7cee9c2dc4cf475'/>
<id>urn:sha1:d329de09333aeee127aaf22eb7cee9c2dc4cf475</id>
<content type='text'>
Enable trapping of the debug registers, preventing the guests to
mess with the host state (and allowing guests to use the debug
infrastructure as well).

Reviewed-by: Anup Patel &lt;anup.patel@linaro.org&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: implement lazy world switch for debug registers</title>
<updated>2014-07-11T11:57:46Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-05-07T12:44:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b0e626b380872b663918230fafdac128c34fea56'/>
<id>urn:sha1:b0e626b380872b663918230fafdac128c34fea56</id>
<content type='text'>
Implement switching of the debug registers. While the number
of registers is massive, CPUs usually don't implement them all
(A57 has 6 breakpoints and 4 watchpoints, which gives us a total
of 22 registers "only").

Also, we only save/restore them when MDSCR_EL1 has debug enabled,
or when we've flagged the debug registers as dirty. It means that
most of the time, we only save/restore MDSCR_EL1.

Reviewed-by: Anup Patel &lt;anup.patel@linaro.org&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: add trap handlers for AArch32 debug registers</title>
<updated>2014-07-11T11:57:45Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-04-24T09:31:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bdfb4b389c8d8f07e2d5b8e1291e01c789ba4aad'/>
<id>urn:sha1:bdfb4b389c8d8f07e2d5b8e1291e01c789ba4aad</id>
<content type='text'>
Add handlers for all the AArch32 debug registers that are accessible
from EL0 or EL1. The code follow the same strategy as the AArch64
counterpart with regards to tracking the dirty state of the debug
registers.

Reviewed-by: Anup Patel &lt;anup.patel@linaro.org&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: check ordering of all system register tables</title>
<updated>2014-07-11T11:57:45Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-05-07T12:43:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e6a9551760623d1703487e8a16bb9c3ea8a7e7a8'/>
<id>urn:sha1:e6a9551760623d1703487e8a16bb9c3ea8a7e7a8</id>
<content type='text'>
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...).

Reviewed-by: Anup Patel &lt;anup.patel@linaro.org&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: use separate tables for AArch32 32 and 64bit traps</title>
<updated>2014-07-11T11:57:45Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-04-24T13:11:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a9866ba0cddfc497335fa02a175c4578b96722ff'/>
<id>urn:sha1:a9866ba0cddfc497335fa02a175c4578b96722ff</id>
<content type='text'>
An interesting "feature" of the CP14 encoding is that there is
an overlap between 32 and 64bit registers, meaning they cannot
live in the same table as we did for CP15.

Create separate tables for 64bit CP14 and CP15 registers, and
let the top level handler use the right one.

Reviewed-by: Anup Patel &lt;anup.patel@linaro.org&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: common infrastructure for handling AArch32 CP14/CP15</title>
<updated>2014-07-11T11:57:44Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2014-04-24T09:27:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=72564016aae45f42e488f926bc803f9a2e1c771c'/>
<id>urn:sha1:72564016aae45f42e488f926bc803f9a2e1c771c</id>
<content type='text'>
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.

Reviewed-by: Anup Patel &lt;anup.patel@linaro.org&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
</feed>
