From patchwork Fri May 6 08:30:26 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Huawei Xie X-Patchwork-Id: 12462 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 9FF9F58F1; Fri, 6 May 2016 10:30:33 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 4258BFE5 for ; Fri, 6 May 2016 10:30:32 +0200 (CEST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP; 06 May 2016 01:30:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,586,1455004800"; d="scan'208";a="98284610" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga004.fm.intel.com with ESMTP; 06 May 2016 01:30:30 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.248.2; Fri, 6 May 2016 01:30:29 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.248.2; Fri, 6 May 2016 01:30:29 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.148]) by shsmsx102.ccr.corp.intel.com ([169.254.2.104]) with mapi id 14.03.0248.002; Fri, 6 May 2016 16:30:27 +0800 From: "Xie, Huawei" To: Vincent Li , "dev@dpdk.org" , Thomas Monjalon Thread-Topic: [dpdk-dev] virtio still blindly take over virtio device managed by kernel Thread-Index: AdGncYn1CJQd/2XmD02vO+Ng4mKrMg== Date: Fri, 6 May 2016 08:30:26 +0000 Message-ID: References: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [dpdk-dev] virtio still blindly take over virtio device managed by kernel 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 5/5/2016 12:21 AM, Vincent Li wrote: > Hi, > > I am running the dpdk git repo which already had commit ac5e1d838dc > (virtio: skip error when probing kernel managed device), but in my > test, it seems still taking control of the kernel managed virtio > device and segmentation fault, here is the example: > > # ./tools/dpdk_nic_bind.py --status > > Network devices using DPDK-compatible driver > ============================================ > 0000:00:07.0 'Virtio network device' drv=igb_uio unused= > 0000:00:08.0 'Virtio network device' drv=igb_uio unused= > > Network devices using kernel driver > =================================== > 0000:00:03.0 'Virtio network device' if= drv=virtio-pci unused=igb_uio > > #./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -- -i > EAL: Detected 4 lcore(s) > EAL: Probing VFIO support... > EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using > unreliable clock cycles ! > EAL: PCI device 0000:00:03.0 on NUMA socket -1 > EAL: probe driver: 1af4:1000 rte_virtio_pmd > PMD: vtpci_init(): trying with legacy virtio pci. > Segmentation fault (core dumped) Hi Vincent: Could you try this? Weird. I had tested by binding the virtio nic with different kernel drivers including unbinding any drivers when submitting patches. But i find that it doesn't work even with that commit. So dev->devargs could be NULL. If it works for you, i will submit the fix. return 1; > > if I blacklist 0000:00:03.0 from testpmd, testpmd works: > > # ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -b 0000:00:03.0 -- -i > EAL: Detected 4 lcore(s) > EAL: Probing VFIO support... > EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using > unreliable clock cycles ! > EAL: PCI device 0000:00:03.0 on NUMA socket -1 > EAL: PCI device 0000:00:07.0 on NUMA socket -1 > EAL: probe driver: 1af4:1000 rte_virtio_pmd > PMD: virtio_read_caps(): no modern virtio pci device found. > PMD: vtpci_init(): trying with legacy virtio pci. > EAL: PCI device 0000:00:08.0 on NUMA socket -1 > EAL: probe driver: 1af4:1000 rte_virtio_pmd > PMD: virtio_read_caps(): no modern virtio pci device found. > PMD: vtpci_init(): trying with legacy virtio pci. > Interactive-mode selected > Configuring Port 0 (socket 0) > rte_eth_dev_config_restore: port 0: MAC address array not supported > Port 0: 52:54:00:EA:6E:3E > Configuring Port 1 (socket 0) > rte_eth_dev_config_restore: port 1: MAC address array not supported > Port 1: 52:54:00:24:06:DB > Checking link statuses... > Port 0 Link Up - speed 10000 Mbps - full-duplex > Port 1 Link Up - speed 10000 Mbps - full-duplex > Done > testpmd> > diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c index 45edecc..8aeb44a 100644 --- a/drivers/net/virtio/virtio_pci.c +++ b/drivers/net/virtio/virtio_pci.c @@ -650,7 +650,8 @@ vtpci_init(struct rte_pci_device *dev, struct virtio_hw *hw) PMD_INIT_LOG(INFO, "trying with legacy virtio pci."); if (legacy_virtio_resource_init(dev, hw) < 0) { if (dev->kdrv == RTE_KDRV_UNKNOWN && - dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI) { + (!dev->devargs || + dev->devargs->type != RTE_DEVTYPE_WHITELISTED_PCI)){ PMD_INIT_LOG(INFO, "skip kernel managed virtio device.");