[Skiboot] [PATCH 3/5] xscom: Harden indirect writes
Cédric Le Goater
clg at kaod.org
Thu Mar 23 00:38:57 AEDT 2017
On 03/22/2017 03:59 AM, Michael Neuling wrote:
> Indirect scoms can only set certain bits of data. Ensure only these
> are set when trying to write.
>
> Signed-off-by: Michael Neuling <mikey at neuling.org>
> ---
> hw/xscom.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/hw/xscom.c b/hw/xscom.c
> index 2f55f12855..1add658776 100644
> --- a/hw/xscom.c
> +++ b/hw/xscom.c
> @@ -369,6 +369,10 @@ static int xscom_indirect_write(uint32_t gcid, uint64_t pcb_addr, uint64_t val)
> if (proc_gen < proc_gen_p8)
> return OPAL_UNSUPPORTED;
>
> + /* Only 16 bit data with indirect */
> + if (val & ~(XSCOM_ADDR_IND_ADDR))
> + return OPAL_PARAMETER;
This is confusing. Shouldn't it be using XSCOM_ADDR_IND_DATA instead ?
Cheers,
C.
> /* Write indirect address & data */
> addr = pcb_addr & 0x7fffffff;
> data = pcb_addr & XSCOM_ADDR_IND_ADDR;
>
More information about the Skiboot
mailing list