Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1384020pxb; Thu, 28 Jan 2021 15:24:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJwBRSvCbKrfEGn3BxvMZhf4N2KL9naiALHP6IIuEGLsvRR4OUopEVvwIpVsQfxnJN96uccm X-Received: by 2002:a17:906:48c:: with SMTP id f12mr1780149eja.431.1611876275546; Thu, 28 Jan 2021 15:24:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611876275; cv=none; d=google.com; s=arc-20160816; b=Rm7bGJzcb2G6p/JMgsy5QQAPfWzcVZzoP2L6P8T7+Vj/N/Dh5FpfGwFYzotqzXwXu4 I0qfXeuctg8/cE5UU2Rovg122a03kY4SV8qumR/gofHHR+MFpfns1Y4pc+87orG216db 7BBrsfuI+53mqakVC3/UC7aGlobin3RnwOKbpmX1BvhyE+/cfVQhoMFgXKA2yQHjd/qF 3oWA8VacvoFBpXPSyU0RSuGQmwLrnrFyfLnuZ6mVN7PFQYYgX3s9e/Cmai7BynpxOtmj hPAu/MDPNrZzdvHnvu6GgTbIRSBhOBYhQYU8TCW6rZOYonY9+B6aTB8XI8ReNHyxE9ZF G3GQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version; bh=ydH4nhxewK7vs+CzByTZsj+twADBwFlu+n9oaryGu3g=; b=DphJxxtSQ8ygpdRlosNqjKiiiigPRMqTTteDF7i6535cyhtAzqT1Xo9j7XP5uPFrob TTNYesWM9fkRy3SrnSwT0RSMJWg7w75rX+aJXlIUkStEr+AppieEVZkXVhqqIAGneblx jIZ4X5Z1eoXea6JYuPfkPOnbMUMQR62rdcUgltY6EleGSiXOoOGdHVLW74ZSB/IfshnL P5DDlVDLE+cwUZJ6mF4EZQkBso0rfO9hEyziMcA1/1avSTDWGlb9liRoSYwA8sRwU7rX OeHcfCG2Xp+PX5cXk6PNJRjWS0RfKb0Ia51TQHzSHq+c+7jXw4nFz5p8FhX6D66n+4f4 SwAA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bl4si3950530ejb.47.2021.01.28.15.24.11; Thu, 28 Jan 2021 15:24:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231723AbhA1XW7 (ORCPT + 99 others); Thu, 28 Jan 2021 18:22:59 -0500 Received: from mail-oo1-f53.google.com ([209.85.161.53]:42689 "EHLO mail-oo1-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231703AbhA1XW4 (ORCPT ); Thu, 28 Jan 2021 18:22:56 -0500 Received: by mail-oo1-f53.google.com with SMTP id g46so1859244ooi.9; Thu, 28 Jan 2021 15:22:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ydH4nhxewK7vs+CzByTZsj+twADBwFlu+n9oaryGu3g=; b=IJlJC3Qs0gVk7M/YqtVq22LZ8sjoohEOaF5AP3U4pIiKC3PYqtFyvYjqnEuZJHm/UC O4IJp0lOA8DtpDy+AAcIRyE5/yV55T/FMrz1zHjRu1OnDT/AiMZiF+avbx6gCDtun5/D 2uojSCNJVhN1Md78PLMqs52zfZ9gQv+3alRtQZpQWI0wQf94fQ0+AYtwm602XQr5UhUx nP4oZgfMFLoILsZsfe3zBgjtZawV4nW1hq9euuc2adX6faztP9IfX2Ok8/8a3wqqVwGx OqWpvxw3MsC/pa5NvPF+74nmcNkUF9400sZb0WR+Q+9bJ9XlG+GgiICfSRZ8hQsgaCg4 m09Q== X-Gm-Message-State: AOAM5302vT+HO7BZNItQE/vbeFEF4ZJxbk1vHNIUKVwZl7o4ZOV+jYoF 8gxmhsa0VmfAA2PsRukQUnhf30z4das= X-Received: by 2002:a4a:a22a:: with SMTP id m42mr1356247ool.22.1611876134785; Thu, 28 Jan 2021 15:22:14 -0800 (PST) Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com. [209.85.167.177]) by smtp.gmail.com with ESMTPSA id t65sm1537692oie.25.2021.01.28.15.22.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 28 Jan 2021 15:22:14 -0800 (PST) Received: by mail-oi1-f177.google.com with SMTP id w8so7963523oie.2; Thu, 28 Jan 2021 15:22:13 -0800 (PST) X-Received: by 2002:aca:f382:: with SMTP id r124mr1069457oih.175.1611876133354; Thu, 28 Jan 2021 15:22:13 -0800 (PST) MIME-Version: 1.0 References: <20210108093610.28595-1-Zhiqiang.Hou@nxp.com> <20210108093610.28595-2-Zhiqiang.Hou@nxp.com> In-Reply-To: <20210108093610.28595-2-Zhiqiang.Hou@nxp.com> From: Li Yang Date: Thu, 28 Jan 2021 17:22:02 -0600 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCHv3 1/7] PCI: dwc: Fix a bug of the case dw_pci->ops is NULL To: Zhiqiang Hou , Bjorn Helgaas Cc: linux-pci@vger.kernel.org, "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , lkml , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , Lorenzo Pieralisi , Rob Herring , Shawn Guo , gustavo.pimentel@synopsys.com, Minghuan Lian , Mingkai Hu , Roy Zang Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 8, 2021 at 3:29 AM Zhiqiang Hou wrote: > > From: Hou Zhiqiang > > The dw_pci->ops may be a NULL, and fix it by adding one more check. > > Signed-off-by: Hou Zhiqiang > Reviewed-by: Rob Herring > Acked-by: Gustavo Pimentel Hi Bjorn, This is causing many layerscape platforms to fail to boot. Can you help to pick up this patch? Or are you actually preferring other solutions like creating dummy ops when it is not needed? Regards, Leo > --- > V3: > - Rebased against the latest code base > > drivers/pci/controller/dwc/pcie-designware-host.c | 2 +- > drivers/pci/controller/dwc/pcie-designware.c | 14 +++++++------- > 2 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c > index 516b151e0ef3..0413284fdd93 100644 > --- a/drivers/pci/controller/dwc/pcie-designware-host.c > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c > @@ -429,7 +429,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > dw_pcie_setup_rc(pp); > dw_pcie_msi_init(pp); > > - if (!dw_pcie_link_up(pci) && pci->ops->start_link) { > + if (!dw_pcie_link_up(pci) && pci->ops && pci->ops->start_link) { > ret = pci->ops->start_link(pci); > if (ret) > goto err_free_msi; > diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c > index 645fa1892375..cf895c12f71f 100644 > --- a/drivers/pci/controller/dwc/pcie-designware.c > +++ b/drivers/pci/controller/dwc/pcie-designware.c > @@ -141,7 +141,7 @@ u32 dw_pcie_read_dbi(struct dw_pcie *pci, u32 reg, size_t size) > int ret; > u32 val; > > - if (pci->ops->read_dbi) > + if (pci->ops && pci->ops->read_dbi) > return pci->ops->read_dbi(pci, pci->dbi_base, reg, size); > > ret = dw_pcie_read(pci->dbi_base + reg, size, &val); > @@ -156,7 +156,7 @@ void dw_pcie_write_dbi(struct dw_pcie *pci, u32 reg, size_t size, u32 val) > { > int ret; > > - if (pci->ops->write_dbi) { > + if (pci->ops && pci->ops->write_dbi) { > pci->ops->write_dbi(pci, pci->dbi_base, reg, size, val); > return; > } > @@ -171,7 +171,7 @@ void dw_pcie_write_dbi2(struct dw_pcie *pci, u32 reg, size_t size, u32 val) > { > int ret; > > - if (pci->ops->write_dbi2) { > + if (pci->ops && pci->ops->write_dbi2) { > pci->ops->write_dbi2(pci, pci->dbi_base2, reg, size, val); > return; > } > @@ -186,7 +186,7 @@ static u32 dw_pcie_readl_atu(struct dw_pcie *pci, u32 reg) > int ret; > u32 val; > > - if (pci->ops->read_dbi) > + if (pci->ops && pci->ops->read_dbi) > return pci->ops->read_dbi(pci, pci->atu_base, reg, 4); > > ret = dw_pcie_read(pci->atu_base + reg, 4, &val); > @@ -200,7 +200,7 @@ static void dw_pcie_writel_atu(struct dw_pcie *pci, u32 reg, u32 val) > { > int ret; > > - if (pci->ops->write_dbi) { > + if (pci->ops && pci->ops->write_dbi) { > pci->ops->write_dbi(pci, pci->atu_base, reg, 4, val); > return; > } > @@ -273,7 +273,7 @@ static void __dw_pcie_prog_outbound_atu(struct dw_pcie *pci, u8 func_no, > { > u32 retries, val; > > - if (pci->ops->cpu_addr_fixup) > + if (pci->ops && pci->ops->cpu_addr_fixup) > cpu_addr = pci->ops->cpu_addr_fixup(pci, cpu_addr); > > if (pci->iatu_unroll_enabled) { > @@ -481,7 +481,7 @@ int dw_pcie_link_up(struct dw_pcie *pci) > { > u32 val; > > - if (pci->ops->link_up) > + if (pci->ops && pci->ops->link_up) > return pci->ops->link_up(pci); > > val = readl(pci->dbi_base + PCIE_PORT_DEBUG1); > -- > 2.17.1 >