Index: sys/dev/pci/pci.c =================================================================== --- sys/dev/pci/pci.c +++ sys/dev/pci/pci.c @@ -1670,6 +1670,10 @@ KASSERT(msix->msix_msgnum > index, ("bogus index")); offset = msix->msix_table_offset + index * 16 + 12; + /* + * Some devices (eg Samsung PM961) cannot handle RMW on this register for + * all its vectors write the values we need directly. + */ bus_write_4(msix->msix_table_res, offset, PCIM_MSIX_VCTRL_MASK); } @@ -1682,6 +1686,10 @@ KASSERT(msix->msix_table_len > index, ("bogus index")); offset = msix->msix_table_offset + index * 16 + 12; + /* + * Some devices (eg Samsung PM961) cannot handle RMW on this register for + * all its vectors write the values we need directly. + */ bus_write_4(msix->msix_table_res, offset, 0); }