On Wed, Apr 05, 2023 at 10:19:55AM +0200, Thomas Zimmermann wrote: > Hi > > Am 04.04.23 um 22:18 schrieb Daniel Vetter: > > This one nukes all framebuffers, which is a bit much. In reality > > gma500 is igpu and never shipped with anything discrete, so there should > > not be any difference. > > I do own an Intel DN2800MT board with gma500 hardware. [1] It has a PCIe x1 > slot. I never tried, but in principle, there could be another graphics card > in the system. The linked spec say 'Discrete: None'. I don't know what that > means exactly. Well even if that's the case, I'm not making the situation worse. Because the old code also nuked everything. The new one at least only nukes the vga if gma500 is decoding that, and not the the discrete card. In practice it won't help, because I don't think you'll boot this in legacy vga mode with vga16fb :-) -Daniel > > Best regards > Thomas > > [1] https://ark.intel.com/content/www/us/en/ark/products/56455/intel-desktop-board-dn2800mt.html > > > > > v2: Unfortunately the framebuffer sits outside of the pci bars for > > gma500, and so only using the pci helpers won't be enough. Otoh if we > > only use non-pci helper, then we don't get the vga handling, and > > subsequent refactoring to untangle these special cases won't work. > > > > It's not pretty, but the simplest fix (since gma500 really is the only > > quirky pci driver like this we have) is to just have both calls. > > > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > > Cc: Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx> > > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > > Cc: Javier Martinez Canillas <javierm@xxxxxxxxxx> > > --- > > drivers/gpu/drm/gma500/psb_drv.c | 9 +++++++-- > > 1 file changed, 7 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c > > index 2ce96b1b9c74..f1e0eed8fea4 100644 > > --- a/drivers/gpu/drm/gma500/psb_drv.c > > +++ b/drivers/gpu/drm/gma500/psb_drv.c > > @@ -422,12 +422,17 @@ static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > > /* > > * We cannot yet easily find the framebuffer's location in memory. So > > - * remove all framebuffers here. > > + * remove all framebuffers here. Note that we still want the pci special > > + * handling to kick out vgacon. > > * > > * TODO: Refactor psb_driver_load() to map vdc_reg earlier. Then we > > * might be able to read the framebuffer range from the device. > > */ > > - ret = drm_aperture_remove_framebuffers(true, &driver); > > + ret = drm_aperture_remove_framebuffers(false, &driver); > > + if (ret) > > + return ret; > > + > > + ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver); > > if (ret) > > return ret; > > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Maxfeldstr. 5, 90409 Nürnberg, Germany > (HRB 36809, AG Nürnberg) > Geschäftsführer: Ivo Totev -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch