cachepc

Prime+Probe cache-based side-channel attack on AMD SEV-SNP protected virtual machines
git clone https://git.sinitax.com/sinitax/cachepc
Log | Files | Refs | Submodules | README | sfeed.txt

commit 546a50cb8bb80775c71e7469f2a2891ac1fa1b24
parent 0fd95a9cab80941eb00a740213a644ae567b1cb2
Author: Louis Burda <quent.burda@gmail.com>
Date:   Mon,  6 Feb 2023 19:35:27 -0600

fixup! Swap gp registers to xmm in vmenter

Diffstat:
Mcachepc/cachepc.c | 6++++--
Mcachepc/cachepc.h | 1+
Mcachepc/kvm.c | 8++++----
Mtest/kvm-step.c | 2+-
4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/cachepc/cachepc.c b/cachepc/cachepc.c @@ -163,8 +163,10 @@ cpc_save_msrmts(struct cpc_cl *head) if (cl->first) { BUG_ON(cl->set >= L1_SETS); if (cl->count > L1_ASSOC) { - CPC_ERR("Read count %llu for set %u line %u", - cl->count, cl->set, cl->line); + CPC_ERR("OOB count %llu for set %u\n", + cl->count, cl->set); + } else if (cl->count == L1_ASSOC) { + CPC_ERR("Set %u saturated\n", cl->set); } cpc_msrmts[cl->set] = cl->count; } else { diff --git a/cachepc/cachepc.h b/cachepc/cachepc.h @@ -139,3 +139,4 @@ extern struct cpc_track_steps cpc_track_steps; extern struct list_head cpc_faults; extern struct cpc_cl *cpc_ds; +extern struct cpc_cl *cpc_ds_probe; diff --git a/cachepc/kvm.c b/cachepc/kvm.c @@ -92,7 +92,9 @@ EXPORT_SYMBOL(cpc_track_pages); struct cpc_cl *cpc_ds_ul = NULL; struct cpc_cl *cpc_ds = NULL; +struct cpc_cl *cpc_ds_probe = NULL; EXPORT_SYMBOL(cpc_ds); +EXPORT_SYMBOL(cpc_ds_probe); void cpc_prime_probe_test_asm(void); static noinline void cpc_prime_probe_test(void); @@ -683,8 +685,6 @@ cpc_setup_test(void *p) if (cpc_verify_topology()) goto exit; - cpc_ds = cpc_ds_alloc(&cpc_ds_ul); - cpc_system_setup(); spin_lock_irq(&lock); @@ -704,8 +704,8 @@ cpc_kvm_init(void) cpc_loglevel = 1; - cpc_ds = NULL; - cpc_ds_ul = NULL; + cpc_ds = cpc_ds_alloc(&cpc_ds_ul); + cpc_ds_probe = cpc_ds->prev; cpc_retinst = 0; cpc_retinst_user = 0; diff --git a/test/kvm-step.c b/test/kvm-step.c @@ -173,7 +173,7 @@ main(int argc, const char **argv) if (ret) err(1, "KVM_CPC_ACK_EVENT"); eventcnt = 0; - while (eventcnt < 61) { + while (eventcnt < 57) { eventcnt += monitor(&kvm, false); }