1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2c66ac9dbSNicholas Bellinger #ifndef TARGET_CORE_RD_H 3c66ac9dbSNicholas Bellinger #define TARGET_CORE_RD_H 4c66ac9dbSNicholas Bellinger 58dcf07beSBart Van Assche #include <linux/module.h> 68dcf07beSBart Van Assche #include <linux/types.h> 78dcf07beSBart Van Assche #include <target/target_core_base.h> 88dcf07beSBart Van Assche 9c66ac9dbSNicholas Bellinger #define RD_HBA_VERSION "v4.0" 10c66ac9dbSNicholas Bellinger #define RD_MCP_VERSION "4.0" 11c66ac9dbSNicholas Bellinger 12c66ac9dbSNicholas Bellinger /* Largest piece of memory kmalloc can allocate */ 13c66ac9dbSNicholas Bellinger #define RD_MAX_ALLOCATION_SIZE 65536 14c66ac9dbSNicholas Bellinger #define RD_DEVICE_QUEUE_DEPTH 32 15c66ac9dbSNicholas Bellinger #define RD_MAX_DEVICE_QUEUE_DEPTH 128 16c66ac9dbSNicholas Bellinger #define RD_BLOCKSIZE 512 17c66ac9dbSNicholas Bellinger 18c66ac9dbSNicholas Bellinger /* Used in target_core_init_configfs() for virtual LUN 0 access */ 19c66ac9dbSNicholas Bellinger int __init rd_module_init(void); 20c66ac9dbSNicholas Bellinger void rd_module_exit(void); 21c66ac9dbSNicholas Bellinger 22c66ac9dbSNicholas Bellinger struct rd_dev_sg_table { 23c66ac9dbSNicholas Bellinger u32 page_start_offset; 24c66ac9dbSNicholas Bellinger u32 page_end_offset; 25c66ac9dbSNicholas Bellinger u32 rd_sg_count; 26c66ac9dbSNicholas Bellinger struct scatterlist *sg_table; 27c66ac9dbSNicholas Bellinger } ____cacheline_aligned; 28c66ac9dbSNicholas Bellinger 29c66ac9dbSNicholas Bellinger #define RDF_HAS_PAGE_COUNT 0x01 3052c07423SNicholas Bellinger #define RDF_NULLIO 0x02 31*0aecfa66SKonstantin Shelekhin #define RDF_DUMMY 0x04 32c66ac9dbSNicholas Bellinger 33c66ac9dbSNicholas Bellinger struct rd_dev { 340fd97ccfSChristoph Hellwig struct se_device dev; 35c66ac9dbSNicholas Bellinger u32 rd_flags; 36c66ac9dbSNicholas Bellinger /* Unique Ramdisk Device ID in Ramdisk HBA */ 37c66ac9dbSNicholas Bellinger u32 rd_dev_id; 38c66ac9dbSNicholas Bellinger /* Total page count for ramdisk device */ 39c66ac9dbSNicholas Bellinger u32 rd_page_count; 40c66ac9dbSNicholas Bellinger /* Number of SG tables in sg_table_array */ 41c66ac9dbSNicholas Bellinger u32 sg_table_count; 42d7e8eb5dSNicholas Bellinger /* Number of SG tables in sg_prot_array */ 43d7e8eb5dSNicholas Bellinger u32 sg_prot_count; 44c66ac9dbSNicholas Bellinger /* Array of rd_dev_sg_table_t containing scatterlists */ 45c66ac9dbSNicholas Bellinger struct rd_dev_sg_table *sg_table_array; 46d7e8eb5dSNicholas Bellinger /* Array of rd_dev_sg_table containing protection scatterlists */ 47d7e8eb5dSNicholas Bellinger struct rd_dev_sg_table *sg_prot_array; 48c66ac9dbSNicholas Bellinger /* Ramdisk HBA device is connected to */ 49c66ac9dbSNicholas Bellinger struct rd_host *rd_host; 50c66ac9dbSNicholas Bellinger } ____cacheline_aligned; 51c66ac9dbSNicholas Bellinger 52c66ac9dbSNicholas Bellinger struct rd_host { 53c66ac9dbSNicholas Bellinger u32 rd_host_dev_id_count; 54c66ac9dbSNicholas Bellinger u32 rd_host_id; /* Unique Ramdisk Host ID */ 55c66ac9dbSNicholas Bellinger } ____cacheline_aligned; 56c66ac9dbSNicholas Bellinger 57c66ac9dbSNicholas Bellinger #endif /* TARGET_CORE_RD_H */ 58