What:		/dev/memrar
Date:		March 2010
KernelVersion:	2.6.34
Contact:	Eugene Epshteyn <eugene.epshteyn@intel.com>
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.
