xref: /kvmtool/powerpc/cpu_info.h (revision cb90966cffa940027f52b8f7622403a305534e55)
1d391177aSMatt Evans /*
2d391177aSMatt Evans  * PPC CPU identification
3d391177aSMatt Evans  *
4d391177aSMatt Evans  * Copyright 2012 Matt Evans <matt@ozlabs.org>, IBM Corporation.
5d391177aSMatt Evans  *
6d391177aSMatt Evans  * This program is free software; you can redistribute it and/or modify it
7d391177aSMatt Evans  * under the terms of the GNU General Public License version 2 as published
8d391177aSMatt Evans  * by the Free Software Foundation.
9d391177aSMatt Evans  */
10d391177aSMatt Evans 
11d391177aSMatt Evans #ifndef CPU_INFO_H
12d391177aSMatt Evans #define CPU_INFO_H
13d391177aSMatt Evans 
144a75c603SMichael Ellerman #include <kvm/kvm.h>
154a75c603SMichael Ellerman 
16d391177aSMatt Evans #include <linux/types.h>
17d391177aSMatt Evans #include <linux/kernel.h>
18*de494ec5SMichael Ellerman #include <linux/kvm.h>
19d391177aSMatt Evans 
20d391177aSMatt Evans struct cpu_info {
21d391177aSMatt Evans 	const char	*name;
2295477af3SMichael Ellerman 	u32		tb_freq; /* timebase frequency */
2395477af3SMichael Ellerman 	u32		d_bsize; /* d-cache block size */
2495477af3SMichael Ellerman 	u32		i_bsize; /* i-cache block size */
25d391177aSMatt Evans 	u32		flags;
26*de494ec5SMichael Ellerman 	struct kvm_ppc_smmu_info mmu_info;
27d391177aSMatt Evans };
28d391177aSMatt Evans 
29d391177aSMatt Evans struct pvr_info {
30d391177aSMatt Evans 	u32		pvr_mask;
31d391177aSMatt Evans 	u32		pvr;
32d391177aSMatt Evans 	struct cpu_info *cpu_info;
33d391177aSMatt Evans };
34d391177aSMatt Evans 
35d391177aSMatt Evans /* Misc capabilities/CPU properties */
36d391177aSMatt Evans #define CPUINFO_FLAG_DFP	0x00000001
37d391177aSMatt Evans #define CPUINFO_FLAG_VMX	0x00000002
38d391177aSMatt Evans #define CPUINFO_FLAG_VSX	0x00000004
39d391177aSMatt Evans 
404a75c603SMichael Ellerman struct cpu_info *find_cpu_info(struct kvm *kvm);
41d391177aSMatt Evans 
42d391177aSMatt Evans #endif
43