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