* [PATCH v4 0/2] VMD MSI Remapping Bypass @ 2021-02-10 16:13 ` Jon Derrick 0 siblings, 0 replies; 14+ messages in thread From: Jon Derrick @ 2021-02-10 16:13 UTC (permalink / raw) To: linux-pci, iommu Cc: Krzysztof Wilczynski, Nirmal Patel, Kapil Karkra, Bjorn Helgaas, Jon Derrick The Intel Volume Management Device acts similar to a PCI-to-PCI bridge in that it changes downstream devices' requester-ids to its own. As VMD supports PCIe devices, it has its own MSI-X table and transmits child device MSI-X by remapping child device MSI-X and handling like a demultiplexer. Some newer VMD devices (Icelake Server) have an option to bypass the VMD MSI-X remapping table. This allows for better performance scaling as the child device MSI-X won't be limited by VMD's MSI-X count and IRQ handler. V3->V4: Integrated wording suggestions; no functional changes V2->V3: Trivial comment fixes Added acks V1->V2: Updated for 5.12-next Moved IRQ allocation and remapping enable/disable to a more logical location V1 patches 1-4 were already merged V1, 5/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-6-jonathan.derrick@intel.com/ V1, 6/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-7-jonathan.derrick@intel.com/ Jon Derrick (2): iommu/vt-d: Use Real PCI DMA device for IRTE PCI: vmd: Disable MSI-X remapping when possible drivers/iommu/intel/irq_remapping.c | 3 +- drivers/pci/controller/vmd.c | 63 +++++++++++++++++++++++------ 2 files changed, 53 insertions(+), 13 deletions(-) -- 2.27.0 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v4 0/2] VMD MSI Remapping Bypass @ 2021-02-10 16:13 ` Jon Derrick 0 siblings, 0 replies; 14+ messages in thread From: Jon Derrick @ 2021-02-10 16:13 UTC (permalink / raw) To: linux-pci, iommu Cc: Bjorn Helgaas, Lorenzo Pieralisi, Lu Baolu, Joerg Roedel, Nirmal Patel, Kapil Karkra, Krzysztof Wilczynski, Jon Derrick The Intel Volume Management Device acts similar to a PCI-to-PCI bridge in that it changes downstream devices' requester-ids to its own. As VMD supports PCIe devices, it has its own MSI-X table and transmits child device MSI-X by remapping child device MSI-X and handling like a demultiplexer. Some newer VMD devices (Icelake Server) have an option to bypass the VMD MSI-X remapping table. This allows for better performance scaling as the child device MSI-X won't be limited by VMD's MSI-X count and IRQ handler. V3->V4: Integrated wording suggestions; no functional changes V2->V3: Trivial comment fixes Added acks V1->V2: Updated for 5.12-next Moved IRQ allocation and remapping enable/disable to a more logical location V1 patches 1-4 were already merged V1, 5/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-6-jonathan.derrick@intel.com/ V1, 6/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-7-jonathan.derrick@intel.com/ Jon Derrick (2): iommu/vt-d: Use Real PCI DMA device for IRTE PCI: vmd: Disable MSI-X remapping when possible drivers/iommu/intel/irq_remapping.c | 3 +- drivers/pci/controller/vmd.c | 63 +++++++++++++++++++++++------ 2 files changed, 53 insertions(+), 13 deletions(-) -- 2.27.0 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v4 1/2] iommu/vt-d: Use Real PCI DMA device for IRTE 2021-02-10 16:13 ` Jon Derrick @ 2021-02-10 16:13 ` Jon Derrick -1 siblings, 0 replies; 14+ messages in thread From: Jon Derrick @ 2021-02-10 16:13 UTC (permalink / raw) To: linux-pci, iommu Cc: Krzysztof Wilczynski, Nirmal Patel, Kapil Karkra, Joerg Roedel, Bjorn Helgaas, Jon Derrick VMD retransmits child device MSI-X with the VMD endpoint's requester-id. In order to support direct interrupt remapping of VMD child devices, ensure that the IRTE is programmed with the VMD endpoint's requester-id using pci_real_dma_dev(). Acked-by: Lu Baolu <baolu.lu@linux.intel.com> Acked-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com> --- drivers/iommu/intel/irq_remapping.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c index 685200a5cff0..1939e070eec8 100644 --- a/drivers/iommu/intel/irq_remapping.c +++ b/drivers/iommu/intel/irq_remapping.c @@ -1276,7 +1276,8 @@ static void intel_irq_remapping_prepare_irte(struct intel_ir_data *data, break; case X86_IRQ_ALLOC_TYPE_PCI_MSI: case X86_IRQ_ALLOC_TYPE_PCI_MSIX: - set_msi_sid(irte, msi_desc_to_pci_dev(info->desc)); + set_msi_sid(irte, + pci_real_dma_dev(msi_desc_to_pci_dev(info->desc))); break; default: BUG_ON(1); -- 2.27.0 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 1/2] iommu/vt-d: Use Real PCI DMA device for IRTE @ 2021-02-10 16:13 ` Jon Derrick 0 siblings, 0 replies; 14+ messages in thread From: Jon Derrick @ 2021-02-10 16:13 UTC (permalink / raw) To: linux-pci, iommu Cc: Bjorn Helgaas, Lorenzo Pieralisi, Lu Baolu, Joerg Roedel, Nirmal Patel, Kapil Karkra, Krzysztof Wilczynski, Jon Derrick, Joerg Roedel VMD retransmits child device MSI-X with the VMD endpoint's requester-id. In order to support direct interrupt remapping of VMD child devices, ensure that the IRTE is programmed with the VMD endpoint's requester-id using pci_real_dma_dev(). Acked-by: Lu Baolu <baolu.lu@linux.intel.com> Acked-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com> --- drivers/iommu/intel/irq_remapping.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c index 685200a5cff0..1939e070eec8 100644 --- a/drivers/iommu/intel/irq_remapping.c +++ b/drivers/iommu/intel/irq_remapping.c @@ -1276,7 +1276,8 @@ static void intel_irq_remapping_prepare_irte(struct intel_ir_data *data, break; case X86_IRQ_ALLOC_TYPE_PCI_MSI: case X86_IRQ_ALLOC_TYPE_PCI_MSIX: - set_msi_sid(irte, msi_desc_to_pci_dev(info->desc)); + set_msi_sid(irte, + pci_real_dma_dev(msi_desc_to_pci_dev(info->desc))); break; default: BUG_ON(1); -- 2.27.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 2/2] PCI: vmd: Disable MSI-X remapping when possible 2021-02-10 16:13 ` Jon Derrick @ 2021-02-10 16:13 ` Jon Derrick -1 siblings, 0 replies; 14+ messages in thread From: Jon Derrick @ 2021-02-10 16:13 UTC (permalink / raw) To: linux-pci, iommu Cc: Krzysztof Wilczynski, Nirmal Patel, Kapil Karkra, Joerg Roedel, Bjorn Helgaas, Jon Derrick VMD will retransmit child device MSI-X using its own MSI-X table and requester-id. This limits the number of MSI-X available to the whole child device domain to the number of VMD MSI-X interrupts. Some VMD devices have a mode where this remapping can be disabled, allowing child device interrupts to bypass processing with the VMD MSI-X domain interrupt handler and going straight the child device interrupt handler, allowing for better performance and scaling. The requester-id still gets changed to the VMD endpoint's requester-id, and the interrupt remapping handlers have been updated to properly set IRTE for child device interrupts to the VMD endpoint's context. Some VMD platforms have existing production BIOS which rely on MSI-X remapping and won't explicitly program the MSI-X remapping bit. This re-enables MSI-X remapping on unload. Acked-by: Joerg Roedel <jroedel@suse.de> Reviewed-by: Krzysztof Wilczyński <kw@linux.com> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com> --- drivers/pci/controller/vmd.c | 63 +++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index 5e80f28f0119..e3fcdfec58b3 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -28,6 +28,7 @@ #define BUS_RESTRICT_CAP(vmcap) (vmcap & 0x1) #define PCI_REG_VMCONFIG 0x44 #define BUS_RESTRICT_CFG(vmcfg) ((vmcfg >> 8) & 0x3) +#define VMCONFIG_MSI_REMAP 0x2 #define PCI_REG_VMLOCK 0x70 #define MB2_SHADOW_EN(vmlock) (vmlock & 0x2) @@ -59,6 +60,13 @@ enum vmd_features { * be used for MSI remapping */ VMD_FEAT_OFFSET_FIRST_VECTOR = (1 << 3), + + /* + * Device can bypass remapping MSI-X transactions into its MSI-X table, + * avoiding the requirement of a VMD MSI domain for child device + * interrupt handling. + */ + VMD_FEAT_CAN_BYPASS_MSI_REMAP = (1 << 4), }; /* @@ -306,6 +314,16 @@ static struct msi_domain_info vmd_msi_domain_info = { .chip = &vmd_msi_controller, }; +static void vmd_set_msi_remapping(struct vmd_dev *vmd, bool enable) +{ + u16 reg; + + pci_read_config_word(vmd->dev, PCI_REG_VMCONFIG, ®); + reg = enable ? (reg & ~VMCONFIG_MSI_REMAP) : + (reg | VMCONFIG_MSI_REMAP); + pci_write_config_word(vmd->dev, PCI_REG_VMCONFIG, reg); +} + static int vmd_create_irq_domain(struct vmd_dev *vmd) { struct fwnode_handle *fn; @@ -325,6 +343,13 @@ static int vmd_create_irq_domain(struct vmd_dev *vmd) static void vmd_remove_irq_domain(struct vmd_dev *vmd) { + /* + * Some production BIOS won't enable remapping between soft reboots. + * Ensure remapping is restored before unloading the driver. + */ + if (!vmd->msix_count) + vmd_set_msi_remapping(vmd, true); + if (vmd->irq_domain) { struct fwnode_handle *fn = vmd->irq_domain->fwnode; @@ -679,15 +704,32 @@ static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features) sd->node = pcibus_to_node(vmd->dev->bus); - ret = vmd_create_irq_domain(vmd); - if (ret) - return ret; - /* - * Override the irq domain bus token so the domain can be distinguished - * from a regular PCI/MSI domain. + * Currently MSI remapping must be enabled in guest passthrough mode + * due to some missing interrupt remapping plumbing. This is probably + * acceptable because the guest is usually CPU-limited and MSI + * remapping doesn't become a performance bottleneck. */ - irq_domain_update_bus_token(vmd->irq_domain, DOMAIN_BUS_VMD_MSI); + if (!(features & VMD_FEAT_CAN_BYPASS_MSI_REMAP) || + offset[0] || offset[1]) { + ret = vmd_alloc_irqs(vmd); + if (ret) + return ret; + + vmd_set_msi_remapping(vmd, true); + + ret = vmd_create_irq_domain(vmd); + if (ret) + return ret; + + /* + * Override the IRQ domain bus token so the domain can be + * distinguished from a regular PCI/MSI domain. + */ + irq_domain_update_bus_token(vmd->irq_domain, DOMAIN_BUS_VMD_MSI); + } else { + vmd_set_msi_remapping(vmd, false); + } pci_add_resource(&resources, &vmd->resources[0]); pci_add_resource_offset(&resources, &vmd->resources[1], offset[0]); @@ -753,10 +795,6 @@ static int vmd_probe(struct pci_dev *dev, const struct pci_device_id *id) if (features & VMD_FEAT_OFFSET_FIRST_VECTOR) vmd->first_vec = 1; - err = vmd_alloc_irqs(vmd); - if (err) - return err; - spin_lock_init(&vmd->cfg_lock); pci_set_drvdata(dev, vmd); err = vmd_enable_domain(vmd, features); @@ -825,7 +863,8 @@ static const struct pci_device_id vmd_ids[] = { .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP,}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_28C0), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW | - VMD_FEAT_HAS_BUS_RESTRICTIONS,}, + VMD_FEAT_HAS_BUS_RESTRICTIONS | + VMD_FEAT_CAN_BYPASS_MSI_REMAP,}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x467f), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | -- 2.27.0 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 2/2] PCI: vmd: Disable MSI-X remapping when possible @ 2021-02-10 16:13 ` Jon Derrick 0 siblings, 0 replies; 14+ messages in thread From: Jon Derrick @ 2021-02-10 16:13 UTC (permalink / raw) To: linux-pci, iommu Cc: Bjorn Helgaas, Lorenzo Pieralisi, Lu Baolu, Joerg Roedel, Nirmal Patel, Kapil Karkra, Krzysztof Wilczynski, Jon Derrick, Joerg Roedel VMD will retransmit child device MSI-X using its own MSI-X table and requester-id. This limits the number of MSI-X available to the whole child device domain to the number of VMD MSI-X interrupts. Some VMD devices have a mode where this remapping can be disabled, allowing child device interrupts to bypass processing with the VMD MSI-X domain interrupt handler and going straight the child device interrupt handler, allowing for better performance and scaling. The requester-id still gets changed to the VMD endpoint's requester-id, and the interrupt remapping handlers have been updated to properly set IRTE for child device interrupts to the VMD endpoint's context. Some VMD platforms have existing production BIOS which rely on MSI-X remapping and won't explicitly program the MSI-X remapping bit. This re-enables MSI-X remapping on unload. Acked-by: Joerg Roedel <jroedel@suse.de> Reviewed-by: Krzysztof Wilczyński <kw@linux.com> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com> --- drivers/pci/controller/vmd.c | 63 +++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index 5e80f28f0119..e3fcdfec58b3 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -28,6 +28,7 @@ #define BUS_RESTRICT_CAP(vmcap) (vmcap & 0x1) #define PCI_REG_VMCONFIG 0x44 #define BUS_RESTRICT_CFG(vmcfg) ((vmcfg >> 8) & 0x3) +#define VMCONFIG_MSI_REMAP 0x2 #define PCI_REG_VMLOCK 0x70 #define MB2_SHADOW_EN(vmlock) (vmlock & 0x2) @@ -59,6 +60,13 @@ enum vmd_features { * be used for MSI remapping */ VMD_FEAT_OFFSET_FIRST_VECTOR = (1 << 3), + + /* + * Device can bypass remapping MSI-X transactions into its MSI-X table, + * avoiding the requirement of a VMD MSI domain for child device + * interrupt handling. + */ + VMD_FEAT_CAN_BYPASS_MSI_REMAP = (1 << 4), }; /* @@ -306,6 +314,16 @@ static struct msi_domain_info vmd_msi_domain_info = { .chip = &vmd_msi_controller, }; +static void vmd_set_msi_remapping(struct vmd_dev *vmd, bool enable) +{ + u16 reg; + + pci_read_config_word(vmd->dev, PCI_REG_VMCONFIG, ®); + reg = enable ? (reg & ~VMCONFIG_MSI_REMAP) : + (reg | VMCONFIG_MSI_REMAP); + pci_write_config_word(vmd->dev, PCI_REG_VMCONFIG, reg); +} + static int vmd_create_irq_domain(struct vmd_dev *vmd) { struct fwnode_handle *fn; @@ -325,6 +343,13 @@ static int vmd_create_irq_domain(struct vmd_dev *vmd) static void vmd_remove_irq_domain(struct vmd_dev *vmd) { + /* + * Some production BIOS won't enable remapping between soft reboots. + * Ensure remapping is restored before unloading the driver. + */ + if (!vmd->msix_count) + vmd_set_msi_remapping(vmd, true); + if (vmd->irq_domain) { struct fwnode_handle *fn = vmd->irq_domain->fwnode; @@ -679,15 +704,32 @@ static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features) sd->node = pcibus_to_node(vmd->dev->bus); - ret = vmd_create_irq_domain(vmd); - if (ret) - return ret; - /* - * Override the irq domain bus token so the domain can be distinguished - * from a regular PCI/MSI domain. + * Currently MSI remapping must be enabled in guest passthrough mode + * due to some missing interrupt remapping plumbing. This is probably + * acceptable because the guest is usually CPU-limited and MSI + * remapping doesn't become a performance bottleneck. */ - irq_domain_update_bus_token(vmd->irq_domain, DOMAIN_BUS_VMD_MSI); + if (!(features & VMD_FEAT_CAN_BYPASS_MSI_REMAP) || + offset[0] || offset[1]) { + ret = vmd_alloc_irqs(vmd); + if (ret) + return ret; + + vmd_set_msi_remapping(vmd, true); + + ret = vmd_create_irq_domain(vmd); + if (ret) + return ret; + + /* + * Override the IRQ domain bus token so the domain can be + * distinguished from a regular PCI/MSI domain. + */ + irq_domain_update_bus_token(vmd->irq_domain, DOMAIN_BUS_VMD_MSI); + } else { + vmd_set_msi_remapping(vmd, false); + } pci_add_resource(&resources, &vmd->resources[0]); pci_add_resource_offset(&resources, &vmd->resources[1], offset[0]); @@ -753,10 +795,6 @@ static int vmd_probe(struct pci_dev *dev, const struct pci_device_id *id) if (features & VMD_FEAT_OFFSET_FIRST_VECTOR) vmd->first_vec = 1; - err = vmd_alloc_irqs(vmd); - if (err) - return err; - spin_lock_init(&vmd->cfg_lock); pci_set_drvdata(dev, vmd); err = vmd_enable_domain(vmd, features); @@ -825,7 +863,8 @@ static const struct pci_device_id vmd_ids[] = { .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP,}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_28C0), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW | - VMD_FEAT_HAS_BUS_RESTRICTIONS,}, + VMD_FEAT_HAS_BUS_RESTRICTIONS | + VMD_FEAT_CAN_BYPASS_MSI_REMAP,}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x467f), .driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW_VSCAP | VMD_FEAT_HAS_BUS_RESTRICTIONS | -- 2.27.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass 2021-02-10 16:13 ` Jon Derrick @ 2021-03-17 19:14 ` Derrick, Jonathan -1 siblings, 0 replies; 14+ messages in thread From: Derrick, Jonathan @ 2021-03-17 19:14 UTC (permalink / raw) To: linux-pci@vger.kernel.org, iommu@lists.linux-foundation.org Cc: kw@linux.com, Patel, Nirmal, Karkra, Kapil, helgaas@kernel.org Gentle reminder, for v5.13 ? On Wed, 2021-02-10 at 09:13 -0700, Jon Derrick wrote: > The Intel Volume Management Device acts similar to a PCI-to-PCI bridge in that > it changes downstream devices' requester-ids to its own. As VMD supports PCIe > devices, it has its own MSI-X table and transmits child device MSI-X by > remapping child device MSI-X and handling like a demultiplexer. > > Some newer VMD devices (Icelake Server) have an option to bypass the VMD MSI-X > remapping table. This allows for better performance scaling as the child device > MSI-X won't be limited by VMD's MSI-X count and IRQ handler. > > V3->V4: > Integrated wording suggestions; no functional changes > > V2->V3: > Trivial comment fixes > Added acks > > V1->V2: > Updated for 5.12-next > Moved IRQ allocation and remapping enable/disable to a more logical location > > V1 patches 1-4 were already merged > V1, 5/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-6-jonathan.derrick@intel.com/ > V1, 6/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-7-jonathan.derrick@intel.com/ > > > Jon Derrick (2): > iommu/vt-d: Use Real PCI DMA device for IRTE > PCI: vmd: Disable MSI-X remapping when possible > > drivers/iommu/intel/irq_remapping.c | 3 +- > drivers/pci/controller/vmd.c | 63 +++++++++++++++++++++++------ > 2 files changed, 53 insertions(+), 13 deletions(-) > _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass @ 2021-03-17 19:14 ` Derrick, Jonathan 0 siblings, 0 replies; 14+ messages in thread From: Derrick, Jonathan @ 2021-03-17 19:14 UTC (permalink / raw) To: linux-pci@vger.kernel.org, iommu@lists.linux-foundation.org Cc: Karkra, Kapil, lorenzo.pieralisi@arm.com, baolu.lu@linux.intel.com, helgaas@kernel.org, joro@8bytes.org, Patel, Nirmal, kw@linux.com Gentle reminder, for v5.13 ? On Wed, 2021-02-10 at 09:13 -0700, Jon Derrick wrote: > The Intel Volume Management Device acts similar to a PCI-to-PCI bridge in that > it changes downstream devices' requester-ids to its own. As VMD supports PCIe > devices, it has its own MSI-X table and transmits child device MSI-X by > remapping child device MSI-X and handling like a demultiplexer. > > Some newer VMD devices (Icelake Server) have an option to bypass the VMD MSI-X > remapping table. This allows for better performance scaling as the child device > MSI-X won't be limited by VMD's MSI-X count and IRQ handler. > > V3->V4: > Integrated wording suggestions; no functional changes > > V2->V3: > Trivial comment fixes > Added acks > > V1->V2: > Updated for 5.12-next > Moved IRQ allocation and remapping enable/disable to a more logical location > > V1 patches 1-4 were already merged > V1, 5/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-6-jonathan.derrick@intel.com/ > V1, 6/6: https://patchwork.kernel.org/project/linux-pci/patch/20200728194945.14126-7-jonathan.derrick@intel.com/ > > > Jon Derrick (2): > iommu/vt-d: Use Real PCI DMA device for IRTE > PCI: vmd: Disable MSI-X remapping when possible > > drivers/iommu/intel/irq_remapping.c | 3 +- > drivers/pci/controller/vmd.c | 63 +++++++++++++++++++++++------ > 2 files changed, 53 insertions(+), 13 deletions(-) > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass 2021-03-17 19:14 ` Derrick, Jonathan @ 2021-03-18 9:07 ` joro -1 siblings, 0 replies; 14+ messages in thread From: joro @ 2021-03-18 9:07 UTC (permalink / raw) To: Derrick, Jonathan Cc: kw@linux.com, Patel, Nirmal, linux-pci@vger.kernel.org, Karkra, Kapil, iommu@lists.linux-foundation.org, helgaas@kernel.org On Wed, Mar 17, 2021 at 07:14:17PM +0000, Derrick, Jonathan wrote: > Gentle reminder, for v5.13 ? This should go through the PCI tree, Bjorn? _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass @ 2021-03-18 9:07 ` joro 0 siblings, 0 replies; 14+ messages in thread From: joro @ 2021-03-18 9:07 UTC (permalink / raw) To: Derrick, Jonathan Cc: linux-pci@vger.kernel.org, iommu@lists.linux-foundation.org, Karkra, Kapil, lorenzo.pieralisi@arm.com, baolu.lu@linux.intel.com, helgaas@kernel.org, Patel, Nirmal, kw@linux.com On Wed, Mar 17, 2021 at 07:14:17PM +0000, Derrick, Jonathan wrote: > Gentle reminder, for v5.13 ? This should go through the PCI tree, Bjorn? ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass 2021-03-18 9:07 ` joro @ 2021-03-18 12:38 ` Lorenzo Pieralisi -1 siblings, 0 replies; 14+ messages in thread From: Lorenzo Pieralisi @ 2021-03-18 12:38 UTC (permalink / raw) To: joro@8bytes.org Cc: kw@linux.com, Patel, Nirmal, linux-pci@vger.kernel.org, Karkra, Kapil, iommu@lists.linux-foundation.org, helgaas@kernel.org, Derrick, Jonathan On Thu, Mar 18, 2021 at 10:07:38AM +0100, joro@8bytes.org wrote: > On Wed, Mar 17, 2021 at 07:14:17PM +0000, Derrick, Jonathan wrote: > > Gentle reminder, for v5.13 ? > > This should go through the PCI tree, Bjorn? I will start queuing code next week, noted. Thanks, Lorenzo _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass @ 2021-03-18 12:38 ` Lorenzo Pieralisi 0 siblings, 0 replies; 14+ messages in thread From: Lorenzo Pieralisi @ 2021-03-18 12:38 UTC (permalink / raw) To: joro@8bytes.org Cc: Derrick, Jonathan, linux-pci@vger.kernel.org, iommu@lists.linux-foundation.org, Karkra, Kapil, baolu.lu@linux.intel.com, helgaas@kernel.org, Patel, Nirmal, kw@linux.com On Thu, Mar 18, 2021 at 10:07:38AM +0100, joro@8bytes.org wrote: > On Wed, Mar 17, 2021 at 07:14:17PM +0000, Derrick, Jonathan wrote: > > Gentle reminder, for v5.13 ? > > This should go through the PCI tree, Bjorn? I will start queuing code next week, noted. Thanks, Lorenzo ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass 2021-02-10 16:13 ` Jon Derrick @ 2021-03-22 14:11 ` Lorenzo Pieralisi -1 siblings, 0 replies; 14+ messages in thread From: Lorenzo Pieralisi @ 2021-03-22 14:11 UTC (permalink / raw) To: linux-pci, Jon Derrick, iommu Cc: Krzysztof Wilczynski, Nirmal Patel, Kapil Karkra, Bjorn Helgaas On Wed, 10 Feb 2021 09:13:13 -0700, Jon Derrick wrote: > The Intel Volume Management Device acts similar to a PCI-to-PCI bridge in that > it changes downstream devices' requester-ids to its own. As VMD supports PCIe > devices, it has its own MSI-X table and transmits child device MSI-X by > remapping child device MSI-X and handling like a demultiplexer. > > Some newer VMD devices (Icelake Server) have an option to bypass the VMD MSI-X > remapping table. This allows for better performance scaling as the child device > MSI-X won't be limited by VMD's MSI-X count and IRQ handler. > > [...] Applied to pci/vmd, thanks! [1/2] iommu/vt-d: Use Real PCI DMA device for IRTE https://git.kernel.org/lpieralisi/pci/c/9b4a824b88 [2/2] PCI: vmd: Disable MSI-X remapping when possible https://git.kernel.org/lpieralisi/pci/c/ee81ee84f8 Thanks, Lorenzo _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 0/2] VMD MSI Remapping Bypass @ 2021-03-22 14:11 ` Lorenzo Pieralisi 0 siblings, 0 replies; 14+ messages in thread From: Lorenzo Pieralisi @ 2021-03-22 14:11 UTC (permalink / raw) To: linux-pci, Jon Derrick, iommu Cc: Lorenzo Pieralisi, Joerg Roedel, Nirmal Patel, Kapil Karkra, Bjorn Helgaas, Krzysztof Wilczynski, Lu Baolu On Wed, 10 Feb 2021 09:13:13 -0700, Jon Derrick wrote: > The Intel Volume Management Device acts similar to a PCI-to-PCI bridge in that > it changes downstream devices' requester-ids to its own. As VMD supports PCIe > devices, it has its own MSI-X table and transmits child device MSI-X by > remapping child device MSI-X and handling like a demultiplexer. > > Some newer VMD devices (Icelake Server) have an option to bypass the VMD MSI-X > remapping table. This allows for better performance scaling as the child device > MSI-X won't be limited by VMD's MSI-X count and IRQ handler. > > [...] Applied to pci/vmd, thanks! [1/2] iommu/vt-d: Use Real PCI DMA device for IRTE https://git.kernel.org/lpieralisi/pci/c/9b4a824b88 [2/2] PCI: vmd: Disable MSI-X remapping when possible https://git.kernel.org/lpieralisi/pci/c/ee81ee84f8 Thanks, Lorenzo ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-03-22 14:11 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-02-10 16:13 [PATCH v4 0/2] VMD MSI Remapping Bypass Jon Derrick 2021-02-10 16:13 ` Jon Derrick 2021-02-10 16:13 ` [PATCH v4 1/2] iommu/vt-d: Use Real PCI DMA device for IRTE Jon Derrick 2021-02-10 16:13 ` Jon Derrick 2021-02-10 16:13 ` [PATCH v4 2/2] PCI: vmd: Disable MSI-X remapping when possible Jon Derrick 2021-02-10 16:13 ` Jon Derrick 2021-03-17 19:14 ` [PATCH v4 0/2] VMD MSI Remapping Bypass Derrick, Jonathan 2021-03-17 19:14 ` Derrick, Jonathan 2021-03-18 9:07 ` joro 2021-03-18 9:07 ` joro 2021-03-18 12:38 ` Lorenzo Pieralisi 2021-03-18 12:38 ` Lorenzo Pieralisi 2021-03-22 14:11 ` Lorenzo Pieralisi 2021-03-22 14:11 ` Lorenzo Pieralisi
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.