View | Details | Raw Unified | Return to bug 211713
Collapse All | Expand All

(-)b/sys/dev/pci/pci.c (-12 / +4 lines)
Lines 1649-1663 pci_mask_msix(device_t dev, u_int index) Link Here
1649
{
1649
{
1650
	struct pci_devinfo *dinfo = device_get_ivars(dev);
1650
	struct pci_devinfo *dinfo = device_get_ivars(dev);
1651
	struct pcicfg_msix *msix = &dinfo->cfg.msix;
1651
	struct pcicfg_msix *msix = &dinfo->cfg.msix;
1652
	uint32_t offset, val;
1652
	uint32_t offset;
1653
1653
1654
	KASSERT(msix->msix_msgnum > index, ("bogus index"));
1654
	KASSERT(msix->msix_msgnum > index, ("bogus index"));
1655
	offset = msix->msix_table_offset + index * 16 + 12;
1655
	offset = msix->msix_table_offset + index * 16 + 12;
1656
	val = bus_read_4(msix->msix_table_res, offset);
1656
	bus_write_4(msix->msix_table_res, offset, PCIM_MSIX_VCTRL_MASK);
1657
	if (!(val & PCIM_MSIX_VCTRL_MASK)) {
1658
		val |= PCIM_MSIX_VCTRL_MASK;
1659
		bus_write_4(msix->msix_table_res, offset, val);
1660
	}
1661
}
1657
}
1662
1658
1663
void
1659
void
Lines 1665-1679 pci_unmask_msix(device_t dev, u_int index) Link Here
1665
{
1661
{
1666
	struct pci_devinfo *dinfo = device_get_ivars(dev);
1662
	struct pci_devinfo *dinfo = device_get_ivars(dev);
1667
	struct pcicfg_msix *msix = &dinfo->cfg.msix;
1663
	struct pcicfg_msix *msix = &dinfo->cfg.msix;
1668
	uint32_t offset, val;
1664
	uint32_t offset;
1669
1665
1670
	KASSERT(msix->msix_table_len > index, ("bogus index"));
1666
	KASSERT(msix->msix_table_len > index, ("bogus index"));
1671
	offset = msix->msix_table_offset + index * 16 + 12;
1667
	offset = msix->msix_table_offset + index * 16 + 12;
1672
	val = bus_read_4(msix->msix_table_res, offset);
1668
	bus_write_4(msix->msix_table_res, offset, 0);
1673
	if (val & PCIM_MSIX_VCTRL_MASK) {
1674
		val &= ~PCIM_MSIX_VCTRL_MASK;
1675
		bus_write_4(msix->msix_table_res, offset, val);
1676
	}
1677
}
1669
}
1678
1670
1679
int
1671
int

Return to bug 211713