Commit e4a45582 authored by Douglas Anderson's avatar Douglas Anderson Committed by Abhinav Kumar

drm/msm: Allocate memory for disp snapshot with kvzalloc()

With the "drm/msm: add a display mmu fault handler" series [1] we saw
issues in the field where memory allocation was failing when
allocating space for registers in msm_disp_state_dump_regs().
Specifically we were seeing an order 5 allocation fail. It's not
surprising that order 5 allocations will sometimes fail after the
system has been up and running for a while.

There's no need here for contiguous memory. Change the allocation to
kvzalloc() which should make it much less likely to fail.

[1] https://lore.kernel.org/r/20240628214848.4075651-1-quic_abhinavk@quicinc.com/

Fixes: 98659487 ("drm/msm: add support to take dpu snapshot")
Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/619658/
Link: https://lore.kernel.org/r/20241014093605.2.I72441365ffe91f3dceb17db0a8ec976af8139590@changeidSigned-off-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
parent 293f5326
...@@ -26,7 +26,7 @@ static void msm_disp_state_dump_regs(u32 **reg, u32 aligned_len, void __iomem *b ...@@ -26,7 +26,7 @@ static void msm_disp_state_dump_regs(u32 **reg, u32 aligned_len, void __iomem *b
end_addr = base_addr + aligned_len; end_addr = base_addr + aligned_len;
if (!(*reg)) if (!(*reg))
*reg = kzalloc(len_padded, GFP_KERNEL); *reg = kvzalloc(len_padded, GFP_KERNEL);
if (*reg) if (*reg)
dump_addr = *reg; dump_addr = *reg;
...@@ -162,7 +162,7 @@ void msm_disp_state_free(void *data) ...@@ -162,7 +162,7 @@ void msm_disp_state_free(void *data)
list_for_each_entry_safe(block, tmp, &disp_state->blocks, node) { list_for_each_entry_safe(block, tmp, &disp_state->blocks, node) {
list_del(&block->node); list_del(&block->node);
kfree(block->state); kvfree(block->state);
kfree(block); kfree(block);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment