Skip to content

Commit

Permalink
powerpc/papr_scm: Remove endian conversions
Browse files Browse the repository at this point in the history
The return values of a h-call are returned in the CPU registers and
written to the provided buffer by the plpar_hcall() wrapper. As a result
the values written to memory are always in the native endian and should
not be byte swapped.

The inital implementation of the H-Call interface was done in qemu and
the returned values were byte swapped unnecessarily in both the
hypervisor and in the driver so this was only noticed when bringing up
the PowerVM implementation.

Fixes: b5beae5 ("powerpc/pseries: Add driver for PAPR SCM regions")
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Oliver O'Halloran authored and Michael Ellerman committed Dec 9, 2018
1 parent 683ec0e commit 409dd7d
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions arch/powerpc/platforms/pseries/papr_scm.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ static int drc_pmem_bind(struct papr_scm_priv *p)
do {
rc = plpar_hcall(H_SCM_BIND_MEM, ret, p->drc_index, 0,
p->blocks, BIND_ANY_ADDR, token);
token = be64_to_cpu(ret[0]);
token = ret[0];
cond_resched();
} while (rc == H_BUSY);

Expand All @@ -64,7 +64,7 @@ static int drc_pmem_bind(struct papr_scm_priv *p)
return -ENXIO;
}

p->bound_addr = be64_to_cpu(ret[1]);
p->bound_addr = ret[1];

dev_dbg(&p->pdev->dev, "bound drc %x to %pR\n", p->drc_index, &p->res);

Expand All @@ -82,7 +82,7 @@ static int drc_pmem_unbind(struct papr_scm_priv *p)
do {
rc = plpar_hcall(H_SCM_UNBIND_MEM, ret, p->drc_index,
p->bound_addr, p->blocks, token);
token = be64_to_cpu(ret);
token = ret[0];
cond_resched();
} while (rc == H_BUSY);

Expand Down

0 comments on commit 409dd7d

Please sign in to comment.