| From e27ba3f1c12ae3a6fe79e4c7d94a2f99c537c302 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 27 Sep 2018 13:40:57 +0530 |
| Subject: powerpc/pseries: Fix DTL buffer registration |
| |
| From: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> |
| |
| [ Upstream commit db787af1b8a6b4be428ee2ea7d409dafcaa4a43c ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/powerpc/platforms/pseries/dtl.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/powerpc/platforms/pseries/dtl.c b/arch/powerpc/platforms/pseries/dtl.c |
| index 18014cdeb590a..c762689e0eb33 100644 |
| --- a/arch/powerpc/platforms/pseries/dtl.c |
| +++ b/arch/powerpc/platforms/pseries/dtl.c |
| @@ -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); |
| -- |
| 2.20.1 |
| |