lkml.org 
[lkml]   [2020]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 05/18] ibmvfc: add Sub-CRQ IRQ enable/disable routine
    Date
    Each Sub-CRQ has its own interrupt. A hypercall is required to toggle
    the IRQ state. Provide the necessary mechanism via a helper function.

    Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
    ---
    drivers/scsi/ibmvscsi/ibmvfc.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c
    index f879be666c84..e082935f56cf 100644
    --- a/drivers/scsi/ibmvscsi/ibmvfc.c
    +++ b/drivers/scsi/ibmvscsi/ibmvfc.c
    @@ -3361,6 +3361,26 @@ static void ibmvfc_tasklet(void *data)
    spin_unlock_irqrestore(vhost->host->host_lock, flags);
    }

    +static int ibmvfc_toggle_scrq_irq(struct ibmvfc_sub_queue *scrq, int enable)
    +{
    + struct device *dev = scrq->vhost->dev;
    + struct vio_dev *vdev = to_vio_dev(dev);
    + unsigned long rc;
    + int irq_action = H_ENABLE_VIO_INTERRUPT;
    +
    + if (!enable)
    + irq_action = H_DISABLE_VIO_INTERRUPT;
    +
    + rc = plpar_hcall_norets(H_VIOCTL, vdev->unit_address, irq_action,
    + scrq->hw_irq, 0, 0);
    +
    + if (rc)
    + dev_err(dev, "Couldn't %s sub-crq[%lu] irq. rc=%ld\n",
    + enable ? "enable" : "disable", scrq->hwq_id, rc);
    +
    + return rc;
    +}
    +
    /**
    * ibmvfc_init_tgt - Set the next init job step for the target
    * @tgt: ibmvfc target struct
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-12-03 03:40    [W:3.334 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site