powerpc/pseries: Fix DTL buffer registration
authorNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Thu, 27 Sep 2018 08:10:57 +0000 (13:40 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 3 Oct 2018 05:40:02 +0000 (15:40 +1000)
When CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set, we register the DTL
buffer for a cpu when the associated file under powerpc/dtl in debugfs
is opened. When doing so, we need to set the size of the buffer being
registered in the second u32 word of the buffer. This needs to be in big
endian, but we are not doing the conversion resulting in the below error
showing up in dmesg:

dtl_start: DTL registration for cpu 0 (hw 0) failed with -4

Fix this in the obvious manner.

Fixes: 7c105b63bd98 ("powerpc: Add CONFIG_CPU_LITTLE_ENDIAN kernel config option.")
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/pseries/dtl.c

index 18014cdeb590aa40eb61ff78ae8e273cb2f3233a..c762689e0eb33e69b30ff41c03ee8f75f0a2ed66 100644 (file)
@@ -149,7 +149,7 @@ static int dtl_start(struct dtl *dtl)
 
        /* Register our dtl buffer with the hypervisor. The HV expects the
         * buffer size to be passed in the second word of the buffer */
-       ((u32 *)dtl->buf)[1] = DISPATCH_LOG_BYTES;
+       ((u32 *)dtl->buf)[1] = cpu_to_be32(DISPATCH_LOG_BYTES);
 
        hwcpu = get_hard_smp_processor_id(dtl->cpu);
        addr = __pa(dtl->buf);