Subject: Re: [1/5] powerpc: Fix handling of DSCR related facility unavailable exception

From: Anshuman Khandual <[email-masked]>
Date: Tue, 09 Dec 2014 18:45:51 +0530

On 12/09/2014 03:41 PM, Michael Ellerman wrote:
> On Mon, 2014-08-12 at 06:30:08 UTC, Anshuman Khandual wrote:
>> Currently DSCR (Data Stream Control Register) can be accessed with
>> mfspr or mtspr instructions inside a thread via two different SPR
>> numbers. One being the user accessible problem state SPR number 0x03
>> and the other being the privilege state SPR number 0x11. All access
>> through the privilege state SPR number get emulated through illegal
>> instruction exception. Any access through the problem state SPR number
>> raises one facility unavailable exception which sets the thread based
>> dscr_inherit bit and enables DSCR facility through FSCR register thus
>> allowing direct access to DSCR without going through this exception in
>> the future. We set the thread.dscr_inherit bit whether the access was
>> with mfspr or mtspr instruction which is neither correct nor does it
>> match the behaviour through the instruction emulation code path driven
>> from privilege state SPR number. User currently observes two different
>> kind of behaviour when accessing the DSCR through these two SPR numbers.
>> This problem can be observed through these two test cases by replacing
>> the privilege state SPR number with the problem state SPR number.
>>
>> 	(1) http://ozlabs.org/~anton/junkcode/dscr_default_test.c
>> 	(2) http://ozlabs.org/~anton/junkcode/dscr_explicit_test.c
> 
> Can you convert those into a selftest please?

Hey Michael,

Yeah I wanted to convert all these tests which are related to DSCR into
individual self tests for powerpc. All these test cases have Anton Blanchard
and IBM's copyright on it but they are licensed with GPL V2. Not sure whether
Anton needs to okay this before I can modify them for self tests, put his
(Anton's) signed-off-by and then post it in the mailing list.

(1) http://ozlabs.org/~anton/junkcode/dscr_default_test.c
(2) http://ozlabs.org/~anton/junkcode/dscr_explicit_test.c
(3) http://ozlabs.org/~anton/junkcode/dscr_inherit_exec_test.c
(4) http://ozlabs.org/~anton/junkcode/dscr_inherit_test.c
(5) http://ozlabs.org/~anton/junkcode/user_dscr_test.c