The goal of a platform driver is to execute chained accel operations in the most efficient way possible. A driver is aware of the hardware available on a platform and can execute several operations as a single one. For instance, if we want to do DMA and then encrypt the data, the driver can do both at the same time, if the hardware is capable of doing that. Platform drivers aren't required to support all operations. If a given operation cannot be executed, the driver should notify accel to continue processing a sequence, via spdk_accel_sequence_continue(), and that operation will processed by a module assigned to its opcode. It is required however, that all platform drivers support memory domains, including the "virtual" accel domain. A method for allocating those buffers will be added in the following patches. This patch only adds methods to register and select platorm drivers, but doesn't change the way a sequnce is executed (i.e. it doesn't use the driver to execute it). Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I97a0b07e264601ab3cf980735319fe8cea54d38e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16375 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
47 lines
1.1 KiB
Plaintext
47 lines
1.1 KiB
Plaintext
{
|
|
global:
|
|
|
|
# public functions
|
|
spdk_accel_initialize;
|
|
spdk_accel_finish;
|
|
spdk_accel_get_io_channel;
|
|
spdk_accel_submit_copy;
|
|
spdk_accel_submit_dualcast;
|
|
spdk_accel_submit_compare;
|
|
spdk_accel_submit_fill;
|
|
spdk_accel_submit_crc32c;
|
|
spdk_accel_submit_crc32cv;
|
|
spdk_accel_submit_copy_crc32c;
|
|
spdk_accel_submit_copy_crc32cv;
|
|
spdk_accel_submit_compress;
|
|
spdk_accel_submit_decompress;
|
|
spdk_accel_submit_encrypt;
|
|
spdk_accel_submit_decrypt;
|
|
spdk_accel_get_opc_module_name;
|
|
spdk_accel_assign_opc;
|
|
spdk_accel_write_config_json;
|
|
spdk_accel_append_copy;
|
|
spdk_accel_append_fill;
|
|
spdk_accel_append_decompress;
|
|
spdk_accel_append_encrypt;
|
|
spdk_accel_append_decrypt;
|
|
spdk_accel_sequence_finish;
|
|
spdk_accel_sequence_abort;
|
|
spdk_accel_sequence_reverse;
|
|
spdk_accel_get_buf;
|
|
spdk_accel_put_buf;
|
|
spdk_accel_crypto_key_create;
|
|
spdk_accel_crypto_key_destroy;
|
|
spdk_accel_crypto_key_get;
|
|
spdk_accel_set_driver;
|
|
|
|
# functions needed by modules
|
|
spdk_accel_module_list_add;
|
|
spdk_accel_module_finish;
|
|
spdk_accel_task_complete;
|
|
spdk_accel_sequence_continue;
|
|
spdk_accel_driver_register;
|
|
|
|
local: *;
|
|
};
|