Commit acf00b5e authored by Benjamin Block's avatar Benjamin Block Committed by Heiko Carstens

s390/airq: remove lsi_mask from airq_struct

Remove the field `lsi_mask` from `struct airq_struct` as it is not
utilized for any adapter interrupt, other than setting it to the default
value of 0xff.

Because nobody is using this functionality, all it does is cost a little
bit of time with each delivered adapter interrupt.
Reviewed-by: default avatarMichael Mueller <mimu@linux.ibm.com>
Tested-by: default avatarMichael Mueller <mimu@linux.ibm.com>
Acked-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: default avatarBenjamin Block <bblock@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent a7eb2880
...@@ -18,7 +18,6 @@ struct airq_struct { ...@@ -18,7 +18,6 @@ struct airq_struct {
struct hlist_node list; /* Handler queueing. */ struct hlist_node list; /* Handler queueing. */
void (*handler)(struct airq_struct *airq, struct tpi_info *tpi_info); void (*handler)(struct airq_struct *airq, struct tpi_info *tpi_info);
u8 *lsi_ptr; /* Local-Summary-Indicator pointer */ u8 *lsi_ptr; /* Local-Summary-Indicator pointer */
u8 lsi_mask; /* Local-Summary-Indicator mask */
u8 isc; /* Interrupt-subclass */ u8 isc; /* Interrupt-subclass */
u8 flags; u8 flags;
}; };
......
...@@ -3398,7 +3398,6 @@ static void gib_alert_irq_handler(struct airq_struct *airq, ...@@ -3398,7 +3398,6 @@ static void gib_alert_irq_handler(struct airq_struct *airq,
static struct airq_struct gib_alert_irq = { static struct airq_struct gib_alert_irq = {
.handler = gib_alert_irq_handler, .handler = gib_alert_irq_handler,
.lsi_ptr = &gib_alert_irq.lsi_mask,
}; };
void kvm_s390_gib_destroy(void) void kvm_s390_gib_destroy(void)
...@@ -3438,6 +3437,8 @@ int __init kvm_s390_gib_init(u8 nisc) ...@@ -3438,6 +3437,8 @@ int __init kvm_s390_gib_init(u8 nisc)
rc = -EIO; rc = -EIO;
goto out_free_gib; 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->nisc = nisc;
gib_origin = virt_to_phys(gib); gib_origin = virt_to_phys(gib);
......
...@@ -49,8 +49,6 @@ int register_adapter_interrupt(struct airq_struct *airq) ...@@ -49,8 +49,6 @@ int register_adapter_interrupt(struct airq_struct *airq)
return -ENOMEM; return -ENOMEM;
airq->flags |= AIRQ_PTR_ALLOCATED; airq->flags |= AIRQ_PTR_ALLOCATED;
} }
if (!airq->lsi_mask)
airq->lsi_mask = 0xff;
snprintf(dbf_txt, sizeof(dbf_txt), "rairq:%p", airq); snprintf(dbf_txt, sizeof(dbf_txt), "rairq:%p", airq);
CIO_TRACE_EVENT(4, dbf_txt); CIO_TRACE_EVENT(4, dbf_txt);
isc_register(airq->isc); isc_register(airq->isc);
...@@ -98,7 +96,7 @@ static irqreturn_t do_airq_interrupt(int irq, void *dummy) ...@@ -98,7 +96,7 @@ static irqreturn_t do_airq_interrupt(int irq, void *dummy)
head = &airq_lists[tpi_info->isc]; head = &airq_lists[tpi_info->isc];
rcu_read_lock(); rcu_read_lock();
hlist_for_each_entry_rcu(airq, head, list) 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); airq->handler(airq, tpi_info);
rcu_read_unlock(); rcu_read_unlock();
......
...@@ -250,7 +250,6 @@ static struct airq_info *new_airq_info(int index) ...@@ -250,7 +250,6 @@ static struct airq_info *new_airq_info(int index)
info->airq.handler = virtio_airq_handler; info->airq.handler = virtio_airq_handler;
info->summary_indicator_idx = index; info->summary_indicator_idx = index;
info->airq.lsi_ptr = get_summary_indicator(info); info->airq.lsi_ptr = get_summary_indicator(info);
info->airq.lsi_mask = 0xff;
info->airq.isc = VIRTIO_AIRQ_ISC; info->airq.isc = VIRTIO_AIRQ_ISC;
rc = register_adapter_interrupt(&info->airq); rc = register_adapter_interrupt(&info->airq);
if (rc) { if (rc) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment