You shouldn't use 'static' data either, that's not always guaranteed to
be DMA-able, right?
I naively thought all 'static' data was linked into .data and the
section was always kmapped.
What about allocating it dynamically? That's the correct thing to do.
Yep, the solution was more welcomed and happened earlier:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c4baad50297d84bde1a7ad45e50c73adae4a2192
On 03/17/2017 08:09 AM, Greg Kroah-Hartman wrote:
On Fri, Feb 17, 2017 at 11:42:45PM +0300, Jan Dakinevich wrote:
quoted
The buffer is used by virtio console driver as DMA buffer. Since v4.9
(if VMAP_STACK is enabled) we shouldn't use the stack for DMA.
You shouldn't use 'static' data either, that's not always guaranteed to
be DMA-able, right?
quoted
Signed-off-by: Jan Dakinevich <redacted>
---
drivers/tty/hvc/hvc_console.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/hvc/hvc_console.c b/drivers/tty/hvc/hvc_console.c
index 9b5c0fb..1ce6aaf 100644
--- a/drivers/tty/hvc/hvc_console.c
+++ b/drivers/tty/hvc/hvc_console.c
@@ -143,10 +143,15 @@ static struct hvc_struct *hvc_get_by_index(int index)
static void hvc_console_print(struct console *co, const char *b,
unsigned count)
{
- char c[N_OUTBUF] __ALIGNED__;
unsigned i = 0, n = 0;
int r, donecr = 0, index = co->index;
+ /*
+ * Access to the buffer is serialized by console_sem in caller code from
+ * kernel/printk/printk.c
+ */
+ static char c[N_OUTBUF] __ALIGNED__;
What about allocating it dynamically? That's the correct thing to do.
thanks,
greg k-h
--
Best regards
Jan Dakinevich