diff options
| author | Neel Natu <neel@FreeBSD.org> | 2013-02-01 19:24:16 +0000 |
|---|---|---|
| committer | Neel Natu <neel@FreeBSD.org> | 2013-02-01 19:24:16 +0000 |
| commit | 609933c61b21024d5836c2faee72afcd6ce11263 (patch) | |
| tree | 27ad97a4ade5bfb00b3ad5b19e675b20faf7479e /usr.sbin/pciconf | |
| parent | 11fca81ccd927ba597e765c58715b995e7364b38 (diff) | |
Notes
Diffstat (limited to 'usr.sbin/pciconf')
| -rw-r--r-- | usr.sbin/pciconf/cap.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/usr.sbin/pciconf/cap.c b/usr.sbin/pciconf/cap.c index ce184dd29453..1c2ab4a88777 100644 --- a/usr.sbin/pciconf/cap.c +++ b/usr.sbin/pciconf/cap.c @@ -449,24 +449,28 @@ cap_express(int fd, struct pci_conf *p, uint8_t ptr) static void cap_msix(int fd, struct pci_conf *p, uint8_t ptr) { - uint32_t val; + uint32_t pba_offset, table_offset, val; + int msgnum, pba_bar, table_bar; uint16_t ctrl; - int msgnum, table_bar, pba_bar; ctrl = read_config(fd, &p->pc_sel, ptr + PCIR_MSIX_CTRL, 2); msgnum = (ctrl & PCIM_MSIXCTRL_TABLE_SIZE) + 1; + val = read_config(fd, &p->pc_sel, ptr + PCIR_MSIX_TABLE, 4); table_bar = PCIR_BAR(val & PCIM_MSIX_BIR_MASK); + table_offset = val & ~PCIM_MSIX_BIR_MASK; + val = read_config(fd, &p->pc_sel, ptr + PCIR_MSIX_PBA, 4); - pba_bar = PCIR_BAR(val & PCIM_MSIX_BIR_MASK); - printf("MSI-X supports %d message%s ", msgnum, - (msgnum == 1) ? "" : "s"); - if (table_bar == pba_bar) - printf("in map 0x%x", table_bar); - else - printf("in maps 0x%x and 0x%x", table_bar, pba_bar); - if (ctrl & PCIM_MSIXCTRL_MSIX_ENABLE) - printf(" enabled"); + pba_bar = PCIR_BAR(val & PCIM_MSIX_BIR_MASK); + pba_offset = val & ~PCIM_MSIX_BIR_MASK; + + printf("MSI-X supports %d message%s%s\n", msgnum, + (msgnum == 1) ? "" : "s", + (ctrl & PCIM_MSIXCTRL_MSIX_ENABLE) ? ", enabled" : ""); + + printf(" "); + printf("Table in map 0x%x[0x%x], PBA in map 0x%x[0x%x]", + table_bar, table_offset, pba_bar, pba_offset); } static void |
