@@ -355,65 +355,6 @@ bool pci_msi_domain_supports(struct pci_dev *pdev, unsigned int feature_mask,
355355 return (supported & feature_mask ) == feature_mask ;
356356}
357357
358- /**
359- * pci_create_ims_domain - Create a secondary IMS domain for a PCI device
360- * @pdev: The PCI device to operate on
361- * @template: The MSI info template which describes the domain
362- * @hwsize: The size of the hardware entry table or 0 if the domain
363- * is purely software managed
364- * @data: Optional pointer to domain specific data to be stored
365- * in msi_domain_info::data
366- *
367- * Return: True on success, false otherwise
368- *
369- * An IMS domain is expected to have the following constraints:
370- * - The index space is managed by the core code
371- *
372- * - There is no requirement for consecutive index ranges
373- *
374- * - The interrupt chip must provide the following callbacks:
375- * - irq_mask()
376- * - irq_unmask()
377- * - irq_write_msi_msg()
378- *
379- * - The interrupt chip must provide the following optional callbacks
380- * when the irq_mask(), irq_unmask() and irq_write_msi_msg() callbacks
381- * cannot operate directly on hardware, e.g. in the case that the
382- * interrupt message store is in queue memory:
383- * - irq_bus_lock()
384- * - irq_bus_unlock()
385- *
386- * These callbacks are invoked from preemptible task context and are
387- * allowed to sleep. In this case the mandatory callbacks above just
388- * store the information. The irq_bus_unlock() callback is supposed
389- * to make the change effective before returning.
390- *
391- * - Interrupt affinity setting is handled by the underlying parent
392- * interrupt domain and communicated to the IMS domain via
393- * irq_write_msi_msg().
394- *
395- * The domain is automatically destroyed when the PCI device is removed.
396- */
397- bool pci_create_ims_domain (struct pci_dev * pdev , const struct msi_domain_template * template ,
398- unsigned int hwsize , void * data )
399- {
400- struct irq_domain * domain = dev_get_msi_domain (& pdev -> dev );
401-
402- if (!domain || !irq_domain_is_msi_parent (domain ))
403- return false;
404-
405- if (template -> info .bus_token != DOMAIN_BUS_PCI_DEVICE_IMS ||
406- !(template -> info .flags & MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS ) ||
407- !(template -> info .flags & MSI_FLAG_FREE_MSI_DESCS ) ||
408- !template -> chip .irq_mask || !template -> chip .irq_unmask ||
409- !template -> chip .irq_write_msi_msg || template -> chip .irq_set_affinity )
410- return false;
411-
412- return msi_create_device_irq_domain (& pdev -> dev , MSI_SECONDARY_DOMAIN , template ,
413- hwsize , data , NULL );
414- }
415- EXPORT_SYMBOL_GPL (pci_create_ims_domain );
416-
417358/*
418359 * Users of the generic MSI infrastructure expect a device to have a single ID,
419360 * so with DMA aliases we have to pick the least-worst compromise. Devices with
0 commit comments