All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Brook <paul@codesourcery.com>
To: qemu-devel@nongnu.org
Cc: Blue Swirl <blauwirbel@gmail.com>, "H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [Qemu-devel] Re: 2.6.24 says "serial8250: too much work for irq4" a lot.
Date: Sun, 10 Feb 2008 11:26:06 +0000	[thread overview]
Message-ID: <200802101126.07740.paul@codesourcery.com> (raw)
In-Reply-To: <f43fc5580802100001u13dcfab3l6551ff91522e0e4c@mail.gmail.com>

On Sunday 10 February 2008, Blue Swirl wrote:
> On 2/9/08, H. Peter Anvin <hpa@zytor.com> wrote:
> > Blue Swirl wrote:
> > >> If you look at the patch, there are no timing dependencies; the only
> > >> parameter is the depth of the virtual queue.  The exhaustion is
> > >> completely controlled by target OS access patterns.
> > >
> > > Thanks, this clarified the difference. But I'll rephrase my original
> > > comment:
> > >
> > > The patch looks OK, but the simulated FIFO exhaustion should benefit
> > > all devices, as
> > > discussed here:
> > > http://lists.gnu.org/archive/html/qemu-devel/2007-12/msg00283.html
> >
> > The difference is you *can't* do that in a general layer.
>
> What makes you think that is impossible? 

IIUC the proposed patch makes the serial driver return an empty FIFO exactly 
once, them immediately continue receiving data. Throughput should be 
approximately the same, you've just got a bit of extra overhead to process 
the additional interrupts.  This is very different to the previous patch 
which did time-based throughput limiting.

You can't do this in generic code because there's no way to guess when the 
guest os has seen the FIFO empty condition. The best you can do is pause for 
some arbitrary length of time, which is both unreliable (the guest OS may not 
have got to far enough yet, especially if the host machine is heavily 
loaded), and has a significant negative impact on throughput.

> Also win2k install hack in ide.c seems to be related to this problem,
> so even more generic solution would be desirable.

IIUC the win2k hack is an actual timing problem. The win2k IDE drivers are 
buggy, and fall over if the drive responds too soon.

Paul

  reply	other threads:[~2008-02-10 11:26 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-05 20:55 2.6.24 says "serial8250: too much work for irq4" a lot Rob Landley
2008-02-05 21:07 ` H. Peter Anvin
2008-02-06  0:43   ` [Qemu-devel] " Rob Landley
2008-02-07 12:39   ` Ingo Molnar
2008-02-07 17:37     ` H. Peter Anvin
2008-02-07 20:13       ` Rob Landley
2008-02-07 20:53         ` H. Peter Anvin
2008-02-07 21:19         ` H. Peter Anvin
2008-02-08  7:04           ` Rob Landley
2008-02-09  5:49           ` [Qemu-devel] " Rob Landley
2008-02-09  7:04             ` Blue Swirl
2008-02-09  7:12               ` H. Peter Anvin
2008-02-09 11:15                 ` Blue Swirl
2008-02-09 21:36                   ` H. Peter Anvin
2008-02-10  8:01                     ` Blue Swirl
2008-02-10 11:26                       ` Paul Brook [this message]
2008-03-11 23:51                         ` Aurelien Jarno

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200802101126.07740.paul@codesourcery.com \
    --to=paul@codesourcery.com \
    --cc=blauwirbel@gmail.com \
    --cc=hpa@zytor.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.