On 10/29/2014 09:38 AM, Daniel Thompson wrote:
Currently the _dm RX handler detects breaks but does not pass any characters to uart_handle_sysrq_char().
The _dm optimizations combined with the port's spin lock make if difficult to pass all characters to the sysrq logic because we cannot safely call uart_handle_sysrq_char() when the lock is held without deadlock (the console handler also takes the lock).
Rather than passing all characters via uart_handle_sysrq_char() this patch only passes the last few characters in the FIFO. This should include all characters typed as a slow (human) rate. This makes the problem much simpler and allows us to move the handling of these characters outside of the port lock. This makes magic SysRq work if there is a human at the keyboard (or a short delay in a script).
Signed-off-by: Daniel Thompson daniel.thompson@linaro.org
I have a patch that I was going to send for this (Frank R. and I have been looking at it since a month or two ago). This patch doesn't look correct given that the SR register is not actually accurate and doesn't indicate that a break is there in the fifo. I'll Cc you on the patch, please test it.