summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/devices/memdev/full.go
diff options
context:
space:
mode:
authorhoward zhang <howard.zhang@arm.com>2021-03-29 13:54:21 +0800
committerHoward Zhang <howard.zhang@arm.com>2021-05-07 16:42:58 +0800
commit0bff4afd0fa8ac02dd27a4ba66a217d92e0020cf (patch)
tree9f5c5a17ef4fccf9a8830f0a19c54f1ca1aaa4b3 /pkg/sentry/devices/memdev/full.go
parent8a2f7e716dcc62f04d2808e8ade34941c94fc956 (diff)
Init all vCPU when initializing machine on ARM64
This patch is to solve problem that vCPU timer mess up when adding vCPU dynamically on ARM64, for detailed information please refer to: https://github.com/google/gvisor/issues/5739 There is no influence on x86 and here are main changes for ARM64: 1. create maxVCPUs number of vCPU in machine initialization 2. we want to sync gvisor vCPU number with host CPU number, so use smaller number between runtime.NumCPU and KVM_CAP_MAX_VCPUS to be maxVCPUS 3. put unused vCPUs into architecture-specific map initialvCPUs 4. When machine need to bind a new vCPU with tid, rather than creating new one, it would pick a vCPU from map initalvCPUs 5. change the setSystemTime function. When vCPU number increasing, the time cost for function setTSC(use syscall to set cntvoff) is liner growth from around 300 ns to 100000 ns, and this leads to the function setSystemTimeLegacy can not get correct offset value. 6. initializing StdioFDs and goferFD before a platform to avoid StdioFDs confects with vCPU fds Signed-off-by: howard zhang <howard.zhang@arm.com>
Diffstat (limited to 'pkg/sentry/devices/memdev/full.go')
0 files changed, 0 insertions, 0 deletions