struct hlist_node list;         /* Handler queueing. */
        void (*handler)(struct airq_struct *airq, struct tpi_info *tpi_info);
        u8 *lsi_ptr;                    /* Local-Summary-Indicator pointer */
-       u8 lsi_mask;                    /* Local-Summary-Indicator mask */
        u8 isc;                         /* Interrupt-subclass */
        u8 flags;
 };
 
 
 static struct airq_struct gib_alert_irq = {
        .handler = gib_alert_irq_handler,
-       .lsi_ptr = &gib_alert_irq.lsi_mask,
 };
 
 void kvm_s390_gib_destroy(void)
                rc = -EIO;
                goto out_free_gib;
        }
+       /* adapter interrupts used for AP (applicable here) don't use the LSI */
+       *gib_alert_irq.lsi_ptr = 0xff;
 
        gib->nisc = nisc;
        gib_origin = virt_to_phys(gib);
 
                        return -ENOMEM;
                airq->flags |= AIRQ_PTR_ALLOCATED;
        }
-       if (!airq->lsi_mask)
-               airq->lsi_mask = 0xff;
        snprintf(dbf_txt, sizeof(dbf_txt), "rairq:%p", airq);
        CIO_TRACE_EVENT(4, dbf_txt);
        isc_register(airq->isc);
        head = &airq_lists[tpi_info->isc];
        rcu_read_lock();
        hlist_for_each_entry_rcu(airq, head, list)
-               if ((*airq->lsi_ptr & airq->lsi_mask) != 0)
+               if (*airq->lsi_ptr != 0)
                        airq->handler(airq, tpi_info);
        rcu_read_unlock();
 
 
        info->airq.handler = virtio_airq_handler;
        info->summary_indicator_idx = index;
        info->airq.lsi_ptr = get_summary_indicator(info);
-       info->airq.lsi_mask = 0xff;
        info->airq.isc = VIRTIO_AIRQ_ISC;
        rc = register_adapter_interrupt(&info->airq);
        if (rc) {