All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Javier Martinez Canillas <javierm@redhat.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>,
	Daniel Vetter <daniel@ffwll.ch>,
	Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [Intel-gfx] [PATCH 1/8] drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers
Date: Wed, 5 Apr 2023 15:18:31 +0200	[thread overview]
Message-ID: <ZC11J3og4Kc9ta6m@phenom.ffwll.local> (raw)
In-Reply-To: <877cuqd1f8.fsf@minerva.mail-host-address-is-not-set>

On Wed, Apr 05, 2023 at 01:16:27PM +0200, Javier Martinez Canillas wrote:
> Thomas Zimmermann <tzimmermann@suse.de> writes:
> 
> [...]
> 
> >
> > Your comment says that it calls a PCI function to clean up to vgacon. 
> > That comment explains what is happening, not why. And how the PCI and 
> > vgacon code work together is non-obvious.

Would a better comment help then:

	/*
	 * gma500 is a strange hybrid device, which both acts as a pci
	 * device (for legacy vga functionality) but also more like an
	 * integrated display on a SoC where the framebuffer simply
	 * resides in main memory and not in a special pci bar (that
	 * internally redirects to a stolen range of main memory) like all
	 * other integrated pci display devices have.
	 *
	 * To catch all cases we need to both remove conflicting fw
	 * drivers for the pci device and main memory.
	 */
> >
> > Again, here's my proposal for gma500:
> >
> > // call this from psb_pci_probe()
> > int gma_remove_conflicting_framebuffers(struct pci_dev *pdev, const
> > 					struct drm_driver *req_driver)
> > {
> > 	resource_size_t base = 0;
> > 	resource_size_t size = (resource_size_t)-1;
> > 	const char *name = req_driver->name;
> > 	int ret;
> >
> > 	/*
> > 	 * We cannot yet easily find the framebuffer's location in
> > 	 * memory. So remove all framebuffers here.
> > 	 *
> > 	 * TODO: Refactor psb_driver_load() to map vdc_reg earlier. Then
> > 	 *       we might be able to read the framebuffer range from the
> > 	 *       device.
> > 	 */
> > 	ret = aperture_remove_conflicting_devices(base, size, name);

Why can't this be a call to drm_aperture_remove_framebuffers? At least as
long as we don't implement the "read out actual fb base and size" code,
which also none of the other soc drivers bother with?

> > 	if (ret)
> > 		return ret;
> >
> > 	/*
> > 	 * WARNING: Apparently we must kick fbdev drivers before vgacon,
> > 	 * otherwise the vga fbdev driver falls over.
> > 	 */
> > 	ret = vga_remove_vgacon(pdev);

This isn't enough, we also nuke stuff that's mapping the vga fb range.
Which is really the reason I don't want to open code random stuff, pci is
self-describing, if it's decoding legacy vga it can figure this out and we
only have to implement the "how do I nuke legacy vga fw drivers from a pci
driver" once.

Not twice like this would result in, with the gma500 version being only
half the thing.

If it absolutely has to be a separate function for the gma500 pci legacy
vga (I still don't get why, it's just a pci vga device, there's absolutely
nothing special about that part at all) then I think it needs to be at
least a common "nuke a legacy vga device for me pls" function, which
shares the implementation with the pci one.

But not open-coding just half of it only.

> > 	if (ret)
> > 		return ret;
> >
> > 	return 0;
> > }
> >
> 
> If this is enough I agree that is much more easier code to understand.

It's still two calls and more code with more bugs? I'm not seeing the
point.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Javier Martinez Canillas <javierm@redhat.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>,
	Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH 1/8] drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers
Date: Wed, 5 Apr 2023 15:18:31 +0200	[thread overview]
Message-ID: <ZC11J3og4Kc9ta6m@phenom.ffwll.local> (raw)
In-Reply-To: <877cuqd1f8.fsf@minerva.mail-host-address-is-not-set>

On Wed, Apr 05, 2023 at 01:16:27PM +0200, Javier Martinez Canillas wrote:
> Thomas Zimmermann <tzimmermann@suse.de> writes:
> 
> [...]
> 
> >
> > Your comment says that it calls a PCI function to clean up to vgacon. 
> > That comment explains what is happening, not why. And how the PCI and 
> > vgacon code work together is non-obvious.

Would a better comment help then:

	/*
	 * gma500 is a strange hybrid device, which both acts as a pci
	 * device (for legacy vga functionality) but also more like an
	 * integrated display on a SoC where the framebuffer simply
	 * resides in main memory and not in a special pci bar (that
	 * internally redirects to a stolen range of main memory) like all
	 * other integrated pci display devices have.
	 *
	 * To catch all cases we need to both remove conflicting fw
	 * drivers for the pci device and main memory.
	 */
> >
> > Again, here's my proposal for gma500:
> >
> > // call this from psb_pci_probe()
> > int gma_remove_conflicting_framebuffers(struct pci_dev *pdev, const
> > 					struct drm_driver *req_driver)
> > {
> > 	resource_size_t base = 0;
> > 	resource_size_t size = (resource_size_t)-1;
> > 	const char *name = req_driver->name;
> > 	int ret;
> >
> > 	/*
> > 	 * We cannot yet easily find the framebuffer's location in
> > 	 * memory. So remove all framebuffers here.
> > 	 *
> > 	 * TODO: Refactor psb_driver_load() to map vdc_reg earlier. Then
> > 	 *       we might be able to read the framebuffer range from the
> > 	 *       device.
> > 	 */
> > 	ret = aperture_remove_conflicting_devices(base, size, name);

Why can't this be a call to drm_aperture_remove_framebuffers? At least as
long as we don't implement the "read out actual fb base and size" code,
which also none of the other soc drivers bother with?

> > 	if (ret)
> > 		return ret;
> >
> > 	/*
> > 	 * WARNING: Apparently we must kick fbdev drivers before vgacon,
> > 	 * otherwise the vga fbdev driver falls over.
> > 	 */
> > 	ret = vga_remove_vgacon(pdev);

This isn't enough, we also nuke stuff that's mapping the vga fb range.
Which is really the reason I don't want to open code random stuff, pci is
self-describing, if it's decoding legacy vga it can figure this out and we
only have to implement the "how do I nuke legacy vga fw drivers from a pci
driver" once.

Not twice like this would result in, with the gma500 version being only
half the thing.

If it absolutely has to be a separate function for the gma500 pci legacy
vga (I still don't get why, it's just a pci vga device, there's absolutely
nothing special about that part at all) then I think it needs to be at
least a common "nuke a legacy vga device for me pls" function, which
shares the implementation with the pci one.

But not open-coding just half of it only.

> > 	if (ret)
> > 		return ret;
> >
> > 	return 0;
> > }
> >
> 
> If this is enough I agree that is much more easier code to understand.

It's still two calls and more code with more bugs? I'm not seeing the
point.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2023-04-05 13:18 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-04 20:18 [Intel-gfx] [PATCH 1/8] drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers Daniel Vetter
2023-04-04 20:18 ` Daniel Vetter
2023-04-04 20:18 ` [Intel-gfx] [PATCH 2/8] video/aperture: use generic code to figure out the vga default device Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-05 11:27   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:27     ` Javier Martinez Canillas
2023-04-05 11:27     ` Javier Martinez Canillas
2023-04-04 20:18 ` [Intel-gfx] [PATCH 3/8] drm/aperture: Remove primary argument Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 21:20   ` [Intel-gfx] " Martin Blumenstingl
2023-04-04 21:20     ` Martin Blumenstingl
2023-04-04 21:20     ` Martin Blumenstingl
2023-04-04 21:20     ` Martin Blumenstingl
2023-04-04 21:20     ` Martin Blumenstingl
2023-04-05  9:25   ` [Intel-gfx] " Thierry Reding
2023-04-05  9:25     ` Thierry Reding
2023-04-05  9:25     ` Thierry Reding
2023-04-05  9:25     ` Thierry Reding
2023-04-05  9:25     ` Thierry Reding
2023-04-05 11:30   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:30     ` Javier Martinez Canillas
2023-04-05 11:30     ` Javier Martinez Canillas
2023-04-05 11:30     ` Javier Martinez Canillas
2023-04-05 11:30     ` Javier Martinez Canillas
2023-04-04 20:18 ` [Intel-gfx] [PATCH 4/8] video/aperture: Only kick vgacon when the pdev is decoding vga Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-05 11:31   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:31     ` Javier Martinez Canillas
2023-04-05 11:31     ` Javier Martinez Canillas
2023-04-04 20:18 ` [Intel-gfx] [PATCH 5/8] video/aperture: Move vga handling to pci function Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-05 11:34   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:34     ` Javier Martinez Canillas
2023-04-05 11:34     ` Javier Martinez Canillas
2023-04-04 20:18 ` [Intel-gfx] [PATCH 6/8] video/aperture: Drop primary argument Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-05 11:36   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:36     ` Javier Martinez Canillas
2023-04-05 11:36     ` Javier Martinez Canillas
2023-04-04 20:18 ` [Intel-gfx] [PATCH 7/8] video/aperture: Only remove sysfb on the default vga pci device Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-04 20:59   ` [Intel-gfx] " Aaron Plattner
2023-04-04 20:59     ` Aaron Plattner
2023-04-04 20:59     ` Aaron Plattner
2023-04-05  8:48     ` [Intel-gfx] " Daniel Vetter
2023-04-05  8:48       ` Daniel Vetter
2023-04-05  8:48       ` Daniel Vetter
2023-04-05 11:37   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:37     ` Javier Martinez Canillas
2023-04-05 11:37     ` Javier Martinez Canillas
2023-04-04 20:18 ` [Intel-gfx] [PATCH 8/8] fbdev: Simplify fb_is_primary_device for x86 Daniel Vetter
2023-04-04 20:18   ` Daniel Vetter
2023-04-05 11:40   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:40     ` Javier Martinez Canillas
2023-04-04 23:44 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/8] drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers Patchwork
2023-04-04 23:44 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-04-04 23:51 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-04-05  7:49 ` [Intel-gfx] [PATCH 1/8] " Thomas Zimmermann
2023-04-05  7:49   ` Thomas Zimmermann
2023-04-05  8:05   ` [Intel-gfx] " Patrik Jakobsson
2023-04-05  8:05     ` Patrik Jakobsson
2023-04-05  8:15     ` [Intel-gfx] " Thomas Zimmermann
2023-04-05  8:15       ` Thomas Zimmermann
2023-04-05  8:07   ` [Intel-gfx] " Thomas Zimmermann
2023-04-05  8:07     ` Thomas Zimmermann
2023-04-05  8:59     ` [Intel-gfx] " Daniel Vetter
2023-04-05  8:59       ` Daniel Vetter
2023-04-05  9:26       ` [Intel-gfx] " Thomas Zimmermann
2023-04-05  9:26         ` Thomas Zimmermann
2023-04-05  9:38         ` [Intel-gfx] " Daniel Vetter
2023-04-05  9:38           ` Daniel Vetter
2023-04-05 11:00           ` [Intel-gfx] " Thomas Zimmermann
2023-04-05 11:00             ` Thomas Zimmermann
2023-04-05 11:16             ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 11:16               ` Javier Martinez Canillas
2023-04-05 13:18               ` Daniel Vetter [this message]
2023-04-05 13:18                 ` Daniel Vetter
2023-04-05 14:32                 ` [Intel-gfx] " Thomas Zimmermann
2023-04-05 14:32                   ` Thomas Zimmermann
2023-04-05 16:02                   ` [Intel-gfx] " Daniel Vetter
2023-04-05 16:02                     ` Daniel Vetter
2023-04-05 16:54                     ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 16:54                       ` Javier Martinez Canillas
2023-04-05 17:14                       ` [Intel-gfx] " Daniel Vetter
2023-04-05 17:14                         ` Daniel Vetter
2023-04-05 17:43                         ` [Intel-gfx] " Javier Martinez Canillas
2023-04-05 17:43                           ` Javier Martinez Canillas
2023-04-05 17:46                         ` [Intel-gfx] " Patrik Jakobsson
2023-04-06  7:31                           ` Daniel Vetter
2023-04-06 11:16                             ` Patrik Jakobsson
2023-04-05  8:19 ` Thomas Zimmermann
2023-04-05  8:19   ` Thomas Zimmermann
2023-04-05  9:09   ` [Intel-gfx] " Daniel Vetter
2023-04-05  9:09     ` Daniel Vetter
2023-04-05 10:10 ` [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/8] " Patchwork
2023-04-06  7:14 ` [Intel-gfx] [PATCH 1/8] " Thomas Zimmermann
2023-04-06  7:14   ` Thomas Zimmermann
2023-04-06  8:38   ` [Intel-gfx] " Javier Martinez Canillas
2023-04-06  8:38     ` Javier Martinez Canillas
2023-04-06  8:49     ` [Intel-gfx] " Thomas Zimmermann
2023-04-06  8:49       ` Thomas Zimmermann
2023-04-06  9:05       ` [Intel-gfx] " Javier Martinez Canillas
2023-04-06  9:05         ` Javier Martinez Canillas
2023-04-06  9:05 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [1/8] drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers (rev2) Patchwork

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=ZC11J3og4Kc9ta6m@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=javierm@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 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.