diff --git a/qemu-0.9.1-pty-rawmode.patch b/qemu-0.9.1-pty-rawmode.patch
new file mode 100644
index 0000000..3959a55
--- /dev/null
+++ b/qemu-0.9.1-pty-rawmode.patch
@@ -0,0 +1,94 @@
+diff -rup qemu-0.9.1.orig/vl.c qemu-0.9.1.new/vl.c
+--- qemu-0.9.1.orig/vl.c	2008-05-05 13:32:55.000000000 -0400
++++ qemu-0.9.1.new/vl.c	2008-05-05 13:33:17.000000000 -0400
+@@ -2200,28 +2200,78 @@ static CharDriverState *qemu_chr_open_st
+     return chr;
+ }
+ 
++#ifdef __sun__
++/* Once Solaris has openpty(), this is going to be removed. */
++int openpty(int *amaster, int *aslave, char *name,
++            struct termios *termp, struct winsize *winp)
++{
++        const char *slave;
++        int mfd = -1, sfd = -1;
++
++        *amaster = *aslave = -1;
++
++        mfd = open("/dev/ptmx", O_RDWR | O_NOCTTY);
++        if (mfd < 0)
++                goto err;
++
++        if (grantpt(mfd) == -1 || unlockpt(mfd) == -1)
++                goto err;
++
++        if ((slave = ptsname(mfd)) == NULL)
++                goto err;
++
++        if ((sfd = open(slave, O_RDONLY | O_NOCTTY)) == -1)
++                goto err;
++
++        if (ioctl(sfd, I_PUSH, "ptem") == -1 ||
++            (termp != NULL && tcgetattr(sfd, termp) < 0))
++                goto err;
++
++        if (amaster)
++                *amaster = mfd;
++        if (aslave)
++                *aslave = sfd;
++        if (winp)
++                ioctl(sfd, TIOCSWINSZ, winp);
++
++        return 0;
++
++err:
++        if (sfd != -1)
++                close(sfd);
++        close(mfd);
++        return -1;
++}
++
++void cfmakeraw (struct termios *termios_p)
++{
++        termios_p->c_iflag &=
++                ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
++        termios_p->c_oflag &= ~OPOST;
++        termios_p->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
++        termios_p->c_cflag &= ~(CSIZE|PARENB);
++        termios_p->c_cflag |= CS8;
++
++        termios_p->c_cc[VMIN] = 0;
++        termios_p->c_cc[VTIME] = 0;
++}
++#endif
++
+ #if defined(__linux__) || defined(__sun__)
+ static CharDriverState *qemu_chr_open_pty(void)
+ {
+     struct termios tty;
+-    char slave_name[1024];
+     int master_fd, slave_fd;
+ 
+-#if defined(__linux__)
+-    /* Not satisfying */
+-    if (openpty(&master_fd, &slave_fd, slave_name, NULL, NULL) < 0) {
++    if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) < 0) {
+         return NULL;
+     }
+-#endif
+ 
+-    /* Disabling local echo and line-buffered output */
+-    tcgetattr (master_fd, &tty);
+-    tty.c_lflag &= ~(ECHO|ICANON|ISIG);
+-    tty.c_cc[VMIN] = 1;
+-    tty.c_cc[VTIME] = 0;
+-    tcsetattr (master_fd, TCSAFLUSH, &tty);
++    /* Set raw attributes on the pty. */
++    cfmakeraw(&tty);
++    tcsetattr(slave_fd, TCSAFLUSH, &tty);
+ 
+-    fprintf(stderr, "char device redirected to %s\n", slave_name);
++    fprintf(stderr, "char device redirected to %s\n", ptsname(master_fd));
+     return qemu_chr_open_fd(master_fd, master_fd);
+ }
+ 
diff --git a/qemu.spec b/qemu.spec
index d28740f..c60ab41 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -8,7 +8,7 @@
 Summary: QEMU is a FAST! processor emulator
 Name: qemu
 Version: 0.9.1
-Release: 6%{?dist}
+Release: 7%{?dist}
 License: GPLv2+ and LGPLv2+
 Group: Development/Tools
 URL: http://www.qemu.org/
@@ -18,6 +18,8 @@ Patch0: qemu-0.7.0-build.patch
 # Change default NIC to rtl8139 to get link-state detection
 Patch3: qemu-0.9.1-nic-defaults.patch
 Patch4: qemu-%{version}-block-rw-range-check.patch
+# Upstream SVN changeset #4338
+Patch5: qemu-%{version}-pty-rawmode.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: SDL-devel compat-gcc-%{gccver} zlib-devel which texi2html gnutls-devel
 Requires(post): /sbin/chkconfig
@@ -54,6 +56,7 @@ This package provides the command line tool for manipulating disk images
 %patch0 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
 
 %build
 ./configure \
@@ -125,6 +128,9 @@ fi
 %{_mandir}/man1/qemu-img.1*
 
 %changelog
+* Mon May  5 2008 Daniel P. Berrange <berrange@redhat.com> - 0.9.1-7.fc10
+- Fix text console PTYs to be in rawmode
+
 * Sun Apr 27 2008 Lubomir Kundrak <lkundrak@redhat.com> - 0.9.1-6
 - Register binary handler for SuperH-4 CPU