On Mon, 13 Jan 2020 14:10:10 +0100 David Hildenbrand <david@xxxxxxxxxx> wrote: [...] > :) I'm confused by the fact that you "expect_pgm_int()" but actually > don't expect one ... > > Please enlighten me why this isn't > > + sclp_mark_busy(); > + h->length = 8; > + sclp_setup_int(); > + > + asm volatile( > + " .insn rre,0xb2204200,%1,%2\n" /* servc > %1,%2 */ > + " ipm %0\n" > + " srl %0,28" > + : "=&d" (cc) : "d" (valid_code), "a" (__pa(pagebuf)) > + : "cc", "memory"); > + if (!cc) > + sclp_wait_busy(); > + report(cc == 0, "Instruction format ignored bits"); > > I feel like I am missing something important. because if we take an unexpected pgm interrupt: * the interrupt handler will write stuff on the console using SCLP * it will wait for the busy flag to be cleared before doing so * thus it will hang. this would be solved by adding special logic to the pgm interrupt handler (as we have discussed in your previous email)