From: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com>
To: dri-devel@lists.freedesktop.org
Cc: David Airlie <airlied@linux.ie>,
bhelgaas@google.com, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org, brking@linux.vnet.ibm.com,
benh@au1.ibm.com
Subject: drm: Added ppc64 root device getter
Date: Thu, 13 Dec 2012 21:04:02 -0200 [thread overview]
Message-ID: <50CA5EE2.30206@linux.vnet.ibm.com> (raw)
On architectures such as ppc64, there is no root bus device (it belongs
to the hypervisor). DRM attempted to get one, causing a null-pointer
dereference.
Signed-off-by: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com>
--
diff --git a/arch/powerpc/platforms/pseries/Makefile
b/arch/powerpc/platforms/pseries/Makefile
index 890622b..ddfdda8 100644
--- a/arch/powerpc/platforms/pseries/Makefile
+++ b/arch/powerpc/platforms/pseries/Makefile
@@ -1,6 +1,8 @@
ccflags-$(CONFIG_PPC64) := -mno-minimal-toc
ccflags-$(CONFIG_PPC_PSERIES_DEBUG) += -DDEBUG
+drm-y += drm_pci.o
+
obj-y := lpar.o hvCall.o nvram.o reconfig.o \
setup.o iommu.o event_sources.o ras.o \
firmware.o power.o dlpar.o mobility.o
diff --git a/arch/powerpc/platforms/pseries/drm_pci.c
b/arch/powerpc/platforms/pseries/drm_pci.c
new file mode 100644
index 0000000..da6675e
--- /dev/null
+++ b/arch/powerpc/platforms/pseries/drm_pci.c
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 Lucas Kannebley Tavares, IBM Corporation
+ *
+ * pSeries specific routines for DRM.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+inline struct pci_device *drm_get_parent_device(struct drm_device *dev) {
+ return (dev->pdev->bus->self == NULL) ? dev->pdev : dev->pdev->bus->self;
+}
+
diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
index eb37466..5a8a4f5 100644
--- a/drivers/gpu/drm/drm_pci.c
+++ b/drivers/gpu/drm/drm_pci.c
@@ -466,6 +466,10 @@ void drm_pci_exit(struct drm_driver *driver, struct
pci_driver *pdriver)
}
EXPORT_SYMBOL(drm_pci_exit);
+inline __weak struct pci_device *drm_get_parent_device(struct
drm_device *dev) {
+ return dev->pdev->bus->self;
+}
+
int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *mask)
{
struct pci_dev *root;
@@ -479,7 +483,7 @@ int drm_pcie_get_speed_cap_mask(struct drm_device
*dev, u32 *mask)
return -EINVAL;
// find PCI device for capabilities
- root = dev->pdev->bus->self;
+ root = drm_get_parent_device(dev);
// some architectures might not have host bridges as PCI devices
if (root == NULL)
--
Lucas Kannebley Tavares
Software Engineer
IBM Linux Technology Center
next reply other threads:[~2012-12-13 23:04 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-13 23:04 Lucas Kannebley Tavares [this message]
2012-12-13 23:31 ` drm: Added ppc64 root device getter Bjorn Helgaas
2012-12-22 19:00 ` Lucas Kannebley Tavares
2012-12-22 19:01 ` [PATCH] drm: fixed access to PCI host bridges Lucas Kannebley Tavares
2012-12-26 22:40 ` Bjorn Helgaas
2012-12-26 22:47 ` Dave Airlie
2012-12-22 19:07 ` [PATCH] drm: change pci_read_config_dword calls to pcie_capability_read_dword ones Lucas Kannebley Tavares
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50CA5EE2.30206@linux.vnet.ibm.com \
--to=lucaskt@linux.vnet.ibm.com \
--cc=airlied@linux.ie \
--cc=benh@au1.ibm.com \
--cc=bhelgaas@google.com \
--cc=brking@linux.vnet.ibm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.