From patchwork Mon Oct 16 01:58:13 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jingjing Wu X-Patchwork-Id: 30423 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E42051B5DF; Mon, 16 Oct 2017 11:16:46 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 6ECF71B5DE for ; Mon, 16 Oct 2017 11:16:44 +0200 (CEST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP; 16 Oct 2017 02:16:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,386,1503385200"; d="scan'208";a="138877171" Received: from unknown (HELO dpdk11.sh.intel.com) ([10.67.110.198]) by orsmga004.jf.intel.com with ESMTP; 16 Oct 2017 02:16:42 -0700 From: Jingjing Wu To: jianfeng.tan@intel.com Cc: dev@dpdk.org, jingjing.wu@intel.com Date: Mon, 16 Oct 2017 09:58:13 +0800 Message-Id: <1508119093-42500-1-git-send-email-jingjing.wu@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH] igb_uio: fix compile error X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Compile fails when kernel version is <= 3.17 with error: "dereferencing pointer to incomplete type". This is because struct uio_device definition is not exposed in kernel earlier than 3.17. This patch fixes it by using pointer of rte_uio_pci_dev as dev_id instead of uio_device for irq device handler. Fixes: 5f6ff30dc507 ("igb_uio: fix interrupt enablement after FLR in VM") Signed-off-by: Jingjing Wu Reviewed-by: Jianfeng Tan --- lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c index 3884448..f7ef825 100644 --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c @@ -209,9 +209,8 @@ igbuio_pci_irqcontrol(struct uio_info *info, s32 irq_state) static irqreturn_t igbuio_pci_irqhandler(int irq, void *dev_id) { - struct uio_device *idev = (struct uio_device *)dev_id; - struct uio_info *info = idev->info; - struct rte_uio_pci_dev *udev = info->priv; + struct rte_uio_pci_dev *udev = (struct rte_uio_pci_dev *)dev_id; + struct uio_info *info = &udev->info; /* Legacy mode need to mask in hardware */ if (udev->mode == RTE_INTR_MODE_LEGACY && @@ -299,7 +298,7 @@ igbuio_pci_enable_interrupts(struct rte_uio_pci_dev *udev) if (udev->info.irq != UIO_IRQ_NONE) err = request_irq(udev->info.irq, igbuio_pci_irqhandler, udev->info.irq_flags, udev->info.name, - udev->info.uio_dev); + udev); dev_info(&udev->pdev->dev, "uio device registered with irq %lx\n", udev->info.irq); @@ -310,7 +309,7 @@ static void igbuio_pci_disable_interrupts(struct rte_uio_pci_dev *udev) { if (udev->info.irq) { - free_irq(udev->info.irq, udev->info.uio_dev); + free_irq(udev->info.irq, udev); udev->info.irq = 0; }