From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wg0-f54.google.com (mail-wg0-f54.google.com [74.125.82.54]) by dpdk.org (Postfix) with ESMTP id E4DB35424 for ; Fri, 23 Jan 2015 10:22:13 +0100 (CET) Received: by mail-wg0-f54.google.com with SMTP id b13so6278288wgh.13 for ; Fri, 23 Jan 2015 01:22:13 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :subject:references:in-reply-to:content-type :content-transfer-encoding; bh=c5x8/BpEVFpOoFi+1fwqevXtTjccgxR6gAQprCzp+aw=; b=FF5L5xDxXsKwcw1Kc4swrqxR1gLhrIOBwTavwXTT6azpU9t1SZopXcBdVwR+URjYi0 8f3FY3ZSqoZkCAslyoPY3g2BFTfHkfPx4tO2SR3dV8Fs7eG5OtjHVv4xBtqRZoxuKHMo ew9xAIAxGUtJbDNky9JAACZqPKiOoFLyz3tH4g+HYNCPMGLJR87niWEsdO/Wv6ixuH5R Qe5LVY0T1elBgT/tjFLRnhKab+DXiNGWMPTp1Sgp8HBv2mCCDfOkpYSgYaPSmEyl8zbs bTrcaoDVmrbeYRgUz5wDiwnGQoHFnh4S1Dmt9fT8l+YXFOcOuocOANI5MJJP8NKyKoMk U7bQ== X-Gm-Message-State: ALoCoQnj3xRvZJVC1tJbnESC4yVZH2lGkMPvwmfCHm9RtbfA70hVS0YEeIQA1v8Q52Uon/wRZbRD X-Received: by 10.180.221.232 with SMTP id qh8mr1885141wic.6.1422004933746; Fri, 23 Jan 2015 01:22:13 -0800 (PST) Received: from [10.16.0.189] (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by mx.google.com with ESMTPSA id k3sm1369758wje.30.2015.01.23.01.22.12 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Jan 2015 01:22:13 -0800 (PST) Message-ID: <54C212C3.7060604@6wind.com> Date: Fri, 23 Jan 2015 10:22:11 +0100 From: Ivan Boule User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.3.0 MIME-Version: 1.0 To: Danny Zhou , dev@dpdk.org References: <1421747640-20978-1-git-send-email-danny.zhou@intel.com> In-Reply-To: <1421747640-20978-1-git-send-email-danny.zhou@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [RFC PATCH 0/5] Introduce low-latency one-shot rx interrupt into DPDK with polling/interrupt switch control example X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Jan 2015 09:22:14 -0000 Hello Danny, On 01/20/2015 10:53 AM, Danny Zhou wrote: > DPDK interrupt notification/handling mechanism is based on UIO with > below limitation: > 1) It is designed to handle LSC interrupt only with inefficient > suspended pthread wakeup procedure (e.g. UIO wakes up LSC interrupt > handling thread which then wakes up DPDK polling thread). In this way, > it introduces non-deterministic wakeup latency for DPDK polling thread > as well as packet latency if it is used to handle Rx interrupt. > 2) UIO only supports a single interrupt vector which has to been shared > by LSC interrupt and interrupts assigned to dedicated rx queues. > > This patchset includes below features: > 1) Enable one-shot rx queue interrupt in ixgbe PMD for PF as well as VF. > 2) Build on top of the VFIO mechanism instead of UIO, so it could support > up to 64 interrupt vectors for rx queue interrupts. > 3) Have 1 DPDK polling thread handle per Rx queue interrupt with a > dedicated VFIO eventfd, which eliminates non-deterministic pthread wakeup > latency in user space. > 4) Demonstrate interrupts control APIs and userspace NAIP-like > polling/interrupt switch algorithms in L3fwd-power example. In the patch 3/5: - the function eal_intr_process_rx_interrupts() systematically returns 0. It should be declared as "void" (and get rid of the return 0). - the function eal_intr_handle_rx_interrupts() loops again when epoll_wait() returns with errno == EINTR. It should also return in this case. - the function rte_eal_wait_rx_intr() should not invoke rte_panic() but instead return "-errno" upon system call failure. With these fixes: Acked-By: Ivan Boule -- Ivan Boule 6WIND Development Engineer