blob: a60055620a3ce064d81e2ebe4da2c99bc87e8549 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
architecture: 0.971
graphic: 0.946
arm: 0.899
performance: 0.874
device: 0.872
network: 0.860
files: 0.827
socket: 0.798
vnc: 0.776
kernel: 0.761
ppc: 0.755
PID: 0.740
risc-v: 0.701
register: 0.700
TCG: 0.667
debug: 0.654
semantic: 0.614
mistranslation: 0.608
permissions: 0.588
VMM: 0.577
boot: 0.542
hypervisor: 0.420
user-level: 0.419
peripherals: 0.365
KVM: 0.325
assembly: 0.290
virtual: 0.222
x86: 0.053
i386: 0.034
[AARCH64] GP bit (BTI) lost during two stages translation
Description of problem:
I noticed that the BTI faults were not reported.
That's because the GP (guarded page) information is lost during the two stages translation in get_phys_addr_twostage().
The "guarded" information is correctly retrieved by the first call to get_phys_addr_nogpc() but overwritten by the the second call to get_phys_addr_nogpc().
The call to combine_cacheattrs() copies cacheattrs1.guarded but this field is never modified.
The attached patch fixes the issue for me.
[get_phys_addr_twostage_bti_gp_bit_lost_master.patch](/uploads/2fbe8090f92c43a63e39ee66ab2daf47/get_phys_addr_twostage_bti_gp_bit_lost_master.patch)
|