mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	PCI: hv: Add paravirtual PCI front-end for Microsoft Hyper-V VMs
Add a new driver which exposes a root PCI bus whenever a PCI Express device is passed through to a guest VM under Hyper-V. The device can be single- or multi-function. The interrupts for the devices are managed by an IRQ domain, implemented within the driver. [bhelgaas: fold in race condition fix (http://lkml.kernel.org/r/1456340196-13717-1-git-send-email-jakeo@microsoft.com)] Signed-off-by: Jake Oshins <jakeo@microsoft.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
		
							parent
							
								
									788858ebc4
								
							
						
					
					
						commit
						4daace0d8c
					
				
					 4 changed files with 2355 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -5193,6 +5193,7 @@ F:	arch/x86/kernel/cpu/mshyperv.c
 | 
			
		|||
F:	drivers/hid/hid-hyperv.c
 | 
			
		||||
F:	drivers/hv/
 | 
			
		||||
F:	drivers/input/serio/hyperv-keyboard.c
 | 
			
		||||
F:	drivers/pci/host/pci-hyperv.c
 | 
			
		||||
F:	drivers/net/hyperv/
 | 
			
		||||
F:	drivers/scsi/storvsc_drv.c
 | 
			
		||||
F:	drivers/video/fbdev/hyperv_fb.c
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -118,4 +118,11 @@ config PCI_LABEL
 | 
			
		|||
	def_bool y if (DMI || ACPI)
 | 
			
		||||
	select NLS
 | 
			
		||||
 | 
			
		||||
config PCI_HYPERV
 | 
			
		||||
        tristate "Hyper-V PCI Frontend"
 | 
			
		||||
        depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
 | 
			
		||||
        help
 | 
			
		||||
          The PCI device frontend driver allows the kernel to import arbitrary
 | 
			
		||||
          PCI devices from a PCI backend to support PCI driver domains.
 | 
			
		||||
 | 
			
		||||
source "drivers/pci/host/Kconfig"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ obj-$(CONFIG_PCIE_DW) += pcie-designware.o
 | 
			
		|||
obj-$(CONFIG_PCI_DRA7XX) += pci-dra7xx.o
 | 
			
		||||
obj-$(CONFIG_PCI_EXYNOS) += pci-exynos.o
 | 
			
		||||
obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
 | 
			
		||||
obj-$(CONFIG_PCI_HYPERV) += pci-hyperv.o
 | 
			
		||||
obj-$(CONFIG_PCI_MVEBU) += pci-mvebu.o
 | 
			
		||||
obj-$(CONFIG_PCI_TEGRA) += pci-tegra.o
 | 
			
		||||
obj-$(CONFIG_PCI_RCAR_GEN2) += pci-rcar-gen2.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2346
									
								
								drivers/pci/host/pci-hyperv.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2346
									
								
								drivers/pci/host/pci-hyperv.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
		Loading…
	
		Reference in a new issue