[+cc linux-pci] On Fri, Jun 30, 2017 at 12:24 AM, Alexey Kardashevskiy <aik@xxxxxxxxx> wrote: > From: Yongji Xie <elohimes@xxxxxxxxx> > > We introduce a new pci_bus_flags, PCI_BUS_FLAGS_MSI_REMAP > which indicates interrupts of all devices on the bus are > managed by the hardware enabling IRQ remapping (intel naming). > When the capability is enabled, a given PCI device can only > shoot the MSIs assigned for it. In other words, the hardware > can protect system from invalid MSIs of the device by checking > the target address and data when there is something wrong > with MSI part in device or device driver. This needs a reference to the spec that describes how this MSI protection works. > The new flag will be set by when the kernel decides that it is safe to > do so. We also need some clue about how the kernel makes this decision. That clue probably doesn't belong in *this* patch, but I didn't see it anywhere. > With this flag enabled, we can easily know whether it's safe > to expose MSI-X tables of PCI BARs to userspace. Some usespace > drivers such as VFIO may benefit from this. > > Signed-off-by: Yongji Xie <xyjxie@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Alexey Kardashevskiy <aik@xxxxxxxxx> > --- > include/linux/pci.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 8039f9f0ca05..2c6dbb3dd0da 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -200,6 +200,7 @@ enum pci_bus_flags { > PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1, > PCI_BUS_FLAGS_NO_MMRBC = (__force pci_bus_flags_t) 2, > PCI_BUS_FLAGS_NO_AERSID = (__force pci_bus_flags_t) 4, > + PCI_BUS_FLAGS_MSI_REMAP = (__force pci_bus_flags_t) 8, > }; > > /* These values come from the PCI Express Spec */ > -- > 2.11.0 >