Re: [PATCH V2 5/8] i3c: master: Reject IBI requests from non-IBI-capable devices
Frank Li <[email protected]> Tue, 28 Jul 2026 16:05:06 -0400
| Newsgroups | org.infradead.lists.linux-i3c,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kernel.vger.linux-pm |
|---|---|
| Message-ID | <amkLch5Du53mgWNp@lizhi-Precision-Tower-5810> |
On Tue, Jul 28, 2026 at 06:53:05PM +0300, Adrian Hunter wrote: > i3c_device_request_ibi() does not verify that a device advertises IBI > support before attempting to set up IBI handling. > > Add a check for I3C_BCR_IBI_REQ_CAP and fail with -EOPNOTSUPP when IBI > support is not reported by the device. This keeps IBI setup consistent > with other IBI-related functionality, such as exposing wakeup capability > only for IBI-capable devices. > > Signed-off-by: Adrian Hunter <[email protected]> > --- Reviewed-by: Frank Li <[email protected]> > > > Changes in V2: > > None > > > drivers/i3c/device.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/i3c/device.c b/drivers/i3c/device.c > index 101eaa77de68..307ca6dc04ca 100644 > --- a/drivers/i3c/device.c > +++ b/drivers/i3c/device.c > @@ -205,12 +205,14 @@ int i3c_device_request_ibi(struct i3c_device *dev, > return ret; > > i3c_bus_normaluse_lock(dev->bus); > - if (dev->desc) { > + if (!dev->desc) { > + ret = -ENOENT; > + } else if (!(dev->desc->info.bcr & I3C_BCR_IBI_REQ_CAP)) { > + ret = -EOPNOTSUPP; > + } else { > mutex_lock(&dev->desc->ibi_lock); > ret = i3c_dev_request_ibi_locked(dev->desc, req); > mutex_unlock(&dev->desc->ibi_lock); > - } else { > - ret = -ENOENT; > } > i3c_bus_normaluse_unlock(dev->bus); > > -- > 2.53.0 > -- linux-i3c mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-i3c