From: Matthew Wilcox <matthew@wil.cx>
To: Neil Horman <nhorman@tuxdriver.com>
Cc: linux-kernel@vger.kernel.org,
Jesse Barnes <jbarnes@virtuousgeek.org>,
linux-pci@vger.kernel.org
Subject: Re: [PATCH] pci: Export pci device msi table via sysfs
Date: Thu, 21 Apr 2011 13:10:41 -0600 [thread overview]
Message-ID: <20110421191041.GE31296@parisc-linux.org> (raw)
In-Reply-To: <1303412267-1948-1-git-send-email-nhorman@tuxdriver.com>
On Thu, Apr 21, 2011 at 02:57:47PM -0400, Neil Horman wrote:
> b) msi_table - populated only if msi(x) is enabled, it lists the irqs allocated
> to the pci device
You're not the first one to try this ... the problem is, you can easily
overflow a single 4k page. A device can have up to 2k MSI-X entries,
and we might take up to 5 bytes for each one, so we'd need a 10k buffer.
> +#ifdef CONFIG_PCI_MSI
> +static ssize_t msi_list_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + struct pci_dev *pdev = to_pci_dev(dev);
> + struct msi_desc *entry;
> + int first, last;
> + ssize_t count = 0;
> +
> + if (!(pdev->msi_enabled || pdev->msix_enabled))
> + return 0;
> +
> + list_for_each_entry(entry, &pdev->msi_list, list)
> + count += sprintf(&buf[count], "%d ", entry->irq);
> +
> + return count;
> +}
> +#endif
The fundamental problem is that the way Linux uses MSI-X is completely
bollocks. I've got a few hours to myself on a plane coming up in six
weeks, and I hope to rewrite it then (I've already written my talk, so
what else am I going to do? :-)
--
Matthew Wilcox Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."
next prev parent reply other threads:[~2011-04-21 19:10 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-21 18:57 [PATCH] pci: Export pci device msi table via sysfs Neil Horman
2011-04-21 19:10 ` Matthew Wilcox [this message]
2011-04-21 20:00 ` Neil Horman
2011-04-21 20:34 ` Greg KH
2011-04-21 20:26 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110421191041.GE31296@parisc-linux.org \
--to=matthew@wil.cx \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.