Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c288b67b authored by Konrad Rzeszutek Wilk's avatar Konrad Rzeszutek Wilk
Browse files

xen/pciback: Print out the MSI/MSI-X (PIRQ) values



If the verbose_request is set (and loglevel high enough), print out
the MSI/MSI-X values that are sent to the guest. This should aid in
debugging issues.

Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent e17ab35f
Loading
Loading
Loading
Loading
+31 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,9 @@ int pciback_enable_msi(struct pciback_device *pdev,
	int otherend = pdev->xdev->otherend_id;
	int otherend = pdev->xdev->otherend_id;
	int status;
	int status;


	if (unlikely(verbose_request))
		printk(KERN_DEBUG "pciback: %s: enable MSI\n", pci_name(dev));

	status = pci_enable_msi(dev);
	status = pci_enable_msi(dev);


	if (status) {
	if (status) {
@@ -29,9 +32,14 @@ int pciback_enable_msi(struct pciback_device *pdev,
	 * the local domain's IRQ number. */
	 * the local domain's IRQ number. */


	op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0;
	op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0;
	if (unlikely(verbose_request))
		printk(KERN_DEBUG "pciback: %s: MSI: %d\n", pci_name(dev),
			op->value);

	dev_data = pci_get_drvdata(dev);
	dev_data = pci_get_drvdata(dev);
	if (dev_data)
	if (dev_data)
		dev_data->ack_intr = 0;
		dev_data->ack_intr = 0;

	return 0;
	return 0;
}
}


@@ -39,9 +47,16 @@ int pciback_disable_msi(struct pciback_device *pdev,
		struct pci_dev *dev, struct xen_pci_op *op)
		struct pci_dev *dev, struct xen_pci_op *op)
{
{
	struct pciback_dev_data *dev_data;
	struct pciback_dev_data *dev_data;

	if (unlikely(verbose_request))
		printk(KERN_DEBUG "pciback: %s: disable MSI\n", pci_name(dev));

	pci_disable_msi(dev);
	pci_disable_msi(dev);


	op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0;
	op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0;
	if (unlikely(verbose_request))
		printk(KERN_DEBUG "pciback: %s: MSI: %d\n", pci_name(dev),
			op->value);
	dev_data = pci_get_drvdata(dev);
	dev_data = pci_get_drvdata(dev);
	if (dev_data)
	if (dev_data)
		dev_data->ack_intr = 1;
		dev_data->ack_intr = 1;
@@ -55,6 +70,10 @@ int pciback_enable_msix(struct pciback_device *pdev,
	int i, result;
	int i, result;
	struct msix_entry *entries;
	struct msix_entry *entries;


	if (unlikely(verbose_request))
		printk(KERN_DEBUG "pciback: %s: enable MSI-X\n",
		       pci_name(dev));

	if (op->value > SH_INFO_MAX_VEC)
	if (op->value > SH_INFO_MAX_VEC)
		return -EINVAL;
		return -EINVAL;


@@ -75,6 +94,11 @@ int pciback_enable_msix(struct pciback_device *pdev,
			if (entries[i].vector)
			if (entries[i].vector)
				op->msix_entries[i].vector =
				op->msix_entries[i].vector =
					xen_pirq_from_irq(entries[i].vector);
					xen_pirq_from_irq(entries[i].vector);
				if (unlikely(verbose_request))
					printk(KERN_DEBUG "pciback: %s: " \
						"MSI-X[%d]: %d\n",
						pci_name(dev), i,
						op->msix_entries[i].vector);
		}
		}
	} else {
	} else {
		printk(KERN_WARNING "pciback: %s: failed to enable MSI-X: err %d!\n",
		printk(KERN_WARNING "pciback: %s: failed to enable MSI-X: err %d!\n",
@@ -95,6 +119,10 @@ int pciback_disable_msix(struct pciback_device *pdev,
{
{
	struct pciback_dev_data *dev_data;
	struct pciback_dev_data *dev_data;


	if (unlikely(verbose_request))
		printk(KERN_DEBUG "pciback: %s: disable MSI-X\n",
		       pci_name(dev));

	pci_disable_msix(dev);
	pci_disable_msix(dev);


	/*
	/*
@@ -102,6 +130,9 @@ int pciback_disable_msix(struct pciback_device *pdev,
	 * an undefined IRQ value of zero.
	 * an undefined IRQ value of zero.
	 */
	 */
	op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0;
	op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0;
	if (unlikely(verbose_request))
		printk(KERN_DEBUG "pciback: %s: MSI-X: %d\n", pci_name(dev),
			op->value);
	dev_data = pci_get_drvdata(dev);
	dev_data = pci_get_drvdata(dev);
	if (dev_data)
	if (dev_data)
		dev_data->ack_intr = 1;
		dev_data->ack_intr = 1;