On 1/22/2021 2:43 AM, Huang, Wei wrote:
<Please do not top post, your comment moved below>
-----Original Message-----
From: Ferruh Yigit <ferruh.yi...@intel.com>
Sent: Friday, January 22, 2021 00:30
To: Huang, Wei <wei.hu...@intel.com>; dev@dpdk.org; Xu, Rosen <rosen...@intel.com>;
Zhang, Qi Z <qi.z.zh...@intel.com>
Cc: sta...@dpdk.org; Zhang, Tianfei <tianfei.zh...@intel.com>
Subject: Re: [dpdk-dev] [PATCH v11 3/4] raw/ifpga: add OPAE API for OpenStack
Cyborg
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 <wei.hu...@intel.com>
Acked-by: Tianfei Zhang <tianfei.zh...@intel.com>
Acked-by: Rosen Xu <rosen...@intel.com>
<...>
+
+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?
Hi Ferruh,
These log information will not be output for the default log level is
OPAE_LOG_ERR, they are output only when log level is set to OPAE_LOG_INFO. I
can remove them if you think it's necessary.
Although they don't output because of default log level, I think it is wrong
that they run for _all_ dpdk applications, I still think it should run for the
scope of the driver, not for all dpdk applications.
All these opae_xxx functions will check the input PCI address is valid or not,
and the rawdev PMD will also filter input PCI device ID. I think it's enough to
prevent these function to be misused.
Thanks,
Wei