From: Bjorn Helgaas <helgaas@kernel.org>
To: David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>
Cc: Xuefeng Li <lixuefeng@loongson.cn>,
Huacai Chen <chenhuacai@gmail.com>,
Huacai Chen <chenhuacai@loongson.cn>,
linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org, Bjorn Helgaas <bhelgaas@google.com>
Subject: [PATCH v8 00/10] vgaarb: Rework default VGA device selection
Date: Wed, 5 Jan 2022 18:06:48 -0600 [thread overview]
Message-ID: <20220106000658.243509-1-helgaas@kernel.org> (raw)
From: Bjorn Helgaas <bhelgaas@google.com>
Current default VGA device selection fails in some cases because part of it
is done in the vga_arb_device_init() subsys_initcall, and some arches
enumerate PCI devices in pcibios_init(), which runs *after* that.
For example:
- On BMC system, the AST2500 bridge [1a03:1150] does not implement
PCI_BRIDGE_CTL_VGA. This is perfectly legal but means the legacy VGA
resources won't reach downstream devices unless they're included in the
usual bridge windows.
- vga_arb_select_default_device() will set a device below such a bridge
as the default VGA device as long as it has PCI_COMMAND_IO and
PCI_COMMAND_MEMORY enabled.
- vga_arbiter_add_pci_device() is called for every VGA device, either at
boot-time or at hot-add time, and it will also set the device as the
default VGA device, but ONLY if all bridges leading to it implement
PCI_BRIDGE_CTL_VGA.
- This difference between vga_arb_select_default_device() and
vga_arbiter_add_pci_device() means that a device below an AST2500 or
similar bridge can only be set as the default if it is enumerated
before vga_arb_device_init().
- On ACPI-based systems, PCI devices are enumerated by acpi_init(), which
runs before vga_arb_device_init().
- On non-ACPI systems, like on MIPS system, they are enumerated by
pcibios_init(), which typically runs *after* vga_arb_device_init().
This series consolidates all the default VGA device selection in
vga_arbiter_add_pci_device(), which is always called after enumerating a
PCI device.
Almost all the work here is Huacai's. I restructured it a little bit and
added a few trivial patches on top.
I'd like to move vgaarb.c to drivers/pci eventually, but there's another
initcall ordering snag that needs to be resolved first, so this leaves
it where it is.
Bjorn
Version history:
V0 original implementation as final quirk to set default device.
https://lore.kernel.org/r/20210514080025.1828197-6-chenhuacai@loongson.cn
V1 rework vgaarb to do all default device selection in
vga_arbiter_add_pci_device().
https://lore.kernel.org/r/20210705100503.1120643-1-chenhuacai@loongson.cn
V2 move arbiter to PCI subsystem, fix nits.
https://lore.kernel.org/r/20210722212920.347118-1-helgaas@kernel.org
V3 rewrite the commit log of the last patch (which is also summarized
by Bjorn).
https://lore.kernel.org/r/20210820100832.663931-1-chenhuacai@loongson.cn
V4 split the last patch to two steps.
https://lore.kernel.org/r/20210827083129.2781420-1-chenhuacai@loongson.cn
V5 split Patch-9 again and sort the patches.
https://lore.kernel.org/r/20210911093056.1555274-1-chenhuacai@loongson.cn
V6 split Patch-5 again and sort the patches again.
https://lore.kernel.org/r/20210916082941.3421838-1-chenhuacai@loongson.cn
V7 stop moving vgaarb to drivers/pci because of ordering issues with
misc_init().
https://lore.kernel.org/r/20211015061512.2941859-1-chenhuacai@loongson.cn
https://lore.kernel.org/r/CAAhV-H7FhAjM-Ha42Z1dLrE4PvC9frfyeU27KHWcyWKkMftEsA@mail.gmail.com
Bjorn Helgaas (8):
vgaarb: Factor out vga_select_framebuffer_device()
vgaarb: Factor out default VGA device selection
vgaarb: Move framebuffer detection to ADD_DEVICE path
vgaarb: Move non-legacy VGA detection to ADD_DEVICE path
vgaarb: Move disabled VGA device detection to ADD_DEVICE path
vgaarb: Remove empty vga_arb_device_card_gone()
vgaarb: Use unsigned format string to print lock counts
vgaarb: Replace full MIT license text with SPDX identifier
Huacai Chen (2):
vgaarb: Move vga_arb_integrated_gpu() earlier in file
vgaarb: Log bridge control messages when adding devices
drivers/gpu/vga/vgaarb.c | 311 +++++++++++++++++++--------------------
1 file changed, 154 insertions(+), 157 deletions(-)
--
2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
dri-devel@lists.freedesktop.org,
Bjorn Helgaas <bhelgaas@google.com>,
Xuefeng Li <lixuefeng@loongson.cn>,
Huacai Chen <chenhuacai@loongson.cn>
Subject: [PATCH v8 00/10] vgaarb: Rework default VGA device selection
Date: Wed, 5 Jan 2022 18:06:48 -0600 [thread overview]
Message-ID: <20220106000658.243509-1-helgaas@kernel.org> (raw)
From: Bjorn Helgaas <bhelgaas@google.com>
Current default VGA device selection fails in some cases because part of it
is done in the vga_arb_device_init() subsys_initcall, and some arches
enumerate PCI devices in pcibios_init(), which runs *after* that.
For example:
- On BMC system, the AST2500 bridge [1a03:1150] does not implement
PCI_BRIDGE_CTL_VGA. This is perfectly legal but means the legacy VGA
resources won't reach downstream devices unless they're included in the
usual bridge windows.
- vga_arb_select_default_device() will set a device below such a bridge
as the default VGA device as long as it has PCI_COMMAND_IO and
PCI_COMMAND_MEMORY enabled.
- vga_arbiter_add_pci_device() is called for every VGA device, either at
boot-time or at hot-add time, and it will also set the device as the
default VGA device, but ONLY if all bridges leading to it implement
PCI_BRIDGE_CTL_VGA.
- This difference between vga_arb_select_default_device() and
vga_arbiter_add_pci_device() means that a device below an AST2500 or
similar bridge can only be set as the default if it is enumerated
before vga_arb_device_init().
- On ACPI-based systems, PCI devices are enumerated by acpi_init(), which
runs before vga_arb_device_init().
- On non-ACPI systems, like on MIPS system, they are enumerated by
pcibios_init(), which typically runs *after* vga_arb_device_init().
This series consolidates all the default VGA device selection in
vga_arbiter_add_pci_device(), which is always called after enumerating a
PCI device.
Almost all the work here is Huacai's. I restructured it a little bit and
added a few trivial patches on top.
I'd like to move vgaarb.c to drivers/pci eventually, but there's another
initcall ordering snag that needs to be resolved first, so this leaves
it where it is.
Bjorn
Version history:
V0 original implementation as final quirk to set default device.
https://lore.kernel.org/r/20210514080025.1828197-6-chenhuacai@loongson.cn
V1 rework vgaarb to do all default device selection in
vga_arbiter_add_pci_device().
https://lore.kernel.org/r/20210705100503.1120643-1-chenhuacai@loongson.cn
V2 move arbiter to PCI subsystem, fix nits.
https://lore.kernel.org/r/20210722212920.347118-1-helgaas@kernel.org
V3 rewrite the commit log of the last patch (which is also summarized
by Bjorn).
https://lore.kernel.org/r/20210820100832.663931-1-chenhuacai@loongson.cn
V4 split the last patch to two steps.
https://lore.kernel.org/r/20210827083129.2781420-1-chenhuacai@loongson.cn
V5 split Patch-9 again and sort the patches.
https://lore.kernel.org/r/20210911093056.1555274-1-chenhuacai@loongson.cn
V6 split Patch-5 again and sort the patches again.
https://lore.kernel.org/r/20210916082941.3421838-1-chenhuacai@loongson.cn
V7 stop moving vgaarb to drivers/pci because of ordering issues with
misc_init().
https://lore.kernel.org/r/20211015061512.2941859-1-chenhuacai@loongson.cn
https://lore.kernel.org/r/CAAhV-H7FhAjM-Ha42Z1dLrE4PvC9frfyeU27KHWcyWKkMftEsA@mail.gmail.com
Bjorn Helgaas (8):
vgaarb: Factor out vga_select_framebuffer_device()
vgaarb: Factor out default VGA device selection
vgaarb: Move framebuffer detection to ADD_DEVICE path
vgaarb: Move non-legacy VGA detection to ADD_DEVICE path
vgaarb: Move disabled VGA device detection to ADD_DEVICE path
vgaarb: Remove empty vga_arb_device_card_gone()
vgaarb: Use unsigned format string to print lock counts
vgaarb: Replace full MIT license text with SPDX identifier
Huacai Chen (2):
vgaarb: Move vga_arb_integrated_gpu() earlier in file
vgaarb: Log bridge control messages when adding devices
drivers/gpu/vga/vgaarb.c | 311 +++++++++++++++++++--------------------
1 file changed, 154 insertions(+), 157 deletions(-)
--
2.25.1
next reply other threads:[~2022-01-06 0:07 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-06 0:06 Bjorn Helgaas [this message]
2022-01-06 0:06 ` [PATCH v8 00/10] vgaarb: Rework default VGA device selection Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 01/10] vgaarb: Move vga_arb_integrated_gpu() earlier in file Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 02/10] vgaarb: Factor out vga_select_framebuffer_device() Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 03/10] vgaarb: Factor out default VGA device selection Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 04/10] vgaarb: Move framebuffer detection to ADD_DEVICE path Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 6:44 ` Huacai Chen
2022-01-06 6:44 ` Huacai Chen
2022-01-06 16:20 ` Bjorn Helgaas
2022-01-06 16:20 ` Bjorn Helgaas
2022-01-25 2:51 ` Huacai Chen
2022-01-25 2:51 ` Huacai Chen
2022-01-25 15:38 ` Bjorn Helgaas
2022-01-25 15:38 ` Bjorn Helgaas
2022-01-26 2:25 ` Huacai Chen
2022-01-26 2:25 ` Huacai Chen
2022-01-06 0:06 ` [PATCH v8 05/10] vgaarb: Move non-legacy VGA " Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 06/10] vgaarb: Move disabled VGA device " Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 07/10] vgaarb: Remove empty vga_arb_device_card_gone() Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 08/10] vgaarb: Log bridge control messages when adding devices Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 09/10] vgaarb: Use unsigned format string to print lock counts Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 0:06 ` [PATCH v8 10/10] vgaarb: Replace full MIT license text with SPDX identifier Bjorn Helgaas
2022-01-06 0:06 ` Bjorn Helgaas
2022-01-06 16:30 ` [PATCH v8 00/10] vgaarb: Rework default VGA device selection Bjorn Helgaas
2022-01-06 16:30 ` Bjorn Helgaas
2022-01-08 3:26 ` Huacai Chen
2022-01-08 3:26 ` Huacai Chen
2022-01-31 22:23 ` Bjorn Helgaas
2022-02-01 15:46 ` Maarten Lankhorst
2022-02-07 17:59 ` Bjorn Helgaas
2022-02-07 17:59 ` Bjorn Helgaas
2022-02-08 2:14 ` Huacai Chen
2022-02-08 2:14 ` Huacai Chen
2022-02-14 16:19 ` Bjorn Helgaas
2022-02-14 16:19 ` Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220106000658.243509-1-helgaas@kernel.org \
--to=helgaas@kernel.org \
--cc=airlied@linux.ie \
--cc=bhelgaas@google.com \
--cc=chenhuacai@gmail.com \
--cc=chenhuacai@loongson.cn \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lixuefeng@loongson.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.