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: Michael Mueller <mimu@linux.ibm.com> Tested-by: Michael Mueller <mimu@linux.ibm.com> Acked-by: Peter Oberparleiter <oberpar@linux.ibm.com> Signed-off-by: Benjamin Block <bblock@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
committed by
Heiko Carstens
parent
a7eb28801b
commit
acf00b5ef9
@@ -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,
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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) {
|
||||||
|
Reference in New Issue
Block a user