On 08/10/2011 02:53 PM, walimis wrote: > On Wed, Aug 10, 2011 at 02:15:45PM +0800, Asias He wrote: >> On 08/10/2011 01:55 PM, Pekka Enberg wrote: >>> On Wed, Aug 10, 2011 at 8:43 AM, Asias He <asias.hejun@xxxxxxxxx> wrote: >>>> On 08/10/2011 01:30 PM, Pekka Enberg wrote: >>>>> On 8/10/11 2:56 AM, Asias He wrote: >>>>>> This patch fixes strange characters in serial console. >>>>>> >>>>>> Before: >>>>>> >>>>>> [ 0.448000] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled >>>>>> �[ 0.695000] serial8250: ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A >>>>>> �[ 0.942000] serial8250: ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A >>>>>> �[ 1.189000] serial8250: ttyS2 at I/O 0x3e8 (irq = 0) is a 16550A >>>>>> [ 1.194000] Non-volatile memory driver v1.3 >>>>>> >>>>>> After: >>>>>> >>>>>> [ 0.541000] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled >>>>>> [ 0.788000] serial8250: ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A >>>>>> [ 1.041000] serial8250: ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A >>>>>> [ 1.294000] serial8250: ttyS2 at I/O 0x3e8 (irq = 0) is a 16550A >>>>>> [ 1.309000] Non-volatile memory driver v1.3 >>>>>> >>>>>> Signed-off-by: Asias He<asias.hejun@xxxxxxxxx> >>>>>> --- >>>>>> tools/kvm/term.c | 7 +++++-- >>>>>> 1 files changed, 5 insertions(+), 2 deletions(-) >>>>>> >>>>>> diff --git a/tools/kvm/term.c b/tools/kvm/term.c >>>>>> index 2a3e1f0..85b41e7 100644 >>>>>> --- a/tools/kvm/term.c >>>>>> +++ b/tools/kvm/term.c >>>>>> @@ -5,6 +5,7 @@ >>>>>> #include<unistd.h> >>>>>> #include<sys/uio.h> >>>>>> #include<signal.h> >>>>>> +#include<ctype.h> >>>>>> >>>>>> #include "kvm/read-write.h" >>>>>> #include "kvm/term.h" >>>>>> @@ -57,8 +58,10 @@ int term_putc(int who, char *addr, int cnt) >>>>>> if (who != active_console) >>>>>> return -1; >>>>>> >>>>>> - while (cnt--) >>>>>> - fprintf(stdout, "%c", *addr++); >>>>>> + while (cnt--) { >>>>>> + if (isascii(*addr)) >>>>> >>>>> Do things like backspace still work with this? >>>> >>>> Sure. Have a try ;-) >>>> >>>> http://en.wikipedia.org/wiki/ASCII >>> >>> OK, cool. Do we know what the extra characters are and why the guest >>> is sending them? > I think the reason is not important here. I use qemu to test > and it also outputs that extra characters. They seem to be outputted by > driver or kernel of guest os. > > It's not sane to change the output of guest os. Suppose if we just > want to see what "cat /dev/urandom" prints, then only > allow ascii characters to be outputted? I think that's not what we expect. This is a good reason why we should not only allow ascii to be printed. Anyway, this is really annoying. Maybe it is a serial driver bug? > > walimis >>> >> >> >> This tells us >> >> while (cnt--) { >> if (isascii(*addr)) >> fprintf(stdout, "%c", *addr++); >> else >> fprintf(stdout, "\n---%x---\n", *addr++); >> } >> >> the extra chars is 0xff. >> >> The reason is not understood. >> >> -- >> Best Regards, >> Asias He >> -- >> To unsubscribe from this list: send the line "unsubscribe kvm" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- Best Regards, Asias He -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html