Store RTAS data in ibm,configure-connector RTAS call in big endian format as per sPAPR specifications.
Signed-off-by: Bharata B Rao <bhar...@linux.vnet.ibm.com> --- hw/ppc/spapr_pci.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 76463b3..4a384aa 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -641,7 +641,7 @@ static void rtas_ibm_configure_connector(PowerPCCPU *cpu, } wa_buf_int = wa_buf; - drc_index = *(uint32_t *)wa_buf; + drc_index = be32_to_cpu(*(uint32_t *)wa_buf); drc_entry = spapr_find_drc_entry(drc_index); if (!drc_entry) { rc = -1; @@ -671,7 +671,7 @@ retry: case FDT_BEGIN_NODE: ccs->depth++; node_name = fdt_get_name(ccs->fdt, ccs->offset, &node_name_len); - wa_buf_int[CC_IDX_NODE_NAME_OFFSET] = CC_VAL_DATA_OFFSET; + wa_buf_int[CC_IDX_NODE_NAME_OFFSET] = cpu_to_be32(CC_VAL_DATA_OFFSET); strcpy(wa_buf + wa_buf_int[CC_IDX_NODE_NAME_OFFSET], node_name); rc = CC_RET_NEXT_CHILD; break; @@ -688,10 +688,10 @@ retry: case FDT_PROP: prop = fdt_get_property_by_offset(ccs->fdt, ccs->offset, &prop_len); prop_name = fdt_string(ccs->fdt, fdt32_to_cpu(prop->nameoff)); - wa_buf_int[CC_IDX_PROP_NAME_OFFSET] = CC_VAL_DATA_OFFSET; - wa_buf_int[CC_IDX_PROP_LEN] = prop_len; + wa_buf_int[CC_IDX_PROP_NAME_OFFSET] = cpu_to_be32(CC_VAL_DATA_OFFSET); + wa_buf_int[CC_IDX_PROP_LEN] = cpu_to_be32(prop_len); wa_buf_int[CC_IDX_PROP_DATA_OFFSET] = - CC_VAL_DATA_OFFSET + strlen(prop_name) + 1; + cpu_to_be32(CC_VAL_DATA_OFFSET + strlen(prop_name) + 1); strcpy(wa_buf + wa_buf_int[CC_IDX_PROP_NAME_OFFSET], prop_name); memcpy(wa_buf + wa_buf_int[CC_IDX_PROP_DATA_OFFSET], prop->data, prop_len); -- 1.7.11.7