Thomas Zimmermann <tzimmermann@xxxxxxx> 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. > > 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); > 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); > if (ret) > return ret; > > return 0; > } > If this is enough I agree that is much more easier code to understand. -- Best regards, Javier Martinez Canillas Core Platforms Red Hat