Skip to content

Commit 9ff67dd

Browse files
Fuad TabbaMarc Zyngier
authored andcommitted
KVM: arm64: Use generated FGT RES0 bits instead of specifying them
Now that all FGT fields are accounted for and represented, use the generated value instead of manually specifying them. For __HFGWTR_EL2_RES0, however, there is no generated value. Its fields are subset of HFGRTR_EL2, with the remaining being RES0. Therefore, add a mask that represents the HFGRTR_EL2 only bits and define __HFGWTR_EL2_* using those and the __HFGRTR_EL2_* fields. No functional change intended. Signed-off-by: Fuad Tabba <tabba@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20231214100158.2305400-13-tabba@google.com
1 parent 6c4abbe commit 9ff67dd

1 file changed

Lines changed: 16 additions & 18 deletions

File tree

arch/arm64/include/asm/kvm_arm.h

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -344,47 +344,45 @@
344344
* Once we get to a point where the two describe the same thing, we'll
345345
* merge the definitions. One day.
346346
*/
347-
#define __HFGRTR_EL2_RES0 BIT(51)
347+
#define __HFGRTR_EL2_RES0 HFGxTR_EL2_RES0
348348
#define __HFGRTR_EL2_MASK GENMASK(49, 0)
349349
#define __HFGRTR_EL2_nMASK (GENMASK(63, 52) | BIT(50))
350350

351-
#define __HFGWTR_EL2_RES0 (BIT(51) | BIT(46) | BIT(42) | BIT(40) | \
352-
BIT(28) | GENMASK(26, 25) | BIT(21) | BIT(18) | \
351+
/*
352+
* The HFGWTR bits are a subset of HFGRTR bits. To ensure we don't miss any
353+
* future additions, define __HFGWTR* macros relative to __HFGRTR* ones.
354+
*/
355+
#define __HFGRTR_ONLY_MASK (BIT(46) | BIT(42) | BIT(40) | BIT(28) | \
356+
GENMASK(26, 25) | BIT(21) | BIT(18) | \
353357
GENMASK(15, 14) | GENMASK(10, 9) | BIT(2))
354-
#define __HFGWTR_EL2_MASK (GENMASK(49, 47) | GENMASK(45, 43) | \
355-
BIT(41) | GENMASK(39, 29) | BIT(27) | \
356-
GENMASK(24, 22) | GENMASK(20, 19) | \
357-
GENMASK(17, 16) | GENMASK(13, 11) | \
358-
GENMASK(8, 3) | GENMASK(1, 0))
359-
#define __HFGWTR_EL2_nMASK (GENMASK(63, 52) | BIT(50))
360-
361-
#define __HFGITR_EL2_RES0 (BIT(63) | BIT(61))
358+
#define __HFGWTR_EL2_RES0 (__HFGRTR_EL2_RES0 | __HFGRTR_ONLY_MASK)
359+
#define __HFGWTR_EL2_MASK (__HFGRTR_EL2_MASK & ~__HFGRTR_ONLY_MASK)
360+
#define __HFGWTR_EL2_nMASK (__HFGRTR_EL2_nMASK & ~__HFGRTR_ONLY_MASK)
361+
362+
#define __HFGITR_EL2_RES0 HFGITR_EL2_RES0
362363
#define __HFGITR_EL2_MASK (BIT(62) | BIT(60) | GENMASK(54, 0))
363364
#define __HFGITR_EL2_nMASK GENMASK(59, 55)
364365

365-
#define __HDFGRTR_EL2_RES0 (BIT(49) | BIT(42) | GENMASK(39, 38) | \
366-
GENMASK(21, 20) | BIT(8))
366+
#define __HDFGRTR_EL2_RES0 HDFGRTR_EL2_RES0
367367
#define __HDFGRTR_EL2_MASK (BIT(63) | GENMASK(58, 50) | GENMASK(48, 43) | \
368368
GENMASK(41, 40) | GENMASK(37, 22) | \
369369
GENMASK(19, 9) | GENMASK(7, 0))
370370
#define __HDFGRTR_EL2_nMASK GENMASK(62, 59)
371371

372-
#define __HDFGWTR_EL2_RES0 (BIT(63) | GENMASK(59, 58) | BIT(51) | BIT(47) | \
373-
BIT(43) | GENMASK(40, 38) | BIT(34) | BIT(30) | \
374-
BIT(22) | BIT(9) | BIT(6))
372+
#define __HDFGWTR_EL2_RES0 HDFGWTR_EL2_RES0
375373
#define __HDFGWTR_EL2_MASK (GENMASK(57, 52) | GENMASK(50, 48) | \
376374
GENMASK(46, 44) | GENMASK(42, 41) | \
377375
GENMASK(37, 35) | GENMASK(33, 31) | \
378376
GENMASK(29, 23) | GENMASK(21, 10) | \
379377
GENMASK(8, 7) | GENMASK(5, 0))
380378
#define __HDFGWTR_EL2_nMASK GENMASK(62, 60)
381379

382-
#define __HAFGRTR_EL2_RES0 (GENMASK(63, 50) | GENMASK(16, 5))
380+
#define __HAFGRTR_EL2_RES0 HAFGRTR_EL2_RES0
383381
#define __HAFGRTR_EL2_MASK (GENMASK(49, 17) | GENMASK(4, 0))
384382
#define __HAFGRTR_EL2_nMASK 0UL
385383

386384
/* Similar definitions for HCRX_EL2 */
387-
#define __HCRX_EL2_RES0 (GENMASK(63, 25) | GENMASK(13, 12))
385+
#define __HCRX_EL2_RES0 HCRX_EL2_RES0
388386
#define __HCRX_EL2_MASK (BIT(6))
389387
#define __HCRX_EL2_nMASK (GENMASK(24, 14) | GENMASK(11, 7) | GENMASK(5, 0))
390388

0 commit comments

Comments
 (0)