Skip to content

Commit 750ed56

Browse files
James MorseMarc Zyngier
authored andcommitted
KVM: arm64: Remove the target table
Finally, remove the target table. Merge the code that checks the tables into kvm_reset_sys_regs() as there is now only one table. Signed-off-by: James Morse <[email protected]> Signed-off-by: Marc Zyngier <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent dcaffa7 commit 750ed56

File tree

5 files changed

+12
-111
lines changed

5 files changed

+12
-111
lines changed

arch/arm64/include/asm/kvm_coproc.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,6 @@ struct kvm_sys_reg_table {
1919
size_t num;
2020
};
2121

22-
struct kvm_sys_reg_target_table {
23-
struct kvm_sys_reg_table table64;
24-
struct kvm_sys_reg_table table32;
25-
};
26-
27-
void kvm_check_target_sys_reg_table(struct kvm_sys_reg_target_table *table);
28-
2922
int kvm_handle_cp14_load_store(struct kvm_vcpu *vcpu, struct kvm_run *run);
3023
int kvm_handle_cp14_32(struct kvm_vcpu *vcpu, struct kvm_run *run);
3124
int kvm_handle_cp14_64(struct kvm_vcpu *vcpu, struct kvm_run *run);

arch/arm64/kvm/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ kvm-y := $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o \
1414
$(KVM)/vfio.o $(KVM)/irqchip.o \
1515
arm.o mmu.o mmio.o psci.o perf.o hypercalls.o pvtime.o \
1616
inject_fault.o regmap.o va_layout.o hyp.o hyp-init.o handle_exit.o \
17-
guest.o debug.o reset.o sys_regs.o sys_regs_generic_v8.o \
17+
guest.o debug.o reset.o sys_regs.o \
1818
vgic-sys-reg-v3.o fpsimd.o pmu.o \
1919
aarch32.o arch_timer.o \
2020
vgic/vgic.o vgic/vgic-init.o \

arch/arm64/kvm/sys_regs.c

Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2137,28 +2137,6 @@ static int check_sysreg_table(const struct sys_reg_desc *table, unsigned int n,
21372137
return 0;
21382138
}
21392139

2140-
void kvm_check_target_sys_reg_table(struct kvm_sys_reg_target_table *table)
2141-
{
2142-
BUG_ON(check_sysreg_table(table->table64.table, table->table64.num, false));
2143-
BUG_ON(check_sysreg_table(table->table32.table, table->table32.num, true));
2144-
}
2145-
2146-
/* Get specific register table for this target. */
2147-
static const struct sys_reg_desc *get_target_table(unsigned target,
2148-
bool mode_is_64,
2149-
size_t *num)
2150-
{
2151-
struct kvm_sys_reg_target_table *table = &genericv8_target_table;
2152-
2153-
if (mode_is_64) {
2154-
*num = table->table64.num;
2155-
return table->table64.table;
2156-
} else {
2157-
*num = table->table32.num;
2158-
return table->table32.table;
2159-
}
2160-
}
2161-
21622140
static int match_sys_reg(const void *key, const void *elt)
21632141
{
21642142
const unsigned long pval = (unsigned long)key;
@@ -2393,14 +2371,20 @@ static int emulate_sys_reg(struct kvm_vcpu *vcpu,
23932371
return 1;
23942372
}
23952373

2396-
static void reset_sys_reg_descs(struct kvm_vcpu *vcpu,
2397-
const struct sys_reg_desc *table, size_t num)
2374+
/**
2375+
* kvm_reset_sys_regs - sets system registers to reset value
2376+
* @vcpu: The VCPU pointer
2377+
*
2378+
* This function finds the right table above and sets the registers on the
2379+
* virtual CPU struct to their architecturally defined reset values.
2380+
*/
2381+
void kvm_reset_sys_regs(struct kvm_vcpu *vcpu)
23982382
{
23992383
unsigned long i;
24002384

2401-
for (i = 0; i < num; i++)
2402-
if (table[i].reset)
2403-
table[i].reset(vcpu, &table[i]);
2385+
for (i = 0; i < ARRAY_SIZE(sys_reg_descs); i++)
2386+
if (sys_reg_descs[i].reset)
2387+
sys_reg_descs[i].reset(vcpu, &sys_reg_descs[i]);
24042388
}
24052389

24062390
/**
@@ -2869,22 +2853,3 @@ void kvm_sys_reg_table_init(void)
28692853
/* Clear all higher bits. */
28702854
cache_levels &= (1 << (i*3))-1;
28712855
}
2872-
2873-
/**
2874-
* kvm_reset_sys_regs - sets system registers to reset value
2875-
* @vcpu: The VCPU pointer
2876-
*
2877-
* This function finds the right table above and sets the registers on the
2878-
* virtual CPU struct to their architecturally defined reset values.
2879-
*/
2880-
void kvm_reset_sys_regs(struct kvm_vcpu *vcpu)
2881-
{
2882-
size_t num;
2883-
const struct sys_reg_desc *table;
2884-
2885-
/* Generic chip reset first (so target could override). */
2886-
reset_sys_reg_descs(vcpu, sys_reg_descs, ARRAY_SIZE(sys_reg_descs));
2887-
2888-
table = get_target_table(vcpu->arch.target, true, &num);
2889-
reset_sys_reg_descs(vcpu, table, num);
2890-
}

arch/arm64/kvm/sys_regs.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,4 @@ const struct sys_reg_desc *find_reg_by_id(u64 id,
165165
CRn(sys_reg_CRn(reg)), CRm(sys_reg_CRm(reg)), \
166166
Op2(sys_reg_Op2(reg))
167167

168-
extern struct kvm_sys_reg_target_table genericv8_target_table;
169-
170168
#endif /* __ARM64_KVM_SYS_REGS_LOCAL_H__ */

arch/arm64/kvm/sys_regs_generic_v8.c

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)