Re: [PATCH] drm: fixed access to PCI host bridges

From: Dave Airlie
Date: Wed Dec 26 2012 - 17:47:49 EST


On Thu, Dec 27, 2012 at 8:40 AM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote:
> On Sat, Dec 22, 2012 at 12:01 PM, Lucas Kannebley Tavares
> <lucaskt@xxxxxxxxxxxxxxxxxx> wrote:
>> During the process of obtaining the speed cap for the device, it
>> attempts go get the PCI Host bus. However on architectures such as PPC
>> or IA64, those do not appear as devices.
>>
>> Signed-off-by: Lucas Kannebley Tavares <lucaskt@xxxxxxxxxxxxxxxxxx>
>> ---
>> drivers/gpu/drm/drm_pci.c | 5 +++++
>> 1 files changed, 5 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
>> index 754bc96..ea41234 100644
>> --- a/drivers/gpu/drm/drm_pci.c
>> +++ b/drivers/gpu/drm/drm_pci.c
>> @@ -479,8 +479,13 @@ int drm_pcie_get_speed_cap_mask(struct drm_device *dev,
>> u32 *mask)
>> if (!pci_is_pcie(dev->pdev))
>> return -EINVAL;
>>
>> + // find PCI device for capabilities
>> root = dev->pdev->bus->self;
>>
>> + // some architectures might not have host bridges as PCI devices
>> + if (root == NULL)
>> + root = dev->pdev;
>
> You didn't address my question about this. Obviously this will avoid
> a null pointer dereference. But you have to also explain why this
> change is correct.
>
> If it's good enough to just look at the capabilities of the DRM device
> (not the upstream bridge) on PPC and ia64, why not do that everywhere
> and forget about the bridge completely?

Yeah this doesn't make sense, we need to know if the device and the
bridge are capable of doing PCIE gen2+ speeds.

At least I'm willing to accept spec pointers to why we might not need
to ask the bridge, but my current understanding is we need to know
both.

Dave.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/