arm, dev: pl011 console interactivity
Review Request #3623 - Created Sept. 5, 2016 and submitted
| Information | |
|---|---|
| Bjoern A. Zeeb | |
| gem5 | |
| Reviewers | |
| Default | |
| andysan | |
Improve PL011 console interactivity
We are operating in "register mode" (not FIFO) which means if we clear an interrupt and have more data available, we need to re-raise the interrupt again. Add two more cases where this is needed.
With this the interactivity on FreeBSD went to usable. Before this after a certain event, it could take up to 15(?) additional charatcers to get previously pasted command lines echoed and executed.
I have a possible report about similar behaviour from people at ARM on Linux (uncofirmed) and I am putting the patch up so they can test.
Minor issue/question. Looks good otherwise. Thanks!
-
src/dev/arm/pl011.cc (Diff revision 1) -
Do you actually need the check against maskInt() here? The necessary checks should already be inplace in dataAvailable()/raiseInterrupts().
-
src/dev/arm/pl011.cc (Diff revision 1) -
I'm not sure I understand exactly what this condition is supposed to test. The check currently tests if there is an unmasked RX interrupt pending before raising a new RX interrupt. I suspect the intention might be to check if the RX interrupt is enabled (maskInt() is a bit of a misnomer).
You shouldn't need to worry about the mask (or whether the interrupt is pending) here since setInterrupts won't poke the GIC unless there is a new interrupt pending (raising a pending interrupt is effectively a no-op).
Can you mark this as submitted? Thanks.
