Lines Matching defs:msix
938 cfg->msix.msix_location = ptr;
939 cfg->msix.msix_ctrl = REG(ptr + PCIR_MSIX_CTRL, 2);
940 cfg->msix.msix_msgnum = (cfg->msix.msix_ctrl &
943 cfg->msix.msix_table_bar = PCIR_BAR(val &
945 cfg->msix.msix_table_offset = val & ~PCIM_MSIX_BIR_MASK;
947 cfg->msix.msix_pba_bar = PCIR_BAR(val &
949 cfg->msix.msix_pba_offset = val & ~PCIM_MSIX_BIR_MASK;
1671 struct pcicfg_msix *msix = &dinfo->cfg.msix;
1674 KASSERT(msix->msix_table_len > index, ("bogus index"));
1675 offset = msix->msix_table_offset + index * 16;
1676 bus_write_4(msix->msix_table_res, offset, address & 0xffffffff);
1677 bus_write_4(msix->msix_table_res, offset + 4, address >> 32);
1678 bus_write_4(msix->msix_table_res, offset + 8, data);
1688 struct pcicfg_msix *msix = &dinfo->cfg.msix;
1699 msix->msix_location + PCIR_MSIX_CTRL,
1700 msix->msix_ctrl & ~PCIM_MSIXCTRL_MSIX_ENABLE, 2);
1713 struct pcicfg_msix *msix = &dinfo->cfg.msix;
1716 KASSERT(msix->msix_msgnum > index, ("bogus index"));
1717 offset = msix->msix_table_offset + index * 16 + 12;
1718 val = bus_read_4(msix->msix_table_res, offset);
1725 bus_write_4(msix->msix_table_res, offset, val);
1732 struct pcicfg_msix *msix = &dinfo->cfg.msix;
1735 KASSERT(msix->msix_table_len > index, ("bogus index"));
1736 offset = msix->msix_table_offset + index * 16 + 12;
1737 val = bus_read_4(msix->msix_table_res, offset);
1744 bus_write_4(msix->msix_table_res, offset, val);
1751 struct pcicfg_msix *msix = &dinfo->cfg.msix;
1754 KASSERT(msix->msix_table_len > index, ("bogus index"));
1755 offset = msix->msix_pba_offset + (index / 32) * 4;
1757 return (bus_read_4(msix->msix_pba_res, offset) & bit);
1769 struct pcicfg_msix *msix = &dinfo->cfg.msix;
1774 if (msix->msix_alloc > 0) {
1776 for (i = 0; i < msix->msix_msgnum; i++)
1780 for (i = 0; i < msix->msix_table_len; i++) {
1781 mte = &msix->msix_table[i];
1784 mv = &msix->msix_vectors[mte->mte_vector - 1];
1790 pci_write_config(dev, msix->msix_location + PCIR_MSIX_CTRL,
1791 msix->msix_ctrl, 2);
1817 if (cfg->msi.msi_alloc != 0 || cfg->msix.msix_alloc != 0)
1825 if (cfg->msix.msix_location == 0 || !pci_do_msix)
1830 cfg->msix.msix_table_bar);
1834 cfg->msix.msix_table_res = rle->res;
1835 if (cfg->msix.msix_pba_bar != cfg->msix.msix_table_bar) {
1837 cfg->msix.msix_pba_bar);
1842 cfg->msix.msix_pba_res = rle->res;
1847 *count, cfg->msix.msix_msgnum);
1848 max = min(*count, cfg->msix.msix_msgnum);
1908 for (i = 0; i < cfg->msix.msix_msgnum; i++)
1912 cfg->msix.msix_vectors = malloc(sizeof(struct msix_vector) * actual,
1914 cfg->msix.msix_table = malloc(sizeof(struct msix_table_entry) * actual,
1918 cfg->msix.msix_vectors[i].mv_irq = rle->start;
1919 cfg->msix.msix_table[i].mte_vector = i + 1;
1923 cfg->msix.msix_ctrl |= PCIM_MSIXCTRL_MSIX_ENABLE;
1924 pci_write_config(child, cfg->msix.msix_location + PCIR_MSIX_CTRL,
1925 cfg->msix.msix_ctrl, 2);
1928 cfg->msix.msix_alloc = actual;
1929 cfg->msix.msix_table_len = actual;
1978 struct pcicfg_msix *msix = &dinfo->cfg.msix;
1987 if (count == 0 || count > msix->msix_msgnum)
1992 if (vectors[i] > msix->msix_alloc)
2000 used = malloc(sizeof(int) * msix->msix_alloc, M_DEVBUF, M_WAITOK |
2005 for (i = 0; i < msix->msix_alloc - 1; i++)
2016 for (i = 0; i < msix->msix_table_len; i++) {
2017 if (msix->msix_table[i].mte_vector == 0)
2019 if (msix->msix_table[i].mte_handlers > 0) {
2032 for (i = 0; i < msix->msix_table_len; i++) {
2033 if (msix->msix_table[i].mte_vector == 0)
2042 free(msix->msix_table, M_DEVBUF);
2043 msix->msix_table = malloc(sizeof(struct msix_table_entry) * count,
2046 msix->msix_table[i].mte_vector = vectors[i];
2047 msix->msix_table_len = count;
2050 j = msix->msix_alloc - 1;
2056 msix->msix_vectors[j].mv_irq);
2061 bcopy(msix->msix_vectors, vec, sizeof(struct msix_vector) *
2063 free(msix->msix_vectors, M_DEVBUF);
2064 msix->msix_vectors = vec;
2065 msix->msix_alloc = j + 1;
2073 irq = msix->msix_vectors[vectors[i] - 1].mv_irq;
2087 msix->msix_vectors[vectors[i] - 1].mv_irq);
2099 struct pcicfg_msix *msix = &dinfo->cfg.msix;
2104 if (msix->msix_alloc == 0)
2108 for (i = 0; i < msix->msix_table_len; i++) {
2109 if (msix->msix_table[i].mte_vector == 0)
2111 if (msix->msix_table[i].mte_handlers > 0)
2120 msix->msix_ctrl &= ~PCIM_MSIXCTRL_MSIX_ENABLE;
2121 pci_write_config(child, msix->msix_location + PCIR_MSIX_CTRL,
2122 msix->msix_ctrl, 2);
2125 for (i = 0; i < msix->msix_table_len; i++) {
2126 if (msix->msix_table[i].mte_vector == 0)
2130 free(msix->msix_table, M_DEVBUF);
2131 msix->msix_table_len = 0;
2134 for (i = 0; i < msix->msix_alloc; i++)
2136 msix->msix_vectors[i].mv_irq);
2137 free(msix->msix_vectors, M_DEVBUF);
2138 msix->msix_alloc = 0;
2152 struct pcicfg_msix *msix = &dinfo->cfg.msix;
2154 if (pci_do_msix && msix->msix_location != 0)
2155 return (msix->msix_msgnum);
2163 struct pcicfg_msix *msix = &dinfo->cfg.msix;
2165 if (pci_do_msix && msix->msix_location != 0)
2166 return (msix->msix_pba_bar);
2174 struct pcicfg_msix *msix = &dinfo->cfg.msix;
2176 if (pci_do_msix && msix->msix_location != 0)
2177 return (msix->msix_table_bar);
2456 if (cfg->msix.msix_alloc > 0) {
2459 for (i = 0; i < cfg->msix.msix_alloc; i++) {
2460 mv = &cfg->msix.msix_vectors[i];
2468 for (j = 0; j < cfg->msix.msix_table_len; j++) {
2469 mte = &cfg->msix.msix_table[j];
2600 if (cfg->msi.msi_alloc != 0 || cfg->msix.msix_alloc != 0)
3024 if (cfg->msix.msix_location) {
3026 cfg->msix.msix_msgnum,
3027 (cfg->msix.msix_msgnum == 1) ? "" : "s");
3028 if (cfg->msix.msix_table_bar == cfg->msix.msix_pba_bar)
3030 cfg->msix.msix_table_bar);
3033 cfg->msix.msix_table_bar,
3034 cfg->msix.msix_pba_bar);
4783 KASSERT(dinfo->cfg.msix.msix_alloc > 0,
4785 KASSERT(rid <= dinfo->cfg.msix.msix_table_len,
4787 mte = &dinfo->cfg.msix.msix_table[rid - 1];
4789 mv = &dinfo->cfg.msix.msix_vectors[mte->mte_vector - 1];
4879 KASSERT(dinfo->cfg.msix.msix_alloc > 0,
4881 KASSERT(rid <= dinfo->cfg.msix.msix_table_len,
4883 mte = &dinfo->cfg.msix.msix_table[rid - 1];
5087 if (dinfo->cfg.msi.msi_alloc != 0 || dinfo->cfg.msix.msix_alloc != 0) {
5093 "vectors\n", dinfo->cfg.msix.msix_alloc);
5547 cfg->msix.msix_alloc > 0))
6240 if (dinfo->cfg.msix.msix_location != 0)