From e2af48df5cc6bd6327697af44cc3f0d5e88611a2 Mon Sep 17 00:00:00 2001 From: Julian Wiedmann Date: Tue, 23 Mar 2021 23:43:02 +0100 Subject: [PATCH] s390/qdio: remove unused sync-after-IRQ infrastructure The queue processing is fully decoupled from any preceding interrupt, so we're no longer making any use of the sync-after-IRQ HW capabilities. And as SIGA-sync is a legacy feature, there's also not much point in re-designing the driver & qdio-layer code just so that we can potentially avoid a few syncs. So just remove all the leftover code. Signed-off-by: Julian Wiedmann Reviewed-by: Benjamin Block Signed-off-by: Vasily Gorbik --- drivers/s390/cio/qdio.h | 8 +------- drivers/s390/cio/qdio_setup.c | 11 ++--------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h index 478f84cd9e45..835f23b4376e 100644 --- a/drivers/s390/cio/qdio.h +++ b/drivers/s390/cio/qdio.h @@ -130,9 +130,7 @@ struct siga_flag { u8 input:1; u8 output:1; u8 sync:1; - u8 sync_after_ai:1; - u8 sync_out_after_pci:1; - u8:3; + u8:5; } __attribute__ ((packed)); struct qdio_dev_perf_stat { @@ -317,10 +315,6 @@ static inline void qdio_deliver_irq(struct qdio_irq *irq) #define need_siga_in(q) (q->irq_ptr->siga_flag.input) #define need_siga_out(q) (q->irq_ptr->siga_flag.output) #define need_siga_sync(q) (unlikely(q->irq_ptr->siga_flag.sync)) -#define need_siga_sync_after_ai(q) \ - (unlikely(q->irq_ptr->siga_flag.sync_after_ai)) -#define need_siga_sync_out_after_pci(q) \ - (unlikely(q->irq_ptr->siga_flag.sync_out_after_pci)) #define for_each_input_queue(irq_ptr, q, i) \ for (i = 0; i < irq_ptr->nr_input_qs && \ diff --git a/drivers/s390/cio/qdio_setup.c b/drivers/s390/cio/qdio_setup.c index 9ccb1afcda68..f6312919147d 100644 --- a/drivers/s390/cio/qdio_setup.c +++ b/drivers/s390/cio/qdio_setup.c @@ -278,10 +278,6 @@ static void process_ac_flags(struct qdio_irq *irq_ptr, unsigned char qdioac) irq_ptr->siga_flag.output = 1; if (qdioac & AC1_SIGA_SYNC_NEEDED) irq_ptr->siga_flag.sync = 1; - if (!(qdioac & AC1_AUTOMATIC_SYNC_ON_THININT)) - irq_ptr->siga_flag.sync_after_ai = 1; - if (!(qdioac & AC1_AUTOMATIC_SYNC_ON_OUT_PCI)) - irq_ptr->siga_flag.sync_out_after_pci = 1; } static void check_and_setup_qebsm(struct qdio_irq *irq_ptr, @@ -495,8 +491,7 @@ void qdio_print_subchannel_info(struct qdio_irq *irq_ptr) { char s[80]; - snprintf(s, 80, "qdio: %s %s on SC %x using " - "AI:%d QEBSM:%d PRI:%d TDD:%d SIGA:%s%s%s%s%s\n", + snprintf(s, 80, "qdio: %s %s on SC %x using AI:%d QEBSM:%d PRI:%d TDD:%d SIGA:%s%s%s\n", dev_name(&irq_ptr->cdev->dev), (irq_ptr->qib.qfmt == QDIO_QETH_QFMT) ? "OSA" : ((irq_ptr->qib.qfmt == QDIO_ZFCP_QFMT) ? "ZFCP" : "HS"), @@ -507,9 +502,7 @@ void qdio_print_subchannel_info(struct qdio_irq *irq_ptr) css_general_characteristics.aif_tdd, (irq_ptr->siga_flag.input) ? "R" : " ", (irq_ptr->siga_flag.output) ? "W" : " ", - (irq_ptr->siga_flag.sync) ? "S" : " ", - (irq_ptr->siga_flag.sync_after_ai) ? "A" : " ", - (irq_ptr->siga_flag.sync_out_after_pci) ? "P" : " "); + (irq_ptr->siga_flag.sync) ? "S" : " "); printk(KERN_INFO "%s", s); } -- 2.11.0