mbox series

[0/6] VMD MSI Remapping Bypass

Message ID 20200728194945.14126-1-jonathan.derrick@intel.com
Headers show
Series VMD MSI Remapping Bypass | expand

Message

Jon Derrick July 28, 2020, 7:49 p.m. UTC
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 and client) 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.

It's expected that most users don't want MSI/X remapping when they can get
better performance without this limitation. This set includes some long overdue
cleanup of overgrown VMD code and introduces the MSI/X remapping disable.

Applies on top of e3beca48a45b ("irqdomain/treewide: Keep firmware node
unconditionally allocated") and ec0160891e38 ("irqdomain/treewide: Free
firmware node after domain removal") in tip/urgent


Jon Derrick (6):
  PCI: vmd: Create physical offset helper
  PCI: vmd: Create bus offset configuration helper
  PCI: vmd: Create IRQ Domain configuration helper
  PCI: vmd: Create IRQ allocation helper
  x86/apic/msi: Use Real PCI DMA device when configuring IRTE
  PCI: vmd: Disable MSI/X remapping when possible

 arch/x86/kernel/apic/msi.c   |   2 +-
 drivers/pci/controller/vmd.c | 344 +++++++++++++++++++++++------------
 2 files changed, 224 insertions(+), 122 deletions(-)


base-commit: ec0160891e387f4771f953b888b1fe951398e5d9

Comments

Jon Derrick Aug. 17, 2020, 4:14 p.m. UTC | #1
Hi Lorenzo,

On Tue, 2020-07-28 at 13:49 -0600, 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 and client) 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.
> 
> It's expected that most users don't want MSI/X remapping when they can get
> better performance without this limitation. This set includes some long overdue
> cleanup of overgrown VMD code and introduces the MSI/X remapping disable.
> 
> Applies on top of e3beca48a45b ("irqdomain/treewide: Keep firmware node
> unconditionally allocated") and ec0160891e38 ("irqdomain/treewide: Free
> firmware node after domain removal") in tip/urgent
> 
> 
> Jon Derrick (6):
>   PCI: vmd: Create physical offset helper
>   PCI: vmd: Create bus offset configuration helper
>   PCI: vmd: Create IRQ Domain configuration helper
>   PCI: vmd: Create IRQ allocation helper
>   x86/apic/msi: Use Real PCI DMA device when configuring IRTE
>   PCI: vmd: Disable MSI/X remapping when possible
> 
>  arch/x86/kernel/apic/msi.c   |   2 +-
>  drivers/pci/controller/vmd.c | 344 +++++++++++++++++++++++------------
>  2 files changed, 224 insertions(+), 122 deletions(-)
> 
> 
> base-commit: ec0160891e387f4771f953b888b1fe951398e5d9

Gentle reminder. Please don't forget about this.
We have a few more patches coming soon that I'd prefer to stage upon
this set.