===================================
DSCR (Data Stream Control Register)
===================================

DSCR register in powerpc allows user to have some control of prefetch of data
stream in the processor. Please refer to the ISA documents or related manual
for more detailed information regarding how to use this DSCR to attain this
control of the prefetches . This document here provides an overview of kernel
support for DSCR, related kernel objects, its functionalities and exported
user interface.

(A) Data Structures:

	(1) thread_struct::

		dscr		/* Thread DSCR value */
		dscr_inherit	/* Thread has changed default DSCR */

	(2) PACA::

		dscr_default	/* per-CPU DSCR default value */

	(3) sysfs.c::

		dscr_default	/* System DSCR default value */

(B) Scheduler Changes:

	Scheduler will write the per-CPU DSCR default which is stored in the
	CPU's PACA value into the register if the thread has dscr_inherit value
	cleared which means that it has not changed the default DSCR till now.
	If the dscr_inherit value is set which means that it has changed the
	default DSCR value, scheduler will write the changed value which will
	now be contained in thread struct's dscr into the register instead of
	the per-CPU default PACA based DSCR value.

	NOTE: Please note here that the system wide global DSCR value never
	gets used directly in the scheduler process context switch at all.

(C) SYSFS Interface:

	- Global DSCR default:		/sys/devices/system/cpu/dscr_default
	- CPU specific DSCR default:	/sys/devices/system/cpu/cpuN/dscr

	Changing the global DSCR default in the sysfs will change all the CPU
	specific DSCR defaults immediately in their PACA structures. Again if
	the current process has the dscr_inherit clear, it also writes the new
	value into every CPU's DSCR register right away and updates the current
	thread's DSCR value as well.

	Changing the CPU specific DSCR default value in the sysfs does exactly
	the same thing as above but unlike the global one above, it just changes
	stuff for that particular CPU instead for all the CPUs on the system.

(D) User Space Instructions:

	The DSCR register can be accessed in the user space using any of these
	two SPR numbers available for that purpose.

	(1) Problem state SPR:		0x03	(Un-privileged, POWER8 only)
	(2) Privileged state SPR:	0x11	(Privileged)

	Accessing DSCR through privileged SPR number (0x11) from user space
	works, as it is emulated following an illegal instruction exception
	inside the kernel. Both mfspr and mtspr instructions are emulated.

	Accessing DSCR through user level SPR (0x03) from user space will first
	create a facility unavailable exception. Inside this exception handler
	all mfspr instruction based read attempts will get emulated and returned
	where as the first mtspr instruction based write attempts will enable
	the DSCR facility for the next time around (both for read and write) by
	setting DSCR facility in the FSCR register.

(E) Specifics about 'dscr_inherit':

	The thread struct element 'dscr_inherit' represents whether the thread
	in question has attempted and changed the DSCR itself using any of the
	following methods. This element signifies whether the thread wants to
	use the CPU default DSCR value or its own changed DSCR value in the
	kernel.

		(1) mtspr instruction	(SPR number 0x03)
		(2) mtspr instruction	(SPR number 0x11)
		(3) ptrace interface	(Explicitly set user DSCR value)

	Any child of the process created after this event in the process inherits
	this same behaviour as well.
