From patchwork Fri Jan 13 04:55:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abylay Ospan X-Patchwork-Id: 714796 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3v09Xb3b3Lz9t1H for ; Fri, 13 Jan 2017 16:04:31 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=netup.ru header.i=@netup.ru header.b="Wd0ObtVz"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751192AbdAMFEQ (ORCPT ); Fri, 13 Jan 2017 00:04:16 -0500 Received: from imap.netup.ru ([77.72.80.14]:56042 "EHLO imap.netup.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750713AbdAMFDV (ORCPT ); Fri, 13 Jan 2017 00:03:21 -0500 X-Greylist: delayed 363 seconds by postgrey-1.27 at vger.kernel.org; Fri, 13 Jan 2017 00:02:18 EST Received: from mail-io0-f180.google.com (mail-io0-f180.google.com [209.85.223.180]) by imap.netup.ru (Postfix) with ESMTPSA id 102EB84FC2E; Fri, 13 Jan 2017 07:55:45 +0300 (MSK) X-DKIM: OpenDKIM Filter v2.6.8 imap.netup.ru 102EB84FC2E DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=netup.ru; s=imap; t=1484283345; bh=KA6iCVFZ1+fhX5HJie7EhmNl2eyOvonMdSIcyqNy2Qc=; h=In-Reply-To:References:From:Date:Subject:To:Cc; b=Wd0ObtVzT1XLU14MVyPCqApjqj74dU9l/VH+dEduo9NcZk1hdEkdKWknNmPgsDq3n 1Uy1M8y3LmgMFblcMWb0FEeYeGvxqUBI+U9mzgCeKgG31C5oTu0NwmOwW2Kzrs9A+A i9Kx2P8u1GHWpASJzrlUUF8lbanHN/xKo7M6sV70= Received: by mail-io0-f180.google.com with SMTP id v96so35736706ioi.0; Thu, 12 Jan 2017 20:55:44 -0800 (PST) X-Gm-Message-State: AIkVDXL6yQsxk6Hi4llYFB+hPgqpgPiWSUE9MnH7ghLoRyOdvSdBLlnUsibFCxcQYIJwBQGZuh9q0ahEvqSrLg== X-Received: by 10.107.8.194 with SMTP id h63mr19048910ioi.70.1484283343416; Thu, 12 Jan 2017 20:55:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.36.64.202 with HTTP; Thu, 12 Jan 2017 20:55:23 -0800 (PST) In-Reply-To: <6cfba8af-1e9b-cb43-4898-61d6fb8f12ca@broadcom.com> References: <1484266817-6725-1-git-send-email-aospan@netup.ru> <6891f43f-25e7-1411-800e-97e6788f2f27@gmail.com> <6cfba8af-1e9b-cb43-4898-61d6fb8f12ca@broadcom.com> From: Abylay Ospan Date: Thu, 12 Jan 2017 23:55:23 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] PCI: iproc: fix kernel crash if dev->of_node not defined To: Florian Fainelli Cc: Ray Jui , Florian Fainelli , Bjorn Helgaas , Ray Jui , Scott Branden , Jon Mason , bcm-kernel-feedback-list@broadcom.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Hi Florian, > Still, upstream Linux support for Northstar is Device Tree, and BCMA bus > should fill in of_nodes accordingly, if not, that's a bug that must be > fixed at the BCMA layer. yes, this is a source of the problem. Devices allocated in 'bcma_bus_scan' but of_node doesn't assigned. Is some code missing in drivers/bcma/ which should assign of_node ? I can suggest following "hacky" patch for this (works for me): Author: Abylay Ospan Date: Fri Jan 13 07:24:13 2017 +0300 bcma: force assign 'of_node' for devices on the bus prevent other code to fail if no 'of_node' defined Signed-off-by: Abylay Ospan > >> >>> >>>> >>>> Signed-off-by: Abylay Ospan >>>> --- >>>> drivers/pci/host/pcie-iproc.c | 3 +++ >>>> 1 file changed, 3 insertions(+) >>>> >>>> diff --git a/drivers/pci/host/pcie-iproc.c b/drivers/pci/host/pcie-iproc.c >>>> index 3ebc025..f2836a9 100644 >>>> --- a/drivers/pci/host/pcie-iproc.c >>>> +++ b/drivers/pci/host/pcie-iproc.c >>>> @@ -952,6 +952,9 @@ static int pci_dma_range_parser_init(struct of_pci_range_parser *parser, >>>> const int na = 3, ns = 2; >>>> int rlen; >>>> >>>> + if (!node) >>>> + return -ENOENT; >>>> + >>>> parser->node = node; >>>> parser->pna = of_n_addr_cells(node); >>>> parser->np = parser->pna + na + ns; >>>> >>> >>> > > > -- > Florian diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index 2c1798e..4fe1c92 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -301,6 +301,11 @@ void bcma_init_bus(struct bcma_bus *bus) static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core) { int err; + struct device * dev; + + dev = bcma_bus_get_host_dev(bus); + if (dev && !core->dev.of_node) + core->dev.of_node = dev->of_node; if it's ok I will send this patch in separate email.