From patchwork Thu Nov 14 07:14:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xu, Rosen" X-Patchwork-Id: 62976 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 04E50A04C2; Thu, 14 Nov 2019 08:16:04 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B5AB33423; Thu, 14 Nov 2019 08:16:04 +0100 (CET) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 0BA242F42 for ; Thu, 14 Nov 2019 08:16:02 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2019 23:15:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,302,1569308400"; d="scan'208";a="208041287" Received: from dpdk-rosen-02.sh.intel.com ([10.67.110.156]) by orsmga006.jf.intel.com with ESMTP; 13 Nov 2019 23:15:43 -0800 From: Rosen Xu To: dev@dpdk.org Cc: rosen.xu@intel.com, tianfei.zhang@intel.com, andy.pei@intel.com, xiaolong.ye@intel.com, ferruh.yigit@intel.com Date: Thu, 14 Nov 2019 15:14:08 +0800 Message-Id: <1573715667-192995-1-git-send-email-rosen.xu@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1571917119-149534-2-git-send-email-andy.pei@intel.com> References: <1571917119-149534-2-git-send-email-andy.pei@intel.com> Subject: [dpdk-dev] [PATCH v17 00/19] add PCIe AER disable and IRQ support for ipn3ke 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" This patch set adds PCIe AER disable and FPGA interrupt support for ipn3ke. It also provides a small rework for port bonding between FPGA line side port and I40e PF port. What is the PCI Express AER(Advanced Error Reporting)? Advanced Error Reporting capability is implemented with a PCI Express advanced error reporting extended capability structure providing more robust error reporting. It's also one of PCI Express error reporting paradigms. AER is supported by most of PCIe devices. In PAC N3000 card, some uncertainty errors will cause FPGA reload, such as temperature is higher than threshold. From Software point of view, FPGA reload means FPGA unplug and plug. For avoiding system crash we need to clear AER register before these errors occur. Currently PAC N3000 card FME and AFU all provide interrupts, in ifpga rawdev driver, we implement a FME interrupt function to notify errors reported by FME. Besides this, OPAE share code also provide a common AFU interrupt API for users to register their own interrupt functions. v17 updates: ========= - remove rte_panic. v16 updates: ========= - rebase to DPDK 19.11 RC-2. v15 updates: ========= - fix share library build issues. v14 updates: ========= - fix coding style and remove unnecessary comments. v13 updates: ========= - fix meson build issue. v12 updates: ========= - fix meson build issue. v11 updates: ========= - move symbol ifpga_rawdev_ge to the EXPERIMENTAL section of drivers/raw/ifpga/rte_rawdev_ifpga_version.map v10 updates: ========= - introducing new irq API - fix meson build issue v9 updates: ========= - Add mutex lock on do_transaction() function for SPI driver to avoid race condition. v8 updates: ========= - add multiple cards support. v7 updates: ========== - rename function i40e_set_switch_dev to rte_pmd_i40e_set_switch_dev and move it to rte_pmd_i40e.c since it is declared at rte_pmd_i40e.h - function rte_pmd_i40e_set_switch_dev works as an external API, use port_id but not rte_eth_dev as parameter. - add doxygen header here for the new API. - update the rte_pmd_i40e_version.map. - fix coding style issue. - enable CONFIG_RTE_EAL_VFIO in linux environment to build irq support. - for functions with a lot of similarity, extract out common function to reduce duplication. v6 updates: ========= - correct author information. - correct typo in commit message and remove Gerrit Change-Id's before submitting upstream v5 updates: ========== - add lightweight fpga image support. in lightweight fpga image mode, ipn3ke representor will not be probed. v4 updates: =========== - align with new naming standard. v3 updates: =========== - Add FPGA network side port MTU configuration v2 updates: =========== - Add AUX feature support Andy Pei (2): net/i40e: i40e support ipn3ke FPGA port bonding raw/ifpga: add lightweight fpga image support Rosen Xu (3): raw/ifpga: add SEU error handler raw/ifpga: add PCIe BDF devices tree scan net/ipn3ke: remove configuration for i40e port bonding Tianfei zhang (14): raw/ifpga/base: add irq support raw/ifpga/base: clear pending bit raw/ifpga/base: add SEU error support raw/ifpga/base: add device tree support raw/ifpga/base: align the send buffer for SPI raw/ifpga/base: add sensor support raw/ifpga/base: introducing sensor APIs raw/ifpga/base: update SEU register definition raw/ifpga/base: add secure support raw/ifpga/base: configure FEC mode raw/ifpga/base: clean fme errors raw/ifpga/base: add new API get board info raw/ifpga/base: add multiple cards support raw/ifpga: introducing new irq API config/common_base | 4 +- config/common_linux | 6 + drivers/meson.build | 6 +- drivers/net/i40e/base/i40e_type.h | 3 + drivers/net/i40e/i40e_ethdev.c | 6 + drivers/net/i40e/rte_pmd_i40e.c | 21 + drivers/net/i40e/rte_pmd_i40e.h | 18 + drivers/net/i40e/rte_pmd_i40e_version.map | 8 +- drivers/net/ipn3ke/Makefile | 1 + drivers/net/ipn3ke/ipn3ke_ethdev.c | 292 ++------- drivers/net/ipn3ke/ipn3ke_flow.c | 6 + drivers/net/ipn3ke/ipn3ke_rawdev_api.h | 12 + drivers/net/ipn3ke/ipn3ke_representor.c | 10 +- drivers/net/ipn3ke/meson.build | 24 +- drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map | 6 + drivers/raw/ifpga/Makefile | 5 + drivers/raw/ifpga/base/ifpga_api.c | 21 + drivers/raw/ifpga/base/ifpga_defines.h | 75 ++- drivers/raw/ifpga/base/ifpga_feature_dev.c | 59 ++ drivers/raw/ifpga/base/ifpga_feature_dev.h | 3 + drivers/raw/ifpga/base/ifpga_fme.c | 166 ++++- drivers/raw/ifpga/base/ifpga_fme_error.c | 74 ++- drivers/raw/ifpga/base/ifpga_hw.h | 2 +- drivers/raw/ifpga/base/ifpga_port.c | 18 + drivers/raw/ifpga/base/ifpga_port_error.c | 19 + drivers/raw/ifpga/base/meson.build | 2 +- drivers/raw/ifpga/base/opae_debug.c | 3 + drivers/raw/ifpga/base/opae_hw_api.c | 137 ++++ drivers/raw/ifpga/base/opae_hw_api.h | 26 + drivers/raw/ifpga/base/opae_i2c.c | 44 +- drivers/raw/ifpga/base/opae_i2c.h | 3 +- drivers/raw/ifpga/base/opae_ifpga_hw_api.h | 2 + drivers/raw/ifpga/base/opae_intel_max10.c | 599 ++++++++++++++++- drivers/raw/ifpga/base/opae_intel_max10.h | 157 ++++- drivers/raw/ifpga/base/opae_osdep.h | 7 +- drivers/raw/ifpga/base/opae_spi.c | 5 - drivers/raw/ifpga/base/opae_spi.h | 26 +- drivers/raw/ifpga/base/opae_spi_transaction.c | 84 ++- drivers/raw/ifpga/ifpga_rawdev.c | 903 +++++++++++++++++++++++++- drivers/raw/ifpga/ifpga_rawdev.h | 30 + drivers/raw/ifpga/meson.build | 26 +- mk/rte.app.mk | 2 +- 42 files changed, 2480 insertions(+), 441 deletions(-)