Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,17 @@ def waitpkg_bin(test_fc_session_root_path):
yield waitpkg_bin_path


@pytest.fixture(scope="session")
def msr_reader_bin(test_fc_session_root_path):
"""Build a binary that reads msrs"""
msr_reader_bin_path = os.path.join(test_fc_session_root_path, "msr_reader")
build_tools.gcc_compile(
"data/msr/msr_reader.c",
msr_reader_bin_path,
)
yield msr_reader_bin_path


@pytest.fixture
def bin_seccomp_paths():
"""Build jailers and jailed binaries to test seccomp.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x7e1358a6
0x11,0x24b8008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x6f36e74e
0x11,0x25cb008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xbae96682
0x11,0x24a1008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x7b423550
0x11,0x25cb008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xfd7a7f6d
0x11,0x2501008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xfd7a7f6d
0x11,0x2501008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xd2adc3c4
0x11,0x2a00000
Expand Down
2 changes: 1 addition & 1 deletion tests/data/msr/msr_list_T2A_AMD_MILAN_6.1host_6.1guest.csv
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xd2adc3c4
0x11,0x2a00000
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xbe7f66e8
0x11,0x2748008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xbe7f66e8
0x11,0x2748008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xf8c468e6
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xf8c468e6
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x114970c7a
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x114970c7a
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x119817846
0x11,0x2748008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x119817846
0x11,0x2748008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xc1aa1fac
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xc1aa1fac
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xf68480f8
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xf68480f8
0x11,0x2502008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xff34f950
0x11,0x2748008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0xff34f950
0x11,0x2748008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x1000556b4
0x11,0x2748008
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MSR_ADDR,VALUE
0,0x0
0x0,0x0
0x1,0x0
0x10,0x1000556b4
0x11,0x2748008
Expand Down
38 changes: 38 additions & 0 deletions tests/data/msr/msr_reader.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

// Helper script used to read MSR values from ranges known to contain MSRs.

#include <fcntl.h>
#include <stdint.h>
#include <stdio.h>
#include <unistd.h>

void print_msr(int msr_fd, uint64_t msr) {
uint64_t value;
if (pread(msr_fd, &value, sizeof(value), msr) == sizeof(value))
printf("0x%llx,0x%llx\n", msr, value);
}

int main() {
int msr_fd = open("/dev/cpu/0/msr", O_RDONLY);
if (msr_fd < 0)
return -1;

printf("MSR_ADDR,VALUE\n");
for (uint64_t msr = 0; msr <= 0xFFF; msr++)
print_msr(msr_fd, msr);
for (uint64_t msr = 0x10000; msr <= 0x10FFF; msr++)
print_msr(msr_fd, msr);
for (uint64_t msr = 0xC0000000; msr <= 0xC0011030; msr++)
print_msr(msr_fd, msr);

print_msr(msr_fd, 0x400000000);
print_msr(msr_fd, 0x2000000000);
print_msr(msr_fd, 0x4000000000);
print_msr(msr_fd, 0x8000000000);
print_msr(msr_fd, 0x1000000000000);
print_msr(msr_fd, 0x3c000000000000);
print_msr(msr_fd, 0x80000000000000);
print_msr(msr_fd, 0x40000000000000);
}
45 changes: 0 additions & 45 deletions tests/data/msr/msr_reader.sh

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ def test_brand_string(uvm_plain_any):
@pytest.mark.timeout(900)
@pytest.mark.nonci
def test_cpu_rdmsr(
microvm_factory, cpu_template_any, guest_kernel, rootfs, results_dir
msr_reader_bin, microvm_factory, cpu_template_any, guest_kernel, rootfs, results_dir
):
"""
Test MSRs that are available to the guest.
Expand Down Expand Up @@ -300,8 +300,8 @@ def test_cpu_rdmsr(
vm.basic_config(vcpu_count=vcpus, mem_size_mib=guest_mem_mib)
vm.set_cpu_template(cpu_template_any)
vm.start()
vm.ssh.scp_put(DATA_FILES / "msr_reader.sh", "/tmp/msr_reader.sh")
_, stdout, stderr = vm.ssh.run("/tmp/msr_reader.sh", timeout=None)
vm.ssh.scp_put(msr_reader_bin, "/tmp/msr_reader")
_, stdout, stderr = vm.ssh.run("/tmp/msr_reader")
assert stderr == ""

# Load results read from the microvm
Expand Down