Merge pull request #1986 from marcov/kvm-required

kata-check: require kvm modules for amd64
This commit is contained in:
James O. D. Hunt
2019-08-29 16:31:27 +01:00
committed by GitHub
2 changed files with 64 additions and 6 deletions

View File

@@ -116,17 +116,21 @@ func setCPUtype(hypervisorType vc.HypervisorType) error {
} }
archRequiredKernelModules = map[string]kernelModule{ archRequiredKernelModules = map[string]kernelModule{
kernelModkvm: { kernelModkvm: {
desc: msgKernelVM, desc: msgKernelVM,
required: true,
}, },
kernelModkvmintel: { kernelModkvmintel: {
desc: "Intel KVM", desc: "Intel KVM",
parameters: kvmIntelParams, parameters: kvmIntelParams,
required: true,
}, },
kernelModvhost: { kernelModvhost: {
desc: msgKernelVirtio, desc: msgKernelVirtio,
required: true,
}, },
kernelModvhostnet: { kernelModvhostnet: {
desc: msgKernelVirtioNet, desc: msgKernelVirtioNet,
required: true,
}, },
kernelModvhostvsock: { kernelModvhostvsock: {
desc: msgKernelVirtioVhostVsock, desc: msgKernelVirtioVhostVsock,
@@ -143,13 +147,16 @@ func setCPUtype(hypervisorType vc.HypervisorType) error {
} }
archRequiredKernelModules = map[string]kernelModule{ archRequiredKernelModules = map[string]kernelModule{
kernelModvhm: { kernelModvhm: {
desc: "Intel ACRN", desc: "Intel ACRN",
required: false,
}, },
kernelModvhost: { kernelModvhost: {
desc: msgKernelVirtio, desc: msgKernelVirtio,
required: false,
}, },
kernelModvhostnet: { kernelModvhostnet: {
desc: msgKernelVirtioNet, desc: msgKernelVirtioNet,
required: false,
}, },
} }
default: default:

View File

@@ -854,3 +854,54 @@ func TestCheckKernelParamHandler(t *testing.T) {
// single error (due to "param1"'s value being different) // single error (due to "param1"'s value being different)
checkKernelParamHandler(assert, testDataToCreate, testDataToExpect, nil, false, uint32(1)) checkKernelParamHandler(assert, testDataToCreate, testDataToExpect, nil, false, uint32(1))
} }
func TestArchRequiredKernelModules(t *testing.T) {
assert := assert.New(t)
tmpdir, err := ioutil.TempDir("", "")
assert.NoError(err)
defer os.RemoveAll(tmpdir)
_, config, err := makeRuntimeConfig(tmpdir)
assert.NoError(err)
err = setCPUtype(config.HypervisorType)
assert.NoError(err)
if len(archRequiredKernelModules) == 0 {
// No modules to check
return
}
dir, err := ioutil.TempDir("", "")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
savedModProbeCmd := modProbeCmd
savedSysModuleDir := sysModuleDir
// XXX: override
sysModuleDir = filepath.Join(dir, "sys/module")
modProbeCmd = "false"
defer func() {
sysModuleDir = savedSysModuleDir
modProbeCmd = savedModProbeCmd
}()
// Running check with no modules
count, err := checkKernelModules(archRequiredKernelModules, nil)
assert.NoError(err)
// Test that count returned matches the # of modules with required set.
expectedCount := 0
for _, module := range archRequiredKernelModules {
if module.required {
expectedCount++
}
}
assert.EqualValues(count, expectedCount)
}