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: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
e783362eb5
commit
1d38fe6ee6
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-$(CONFIG_VGA_ARB) += vgaarb.o
|
||||
obj-$(CONFIG_VGA_SWITCHEROO) += vga_switcheroo.o
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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/
|
||||
|
|
|
@ -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);
|
Loading…
Reference in New Issue