Public bug reported:

Jake Oshins (Microsoft) has submitted upstream the PCI Passthrough
feature, and while it is not yet accepted upstream (because of the
effect on multiple trees and affects PCI), Microsoft would like
Canonical to consider its inclusion in Ubuntu 16.04 and beyond. The
rounds of feedback on the patches are winding down, so it is a good time
to consider them.

All of the submitted files are in the attached thread, but not all are
committed to Linus's tree as of 4.5-rc1.

This feature is needed for supporting SR-IOV and GPU passthrough on
Hyper-V.

The 10th iteration of the upstream submission is available on lkml:

https://lkml.org/lkml/2015/12/10/553

From    jakeo@microsof ...
Subject [PATCH v10 0/7] PCI: hv: New paravirtual PCI front-end for Hyper-V VMs
Date    Thu, 10 Dec 2015 17:52:56 +0000
From: Jake Oshins <ja...@microsoft.com>

This version of the patch series removes warning when compiling x86
32-bit while still making it build cleanly for x64.

First, export functions that allow correlating Hyper-V virtual processors
and Linux cpus, along with the means for invoking a hypercall that targets
interrupts at chosen vectors on specific cpus.

Second, mark various parts of IRQ domain related code as exported, so that
this PCI front-end can implement an IRQ domain as part of a module. (The
alternative would be to pull all tyhis into the kernel, which would pull
in a lot of other Hyper-V related code, as this IRQ domain depends on
vmbus.ko.)

Third, modify PCI so that new root PCI buses can be marked with an associated
fwnode_handle, and so that root PCI buses can look up their associated IRQ
domain by that handle.

Fourth, introduce a new driver, hv_pcifront, which exposes root PCI buses in
a Hyper-V VM. These root PCI buses expose real PCIe device, or PCI Virtual
Functions.

Jake Oshins (7):
  drivers:hv: Export a function that maps Linux CPU num onto Hyper-V
    proc num
  drivers:hv: Export hv_do_hypercall()
  PCI: Make it possible to implement a PCI MSI IRQ Domain in a module.
  PCI: Add fwnode_handle to pci_sysdata
  PCI: irqdomain: Look up IRQ domain by fwnode_handle
  drivers:hv: Define the channel type of Hyper-V PCI Express
    pass-through
  PCI: hv: New paravirtual PCI front-end for Hyper-V VMs

 MAINTAINERS | 1 +
 arch/x86/include/asm/msi.h | 6 +
 arch/x86/include/asm/pci.h | 15 +
 arch/x86/kernel/apic/msi.c | 8 +-
 arch/x86/kernel/apic/vector.c | 2 +
 drivers/hv/hv.c | 20 +-
 drivers/hv/hyperv_vmbus.h | 2 +-
 drivers/hv/vmbus_drv.c | 17 +
 drivers/pci/Kconfig | 7 +
 drivers/pci/host/Makefile | 1 +
 drivers/pci/host/hv_pcifront.c | 2249 ++++++++++++++++++++++++++++++++++++++++
 drivers/pci/msi.c | 4 +
 drivers/pci/probe.c | 15 +
 include/linux/hyperv.h | 14 +
 include/linux/pci.h | 4 +
 kernel/irq/chip.c | 1 +
 kernel/irq/irqdomain.c | 4 +
 17 files changed, 2356 insertions(+), 14 deletions(-)
 create mode 100644 drivers/pci/host/hv_pcifront.c

Accepted commits so far in 4.5-rc1:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a108393dbf764efb2405f21ca759806c65b8bc16
 drivers:hv: Export the API to invoke a hypercall on Hyper-V
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=619848bd074343ff2bdeeafca0be39748f6da372
 drivers:hv: Export a function that maps Linux CPU num onto Hyper-V proc num
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3053c762444a83ec6a8777f9476668b23b8ab180
 drivers:hv: Define the channel type for Hyper-V PCI Express pass-through
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=40f26f3168bf7a4da490db308dc0bd9f9923f41f
 drivers:hv: Allow for MMIO claims that span ACPI _CRS records
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a4289dc2ec3a5821076a78ee9678909b4eff297e
 genirq/msi: Export functions to allow MSI domains in modules
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c8f3e518d3444ee9200a4987421fcee60f768f11
 x86/irq: Export functions to allow MSI domains in modules

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1541120

Title:
  [Hyper-V] PCI Passthrough

Status in linux package in Ubuntu:
  New

Bug description:
  Jake Oshins (Microsoft) has submitted upstream the PCI Passthrough
  feature, and while it is not yet accepted upstream (because of the
  effect on multiple trees and affects PCI), Microsoft would like
  Canonical to consider its inclusion in Ubuntu 16.04 and beyond. The
  rounds of feedback on the patches are winding down, so it is a good
  time to consider them.

  All of the submitted files are in the attached thread, but not all are
  committed to Linus's tree as of 4.5-rc1.

  This feature is needed for supporting SR-IOV and GPU passthrough on
  Hyper-V.

  The 10th iteration of the upstream submission is available on lkml:

  https://lkml.org/lkml/2015/12/10/553

  From  jakeo@microsof ...
  Subject       [PATCH v10 0/7] PCI: hv: New paravirtual PCI front-end for 
Hyper-V VMs
  Date  Thu, 10 Dec 2015 17:52:56 +0000
  From: Jake Oshins <ja...@microsoft.com>

  This version of the patch series removes warning when compiling x86
  32-bit while still making it build cleanly for x64.

  First, export functions that allow correlating Hyper-V virtual processors
  and Linux cpus, along with the means for invoking a hypercall that targets
  interrupts at chosen vectors on specific cpus.

  Second, mark various parts of IRQ domain related code as exported, so that
  this PCI front-end can implement an IRQ domain as part of a module. (The
  alternative would be to pull all tyhis into the kernel, which would pull
  in a lot of other Hyper-V related code, as this IRQ domain depends on
  vmbus.ko.)

  Third, modify PCI so that new root PCI buses can be marked with an associated
  fwnode_handle, and so that root PCI buses can look up their associated IRQ
  domain by that handle.

  Fourth, introduce a new driver, hv_pcifront, which exposes root PCI buses in
  a Hyper-V VM. These root PCI buses expose real PCIe device, or PCI Virtual
  Functions.

  Jake Oshins (7):
    drivers:hv: Export a function that maps Linux CPU num onto Hyper-V
      proc num
    drivers:hv: Export hv_do_hypercall()
    PCI: Make it possible to implement a PCI MSI IRQ Domain in a module.
    PCI: Add fwnode_handle to pci_sysdata
    PCI: irqdomain: Look up IRQ domain by fwnode_handle
    drivers:hv: Define the channel type of Hyper-V PCI Express
      pass-through
    PCI: hv: New paravirtual PCI front-end for Hyper-V VMs

   MAINTAINERS | 1 +
   arch/x86/include/asm/msi.h | 6 +
   arch/x86/include/asm/pci.h | 15 +
   arch/x86/kernel/apic/msi.c | 8 +-
   arch/x86/kernel/apic/vector.c | 2 +
   drivers/hv/hv.c | 20 +-
   drivers/hv/hyperv_vmbus.h | 2 +-
   drivers/hv/vmbus_drv.c | 17 +
   drivers/pci/Kconfig | 7 +
   drivers/pci/host/Makefile | 1 +
   drivers/pci/host/hv_pcifront.c | 2249 
++++++++++++++++++++++++++++++++++++++++
   drivers/pci/msi.c | 4 +
   drivers/pci/probe.c | 15 +
   include/linux/hyperv.h | 14 +
   include/linux/pci.h | 4 +
   kernel/irq/chip.c | 1 +
   kernel/irq/irqdomain.c | 4 +
   17 files changed, 2356 insertions(+), 14 deletions(-)
   create mode 100644 drivers/pci/host/hv_pcifront.c

  Accepted commits so far in 4.5-rc1:

  
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a108393dbf764efb2405f21ca759806c65b8bc16
 drivers:hv: Export the API to invoke a hypercall on Hyper-V
  
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=619848bd074343ff2bdeeafca0be39748f6da372
 drivers:hv: Export a function that maps Linux CPU num onto Hyper-V proc num
  
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3053c762444a83ec6a8777f9476668b23b8ab180
 drivers:hv: Define the channel type for Hyper-V PCI Express pass-through
  
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=40f26f3168bf7a4da490db308dc0bd9f9923f41f
 drivers:hv: Allow for MMIO claims that span ACPI _CRS records
  
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a4289dc2ec3a5821076a78ee9678909b4eff297e
 genirq/msi: Export functions to allow MSI domains in modules
  
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c8f3e518d3444ee9200a4987421fcee60f768f11
 x86/irq: Export functions to allow MSI domains in modules

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1541120/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to