On Tue, Jun 12, 2012 at 02:58:25PM +0300, Jani Nikula wrote:
On Thu, 07 Jun 2012, Daniel Vetter daniel.vetter@ffwll.ch wrote:
We need it for all things ums (which essentially only means up to gen5) and to support b0rked XvMC userspace on gen3.
Signed-Off-by: Daniel Vetter daniel.vetter@ffwll.ch
drivers/gpu/drm/i915/i915_dma.c | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index e4203df..0ab5d3d 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1422,15 +1422,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) int ret = 0, mmio_bar; uint32_t aperture_size;
ret = drm_pci_agp_init(dev);
if (ret)
return ret;
if (!dev->agp) {
DRM_ERROR("Cannot initialize the agpgart module.\n");
return -EINVAL;
}
info = (struct intel_device_info *) flags;
/* Refuse to load on gen6+ without kms enabled. */
@@ -1453,6 +1444,18 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) dev_priv->dev = dev; dev_priv->info = info;
- if (!drm_core_check_feature(dev, DRIVER_MODESET) ||
IS_GEN3(dev)) {
ret = drm_pci_agp_init(dev);
if (ret)
return ret;
if (!dev->agp) {
DRM_ERROR("Cannot initialize the agpgart module.\n");
return -EINVAL;
}
You need to goto free_priv in the above error paths.
Nice catch, will fix.
Should there be a deinit of drm_pci_agp_init() if something goes wrong afterwards?
drm core should do that for use (but currently doesn't) by deinit agp if it's initialized. The follow-up patches to wrestle the drm driver init paths /should/ take care of this though. -Daniel