diff mbox

[06/12] drm: fix __alpha__ PCI lookup

Message ID 1406129207-1302-7-git-send-email-dh.herrmann@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

David Herrmann July 23, 2014, 3:26 p.m. UTC
Testing the return value of list_entry() for NULL is a no-op (as it is
just a fancy container_of() / offsetof()). Drop the superfluous if-clause
and instead verify the actual root-node is available. This is probably
what it was meant to test for from the beginning, anyway.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
---
 drivers/gpu/drm/drm_fops.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Daniel Vetter July 23, 2014, 7:29 p.m. UTC | #1
On Wed, Jul 23, 2014 at 05:26:41PM +0200, David Herrmann wrote:
> Testing the return value of list_entry() for NULL is a no-op (as it is
> just a fancy container_of() / offsetof()). Drop the superfluous if-clause
> and instead verify the actual root-node is available. This is probably
> what it was meant to test for from the beginning, anyway.
> 
> Signed-off-by: David Herrmann <dh.herrmann@gmail.com>

Oh drm handling of alpha. I've tried to dig out how this all works
together and it's dangerous. drm totally ignored this thing called dma api
so needed to handle cpu phys address vs. bus address offsets itself. If
you munge around also in the agp code (which is really only used by drm)
then you'll notice that it's handled completely differently on alpha vs.
ppc.

Tbh I'd wait until this is all officially dead and then rip it all out.
-Daniel

> ---
>  drivers/gpu/drm/drm_fops.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
> index a402061..afba0bf 100644
> --- a/drivers/gpu/drm/drm_fops.c
> +++ b/drivers/gpu/drm/drm_fops.c
> @@ -330,11 +330,11 @@ static int drm_open_helper(struct file *filp, struct drm_minor *minor)
>  			dev->hose = pci_dev->sysdata;
>  			pci_dev_put(pci_dev);
>  		}
> -		if (!dev->hose) {
> +
> +		if (!dev->hose && pci_root_buses.next) {
>  			struct pci_bus *b = list_entry(pci_root_buses.next,
> -				struct pci_bus, node);
> -			if (b)
> -				dev->hose = b->sysdata;
> +						       struct pci_bus, node);
> +			dev->hose = b->sysdata;
>  		}
>  	}
>  #endif
> -- 
> 2.0.2
>
Daniel Vetter July 23, 2014, 7:36 p.m. UTC | #2
On Wed, Jul 23, 2014 at 09:29:48PM +0200, Daniel Vetter wrote:
> On Wed, Jul 23, 2014 at 05:26:41PM +0200, David Herrmann wrote:
> > Testing the return value of list_entry() for NULL is a no-op (as it is
> > just a fancy container_of() / offsetof()). Drop the superfluous if-clause
> > and instead verify the actual root-node is available. This is probably
> > what it was meant to test for from the beginning, anyway.
> > 
> > Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
> 
> Oh drm handling of alpha. I've tried to dig out how this all works
> together and it's dangerous. drm totally ignored this thing called dma api
> so needed to handle cpu phys address vs. bus address offsets itself. If
> you munge around also in the agp code (which is really only used by drm)
> then you'll notice that it's handled completely differently on alpha vs.
> ppc.
> 
> Tbh I'd wait until this is all officially dead and then rip it all out.

I dare you for a patch to rip out alpha drm handling completely though ;-)
ppc probably needs to stay a bit longer, there's still lots of apple
hardware with radeons around.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index a402061..afba0bf 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
@@ -330,11 +330,11 @@  static int drm_open_helper(struct file *filp, struct drm_minor *minor)
 			dev->hose = pci_dev->sysdata;
 			pci_dev_put(pci_dev);
 		}
-		if (!dev->hose) {
+
+		if (!dev->hose && pci_root_buses.next) {
 			struct pci_bus *b = list_entry(pci_root_buses.next,
-				struct pci_bus, node);
-			if (b)
-				dev->hose = b->sysdata;
+						       struct pci_bus, node);
+			dev->hose = b->sysdata;
 		}
 	}
 #endif