linux-xiaomi-chiron/tools/testing/selftests/kvm
Sean Christopherson 6b6f71484b KVM: selftests: Implement memcmp(), memcpy(), and memset() for guest use
Implement memcmp(), memcpy(), and memset() to override the compiler's
built-in versions in order to guarantee that the compiler won't generate
out-of-line calls to external functions via the PLT.  This allows the
helpers to be safely used in guest code, as KVM selftests don't support
dynamic loading of guest code.

Steal the implementations from the kernel's generic versions, sans the
optimizations in memcmp() for unaligned accesses.

Put the utilities in a separate compilation unit and build with
-ffreestanding to fudge around a gcc "feature" where it will optimize
memset(), memcpy(), etc... by generating a recursive call.  I.e. the
compiler optimizes itself into infinite recursion.  Alternatively, the
individual functions could be tagged with
optimize("no-tree-loop-distribute-patterns"), but using "optimize" for
anything but debug is discouraged, and Linus NAK'd the use of the flag
in the kernel proper[*].

https://lore.kernel.org/lkml/CAHk-=wik-oXnUpfZ6Hw37uLykc-_P0Apyn2XuX-odh-3Nzop8w@mail.gmail.com

Cc: Andrew Jones <andrew.jones@linux.dev>
Cc: Anup Patel <anup@brainfault.org>
Cc: Atish Patra <atishp@atishpatra.org>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Janosch Frank <frankja@linux.ibm.com>
Cc: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220928233652.783504-2-seanjc@google.com>
Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-09-30 06:38:02 -04:00
..
aarch64 Merge tag 'kvmarm-5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD 2022-08-01 03:24:12 -04:00
include KVM: selftests: Skip tests that require EPT when it is not available 2022-09-27 07:58:03 -04:00
lib KVM: selftests: Implement memcmp(), memcpy(), and memset() for guest use 2022-09-30 06:38:02 -04:00
s390x KVM: selftests: Fix filename reporting in guest asserts 2022-07-13 18:14:08 -07:00
x86_64 KVM: selftests: Test all possible "invalid" PERF_CAPABILITIES.LBR_FMT vals 2022-08-10 15:08:29 -04:00
.gitignore KVM: selftests: Verify VMX MSRs can be restored to KVM-supported values 2022-07-28 13:25:24 -04:00
access_tracking_perf_test.c KVM: selftests: replace assertion with warning in access_tracking_perf_test 2022-09-30 06:38:00 -04:00
config selftests: kvm: Adding config fragments 2019-08-09 16:52:38 +02:00
demand_paging_test.c KVM: selftests: Purge vm+vcpu_id == vcpu silliness 2022-06-11 11:47:22 -04:00
dirty_log_perf_test.c KVM: selftests: Add an option to run vCPUs while disabling dirty logging 2022-07-28 13:22:24 -04:00
dirty_log_test.c KVM: selftests: Add kvm_has_cap() to provide syntactic sugar 2022-06-11 11:47:28 -04:00
hardware_disable_test.c KVM: selftests: Move per-VM/per-vCPU nr pages calculation to __vm_create() 2022-06-11 11:47:26 -04:00
kvm_binary_stats_test.c selftests: KVM: Add exponent check for boolean stats 2022-08-01 08:01:23 -04:00
kvm_create_max_vcpus.c KVM: selftests: Add TEST_REQUIRE macros to reduce skipping copy+paste 2022-06-11 11:47:29 -04:00
kvm_page_table_test.c KVM: selftests: Drop @num_percpu_pages from __vm_create_with_vcpus() 2022-06-11 11:47:25 -04:00
Makefile KVM: selftests: Implement memcmp(), memcpy(), and memset() for guest use 2022-09-30 06:38:02 -04:00
max_guest_memory_test.c KVM: selftests: Open code and drop 'struct kvm_vm' accessors 2022-06-11 11:47:24 -04:00
memslot_modification_stress_test.c KVM: selftests: Open code and drop 'struct kvm_vm' accessors 2022-06-11 11:47:24 -04:00
memslot_perf_test.c KVM: selftests: Fix filename reporting in guest asserts 2022-07-13 18:14:08 -07:00
rseq_test.c selftests: kvm: Fix a compile error in selftests/kvm/rseq_test.c 2022-09-22 17:02:20 -04:00
set_memory_region_test.c KVM: selftests: Fix filename reporting in guest asserts 2022-07-13 18:14:08 -07:00
settings selftests: kvm: Raise the default timeout to 120 seconds 2021-02-09 08:17:08 -05:00
steal_time.c KVM: selftests: Use kvm_cpu_has() for KVM's PV steal time 2022-07-13 18:14:13 -07:00
system_counter_offset_test.c KVM: selftests: Fix filename reporting in guest asserts 2022-07-13 18:14:08 -07:00