mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-29 20:24:31 +00:00
qemu: add support for SGX
Define and implement memory-backend-epc object Signed-off-by: Julio Montes <julio.montes@intel.com>
This commit is contained in:
parent
aaac742762
commit
8939b0f8e0
16
qemu/qemu.go
16
qemu/qemu.go
@ -234,6 +234,9 @@ const (
|
|||||||
// MemoryBackendFile represents a guest memory mapped file.
|
// MemoryBackendFile represents a guest memory mapped file.
|
||||||
MemoryBackendFile ObjectType = "memory-backend-file"
|
MemoryBackendFile ObjectType = "memory-backend-file"
|
||||||
|
|
||||||
|
// MemoryBackendEPC represents a guest memory backend EPC for SGX.
|
||||||
|
MemoryBackendEPC ObjectType = "memory-backend-epc"
|
||||||
|
|
||||||
// TDXGuest represents a TDX object
|
// TDXGuest represents a TDX object
|
||||||
TDXGuest ObjectType = "tdx-guest"
|
TDXGuest ObjectType = "tdx-guest"
|
||||||
|
|
||||||
@ -283,6 +286,9 @@ type Object struct {
|
|||||||
|
|
||||||
// ReadOnly specifies whether `MemPath` is opened read-only or read/write (default)
|
// ReadOnly specifies whether `MemPath` is opened read-only or read/write (default)
|
||||||
ReadOnly bool
|
ReadOnly bool
|
||||||
|
|
||||||
|
// Prealloc enables memory preallocation
|
||||||
|
Prealloc bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valid returns true if the Object structure is valid and complete.
|
// Valid returns true if the Object structure is valid and complete.
|
||||||
@ -290,6 +296,8 @@ func (object Object) Valid() bool {
|
|||||||
switch object.Type {
|
switch object.Type {
|
||||||
case MemoryBackendFile:
|
case MemoryBackendFile:
|
||||||
return object.ID != "" && object.MemPath != "" && object.Size != 0
|
return object.ID != "" && object.MemPath != "" && object.Size != 0
|
||||||
|
case MemoryBackendEPC:
|
||||||
|
return object.ID != "" && object.Size != 0
|
||||||
case TDXGuest:
|
case TDXGuest:
|
||||||
return object.ID != "" && object.File != "" && object.DeviceID != ""
|
return object.ID != "" && object.File != "" && object.DeviceID != ""
|
||||||
case SEVGuest:
|
case SEVGuest:
|
||||||
@ -326,6 +334,14 @@ func (object Object) QemuParams(config *Config) []string {
|
|||||||
objectParams = append(objectParams, "readonly=on")
|
objectParams = append(objectParams, "readonly=on")
|
||||||
deviceParams = append(deviceParams, "unarmed=on")
|
deviceParams = append(deviceParams, "unarmed=on")
|
||||||
}
|
}
|
||||||
|
case MemoryBackendEPC:
|
||||||
|
objectParams = append(objectParams, string(object.Type))
|
||||||
|
objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID))
|
||||||
|
objectParams = append(objectParams, fmt.Sprintf("size=%d", object.Size))
|
||||||
|
if object.Prealloc {
|
||||||
|
objectParams = append(objectParams, "prealloc=on")
|
||||||
|
}
|
||||||
|
|
||||||
case TDXGuest:
|
case TDXGuest:
|
||||||
objectParams = append(objectParams, string(object.Type))
|
objectParams = append(objectParams, string(object.Type))
|
||||||
objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID))
|
objectParams = append(objectParams, fmt.Sprintf("id=%s", object.ID))
|
||||||
|
@ -144,6 +144,19 @@ func TestAppendDeviceNVDIMM(t *testing.T) {
|
|||||||
testAppend(object, deviceNVDIMMString, t)
|
testAppend(object, deviceNVDIMMString, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var objectEPCString = "-object memory-backend-epc,id=epc0,size=65536,prealloc=on"
|
||||||
|
|
||||||
|
func TestAppendEPCObject(t *testing.T) {
|
||||||
|
object := Object{
|
||||||
|
Type: MemoryBackendEPC,
|
||||||
|
ID: "epc0",
|
||||||
|
Size: 1 << 16,
|
||||||
|
Prealloc: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
testAppend(object, objectEPCString, t)
|
||||||
|
}
|
||||||
|
|
||||||
func TestAppendDeviceFS(t *testing.T) {
|
func TestAppendDeviceFS(t *testing.T) {
|
||||||
fsdev := FSDevice{
|
fsdev := FSDevice{
|
||||||
Driver: Virtio9P,
|
Driver: Virtio9P,
|
||||||
|
Loading…
Reference in New Issue
Block a user