From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH v3 6/6] qemu_calculate_timeout: increase minimum timeout to 1h Date: Fri, 10 Feb 2012 09:03:42 +0100 Message-ID: <4F34CF5E.9080106@redhat.com> References: <1327688498-12362-6-git-send-email-stefano.stabellini@eu.citrix.com> <201202100026.40727.paul@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-6; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <201202100026.40727.paul@codesourcery.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org To: Paul Brook Cc: avi@redhat.com, xen-devel@lists.xensource.com, qemu-devel@nongnu.org, Stefano Stabellini List-Id: xen-devel@lists.xenproject.org On 02/10/2012 01:26 AM, Paul Brook wrote: > The reason we have this is because there are bits of code that rely on > polling. IIRC slirp and the floppy DMA engine were the main culprits. > qemu_calculate_timeout is an ugly hack to poll at least once a second, > allowing the guest to make forward progress when we miss an event. At least the floppy DMA engine is fine with it, it uses idle bottom halves (which are a hack and could be replaced by timers, but that's not relevant now). Slirp's timeouts indeed require polling. if (time_fasttimo && ((curtime - time_fasttimo) >= 2)) { tcp_fasttimo(slirp); time_fasttimo = 0; } if (do_slowtimo && ((curtime - last_slowtimo) >= 499)) { ip_slowtimo(slirp); tcp_slowtimo(slirp); last_slowtimo = curtime; } Paolo