From: Javier Martinez Canillas <javierm@redhat.com>
To: Thomas Zimmermann <tzimmermann@suse.de>,
Ard Biesheuvel <ardb@kernel.org>, Rob Herring <robh@kernel.org>
Cc: devicetree@vger.kernel.org, Sergio Lopez <slp@redhat.com>,
Sima Vetter <daniel.vetter@ffwll.ch>,
Hector Martin <marcan@marcan.st>,
Andrew Worsley <amworsley@gmail.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
Frank Rowand <frowand.list@gmail.com>
Subject: Re: [RFC PATCH] of/platform: Disable sysfb if a simple-framebuffer node is found
Date: Fri, 01 Dec 2023 11:21:02 +0100 [thread overview]
Message-ID: <87fs0mxlyp.fsf@minerva.mail-host-address-is-not-set> (raw)
In-Reply-To: <58672ab8-99bf-4a2a-af79-031d1e8fcba0@suse.de>
Thomas Zimmermann <tzimmermann@suse.de> writes:
> Hi
>
> Am 18.11.23 um 12:10 schrieb Javier Martinez Canillas:
>> Ard Biesheuvel <ardb@kernel.org> writes:
>>
>> Hello Ard,
>>
>>> On Fri, 17 Nov 2023 at 00:09, Rob Herring <robh@kernel.org> wrote:
>>
>> [...]
>>
>>>>>>
>>>>>> This could also lead to an interesting scenario. As simple-framebuffer
>>>>>> can define its memory in a /reserved-memory node, but that is ignored
>>>>>> in EFI boot. Probably would work, but only because EFI probably
>>>>>> generates its memory map table from the /reserved-memory nodes.
>>>>>>
>>>>>
>>>>> I see. So what would be the solution then? Ignoring creating a platform
>>>>> device for "simple-framebuffer" if booted using EFI and have an EFI-GOP?
>>>>
>>>> Shrug. I don't really know anything more about EFI FB, but I would
>>>> guess it can't support handling resources like clocks, power domains,
>>>> regulators, etc. that simple-fb can. So if a platform needs those, do
>>>> we say they should not setup EFI-GOP? Or is there a use case for
>>>> having both? Clients that don't muck with resources can use EFI-GOP
>>>> and those that do use simple-fb. For example, does/can grub use
>>>> EFI-GOP, but not simple-fb?
>>>>
>>>
>>> The EFI GOP is just a dumb framebuffer, and it is not even generally
>>> possible to cross reference the GOP with a particular device in the
>>> device hierarchy unless you e.g., compare the BARs of each device with
>>> the region described by the GOP protocol.
>>>
>>> GRUB for EFI will use the GOP and nothing else, but only at boot time
>>> (the GOP protocol is more than a magic linear memory region, it also
>>> implements a Blt() abstraction that permits the use of framebuffers
>>> that are not mapped linearly into the address space at all, and GRUB
>>> makes use of this)
>>>
>>> The EFI stub will only expose GOPs to the kernel if they are in fact
>>> linear framebuffers, but has zero insight into whether the hardware
>>> needs clocks and regulators, and whether or not the framebuffer needs
>>> IOMMU pass through (which might be the case if the scanout is using
>>> DMA into system memory)
>>>
>>> So calling EFI GOP 'source of truth' is rather generous, and I think
>>> it makes sense to prioritize more accurate descriptions of the
>>> underlying framebuffer over EFI GOP.
>>>
>>
>> That was my opinion as well and the reason why I called the DTB the
>> single source of truth.
>>
>>> However, making 'simple-framebuffer' magic in this regard doesn't seem
>>> like a great approach to me. Is there a better way we could get the
>>> resource conflict to be decided in a way where the EFI GOP gets
>>> superseded if its resources are claimed by another device?
>>>
>>
>> There is an aperture [0] framework that is used by the fbdev and DRM
>> subsystems to allow native drivers to remove any conflicting devices
>> that share the same framebuffer aperture.
>>
>> But it only makes sense for native drivers to use that I think, but
>> in this case is about two drivers that attempt to use the same frame
>> buffer provided by the firmware but getting it from different places.
>>
>> I don't have a better idea than this patch but maybe Thomas or Sima do?
>
> At SUSE, we've carried such a patch in our repos for some time. It works
> around the double-framebuffer problem in a similar way. [1]
>
Thanks for the information. I see that your patch is basically mine but
doing it unconditionally while this one only does the sysfb_disable() if
a "simple-framebuffer" DT node has been found.
> As Javier mentioned, we do track the framebuffer ranges for EFI/VESA/OF
> framebuffers in the graphics aperture helpers. Fbdev has done this for
> decades, and the current codebase extends and harmonizes this
> functionality among fbdev and DRM drivers.
>
> WRT DT vs EFI: AFAIK the EFI support on affected platforms looks at the
> DT to set up the EFI framebuffer. So IMHO the DT is the authoritative
> source on the framebuffer.
>
Agreed. Sima Vetter also mentioned on IRC that they think this patch is
the least bad option. Rob, Ard any thoughts? Maybe we can land this as
a fix and then figure how this could be better handled in the long term?
> Best regards
> Thomas
>
> [1] https://bugzilla.suse.com/show_bug.cgi?id=1204315
>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
next prev parent reply other threads:[~2023-12-01 10:21 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-13 8:51 [RFC PATCH] of/platform: Disable sysfb if a simple-framebuffer node is found Javier Martinez Canillas
2023-11-13 9:18 ` Thomas Zimmermann
2023-11-13 12:35 ` Andrew Worsley
2023-11-13 12:57 ` Javier Martinez Canillas
2023-11-13 13:19 ` Andrew Worsley
2023-11-15 20:34 ` Rob Herring
2023-11-16 9:36 ` Javier Martinez Canillas
2023-11-16 14:09 ` Rob Herring
2023-11-16 14:30 ` Ard Biesheuvel
2023-11-18 11:10 ` Javier Martinez Canillas
2023-11-23 8:49 ` Thomas Zimmermann
2023-12-01 10:21 ` Javier Martinez Canillas [this message]
2023-12-01 14:16 ` Rob Herring
2023-12-04 9:39 ` Javier Martinez Canillas
2023-12-04 14:05 ` Rob Herring
2023-12-04 16:05 ` Javier Martinez Canillas
2023-12-07 17:30 ` Rob Herring
2023-12-07 23:39 ` Javier Martinez Canillas
2023-11-16 14:40 ` Javier Martinez Canillas
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=87fs0mxlyp.fsf@minerva.mail-host-address-is-not-set \
--to=javierm@redhat.com \
--cc=amworsley@gmail.com \
--cc=ardb@kernel.org \
--cc=daniel.vetter@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=frowand.list@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marcan@marcan.st \
--cc=robh@kernel.org \
--cc=slp@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).