Hi Am 06.09.23 um 04:34 schrieb suijingfeng:
On 2023/9/5 23:05, Thomas Zimmermann wrote:Hi Am 05.09.23 um 15:30 schrieb suijingfeng:Hi, On 2023/9/5 18:45, Thomas Zimmermann wrote:Hi Am 04.09.23 um 21:57 schrieb Sui Jingfeng:From: Sui Jingfeng <suijingfeng@xxxxxxxxxxx>On a machine with multiple GPUs, a Linux user has no control over which one is primary at boot time. This series tries to solve above mentionedIf anything, the primary graphics adapter is the one initialized by the firmware. I think our boot-up graphics also make this assumption implicitly.Yes, but by the time of DRM drivers get loaded successfully,the boot-up graphics already finished. Firmware framebuffer device already get killed by the drm_aperture_remove_conflicting_pci_framebuffers() function (or its siblings). So, this series is definitely not to interact with the firmware framebufferYes and no. The helpers you mention will attempt to remove the firmware framebuffer on the given PCI device. If you have multiple PCI devices, the other devices would not be affected.Yes and no.For the yes part: drm_aperture_remove_conflicting_pci_framebuffers() only kill the conflict one.But for a specific machine with the modern UEFI firmware, there should be only one firmware framebuffer driver. That shoudd be the EFIFB(UEFI GOP). I do have multiple PCI devices,but I don't understand when and why a system will have more than one firmware framebuffer.
Maybe somewhat unrelated to the actual discussion, but it's not as simple as you assume. Many non-X86 systems use DeviceTree. On Sparc IIRC, there's the case of having multiple firmware framebuffers listed in the DT. We create an device for each and attach a DRM firmware driver; ofdrm in this case. I haven't seen this in the wild, but non-Sparc systems could also behave like that.
And in addition to that, ARM-based systems often uses UEFI boot stub code that provides a simple UEFI environment to the kernel. For graphics we've had cases where we received the same firmware framebuffer from the DT and from the UEFI boot stub. We have to detect and handle such duplication in the kernel.
Best regards Thomas
Even for the machines with the legacy BIOS, the fixed VGA aperture address range can only be owned by one firmware driver. It is just that we need to handle the routing, the ->set_decode() callback of vga_client_register() is used to do suchwork. Am I correct?
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg)
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature