All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roland Dreier <roland@topspin.com>
To: tom.l.nguyen@intel.com, linux-kernel@vger.kernel.org
Subject: Question on using MSI in PCI driver
Date: Mon, 21 Jun 2004 19:22:23 -0700	[thread overview]
Message-ID: <52lligqqlc.fsf@topspin.com> (raw)

I'm looking at implementing MSI/MSI-X support in a PCI device driver
I'm working on.  However, I've run into an issue with the MSI API that
I would like some clarification on.

When I call pci_enable_msi, since my device is MSI-X capable, the
kernel calls msix_capability_init, which works out the memory region
where vectors should be written and then calls request_region.  (In
fact it calls

             request_mem_region(phys_addr,
		dev_msi_cap * PCI_MSIX_ENTRY_SIZE,
		"MSI-X iomap Failure"))

which leads to a bizarre entry in /proc/iomem with the name "MSI-X
iomap Failure")

The problem is that if I follow the standard route in my driver and
call pci_request_regions() during init (since I want to claim my whole
device), the request_mem_region in msix_capability_init will fail.
Now, for my device, the MSI-X table happens to fall in the middle of a
BAR, and I need to access stuff on both sides of it in that BAR.  To
make things even worse for me, my device has two more BARs I want to claim.

So it seems I am forced to turn my nice clean pci_request_regions()
call into two calls to request_mem_region() (to get the beginning and
end of the BAR with the MSI-X table in it) and two more calls to
pci_request_region() (to get the other two BARs).

This isn't the end of the world but it feels suboptimal to me.  Anyone
have an idea for a better way to do this?  (I'm happy to write a patch
to the kernel if someone suggests how to change the MSI API)

Thanks,
  Roland

             reply	other threads:[~2004-06-22  2:22 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-22  2:22 Roland Dreier [this message]
2004-06-22  3:50 ` Question on using MSI in PCI driver Jeff Garzik
2004-06-22  3:54   ` Roland Dreier
2004-06-22  4:01     ` Jeff Garzik
2004-06-22  4:04       ` Roland Dreier
2004-06-22  4:03 ` [PATCH] Export msi_remove_pci_irq_vectors Roland Dreier
2004-06-22  4:35   ` [PATCH] Fix MSI-X setup Roland Dreier
2004-06-22 23:23     ` Greg KH
2004-06-22 23:57       ` Roland Dreier
2004-06-23  0:04         ` Greg KH
2004-06-22  8:45   ` [PATCH] Export msi_remove_pci_irq_vectors Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2004-06-22 15:24 Question on using MSI in PCI driver Nguyen, Tom L
2004-06-22 17:49 ` Roland Dreier
2004-06-22 18:08 Nguyen, Tom L
2004-06-22 18:26 ` Roland Dreier
2004-06-22 19:51 ` Christoph Hellwig
2004-06-22 19:55   ` Roland Dreier
2004-06-22 18:43 Nguyen, Tom L

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=52lligqqlc.fsf@topspin.com \
    --to=roland@topspin.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tom.l.nguyen@intel.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.