@@ -23,13 +23,8 @@
/* POWER7 */
-/* POWER7 has 1T segments, so advertise these */
-static u32 power7_segment_sizes_prop[] = {0x1c, 0x28, 0xffffffff, 0xffffffff};
-
static struct cpu_info cpu_power7_info = {
.name = "POWER7",
- .segment_sizes_prop = power7_segment_sizes_prop,
- .segment_sizes_prop_len = sizeof(power7_segment_sizes_prop),
.slb_size = 32,
.tb_freq = 512000000,
.d_bsize = 128,
@@ -44,8 +39,6 @@ static struct cpu_info cpu_power7_info = {
static struct cpu_info cpu_970_info = {
.name = "G5",
- .segment_sizes_prop = NULL /* no segment sizes prop, use defaults */,
- .segment_sizes_prop_len = 0,
.slb_size = 0,
.tb_freq = 33333333,
.d_bsize = 128,
@@ -19,8 +19,6 @@
struct cpu_info {
const char *name;
- u32 *segment_sizes_prop;
- u32 segment_sizes_prop_len;
u32 slb_size;
u32 tb_freq; /* timebase frequency */
u32 d_bsize; /* d-cache block size */
@@ -299,6 +299,7 @@ static void setup_fdt(struct kvm *kvm)
u8 staging_fdt[FDT_MAX_SIZE];
struct cpu_info *cpu_info = find_cpu_info(kvm);
struct fdt_prop segment_page_sizes;
+ u32 segment_sizes_1T[] = {0x1c, 0x28, 0xffffffff, 0xffffffff};
/* Generate an appropriate DT at kvm->fdt_gra */
void *fdt_dest = guest_flat_to_host(kvm, kvm->fdt_gra);
@@ -424,10 +425,10 @@ static void setup_fdt(struct kvm *kvm)
segment_page_sizes.value,
segment_page_sizes.size));
- if (cpu_info->segment_sizes_prop)
+ if (cpu_info->mmu_info.flags & KVM_PPC_1T_SEGMENTS)
_FDT(fdt_property(fdt, "ibm,processor-segment-sizes",
- cpu_info->segment_sizes_prop,
- cpu_info->segment_sizes_prop_len));
+ segment_sizes_1T, sizeof(segment_sizes_1T)));
+
/* VSX / DFP options: */
if (cpu_info->flags & CPUINFO_FLAG_VMX)
_FDT(fdt_property_cell(fdt, "ibm,vmx",
Signed-off-by: Michael Ellerman <michael@ellerman.id.au> --- tools/kvm/powerpc/cpu_info.c | 7 ------- tools/kvm/powerpc/cpu_info.h | 2 -- tools/kvm/powerpc/kvm.c | 7 ++++--- 3 files changed, 4 insertions(+), 12 deletions(-)