On 1/16/24 14:02, Nina Schoetterl-Glausch wrote:
On Mon, 2024-01-08 at 13:29 +0000, Janosch Frank wrote:
A recent s390 KVM fixpatch [1] showed us that checking the cc is not
enough when emulation code forgets to set the cc. There might just be
the correct cc in the PSW which would make the cc check succeed.
This series intentionally dirties the cc for sigp, uvc, some io
instructions and sclp to make cc setting errors more apparent. I had a
cursory look through the tested instructions and those are the most
prominent ones with defined cc values.
Since the issue appeared in PQAP my AP test series is now dependent on
this series.
[1] https://lore.kernel.org/kvm/20231201181657.1614645-1-farman@xxxxxxxxxxxxx/
Using SET PROGRAM MASK the way you're doing in this series will also set the
program mask to 0, right?
In case you have some non zero register %[reg] and you want to set CC to 1 you
could do:
or %[reg],%[reg] /* set CC to 1 */
In general, if I understand TEST UNDER MASK right, you could do:
tmll %[set_cc],3
to set the CC to the value in %[set_cc] (without any shifting).
That is a wonderful solution to this problem.
I'll send out a new version in the next couple of days.