STRUCT I3C_DEVICE_IBI_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct i3c_device_ibi_info(9) β€” the kernel API manual, but make it make sense

okay so bestie, welcome to the struct i3c_device_ibi_info(9) page β€” this is the kernel API manual, and we're about to get into it πŸ’–


✨ NAME ✨

struct i3c_device_ibi_info β€” literally the IBI information attached to a specific device, no cap πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

struct i3c_device_ibi_info {
    struct completion all_ibis_handled;
    atomic_t pending_ibis;
    unsigned int max_payload_len;
    unsigned int num_slots;
    unsigned int enabled;
    struct workqueue_struct *wq;
    void (*handler)(struct i3c_device *dev, const struct i3c_ibi_payload *payload);
 };

πŸ‘‘ Members πŸ‘‘

  • all_ibis_handled β€” this one is used to be informed when no more IBIs are waiting to be processed. It's used by i3c_device_disable_ibi to wait for all IBIs to be dequeued 🫢
  • pending_ibis β€” counts the number of pending IBIs. Each pending IBI has its work element queued to the controller workqueue ⭐
  • max_payload_len β€” the maximum payload length for an IBI coming from this device. This value is specified when calling i3c_device_request_ibi and, like, should not change at run time β€” fr fr, don't touch it. All messages IBIs exceeding this limit should be rejected by the master πŸ’€
  • num_slots β€” the number of IBI slots reserved for this device 🌸
  • enabled β€” reflects the IBI status ✨
  • wq β€” the workqueue used to execute IBI handlers πŸ”₯
  • handler β€” the IBI handler specified at i3c_device_request_ibi call time. This handler will be called from the controller workqueue, and as such is allowed to sleep β€” though it is recommended to process the IBI as fast as possible so you don't stall processing of other IBIs queued on the same workqueue πŸ™ˆ. New I3C messages can be sent from the IBI handler πŸ’…

πŸ’œ Description πŸ’œ

The struct_i3c_device_ibi_info object is allocated when i3c_device_request_ibi is called and attached to a specific device. This object is here to manage IBIs coming from a specific I3C device β€” that's its whole job, its main character energy 🧚

Note that this structure is the generic view of the IBI management infrastructure. I3C master drivers may have their own internal representation which they can associate to the device using controller-private data 🌈

lowkey important: it's the generic view, so your master driver might be doing its own thing underneath πŸ‘€

⭐ SEE ALSO ⭐

Kernel file ./include/linux/i3c/master.h β€” plus, like, the whole friend group:


and that's the whole page, bestie 🫢 this came out of ./include/linux/i3c and it's dated October 2026, signed off with all the love as struct i3c_device_ibi_info(9) πŸ’– slay, go read the source, mwah πŸŽ€

πŸ“¦ where this page comes from