<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/virt/kvm/arm/hyp, branch linux-4.11.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.11.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.11.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2017-02-08T15:13:33Z</updated>
<entry>
<title>KVM: arm/arm64: Move cntvoff to each timer context</title>
<updated>2017-02-08T15:13:33Z</updated>
<author>
<name>Jintack Lim</name>
</author>
<published>2017-02-03T15:20:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=90de943a430028ee389b22bf4a7ae5867c32ce0c'/>
<id>urn:sha1:90de943a430028ee389b22bf4a7ae5867c32ce0c</id>
<content type='text'>
Make cntvoff per each timer context. This is helpful to abstract kvm
timer functions to work with timer context without considering timer
types (e.g. physical timer or virtual timer).

This also would pave the way for ever doing adjustments of the cntvoff
on a per-CPU basis if that should ever make sense.

Signed-off-by: Jintack Lim &lt;jintack@cs.columbia.edu&gt;
Signed-off-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>KVM: arm/arm64: Abstract virtual timer context into separate structure</title>
<updated>2017-02-08T15:13:32Z</updated>
<author>
<name>Jintack Lim</name>
</author>
<published>2017-02-03T15:19:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fbb4aeec5fc2ab47615b2a0cbabc503e1eef4c60'/>
<id>urn:sha1:fbb4aeec5fc2ab47615b2a0cbabc503e1eef4c60</id>
<content type='text'>
Abstract virtual timer context into a separate structure and change all
callers referring to timer registers, irq state and so on. No change in
functionality.

This is about to become very handy when adding the EL1 physical timer.

Signed-off-by: Jintack Lim &lt;jintack@cs.columbia.edu&gt;
Acked-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Acked-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: Access CNTHCTL_EL2 bit fields correctly on VHE systems</title>
<updated>2017-01-13T11:19:25Z</updated>
<author>
<name>Jintack Lim</name>
</author>
<published>2016-12-01T19:32:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=488f94d7212b00a2ec72fb886b155f1b04c5aa98'/>
<id>urn:sha1:488f94d7212b00a2ec72fb886b155f1b04c5aa98</id>
<content type='text'>
Current KVM world switch code is unintentionally setting wrong bits to
CNTHCTL_EL2 when E2H == 1, which may allow guest OS to access physical
timer.  Bit positions of CNTHCTL_EL2 are changing depending on
HCR_EL2.E2H bit.  EL1PCEN and EL1PCTEN are 1st and 0th bits when E2H is
not set, but they are 11th and 10th bits respectively when E2H is set.

In fact, on VHE we only need to set those bits once, not for every world
switch. This is because the host kernel runs in EL2 with HCR_EL2.TGE ==
1, which makes those bits have no effect for the host kernel execution.
So we just set those bits once for guests, and that's it.

Signed-off-by: Jintack Lim &lt;jintack@cs.columbia.edu&gt;
Reviewed-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>arm64: KVM: Move vgic-v3 save/restore to virt/kvm/arm/hyp</title>
<updated>2016-09-22T11:21:46Z</updated>
<author>
<name>Vladimir Murzin</name>
</author>
<published>2016-09-12T14:49:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=19f0ece4395470b24826fc090de2795ecc9cf4a0'/>
<id>urn:sha1:19f0ece4395470b24826fc090de2795ecc9cf4a0</id>
<content type='text'>
So we can reuse the code under arch/arm

Signed-off-by: Vladimir Murzin &lt;vladimir.murzin@arm.com&gt;
Acked-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: Inject a vSerror if detecting a bad GICV access at EL2</title>
<updated>2016-09-08T10:53:00Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2016-09-06T13:02:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3272f0d08e4490b792b99cf6034a2bb859bf6c9f'/>
<id>urn:sha1:3272f0d08e4490b792b99cf6034a2bb859bf6c9f</id>
<content type='text'>
If, when proxying a GICV access at EL2, we detect that the guest is
doing something silly, report an EL1 SError instead ofgnoring the
access.

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: vgic-v2: Add GICV access from HYP</title>
<updated>2016-09-08T10:53:00Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2016-09-06T08:28:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bf8feb39642b4c71c644e2d534ce53029bd2219b'/>
<id>urn:sha1:bf8feb39642b4c71c644e2d534ce53029bd2219b</id>
<content type='text'>
Now that we have the necessary infrastructure to handle MMIO accesses
in HYP, perform the GICV access on behalf of the guest. This requires
checking that the access is strictly 32bit, properly aligned, and
falls within the expected range.

When all condition are satisfied, we perform the access and tell
the rest of the HYP code that the instruction has been correctly
emulated.

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: vgic-v2: Add the GICV emulation infrastructure</title>
<updated>2016-09-08T10:53:00Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2016-09-06T08:28:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fb5ee369ccd3986b28adc20d43d73a2b2c141977'/>
<id>urn:sha1:fb5ee369ccd3986b28adc20d43d73a2b2c141977</id>
<content type='text'>
In order to efficiently perform the GICV access on behalf of the
guest, we need to be able to avoid going back all the way to
the host kernel.

For this, we introduce a new hook in the world switch code,
conveniently placed just after populating the fault info.
At that point, we only have saved/restored the GP registers,
and we can quickly perform all the required checks (data abort,
translation fault, valid faulting syndrome, not an external
abort, not a PTW).

Coming back from the emulation code, we need to skip the emulated
instruction. This involves an additional bit of save/restore in
order to be able to access the guest's PC (and possibly CPSR if
this is a 32bit guest).

At this stage, no emulation code is provided.

Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Reviewed-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm/arm64: The GIC is dead, long live the GIC</title>
<updated>2016-07-03T21:09:37Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2016-05-28T10:27:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=50926d82fa271fa76d5717b546a66f7b5703ff05'/>
<id>urn:sha1:50926d82fa271fa76d5717b546a66f7b5703ff05</id>
<content type='text'>
I don't think any single piece of the KVM/ARM code ever generated
as much hatred as the GIC emulation.

It was written by someone who had zero experience in modeling
hardware (me), was riddled with design flaws, should have been
scrapped and rewritten from scratch long before having a remote
chance of reaching mainline, and yet we supported it for a good
three years. No need to mention the names of those who suffered,
the git log is singing their praises.

Thankfully, we now have a much more maintainable implementation,
and we can safely put the grumpy old GIC to rest.

Fellow hackers, please raise your glass in memory of the GIC:

	The GIC is dead, long live the GIC!

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>KVM: arm/arm64: vgic-v2: Clear all dirty LRs</title>
<updated>2016-05-31T14:09:28Z</updated>
<author>
<name>Christoffer Dall</name>
</author>
<published>2016-05-25T14:26:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4d3afc9bad2b67b118a0cc204dc94703f7a44e74'/>
<id>urn:sha1:4d3afc9bad2b67b118a0cc204dc94703f7a44e74</id>
<content type='text'>
When saving the state of the list registers, it is critical to
reset them zero, as we could otherwise leave unexpected EOI
interrupts pending for virtual level interrupts.

Cc: stable@vger.kernel.org # v4.6+
Signed-off-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
Signed-off-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
</content>
</entry>
<entry>
<title>KVM: arm/arm64: vgic-new: enable build</title>
<updated>2016-05-20T13:40:09Z</updated>
<author>
<name>Andre Przywara</name>
</author>
<published>2016-03-16T15:06:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=efffe55af5e16f7935aa0175cf25c386f08219f5'/>
<id>urn:sha1:efffe55af5e16f7935aa0175cf25c386f08219f5</id>
<content type='text'>
Now that the new VGIC implementation has reached feature parity with
the old one, add the new files to the build system and add a Kconfig
option to switch between the two versions.
We set the default to the new version to get maximum test coverage,
in case people experience problems they can switch back to the old
behaviour if needed.

Signed-off-by: Andre Przywara &lt;andre.przywara@arm.com&gt;
Acked-by: Christoffer Dall &lt;christoffer.dall@linaro.org&gt;
</content>
</entry>
</feed>
