Skip to contentSkip to conversation

Fixes for PowerPC Qemu KVM

PATCH New Jerone Young 3 participants 7 messages Apr 28, 2008 – Apr 30, 2008 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fixes for PowerPC Qemu KVM

This set of patches contain fixes for bamboo board model, as well as provides more functionality for device tree manipulation.

3 files changed, 22 insertions(+), 1 deletion(-)
qemu/hw/device_tree.c   |   16 ++++++++++++++++
qemu/hw/device_tree.h   |    2 ++
qemu/hw/ppc440_bamboo.c |    5 ++++-

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

#1 lore raw

PATCH 1/1 Remove dynamic allocation of /hypervisor node from device tree in memory

1 file changed, 1 deletion(-)

qemu/hw/ppc440_bamboo.c | 1 -

In 2.6.26 wait is now enabled by default. With this the /hypervisor node will not be need to be idetified to enable the guest to go into wait state while idle.

qemu/hw/ppc440_bamboo.c +0 -1
@@ -163,7 +163,6 @@ void bamboo_init(ram_addr_t ram_size, in
 	dt_cell(fdt, "/chosen", "linux,initrd-end",
 				(initrd_base + initrd_size));
 	dt_string(fdt, "/chosen", "bootargs", (char *)kernel_cmdline);
-	dt_node(fdt, "/", "hypervisor");
 #endif
 
 	if (kvm_enabled()) {

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

#3 lore raw

PATCH 1/1 Add function dt_cell_multi to hw/device_tree.c

In reply to Jerone Young
2 files changed, 18 insertions(+)

qemu/hw/device_tree.c | 16 ++++++++++++++++
qemu/hw/device_tree.h | 2 ++

This patch adds function dt_cell_multi to allow for manipulation of device tree properties that contain mulitiple 32bit values.

qemu/hw/device_tree.c +16 -0
@@ -162,6 +162,22 @@ void dt_cell(void *fdt, char *node_path,
 	}
 }
 
+/* This function is to manipulate a cell with multiple values */
+void dt_cell_multi(void *fdt, char *node_path, char *property,
+			uint32_t *val_array, int size)
+{
+	
+	int offset;
+	int ret;
+	offset = get_offset_of_node(fdt, node_path);
+	ret = fdt_setprop(fdt, offset, property, val_array, size);
+	if (ret < 0) {
+		printf("Unable to set device tree property '%s'\n",
+			property);
+		exit(1);
+	}
+}
+
 void dt_string(void *fdt, char *node_path, char *property,
 		char *string)
 {
qemu/hw/device_tree.h +2 -0
@@ -19,6 +19,8 @@ void dump_device_tree_to_file(void *fdt,
 void dump_device_tree_to_file(void *fdt, char *filename);
 void dt_cell(void *fdt, char *node_path, char *property,
 		uint32_t val);
+void dt_cell_multi(void *fdt, char *node_path, char *property,
+		uint32_t *val_array, int size);
 void dt_string(void *fdt, char *node_path, char *property,
 		char *string);
 void dt_node(void *fdt, char *node_parent_path, char *name);

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

#6 lore raw

PATCH 1/1 Fix memory defined in device tree by declaring it dynamically for bamboo board model

In reply to Jerone Young
1 file changed, 4 insertions(+)

qemu/hw/ppc440_bamboo.c | 4 ++++

This fixes a issue where the amount of memory is not properly being defined in the device tree. It currently is hardcoded for 144MB. The result is that if you specify a memory size below the hardcoded size, the guest crashes. This patch now dynamically changes the device tree to the memory value specified.

qemu/hw/ppc440_bamboo.c +4 -0
@@ -50,6 +50,7 @@ void bamboo_init(ram_addr_t ram_size, in
 	int i=0, k=0;
 	uint32_t cpu_freq;
 	uint32_t timebase_freq;
+	uint32_t mem_reg_property[]={0, 0, ram_size};
 
 	printf("%s: START\n", __func__);
 
@@ -73,6 +74,7 @@ void bamboo_init(ram_addr_t ram_size, in
 		printf("WARNING: %i MB left over memory is ram\n",
 			bytes_to_mb((int)tmp_ram_size));
 		ram_size -= tmp_ram_size;
+		mem_reg_property[2] = ram_size;
 	}
 
 	/* Setup CPU */
@@ -159,6 +161,8 @@ void bamboo_init(ram_addr_t ram_size, in
 	/* manipulate device tree in memory */
 	dt_cell(fdt, "/cpus/cpu@0", "clock-frequency", cpu_freq);
 	dt_cell(fdt, "/cpus/cpu@0", "timebase-frequency", timebase_freq);
+	dt_cell_multi(fdt, "/memory", "reg", mem_reg_property,
+			sizeof(mem_reg_property));
 	dt_cell(fdt, "/chosen", "linux,initrd-start", initrd_base);
 	dt_cell(fdt, "/chosen", "linux,initrd-end",
 				(initrd_base + initrd_size));

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

#4 lore raw

Re: [kvm-ppc-devel] [PATCH 2 of 3] Add function dt_cell_multi to hw/device_tree.c

In reply to Jerone Young

qemu/hw/device_tree.c void dt_cell(void *fdt, char *node_path, · line 171

Quoted 7 lines · On Monday 28 April 2008 16:23:04 Jerone Young wrote:
qemu/hw/device_tree.c +7 -0
+/* This function is to manipulate a cell with multiple values */
+void dt_cell_multi(void *fdt, char *node_path, char *property,
+                       uint32_t *val_array, int size)
+{
+       
+       int offset;
+       int ret;

Could you please be more careful with your whitespace?

Signature · 8 lines
Hollis Blanchard
IBM Linux Technology Center

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
#5 lore raw

Re: [kvm-ppc-devel] [PATCH 2 of 3] Add function dt_cell_multi to hw/device_tree.c

Quoted 10 lines · Hollis Blanchard

Review

Quoted 7 lines · On Monday 28 April 2008 16:23:04 Jerone Young wrote:
(quoted diff) +7 -0
+/* This function is to manipulate a cell with multiple values */
+void dt_cell_multi(void *fdt, char *node_path, char *property,
+                       uint32_t *val_array, int size)
+{
+       
+       int offset;
+       int ret;

Could you please be more careful with your whitespace?

Hmmm..I'm looking at the patch on my local machine and it doesn't have any whitespace damage. If there is whitespace damage it was caused by something else (like hg email is doing something).

I've attached the orginal patch to this email.

Quoted 1 line

Add function dt_cell_multi to hw/device_tree.c

This patch adds function dt_cell_multi to allow for manipulation of device tree properties that contain mulitiple 32bit values.

qemu/hw/device_tree.c +16 -0
@@ -162,6 +162,22 @@ void dt_cell(void *fdt, char *node_path,
 	}
 }
 
+/* This function is to manipulate a cell with multiple values */
+void dt_cell_multi(void *fdt, char *node_path, char *property,
+			uint32_t *val_array, int size)
+{
+	
+	int offset;
+	int ret;
+	offset = get_offset_of_node(fdt, node_path);
+	ret = fdt_setprop(fdt, offset, property, val_array, size);
+	if (ret < 0) {
+		printf("Unable to set device tree property '%s'\n",
+			property);
+		exit(1);
+	}
+}
+
 void dt_string(void *fdt, char *node_path, char *property,
 		char *string)
 {
qemu/hw/device_tree.h +2 -0
@@ -19,6 +19,8 @@ void dump_device_tree_to_file(void *fdt,
 void dump_device_tree_to_file(void *fdt, char *filename);
 void dt_cell(void *fdt, char *node_path, char *property,
 		uint32_t val);
+void dt_cell_multi(void *fdt, char *node_path, char *property,
+		uint32_t *val_array, int size);
 void dt_string(void *fdt, char *node_path, char *property,
 		char *string);
 void dt_node(void *fdt, char *node_parent_path, char *name);

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone

_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

#2 lore raw

Re: [PATCH 1 of 3] Remove dynamic allocation of /hypervisor node from device tree in memory

In reply to Jerone Young
Quoted 13 lines · Jerone Young
1 file changed, 1 deletion(-)

qemu/hw/ppc440_bamboo.c | 1 -

In 2.6.26 wait is now enabled by default. With this the /hypervisor node will not be need to be idetified to enable the guest to go into wait state while idle.

qemu/hw/ppc440_bamboo.c void bamboo_init(ram_addr_t ram_size, in · line 168

Quoted 7 lines
qemu/hw/ppc440_bamboo.c +0 -1
@@ -163,7 +163,6 @@ void bamboo_init(ram_addr_t ram_size, in
 	dt_cell(fdt, "/chosen", "linux,initrd-end",
 				(initrd_base + initrd_size));
 	dt_string(fdt, "/chosen", "bootargs", (char *)kernel_cmdline);
-	dt_node(fdt, "/", "hypervisor");
 #endif
 
 	if (kvm_enabled()) {

I don't have this bit in my tree.

Signature · 8 lines
Any sufficiently difficult bug is indistinguishable from a feature.


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone