From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ee0-f46.google.com (mail-ee0-f46.google.com [74.125.83.46]) by dpdk.org (Postfix) with ESMTP id B5AA7159 for ; Tue, 8 Apr 2014 17:10:50 +0200 (CEST) Received: by mail-ee0-f46.google.com with SMTP id t10so801481eei.19 for ; Tue, 08 Apr 2014 08:12:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version:content-type :thread-index:content-language; bh=mgEufXIURiSx7pmpA8eit9+G2B6YaXXX2nQov4/hj6o=; b=F4ZR9KXMGVgbclwjpgcvxghfiJGTive4fCSel4Fz9Bb3w9gKD8zOW006Uu34O+JxR9 aD7HKadVd3sHPa0x2UG09T0eHb/VwPjV087iNZ2IsGangQg0870DKhkrrvI6HWr70Li9 zEUk3BelrIghP7DfTzVsLNqBcR/1OufFcn8SMDsvMYvSrTccKZRfsR5UFL6RDUfCUnwC 9AvWSGcUyTcip+ubWa6nbrmPrloSusSZ0q+FECMjmeBNoYEqmOMBH7AE4qPRxi0ZnlO5 Ku+/9gF1YhowpGviX40pIbvxZUHGoz2OvTP0YBjTM/Qii32Z62n6U0tqul6/LCwAi0BN 1lSg== X-Received: by 10.14.216.2 with SMTP id f2mr2982119eep.83.1396969947111; Tue, 08 Apr 2014 08:12:27 -0700 (PDT) Received: from elrlaptop ([109.65.104.237]) by mx.google.com with ESMTPSA id o4sm5172494eef.20.2014.04.08.08.12.23 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 08 Apr 2014 08:12:24 -0700 (PDT) From: "Etai Lev Ran" To: Date: Tue, 8 Apr 2014 18:12:32 +0300 Message-ID: <032101cf533c$f871bb60$e9553220$@gmail.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 14.0 Thread-Index: Ac9TOe2Fbx0c5tRdT7KSQmnYo1ywDw== Content-Language: en-us Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] Using DPDK in a multiprocess environment 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: Tue, 08 Apr 2014 15:10:51 -0000 Hi, I'd like to split DPDK application functionality into a setup (primary) process and business logic (secondary) processes. The secondary processes access the hardware queues directly (exclusive queue per process) and not through software rings. I'm running into an initialization problem: - The primary starts and sets up memory and ports and then goes to sleep waiting for termination signal - Secondary processes fail when probing the PCI bus for devices (required, otherwise I get 0 ports visible in the secondary) The error is directly related to the secondary failing to get the *same* virtual address for mmap'ing the UIO device fd's. The reason is that the secondary processes has considerably more shared objects loaded and some of these are loaded and mapped into addresses which the primary used to map UIO fd's. The pci_map_resource() (linuxapp/eal_pci.c) code explicitly requires that the secondary processes get the same mmap'ed address as given to the primary. 1) Is this behavior (same mmap address) required? 2) If so, is there a workaround to cause PCI areas of UIO devices to be mapped to the same location in arbitrary processes? The samples work just fine since all primary and secondary processes have similar set and load order for .so's Using v1.6 on Ubuntu 12.04 64b, ixgbe devices, 1GB hugepages, ASLR disabled. Thanks, Etai