Message ID | 20220706064024.16573-4-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: uv-host: Access check extensions and improvements | expand |
On 7/6/22 08:40, Janosch Frank wrote: > Let's check if we get a specification PGM exception if we set a > non-zero i3 when doing a UV call. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Reviewed-by: Steffen Eiden <seiden@linux.ibm.com> > --- > s390x/uv-host.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/s390x/uv-host.c b/s390x/uv-host.c > index 5aeacb42..0762e690 100644 > --- a/s390x/uv-host.c > +++ b/s390x/uv-host.c > @@ -82,6 +82,28 @@ static struct cmd_list cmds[] = { > { NULL, 0, 0 }, > }; > > +static void test_i3(void) > +{ > + struct uv_cb_header uvcb = { > + .cmd = UVC_CMD_INIT_UV, > + .len = sizeof(struct uv_cb_init), > + }; > + unsigned long r1 = 0; > + int cc; > + > + report_prefix_push("i3"); > + expect_pgm_int(); > + asm volatile( > + "0: .insn rrf,0xB9A40000,%[r1],%[r2],4,2\n" > + " ipm %[cc]\n" > + " srl %[cc],28\n" > + : [cc] "=d" (cc) > + : [r1] "a" (r1), [r2] "a" (&uvcb) > + : "memory", "cc"); > + check_pgm_int_code(PGM_INT_CODE_SPECIFICATION); > + report_prefix_pop(); > +} > + > static void test_priv(void) > { > struct uv_cb_header uvcb = {}; > @@ -577,6 +599,7 @@ int main(void) > goto done; > } > > + test_i3(); > test_priv(); > test_invalid(); > test_uv_uninitialized();
diff --git a/s390x/uv-host.c b/s390x/uv-host.c index 5aeacb42..0762e690 100644 --- a/s390x/uv-host.c +++ b/s390x/uv-host.c @@ -82,6 +82,28 @@ static struct cmd_list cmds[] = { { NULL, 0, 0 }, }; +static void test_i3(void) +{ + struct uv_cb_header uvcb = { + .cmd = UVC_CMD_INIT_UV, + .len = sizeof(struct uv_cb_init), + }; + unsigned long r1 = 0; + int cc; + + report_prefix_push("i3"); + expect_pgm_int(); + asm volatile( + "0: .insn rrf,0xB9A40000,%[r1],%[r2],4,2\n" + " ipm %[cc]\n" + " srl %[cc],28\n" + : [cc] "=d" (cc) + : [r1] "a" (r1), [r2] "a" (&uvcb) + : "memory", "cc"); + check_pgm_int_code(PGM_INT_CODE_SPECIFICATION); + report_prefix_pop(); +} + static void test_priv(void) { struct uv_cb_header uvcb = {}; @@ -577,6 +599,7 @@ int main(void) goto done; } + test_i3(); test_priv(); test_invalid(); test_uv_uninitialized();
Let's check if we get a specification PGM exception if we set a non-zero i3 when doing a UV call. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- s390x/uv-host.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)