From: Roland Dreier <roland@topspin.com>
To: mj@ucw.cz
Cc: linux-pci@atrey.karlin.mff.cuni.cz, linux-kernel@vger.kernel.org
Subject: [PATCH] pciutils: Support for MSI-X capability
Date: Sat, 26 Jun 2004 10:58:49 -0700 [thread overview]
Message-ID: <52y8mayzdy.fsf@topspin.com> (raw)
Hi, here is a patch to pciutils that adds parsing of MSI-X capability
entries. With this patch, an MSI-X capability will be dumped with -v as
Capabilities: [40] MSI-X: Enable- Mask- TabSize=32
and with -vv as
Capabilities: [40] MSI-X: Enable- Mask- TabSize=32
Vector table: BAR=0 offset=00082000
PBA: BAR=0 offset=00082200
Please let me know if you need any changes/fixes before you can apply.
Thanks,
Roland
Index: pciutils-2.1.99-test5/lib/header.h
===================================================================
--- pciutils-2.1.99-test5.orig/lib/header.h 2004-05-28 03:54:41.000000000 -0700
+++ pciutils-2.1.99-test5/lib/header.h 2004-06-26 10:44:14.000000000 -0700
@@ -185,6 +185,7 @@
#define PCI_CAP_ID_CHSWP 0x06 /* CompactPCI HotSwap */
#define PCI_CAP_ID_PCIX 0x07 /* PCI-X */
#define PCI_CAP_ID_HT 0x08 /* HyperTransport */
+#define PCI_CAP_ID_MSIX 0x11 /* MSI-X */
#define PCI_CAP_LIST_NEXT 1 /* Next capability in the list */
#define PCI_CAP_FLAGS 2 /* Capability defined flags (16 bits) */
#define PCI_CAP_SIZEOF 4
@@ -661,6 +662,14 @@
#define PCI_HT_RM_CNT1 10 /* Retry Count 1 Register */
#define PCI_HT_RM_SIZEOF 12
+/* MSI-X */
+#define PCI_MSIX_ENABLE 0x8000
+#define PCI_MSIX_MASK 0x4000
+#define PCI_MSIX_TABSIZE 0x03ff
+#define PCI_MSIX_TABLE 4
+#define PCI_MSIX_PBA 8
+#define PCI_MSIX_BIR 0x7
+
/*
* The PCI interface treats multi-function devices as independent
* devices. The slot/function address of each device is encoded
Index: pciutils-2.1.99-test5/lspci.c
===================================================================
--- pciutils-2.1.99-test5.orig/lspci.c 2004-06-26 10:32:47.000000000 -0700
+++ pciutils-2.1.99-test5/lspci.c 2004-06-26 10:53:26.000000000 -0700
@@ -924,6 +924,28 @@
}
static void
+show_msix(struct device *d, int where, int cap)
+{
+ u32 off;
+
+ printf("MSI-X: Enable%c Mask%c TabSize=%d\n",
+ FLAG(cap, PCI_MSIX_ENABLE),
+ FLAG(cap, PCI_MSIX_MASK),
+ (cap & PCI_MSIX_TABSIZE) + 1);
+ if (verbose < 2)
+ return;
+
+ config_fetch(d, where + PCI_MSIX_TABLE, 4);
+ off = get_conf_long(d, where + PCI_MSIX_TABLE);
+ printf("\t\tVector table: BAR=%d offset=%08x\n",
+ off & PCI_MSIX_BIR, off & ~PCI_MSIX_BIR);
+ config_fetch(d, where + PCI_MSIX_PBA, 4);
+ off = get_conf_long(d, where + PCI_MSIX_PBA);
+ printf("\t\tPBA: BAR=%d offset=%08x\n",
+ off & PCI_MSIX_BIR, off & ~PCI_MSIX_BIR);
+}
+
+static void
show_slotid(int cap)
{
int esr = cap & 0xff;
@@ -982,6 +1004,9 @@
case PCI_CAP_ID_HT:
show_ht(d, where, cap);
break;
+ case PCI_CAP_ID_MSIX:
+ show_msix(d, where, cap);
+ break;
default:
printf("#%02x [%04x]\n", id, cap);
}
next reply other threads:[~2004-06-26 18:00 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-26 17:58 Roland Dreier [this message]
2004-06-26 21:54 ` [PATCH] pciutils: Support for MSI-X capability Matthew Wilcox
2004-06-26 23:29 ` Roland Dreier
2004-06-27 0:54 ` Matthew Wilcox
2004-06-27 1:01 ` Roland Dreier
2004-06-27 1:08 ` Matthew Wilcox
2004-06-27 11:43 ` Martin Mares
2004-06-27 17:07 ` Roland Dreier
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=52y8mayzdy.fsf@topspin.com \
--to=roland@topspin.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@atrey.karlin.mff.cuni.cz \
--cc=mj@ucw.cz \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox