load("//tools:defs.bzl", "go_library", "go_test") package(licenses = ["notice"]) go_library( name = "kvm", srcs = [ "address_space.go", "bluepill.go", "bluepill_allocator.go", "bluepill_amd64.go", "bluepill_amd64_unsafe.go", "bluepill_arm64.go", "bluepill_arm64.s", "bluepill_arm64_unsafe.go", "bluepill_fault.go", "bluepill_impl_amd64.s", "bluepill_unsafe.go", "context.go", "filters_amd64.go", "filters_arm64.go", "kvm.go", "kvm_amd64.go", "kvm_amd64_unsafe.go", "kvm_arm64.go", "kvm_arm64_unsafe.go", "kvm_const.go", "kvm_const_arm64.go", "machine.go", "machine_amd64.go", "machine_amd64_unsafe.go", "machine_arm64.go", "machine_arm64_unsafe.go", "machine_unsafe.go", "physical_map.go", "physical_map_amd64.go", "physical_map_arm64.go", "virtual_map.go", ], visibility = ["//pkg/sentry:internal"], deps = [ "//pkg/abi/linux", "//pkg/atomicbitops", "//pkg/context", "//pkg/cpuid", "//pkg/hostarch", "//pkg/log", "//pkg/procid", "//pkg/ring0", "//pkg/ring0/pagetables", "//pkg/safecopy", "//pkg/seccomp", "//pkg/sentry/arch", "//pkg/sentry/arch/fpu", "//pkg/sentry/memmap", "//pkg/sentry/platform", "//pkg/sentry/platform/interrupt", "//pkg/sentry/time", "//pkg/sync", "@org_golang_x_sys//unix:go_default_library", ], ) go_test( name = "kvm_test", srcs = [ "kvm_amd64_test.go", "kvm_amd64_test.s", "kvm_arm64_test.go", "kvm_test.go", "virtual_map_test.go", ], library = ":kvm", tags = [ "manual", "nogotsan", "requires-kvm", ], deps = [ "//pkg/hostarch", "//pkg/ring0", "//pkg/ring0/pagetables", "//pkg/sentry/arch", "//pkg/sentry/arch/fpu", "//pkg/sentry/platform", "//pkg/sentry/platform/kvm/testutil", "//pkg/sentry/time", "@org_golang_x_sys//unix:go_default_library", ], ) genrule( name = "bluepill_impl_amd64", srcs = ["bluepill_amd64.s"], outs = ["bluepill_impl_amd64.s"], cmd = "(echo -e '// build +amd64\\n' && $(location //pkg/ring0/gen_offsets) && cat $(SRCS)) > $@", tools = ["//pkg/ring0/gen_offsets"], )