+struct cxl_irq_cap {
+ const char *name;
+ int (*get_max_msgnum)(struct cxl_dev_state *cxlds);
For the CPMU case I need to walk the register locator dvsec block so need
the callback to take the pci_dev not the cxl_dev_state.
static int cxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
struct cxl_register_map map;
@@ -498,6 +558,9 @@ static int cxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
if (IS_ERR(cxlmd))
return PTR_ERR(cxlmd);
+ /* TODO: When there are users, this return value must be checked */
+ cxl_pci_alloc_irq_vectors(cxlds);
+
Gut feeling is this will end up moving ahead of any of the sub device creation
because many of them end up needing interrupts.
Also check response from the start - can't see a reason to not do so as we
won't be registering any at all if no callbacks provided.
So I'd move it above the devm_cxl_add_memdev() call.