From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcin Slusarz Subject: Re: [PATCH] drm/radeon: Add early unregister of firmware fb's Date: Wed, 6 Oct 2010 20:20:15 +0200 Message-ID: <20101006182015.GA3640@joi.lan> References: <1286383147-5180-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-bw0-f49.google.com (mail-bw0-f49.google.com [209.85.214.49]) by gabe.freedesktop.org (Postfix) with ESMTP id BFF319E761 for ; Wed, 6 Oct 2010 11:21:30 -0700 (PDT) Received: by bwz19 with SMTP id 19so7517849bwz.36 for ; Wed, 06 Oct 2010 11:21:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1286383147-5180-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Daniel Vetter Cc: Dave Airlie , stable@kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org On Wed, Oct 06, 2010 at 06:39:07PM +0200, Daniel Vetter wrote: > From: Benjamin Herrenschmidt > > Without this, we attempt the handover too late, the firmware fb > might be accessing the chip simultaneously to us re-initializing > various parts of it, which might frighten babies or cause all sort > of nasty psychologic trauma to kitten. > > Cc: stable@kernel.org > Signed-off-by: Benjamin Herrenschmidt > [danvet: add cc: stable, forward ported and compile-fixed for X86] > Signed-off-by: Daniel Vetter > --- > > This patch is required to get the agp rv270 in my ppc Mac Mini working with > kms. Also tested on my agp rv570 on amd64, doesn't seem to have ill > effects there. > > Please review and apply. > > Thanks, Daniel > > drivers/gpu/drm/radeon/radeon_device.c | 19 +++++++++++++++++++ > 1 files changed, 19 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c > index 256d204..3aea1a8 100644 > --- a/drivers/gpu/drm/radeon/radeon_device.c > +++ b/drivers/gpu/drm/radeon/radeon_device.c > @@ -584,6 +584,22 @@ static bool radeon_switcheroo_can_switch(struct pci_dev *pdev) > } > > > +static void radeon_kick_out_firmware_fb(struct drm_device *ddev) > +{ > + struct apertures_struct *ap; > + bool primary = false; > + > + ap = alloc_apertures(1); > + ap->ranges[0].base = pci_resource_start(ddev->pdev, 0); > + ap->ranges[0].size = pci_resource_len(ddev->pdev, 0); Any reason why this range differs from the one in radeonfb_create? Maybe it needs to be fixed there too? > + > +#ifdef CONFIG_X86 > + primary = ddev->pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; > +#endif > + remove_conflicting_framebuffers(ap, "radeondrmfb", primary); > + kfree(ap); > +} > + > int radeon_device_init(struct radeon_device *rdev, > struct drm_device *ddev, > struct pci_dev *pdev, > @@ -623,6 +639,9 @@ int radeon_device_init(struct radeon_device *rdev, > init_waitqueue_head(&rdev->irq.vblank_queue); > init_waitqueue_head(&rdev->irq.idle_queue); > > + /* Get rid of things like offb */ > + radeon_kick_out_firmware_fb(ddev); > + > /* setup workqueue */ > rdev->wq = create_workqueue("radeon"); > if (rdev->wq == NULL) > -- > 1.7.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel