From: Mario Limonciello <superm1@kernel.org>
To: Thomas Zimmermann <tzimmermann@suse.de>,
Aaron Erhardt <aer@tuxedocomputers.com>,
David Airlie <airlied@gmail.com>,
Bjorn Helgaas <bhelgaas@google.com>
Cc: "Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"open list:DRM DRIVERS" <dri-devel@lists.freedesktop.org>,
"open list" <linux-kernel@vger.kernel.org>,
"open list:PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
"Daniel Dadap" <ddadap@nvidia.com>
Subject: Re: [PATCH v10 3/4] fbcon: Use screen info to find primary device
Date: Tue, 28 Oct 2025 16:25:15 -0500 [thread overview]
Message-ID: <c7b86f6a-b691-41e3-955b-df40f4aca511@kernel.org> (raw)
In-Reply-To: <817215d6-0a37-41a3-89a0-b7d2f7c67f1f@suse.de>
On 10/28/25 11:50 AM, Thomas Zimmermann wrote:
> Hi
>
> Am 28.10.25 um 14:15 schrieb Mario Limonciello:
>> On 10/28/25 5:16 AM, Aaron Erhardt wrote:
>>>
>>> On Mon, Aug 11, 2025 at 11:26:05AM -0500, Mario Limonciello (AMD) wrote:
>>>> On systems with non VGA GPUs fbcon can't find the primary GPU because
>>>> video_is_primary_device() only checks the VGA arbiter.
>>>>
>>>> Add a screen info check to video_is_primary_device() so that callers
>>>> can get accurate data on such systems.
>>>
>>> I have a question regarding this change. To me, the function name
>>> video_is_primary_device() implies that there is only one primary GPU.
>>> I would also expect that the 'boot_display' attribute added later in
>>> the patch series based on this function is only set for one GPU, but
>>> that is not necessarily the case. Since I'm working on a user-space
>>> program that reads the 'boot_display' attribute, I need to know what
>>> behavior is intended in order to do a correct implementation.
>>>
>>>>
>>>> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
>>>> Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
>>>> Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
>>>> Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
>>>> ---
>>>> v10:
>>>> * Rebase on 6.17-rc1
>>>> * Squash 'fbcon: Stop using screen_info_pci_dev()'
>>>> ---
>>>> arch/x86/video/video-common.c | 25 ++++++++++++++++++++++++-
>>>> 1 file changed, 24 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/arch/x86/video/video-common.c b/arch/x86/video/video-
>>>> common.c
>>>> index 81fc97a2a837a..e0aeee99bc99e 100644
>>>> --- a/arch/x86/video/video-common.c
>>>> +++ b/arch/x86/video/video-common.c
>>>> @@ -9,6 +9,7 @@
>>>> #include <linux/module.h>
>>>> #include <linux/pci.h>
>>>> +#include <linux/screen_info.h>
>>>> #include <linux/vgaarb.h>
>>>> #include <asm/video.h>
>>>> @@ -27,6 +28,11 @@ EXPORT_SYMBOL(pgprot_framebuffer);
>>>> bool video_is_primary_device(struct device *dev)
>>>> {
>>>> +#ifdef CONFIG_SCREEN_INFO
>>>> + struct screen_info *si = &screen_info;
>>>> + struct resource res[SCREEN_INFO_MAX_RESOURCES];
>>>> + ssize_t i, numres;
>>>> +#endif
>>>> struct pci_dev *pdev;
>>>> if (!dev_is_pci(dev))
>>>> @@ -34,7 +40,24 @@ bool video_is_primary_device(struct device *dev)
>>>> pdev = to_pci_dev(dev);
>>>> - return (pdev == vga_default_device());
>>>> + if (!pci_is_display(pdev))
>>>> + return false;
>>>> +
>>>> + if (pdev == vga_default_device())
>>>> + return true;
>>>
>>> This can mark a VGA device as primary GPU.
>
> Is the value returned from vga_default_device() eq to NULL?
>
>>>
>>>> +
>>>> +#ifdef CONFIG_SCREEN_INFO
>>>> + numres = screen_info_resources(si, res, ARRAY_SIZE(res));
>>>> + for (i = 0; i < numres; ++i) {
>>>> + if (!(res[i].flags & IORESOURCE_MEM))
>>>> + continue;
>>>> +
>>>> + if (pci_find_resource(pdev, &res[i]))
>>>> + return true;
>>>> + }
>>>> +#endif
>>>
>>> And then the new code can also choose a primary GPU.
>
> Maybe we should drop this block or move it to [1]? At [1] it would only
> run if the more sophisticated vgaarb has been disabled.
>
> The vgaarb now selects CONFIG_SCREEN_INFO and already tests for
> overlapping resources. There's nothing here that vgaarb shouldn't
> already do. Yet, I don't understand how only one of the can be true at a
> time.
>
> [1] https://elixir.bootlin.com/linux/v6.18-rc3/source/include/linux/
> vgaarb.h#L55
There is a hunk at the end of vga_is_boot_device() which I think is
causing this issue. We have one VGA device which is NOT the boot
display but the code figures if it found nothing this must be right.
/*
* Vgadev has neither IO nor MEM enabled. If we haven't found any
* other VGA devices, it is the best candidate so far.
*/
if (!boot_vga)
return true;
I feel the right solution is to drop this now.
>
>>>
>>>> +
>>>> + return false;
>>>> }
>>>> EXPORT_SYMBOL(video_is_primary_device);
>>>
>>> In particular, I have hardware that has this exact configuration where
>>> two GPUs are marked as primary and have a 'boot_display' attribute: the
>>> first one through vga_default_device(), the second one through the new
>>> detection method.
>>>
>>> Is this intended?
>>>
>>> Kind regards
>>> Aaron
>>>
>>
>> I wouldn't have expected a case like this and I think it means there
>> is a logic error.
>>
>> Can you please file a kernel bugzilla with details about your system
>> and CC me?
>>
>> dmesg and lspci -vvnn please
>>
>> Also; please clarify which GPU shows something when booting up.
>
> Agreed.
>
> Best regards
> Thomas
>
>
next prev parent reply other threads:[~2025-10-28 21:25 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-11 16:26 [PATCH v10 0/4] Adjust fbcon console device detection Mario Limonciello (AMD)
2025-08-11 16:26 ` [PATCH v10 1/4] Fix access to video_is_primary_device() when compiled without CONFIG_VIDEO Mario Limonciello (AMD)
2025-08-11 16:26 ` [PATCH v10 2/4] PCI/VGA: Replace vga_is_firmware_default() with a screen info check Mario Limonciello (AMD)
2025-09-10 14:33 ` Thomas Zimmermann
2025-10-12 18:23 ` Eric Biggers
2025-10-12 18:37 ` Mario Limonciello
2025-10-12 18:47 ` Eric Biggers
2025-10-12 19:06 ` Mario Limonciello
2025-10-13 7:04 ` Thomas Zimmermann
2025-10-13 20:55 ` Bjorn Helgaas
2025-10-28 22:50 ` Bjorn Helgaas
2025-08-11 16:26 ` [PATCH v10 3/4] fbcon: Use screen info to find primary device Mario Limonciello (AMD)
2025-09-04 20:42 ` Bjorn Helgaas
2025-10-28 10:16 ` Aaron Erhardt
2025-10-28 13:15 ` Mario Limonciello
2025-10-28 16:50 ` Thomas Zimmermann
2025-10-28 21:25 ` Mario Limonciello [this message]
2025-08-11 16:26 ` [PATCH v10 4/4] DRM: Add a new 'boot_display' attribute Mario Limonciello (AMD)
2025-09-10 14:28 ` Thomas Zimmermann
2025-09-03 4:42 ` [PATCH v10 0/4] Adjust fbcon console device detection Mario Limonciello
2025-09-04 22:36 ` Mario Limonciello
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=c7b86f6a-b691-41e3-955b-df40f4aca511@kernel.org \
--to=superm1@kernel.org \
--cc=aer@tuxedocomputers.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=bhelgaas@google.com \
--cc=christian.koenig@amd.com \
--cc=ddadap@nvidia.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
/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.