On 12/12/25 4:11 AM, Sebastian Ott wrote:
On Thu, 11 Dec 2025, Jiaqi Yan wrote:
CONFIGs seem alright to me. Do you boot kernel with cmdline options like
"default_hugepagesz=1G hugepagesz=1G hugepages=64", or dynamically set up
huge pages via "echo 64 >
/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages"?
Neither of these. When I do the test is skipped:
# echo 64 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
The backing memory is tied to 1GB hugetlb pages which are available on 4KB
and 16KB host, but not on 64KB host. So I guess 512MB hugetlb pages shall
be used on 64KB host?
# ./arm64/sea_to_user
Random seed: 0x6b8b4567
# Mapped 0x40000 pages: gva=0x80000000 to gpa=0xff80000000
# Before EINJect: data=0xbaadcafe
# EINJ_GVA=0x81234bad, einj_gpa=0xff81234bad, einj_hva=0xffff41234bad,
einj_hpa=0x80241234bad
ok 1 # SKIP EINJ module probably not loaded?sh: line 1:
/sys/kernel/debug/apei/einj/error_type: No such file or directory
Bail out! Failed to write EINJ entry: No such file or directory (2)
# 1 skipped test(s) detected. Consider enabling relevant config options to
improve coverage.
# Planned tests != run tests (0 != 1)
# Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
On one of my machines where RAS feature used to work, the test case passed
on 4KB host.
host$ cat /proc/1/smaps | grep KernelPageSize | head -n 1
KernelPageSize: 4 kB
host$ modprobe einj
host$ echo 4 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
host$ ./sea_to_user
Random seed: 0x6b8b4567
# Mapped 0x40000 pages: gva=0x80000000 to gpa=0xff80000000
# Before EINJect: data=0xbaadcafe
# EINJ_GVA=0x81234bad, einj_gpa=0xff81234bad, einj_hva=0xffff41234bad,
einj_hpa=0x400081234bad
# echo 0x10 > /sys/kernel/debug/apei/einj/error_type - done
# echo 0x2 > /sys/kernel/debug/apei/einj/flags - done
# echo 0x400081234bad > /sys/kernel/debug/apei/einj/param1 - done
# echo 0xffffffffffffffff > /sys/kernel/debug/apei/einj/param2 - done
# echo 0x1 > /sys/kernel/debug/apei/einj/notrigger - done
# echo 0x1 > /sys/kernel/debug/apei/einj/error_inject - done
# Memory UER EINJected
# SIGBUS (7) received, dumping siginfo...
# si_signo=7, si_errno=0, si_code=4, si_addr=0xffff41234000
ok 1 # SKIP SEA is claimed by host APEI
Thanks,
Gavin