Commit 1d38fe6e authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

PCI/VGA: Move vgaarb to drivers/pci

The VGA arbiter is really PCI-specific and doesn't depend on any GPU
things.  Move it to the PCI subsystem.

Note that misc_init() must be called before vga_arb_device_init().  These
are both subsys_initcalls, so this ordering depends on the link order,
which is determined by drivers/Makefile:

  obj-y += pci/
  obj-y += char/        <-- misc_init()
  obj-y += gpu/         <-- vga_arb_device_init() (before this commit)

The drivers/pci/ subsys_initcalls are called *before* misc_init(), so
convert vga_arb_device_init() to subsys_initcall_sync(), which is called
after *all* subsys_initcalls.

Link: https://lore.kernel.org/r/20220224224753.297579-2-helgaas@kernel.org


Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent e783362e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ In-kernel interface
.. kernel-doc:: include/linux/vgaarb.h
   :internal:

.. kernel-doc:: drivers/gpu/vga/vgaarb.c
.. kernel-doc:: drivers/pci/vgaarb.c
   :export:

libpciaccess
+0 −19
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
config VGA_ARB
	bool "VGA Arbitration" if EXPERT
	default y
	depends on (PCI && !S390)
	help
	  Some "legacy" VGA devices implemented on PCI typically have the same
	  hard-decoded addresses as they did on ISA. When multiple PCI devices
	  are accessed at same time they need some kind of coordination. Please
	  see Documentation/gpu/vgaarbiter.rst for more details. Select this to
	  enable VGA arbiter.

config VGA_ARB_MAX_GPUS
	int "Maximum number of GPUs"
	default 16
	depends on VGA_ARB
	help
	  Reserves space in the kernel to maintain resource locking for
	  multiple GPUS.  The overhead for each GPU is very small.

config VGA_SWITCHEROO
	bool "Laptop Hybrid Graphics - GPU switching support"
	depends on X86
+0 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_VGA_ARB)  += vgaarb.o
obj-$(CONFIG_VGA_SWITCHEROO) += vga_switcheroo.o
+19 −0
Original line number Diff line number Diff line
@@ -252,6 +252,25 @@ config PCIE_BUS_PEER2PEER

endchoice

config VGA_ARB
	bool "VGA Arbitration" if EXPERT
	default y
	depends on (PCI && !S390)
	help
	  Some "legacy" VGA devices implemented on PCI typically have the same
	  hard-decoded addresses as they did on ISA. When multiple PCI devices
	  are accessed at same time they need some kind of coordination. Please
	  see Documentation/gpu/vgaarbiter.rst for more details. Select this to
	  enable VGA arbiter.

config VGA_ARB_MAX_GPUS
	int "Maximum number of GPUs"
	default 16
	depends on VGA_ARB
	help
	  Reserves space in the kernel to maintain resource locking for
	  multiple GPUS.  The overhead for each GPU is very small.

source "drivers/pci/hotplug/Kconfig"
source "drivers/pci/controller/Kconfig"
source "drivers/pci/endpoint/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ obj-$(CONFIG_PCI_PF_STUB) += pci-pf-stub.o
obj-$(CONFIG_PCI_ECAM)		+= ecam.o
obj-$(CONFIG_PCI_P2PDMA)	+= p2pdma.o
obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += xen-pcifront.o
obj-$(CONFIG_VGA_ARB)		+= vgaarb.o

# Endpoint library must be initialized before its users
obj-$(CONFIG_PCI_ENDPOINT)	+= endpoint/
Loading