[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 5/9] vfio-ccw: Permit missing IRQs
From: |
Cornelia Huck |
Subject: |
[PULL v2 5/9] vfio-ccw: Permit missing IRQs |
Date: |
Thu, 20 May 2021 19:05:15 +0200 |
From: Eric Farman <farman@linux.ibm.com>
Commit 690e29b91102 ("vfio-ccw: Refactor ccw irq handler") changed
one of the checks for the IRQ notifier registration from saying
"the host needs to recognize the only IRQ that exists" to saying
"the host needs to recognize ANY IRQ that exists."
And this worked fine, because the subsequent change to support the
CRW IRQ notifier doesn't get into this code when running on an older
kernel, thanks to a guard by a capability region. The later addition
of the REQ(uest) IRQ by commit b2f96f9e4f5f ("vfio-ccw: Connect the
device request notifier") broke this assumption because there is no
matching capability region. Thus, running new QEMU on an older
kernel fails with:
vfio: unexpected number of irqs 2
Let's adapt the message here so that there's a better clue of what
IRQ is missing.
Furthermore, let's make the REQ(uest) IRQ not fail when attempting
to register it, to permit running vfio-ccw on a newer QEMU with an
older kernel.
Fixes: b2f96f9e4f5f ("vfio-ccw: Connect the device request notifier")
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Message-Id: <20210421152053.2379873-1-farman@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/vfio/ccw.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c
index e752c845e9e4..7c058d13e8ce 100644
--- a/hw/vfio/ccw.c
+++ b/hw/vfio/ccw.c
@@ -411,8 +411,8 @@ static void vfio_ccw_register_irq_notifier(VFIOCCWDevice
*vcdev,
}
if (vdev->num_irqs < irq + 1) {
- error_setg(errp, "vfio: unexpected number of irqs %u",
- vdev->num_irqs);
+ error_setg(errp, "vfio: IRQ %u not available (number of irqs %u)",
+ irq, vdev->num_irqs);
return;
}
@@ -695,13 +695,15 @@ static void vfio_ccw_realize(DeviceState *dev, Error
**errp)
vfio_ccw_register_irq_notifier(vcdev, VFIO_CCW_REQ_IRQ_INDEX, &err);
if (err) {
- goto out_req_notifier_err;
+ /*
+ * Report this error, but do not make it a failing condition.
+ * Lack of this IRQ in the host does not prevent normal operation.
+ */
+ error_report_err(err);
}
return;
-out_req_notifier_err:
- vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_CRW_IRQ_INDEX);
out_crw_notifier_err:
vfio_ccw_unregister_irq_notifier(vcdev, VFIO_CCW_IO_IRQ_INDEX);
out_io_notifier_err:
--
2.31.1
- [PULL v2 0/9] s390x update, Cornelia Huck, 2021/05/20
- [PULL v2 1/9] target/s390x: Fix translation exception on illegal instruction, Cornelia Huck, 2021/05/20
- [PULL v2 2/9] target/arm: Make sure that commpage's tb->size != 0, Cornelia Huck, 2021/05/20
- [PULL v2 3/9] target/xtensa: Make sure that tb->size != 0, Cornelia Huck, 2021/05/20
- [PULL v2 4/9] accel/tcg: Assert that tb->size != 0 after translation, Cornelia Huck, 2021/05/20
- [PULL v2 5/9] vfio-ccw: Permit missing IRQs,
Cornelia Huck <=
- [PULL v2 6/9] hw/s390x/ccw: Register qbus type in abstract TYPE_CCW_DEVICE parent, Cornelia Huck, 2021/05/20
- [PULL v2 7/9] vfio-ccw: Attempt to clean up all IRQs on error, Cornelia Huck, 2021/05/20
- [PULL v2 8/9] target/i386: Make sure that vsyscall's tb->size != 0, Cornelia Huck, 2021/05/20
- [PULL v2 9/9] tests/tcg/x86_64: add vsyscall smoke test, Cornelia Huck, 2021/05/20
- Re: [PULL v2 0/9] s390x update, Peter Maydell, 2021/05/20