On Thu, 30 Mar 2023 11:42:44 +0000 Janosch Frank <frankja@xxxxxxxxxxxxx> wrote: > Test if the IRQ enablement is turned off on a reset or zeroize PQAP. > > Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> > --- [...] > diff --git a/s390x/ap.c b/s390x/ap.c > index 31dcfe29..47b4f832 100644 > --- a/s390x/ap.c > +++ b/s390x/ap.c > @@ -341,6 +341,57 @@ static void test_pqap_aqic(void) > report_prefix_pop(); > } > > +static void test_pqap_resets(void) > +{ > + struct ap_queue_status apqsw = {}; > + static uint8_t not_ind_byte; > + struct ap_qirq_ctrl aqic = {}; > + struct pqap_r2 r2 = {}; > + > + int cc; > + > + report_prefix_push("pqap"); > + report_prefix_push("rapq"); > + > + /* Enable IRQs which the resets will disable */ > + aqic.ir = 1; > + cc = ap_pqap_aqic(apn, qn, &apqsw, aqic, (uintptr_t)¬_ind_byte); > + report(cc == 0 && apqsw.rc == 0, "enable"); > + > + do { > + cc = ap_pqap_tapq(apn, qn, &apqsw, &r2); > + } while (cc == 0 && apqsw.irq_enabled == 0); same story here as in the previous patch, waiting for interrupts > + report(apqsw.irq_enabled == 1, "IRQs enabled"); > + > + ap_pqap_reset(apn, qn, &apqsw); > + cc = ap_pqap_tapq(apn, qn, &apqsw, &r2); > + assert(!cc); > + report(apqsw.irq_enabled == 0, "IRQs have been disabled"); > + > + report_prefix_pop(); > + > + report_prefix_push("zapq"); > + > + /* Enable IRQs which the resets will disable */ > + aqic.ir = 1; > + cc = ap_pqap_aqic(apn, qn, &apqsw, aqic, (uintptr_t)¬_ind_byte); > + report(cc == 0 && apqsw.rc == 0, "enable"); > + > + do { > + cc = ap_pqap_tapq(apn, qn, &apqsw, &r2); > + } while (cc == 0 && apqsw.irq_enabled == 0); and here > + report(apqsw.irq_enabled == 1, "IRQs enabled"); > + > + ap_pqap_reset_zeroize(apn, qn, &apqsw); > + cc = ap_pqap_tapq(apn, qn, &apqsw, &r2); > + assert(!cc); > + report(apqsw.irq_enabled == 0, "IRQs have been disabled"); > + > + report_prefix_pop(); > + > + report_prefix_pop(); > +} > + > int main(void) > { > int setup_rc = ap_setup(&apn, &qn); > @@ -362,6 +413,7 @@ int main(void) > goto done; > } > test_pqap_aqic(); > + test_pqap_resets(); > > done: > report_prefix_pop();