Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bca556ac authored by Suzuki K. Poulose's avatar Suzuki K. Poulose Committed by Marc Zyngier
Browse files

arm64/kvm: Add generic v8 KVM target



This patch adds a generic ARM v8 KVM target cpu type for use
by the new CPUs which eventualy ends up using the common sys_reg
table. For backward compatibility the existing targets have been
preserved. Any new target CPU that can be covered by generic v8
sys_reg tables should make use of the new generic target.

Signed-off-by: default avatarSuzuki K. Poulose <suzuki.poulose@arm.com>
Acked-by: default avatarMarc Zyngier <Marc.Zyngier@arm.com>
Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent eef8c85a
Loading
Loading
Loading
Loading
+8 −2
Original line number Original line Diff line number Diff line
@@ -53,14 +53,20 @@ struct kvm_regs {
	struct user_fpsimd_state fp_regs;
	struct user_fpsimd_state fp_regs;
};
};


/* Supported Processor Types */
/*
 * Supported CPU Targets - Adding a new target type is not recommended,
 * unless there are some special registers not supported by the
 * genericv8 syreg table.
 */
#define KVM_ARM_TARGET_AEM_V8		0
#define KVM_ARM_TARGET_AEM_V8		0
#define KVM_ARM_TARGET_FOUNDATION_V8	1
#define KVM_ARM_TARGET_FOUNDATION_V8	1
#define KVM_ARM_TARGET_CORTEX_A57	2
#define KVM_ARM_TARGET_CORTEX_A57	2
#define KVM_ARM_TARGET_XGENE_POTENZA	3
#define KVM_ARM_TARGET_XGENE_POTENZA	3
#define KVM_ARM_TARGET_CORTEX_A53	4
#define KVM_ARM_TARGET_CORTEX_A53	4
/* Generic ARM v8 target */
#define KVM_ARM_TARGET_GENERIC_V8	5


#define KVM_ARM_NUM_TARGETS		5
#define KVM_ARM_NUM_TARGETS		6


/* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */
/* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */
#define KVM_ARM_DEVICE_TYPE_SHIFT	0
#define KVM_ARM_DEVICE_TYPE_SHIFT	0
+2 −1
Original line number Original line Diff line number Diff line
@@ -295,7 +295,8 @@ int __attribute_const__ kvm_target_cpu(void)
		break;
		break;
	};
	};


	return -EINVAL;
	/* Return a default generic target */
	return KVM_ARM_TARGET_GENERIC_V8;
}
}


int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init)
int kvm_vcpu_preferred_target(struct kvm_vcpu_init *init)
+2 −0
Original line number Original line Diff line number Diff line
@@ -94,6 +94,8 @@ static int __init sys_reg_genericv8_init(void)
					  &genericv8_target_table);
					  &genericv8_target_table);
	kvm_register_target_sys_reg_table(KVM_ARM_TARGET_XGENE_POTENZA,
	kvm_register_target_sys_reg_table(KVM_ARM_TARGET_XGENE_POTENZA,
					  &genericv8_target_table);
					  &genericv8_target_table);
	kvm_register_target_sys_reg_table(KVM_ARM_TARGET_GENERIC_V8,
					  &genericv8_target_table);


	return 0;
	return 0;
}
}