From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E25F1A0A0A for ; Thu, 21 Jan 2021 17:29:49 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D39D1140D21; Thu, 21 Jan 2021 17:29:49 +0100 (CET) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 8485E140D04; Thu, 21 Jan 2021 17:29:47 +0100 (CET) IronPort-SDR: oE/tkfUcsxal5bSPJ0OQ4jvKAzB3XJ90j2gGdAXujCZJJQojcy/9+uaPqzpQgsHug2OYzvwvVR ImNxaI2KYu2w== X-IronPort-AV: E=McAfee;i="6000,8403,9871"; a="158475433" X-IronPort-AV: E=Sophos;i="5.79,364,1602572400"; d="scan'208";a="158475433" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2021 08:29:46 -0800 IronPort-SDR: YsmtHVPBMoYyq0os018hvuCnAkFD07BAyGy0zWexeIRH0RGcK5KAwl0OuBK7y8bPzlPT2Dl084 nuMCLJ4CQ2UQ== X-IronPort-AV: E=Sophos;i="5.79,364,1602572400"; d="scan'208";a="385367847" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.213.196.87]) ([10.213.196.87]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2021 08:29:44 -0800 To: Wei Huang , dev@dpdk.org, rosen.xu@intel.com, qi.z.zhang@intel.com Cc: stable@dpdk.org, tianfei.zhang@intel.com References: <1611209014-4031-1-git-send-email-wei.huang@intel.com> <1611209014-4031-4-git-send-email-wei.huang@intel.com> From: Ferruh Yigit Message-ID: <316da5c8-657e-6856-7e22-7e7642188acb@intel.com> Date: Thu, 21 Jan 2021 16:29:41 +0000 MIME-Version: 1.0 In-Reply-To: <1611209014-4031-4-git-send-email-wei.huang@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH v11 3/4] raw/ifpga: add OPAE API for OpenStack Cyborg X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" On 1/21/2021 6:03 AM, Wei Huang wrote: > Cyborg is an OpenStack project that aims to provide a general purpose > management framework for acceleration resources (i.e. various types > of accelerators such as GPU, FPGA, NP, ODP, DPDK/SPDK and so on). > It needs some OPAE type APIs to manage PACs (Programmable Acceleration > Card) with Intel FPGA. Below major functions are added to meets > Cyborg requirements. > 1. opae_init() set up OPAE environment. > 2. opae_cleanup() clean up OPAE environment. > 3. opae_enumerate() searches PAC with specific FPGA. > 4. opae_get_property() gets properties of FPGA. > 5. opae_partial_reconfigure() perform partial configuration on FPGA. > 6. opae_get_image_info() gets information of image file. > 7. opae_update_flash() updates FPGA flash with specific image file. > 8. opae_cancel_flash_update() cancel process of FPGA flash update. > 9. opae_probe_device() manually probe specific FPGA with ifpga driver. > 10. opae_remove_device() manually remove specific FPGA from ifpga driver. > 11. opae_bind_driver() binds specific FPGA with specified kernel driver. > 12. opae_unbind_driver() unbinds specific FPGA from kernel driver. > 13. opae_reboot_device() reboots specific FPGA (do reconfiguration). > > Signed-off-by: Wei Huang > Acked-by: Tianfei Zhang > Acked-by: Rosen Xu <...> > + > +RTE_INIT(init_api_env) > +{ > + eal_inited = 0; > + opae_log_level = OPAE_LOG_ERR; > + opae_log_file = NULL; > + ifpga_rawdev_logtype = 0; > + > + opae_log_info("API environment is initialized\n"); > +} > + > +RTE_FINI(clean_api_env) > +{ > + if (opae_log_file) { > + fclose(opae_log_file); > + opae_log_file = NULL; > + } > + opae_log_info("API environment is cleaned\n"); > +} > + There are called in constructor and destructor, which means all DPDK applications have this PMD compiled will run above and print some log, is this really what we want here? Is there a way to limit the initialize to the PMD context, like 'probe()' etc?