PCI/VGA: Move vgaarb to drivers/pci
authorBjorn Helgaas <bhelgaas@google.com>
Thu, 24 Feb 2022 22:47:43 +0000 (16:47 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 10 Mar 2022 00:30:46 +0000 (18:30 -0600)
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: Bjorn Helgaas <bhelgaas@google.com>
Documentation/gpu/vgaarbiter.rst
drivers/gpu/vga/Kconfig
drivers/gpu/vga/Makefile
drivers/pci/Kconfig
drivers/pci/Makefile
drivers/pci/vgaarb.c [moved from drivers/gpu/vga/vgaarb.c with 99% similarity]

index 339ed5f..bde3c0a 100644 (file)
@@ -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
index 1ad4c4e..eb8b14a 100644 (file)
@@ -1,23 +1,4 @@
 # 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
index e920644..9800620 100644 (file)
@@ -1,3 +1,2 @@
 # SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_VGA_ARB)  += vgaarb.o
 obj-$(CONFIG_VGA_SWITCHEROO) += vga_switcheroo.o
index d98fafd..133c732 100644 (file)
@@ -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"
index 37be95a..0da6b1e 100644 (file)
@@ -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/
similarity index 99%
rename from drivers/gpu/vga/vgaarb.c
rename to drivers/pci/vgaarb.c
index 5699305..8320385 100644 (file)
@@ -1564,4 +1564,4 @@ static int __init vga_arb_device_init(void)
        pr_info("loaded\n");
        return rc;
 }
-subsys_initcall(vga_arb_device_init);
+subsys_initcall_sync(vga_arb_device_init);