What: /dev/memrar Date: March 2010 KernelVersion: 2.6.34 Contact: Eugene Epshteyn Description: The Intel Moorestown Restricted Access Region (RAR) Handler driver exposes an ioctl() based interface that allows a user to reserve and release blocks of RAR memory. Note: A sysfs based one was not appropriate for the RAR handler's usage model. ========================================================= ioctl() Requests ========================================================= RAR_HANDLER_RESERVE ------------------- Description: Reserve RAR block. Type: struct RAR_block_info Direction: in/out Errors: EINVAL (invalid RAR type or size) ENOMEM (not enough RAR memory) RAR_HANDLER_STAT ---------------- Description: Get RAR statistics. Type: struct RAR_stat Direction: in/out Errors: EINVAL (invalid RAR type) RAR_HANDLER_RELEASE ------------------- Description: Release previously reserved RAR block. Type: 32 bit unsigned integer (e.g. uint32_t), i.e the RAR "handle". Direction: in Errors: EINVAL (invalid RAR handle) ========================================================= ioctl() Request Parameter Types ========================================================= The structures referred to above are defined as follows: /** * struct RAR_block_info - user space struct that * describes RAR buffer * @type: Type of RAR memory (e.g., * RAR_TYPE_VIDEO or RAR_TYPE_AUDIO) [in] * @size: Requested size of a block in bytes to * be reserved in RAR. [in] * @handle: Handle that can be used to refer to * reserved block. [out] * * This is the basic structure exposed to the user * space that describes a given RAR buffer. It used * as the parameter for the RAR_HANDLER_RESERVE ioctl. * The buffer's underlying bus address is not exposed * to the user. User space code refers to the buffer * entirely by "handle". */ struct RAR_block_info { __u32 type; __u32 size; __u32 handle; }; /** * struct RAR_stat - RAR statistics structure * @type: Type of RAR memory (e.g., * RAR_TYPE_VIDEO or * RAR_TYPE_AUDIO) [in] * @capacity: Total size of RAR memory * region. [out] * @largest_block_size: Size of the largest reservable * block. [out] * * This structure is used for RAR_HANDLER_STAT ioctl. */ struct RAR_stat { __u32 type; __u32 capacity; __u32 largest_block_size; }; Lastly, the RAR_HANDLER_RELEASE ioctl expects a "handle" to the RAR block of memory. It is a 32 bit unsigned integer.