+isrm_msi_alloc(msienv_t msienv, cpu_t cpu, int index, isr_cb handler);
+
+/**
+ * @brief Set the sideband information will be used for upcoming
+ * allocations
+ */
+void
+isrm_msi_set_sideband(msienv_t msienv, ptr_t sideband);
+
+/**
+ * @brief Done MSI allocation
+ */
+void
+isrm_msi_done(msienv_t msienv);
+
+static inline must_inline msi_vector_t
+isrm_msi_alloc_simple(struct device* dev, cpu_t cpu, isr_cb handler)
+{
+ msi_vector_t v;
+ msienv_t env;
+
+ env = isrm_msi_start(dev);
+ v = isrm_msi_alloc(env, cpu, 0, handler);
+ isrm_msi_done(env);
+
+ return v;
+}