[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#758115: Disabled wait state X'32EE' on IPL of zIPL



On Fri, Aug 22, 2014 at 07:21:31PM -0400, Stephen Powell wrote:
> > static inline int wait(void)
> > {
> >         do {
> >                 load_wait_psw(0x0102000180000000ULL, &S390_lowcore.external_new_psw);
> >     33d0:       e3 20 d0 00 00 04       lg      %r2,0(%r13)
> >     33d6:       a7 39 01 b0             lghi    %r3,432
> >     33da:       c0 e5 ff ff fc f7       brasl   %r14,2dc8 <load_wait_psw>
> >                 if (S390_lowcore.ext_int_code == 0x1004)
> >     33e0:       e3 10 00 86 00 91       llgh    %r1,134
> >     33e6:       a7 1e 10 04             chi     %r1,4100
> >     33ea:       a7 74 00 06             jne     33f6 <sclp_wait_for_int+0x9a>
> >     33ee:       a7 28 00 02             lhi     %r2,2
> >     33f2:       a7 f4 00 08             j       3402 <sclp_wait_for_int+0xa6>
> >                         return ETIMEOUT;
> >         } while (S390_lowcore.ext_int_code != 0x2401);
> >     33f6:       a7 1e 24 01             chi     %r1,9217
> >     33fa:       a7 74 ff eb             jne     33d0 <sclp_wait_for_int+0x74>
> >     33fe:       a7 28 00 00             lhi     %r2,0
> >
> > Would be interesting how the disassembly looks on your system.
> Indeed.  Here is what I got:
> -----
> 
> static inline int wait(void)
> {
>         do {
>                 load_wait_psw(0x0102000180000000ULL, &S390_lowcore.external_new_psw);
>     32d6:       a7 39 01 b0             lghi    %r3,432
>     32da:       e3 20 d0 00 00 04       lg      %r2,0(%r13)
>     32e0:       c0 e5 ff ff fb b8       brasl   %r14,2a50 <load_wait_psw>
>                 if (S390_lowcore.ext_int_code == 0x1004)
>     32e6:       48 10 00 86             lh      %r1,134
>     32ea:       a7 f4 00 01             j       32ec <sclp_wait_for_int+0x84>
>     32ee:       07 07                   nopr    %r7
> 
> -----

With gcc-4.8:

static inline int wait(void)
{
        do {
                load_wait_psw(0x0102000180000000ULL, &S390_lowcore.external_new_psw);
    331e:       e3 20 d0 00 00 04       lg      %r2,0(%r13)
    3324:       a7 39 01 b0             lghi    %r3,432
    3328:       c0 e5 ff ff fb ac       brasl   %r14,2a80 <load_wait_psw>
                if (S390_lowcore.ext_int_code == 0x1004)
    332e:       e3 10 00 86 00 91       llgh    %r1,134
    3334:       a7 1e 10 04             chi     %r1,4100
    3338:       a7 84 00 0a             je      334c <sclp_wait_for_int+0x9c>
                        return ETIMEOUT;
        } while (S390_lowcore.ext_int_code != 0x2401);
    333c:       a7 1e 24 01             chi     %r1,9217
    3340:       a7 74 ff ef             jne     331e <sclp_wait_for_int+0x6e>

        return 0;
    3344:       a7 28 00 00             lhi     %r2,0
    3348:       a7 f4 00 04             j       3350 <sclp_wait_for_int+0xa0>

That does look much better for 3338, 3340, not really for 3348 (to 3350).  It
does fix the issue at hand, but it's a band-aid at most. I installed the
package on wheezy (compiled on sid) and it booted...

Kind regards
Philipp Kern


Reply to: