Patchwork [09/10] kvm tools, powerpc: Use MMU info for ibm,processor-segment-sizes

login
register
mail settings
Submitter Michael Ellerman
Date July 17, 2012, 5 a.m.
Message ID <1342501220-10209-10-git-send-email-michael@ellerman.id.au>
Download mbox | patch
Permalink /patch/171318/
State New
Headers show

Comments

Michael Ellerman - July 17, 2012, 5 a.m.
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(-)

Patch

diff --git a/tools/kvm/powerpc/cpu_info.c b/tools/kvm/powerpc/cpu_info.c
index 1cfb50d..82a9d4f 100644
--- a/tools/kvm/powerpc/cpu_info.c
+++ b/tools/kvm/powerpc/cpu_info.c
@@ -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,
diff --git a/tools/kvm/powerpc/cpu_info.h b/tools/kvm/powerpc/cpu_info.h
index 9da6afe..00b9436b 100644
--- a/tools/kvm/powerpc/cpu_info.h
+++ b/tools/kvm/powerpc/cpu_info.h
@@ -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 */
diff --git a/tools/kvm/powerpc/kvm.c b/tools/kvm/powerpc/kvm.c
index 293812a..8353355 100644
--- a/tools/kvm/powerpc/kvm.c
+++ b/tools/kvm/powerpc/kvm.c
@@ -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",