mirror of
				https://github.com/kata-containers/kata-containers.git
				synced 2025-11-04 03:29:55 +00:00 
			
		
		
		
	qmp: add checks for the CPU toplogy
Support for function isSocketIDSupported, isThreadIDSupported and isDieIDSupported. The functions check if the cpu driver and the qemu version support the id parameter. Fixes: #102 Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
This commit is contained in:
		
							
								
								
									
										30
									
								
								qemu/qmp.go
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								qemu/qmp.go
									
									
									
									
									
								
							@@ -1158,6 +1158,30 @@ func (q *QMP) ExecutePCIVFIOMediatedDeviceAdd(ctx context.Context, devID, sysfsd
 | 
			
		||||
	return q.executeCommand(ctx, "device_add", args, nil)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isSocketIDSupported returns if the cpu driver supports the socket id option
 | 
			
		||||
func isSocketIDSupported(driver string) bool {
 | 
			
		||||
	if driver == "host-s390x-cpu" || driver == "host-powerpc64-cpu" {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isThreadIDSupported returns if the cpu driver supports the thread id option
 | 
			
		||||
func isThreadIDSupported(driver string) bool {
 | 
			
		||||
	if driver == "host-s390x-cpu" || driver == "host-powerpc64-cpu" {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isDieIDSupported returns if the cpu driver and the qemu version support the die id option
 | 
			
		||||
func (q *QMP) isDieIDSupported(driver string) bool {
 | 
			
		||||
	if (q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1)) && driver == "host-x86_64-cpu" {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ExecuteCPUDeviceAdd adds a CPU to a QEMU instance using the device_add command.
 | 
			
		||||
// driver is the CPU model, cpuID must be a unique ID to identify the CPU, socketID is the socket number within
 | 
			
		||||
// node/board the CPU belongs to, coreID is the core number within socket the CPU belongs to, threadID is the
 | 
			
		||||
@@ -1170,15 +1194,15 @@ func (q *QMP) ExecuteCPUDeviceAdd(ctx context.Context, driver, cpuID, socketID,
 | 
			
		||||
		"core-id": coreID,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if socketID != "" {
 | 
			
		||||
	if socketID != "" && isSocketIDSupported(driver) {
 | 
			
		||||
		args["socket-id"] = socketID
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if threadID != "" {
 | 
			
		||||
	if threadID != "" && isThreadIDSupported(driver) {
 | 
			
		||||
		args["thread-id"] = threadID
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if q.version.Major > 4 || (q.version.Major == 4 && q.version.Minor >= 1) {
 | 
			
		||||
	if q.isDieIDSupported(driver) {
 | 
			
		||||
		if dieID != "" {
 | 
			
		||||
			args["die-id"] = dieID
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user