Hey Marc,
On Fri, Jul 28, 2023 at 09:29:45AM +0100, Marc Zyngier wrote:
[...]
quoted hunk ↗ jump to hunk
@@ -943,6 +1025,27 @@ void __init populate_nv_trap_config(void)
kvm_info("nv: %ld coarse grained trap handlers\n",
ARRAY_SIZE(encoding_to_cgt));
It might make sense to skip insertion of the FGT trap controls if the
system doesn't have FGT in the first place.
+ for (int i = 0; i < ARRAY_SIZE(encoding_to_fgt); i++) {
+ const struct encoding_to_trap_config *fgt = &encoding_to_fgt[i];
+ union trap_config tc;
+
+ tc = get_trap_config(fgt->encoding);
+
+ WARN(tc.fgt,
+ "Duplicate FGT for sys_reg(%d, %d, %d, %d, %d)\n",
+ sys_reg_Op0(fgt->encoding),
+ sys_reg_Op1(fgt->encoding),
+ sys_reg_CRn(fgt->encoding),
+ sys_reg_CRm(fgt->encoding),
+ sys_reg_Op2(fgt->encoding));
Same comment here, we should just bail.
+ tc.val |= fgt->tc.val;
+ xa_store(&sr_forward_xa, fgt->encoding,
+ xa_mk_value(tc.val), GFP_KERNEL);
+ }
+
+ kvm_info("nv: %ld fine grained trap handlers\n",
+ ARRAY_SIZE(encoding_to_fgt));
}
--
Thanks,
Oliver
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel