Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp1399364ybk; Thu, 14 May 2020 08:05:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxYXW4BjZvu0/C8XdfVAYct3sOniCTb7rPIjdiWsfuRLfRuJhhe00ZZyor1BEYslsTIN34h X-Received: by 2002:a17:906:7e15:: with SMTP id e21mr4414899ejr.106.1589468703520; Thu, 14 May 2020 08:05:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589468703; cv=none; d=google.com; s=arc-20160816; b=nU4s2+I1mhutKBrBcPDZRq+AHbbubK86sMU1AsPiR/1V8fO299AmLfrqFKNsjf7WVb pT4bwlPeqD02TV2foQAPBy5VUYJDvFAPOI776l+b8l746P6DYCS6QsXQazzkez1GDy+b VqQ0PchkSkFzHxvNBW+CI2uOH9qefdPKnRqGEIw+TSQAfN52a0OmZkJM9RhY80joCkcT mtQAWD0eqmdQwMTbuE81eF5hQNlkJUTiAOtwGGQPZQ9BIQIV8BmH2PpmqFmzdu6bTbSQ CdbDwKst9z3m/HlsiDmNBcwWkz4yiizo4ilsVB0KwhAu+J7xHHwOOmhHV7oTVEEKHyZt DG1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=bODgLRx8N3aurYxKNts6y+sU8L8y/voav6PhIMduQh0=; b=L2eh06wRZUqKRyCjfKdV1XaSdX+6T6xgBd9f0katxdW/O1Gp9DF72UEq6qflnygSDp A820cTw0r5GfqGhaPLRjgsnvHKdrW6XLuyD+N72jDfNa+5Hx0aZaGZYljiT6w9pVbyRV ddbNyBesl5nNq+q9LMzwZhuEblya8kVZggdhNZFVVuOM7zh27mA2ZWfKZtjpidGcnTsk vDTx5GPe+wPrLQcs8i0CNB36n+hMrQHLKySGTLg7NLUYfSg1PGtc8bKmcRgsRbj5EaUV aMyFPbEFqO5AEeTltqIAChsAwsg8bC1cBzIY8tkggR2GVyLOyo6Z7CQHZYf5RtLkuaH2 9J3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=qOIVeO2B; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r13si1216271edc.201.2020.05.14.08.04.39; Thu, 14 May 2020 08:05:03 -0700 (PDT) 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; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=qOIVeO2B; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728224AbgENPBT (ORCPT + 99 others); Thu, 14 May 2020 11:01:19 -0400 Received: from lelv0143.ext.ti.com ([198.47.23.248]:47236 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728180AbgENPBQ (ORCPT ); Thu, 14 May 2020 11:01:16 -0400 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id 04EF0GLc000388; Thu, 14 May 2020 10:00:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1589468416; bh=bODgLRx8N3aurYxKNts6y+sU8L8y/voav6PhIMduQh0=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=qOIVeO2BuYrrSQHt0ZaWFHrCKkSs8KqtSZVJ/d59LwAl5KBHEVlsuir5FxMDJ182x 7HQat+kWGiPwRYR2bE6sMJQVZVDWIDKSI4tfN9fkK0wEp39hPz0BEM3k2Bi+Or5hkx 38oKWZZ0robT/ZT9Vsea4ORws+/n2imhTeddQbak= Received: from DFLE100.ent.ti.com (dfle100.ent.ti.com [10.64.6.21]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 04EF0GqG059136 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 14 May 2020 10:00:16 -0500 Received: from DFLE101.ent.ti.com (10.64.6.22) by DFLE100.ent.ti.com (10.64.6.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Thu, 14 May 2020 10:00:15 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE101.ent.ti.com (10.64.6.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Thu, 14 May 2020 10:00:15 -0500 Received: from a0393678ub.india.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 04EExgAo019279; Thu, 14 May 2020 10:00:11 -0500 From: Kishon Vijay Abraham I To: Lorenzo Pieralisi , Arnd Bergmann , Jon Mason , Dave Jiang , Allen Hubbe , Tom Joseph , Bjorn Helgaas , Rob Herring CC: Greg Kroah-Hartman , Jonathan Corbet , , , , , , Kishon Vijay Abraham I Subject: [PATCH 06/19] PCI: endpoint: Make *_get_first_free_bar() take into account 64 bit BAR Date: Thu, 14 May 2020 20:29:14 +0530 Message-ID: <20200514145927.17555-7-kishon@ti.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200514145927.17555-1-kishon@ti.com> References: <20200514145927.17555-1-kishon@ti.com> MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org pci_epc_get_first_free_bar() uses only "reserved_bar" member in epc_features to get the first unreserved BAR. However if the reserved BAR is also a 64-bit BAR, then the next BAR shouldn't be returned (since 64-bit BAR uses two BARs). Make pci_epc_get_first_free_bar() take into account 64 bit BAR while returning the first free unreserved BAR. Signed-off-by: Kishon Vijay Abraham I --- drivers/pci/endpoint/pci-epc-core.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c index 177a3fc1a0dd..49bffa2349c5 100644 --- a/drivers/pci/endpoint/pci-epc-core.c +++ b/drivers/pci/endpoint/pci-epc-core.c @@ -153,12 +153,20 @@ EXPORT_SYMBOL_GPL(of_pci_epc_get_by_name); unsigned int pci_epc_get_first_free_bar(const struct pci_epc_features *epc_features) { - int free_bar; + unsigned long free_bar; if (!epc_features) return 0; - free_bar = ffz(epc_features->reserved_bar); + /* Find if the reserved BAR is also a 64-bit BAR */ + free_bar = epc_features->reserved_bar & epc_features->bar_fixed_64bit; + + /* Set the adjacent bit if the reserved BAR is also a 64-bit BAR */ + free_bar <<= 1; + free_bar |= epc_features->reserved_bar; + + /* Now find the free BAR */ + free_bar = ffz(free_bar); if (free_bar > 5) return 0; -- 2.17.1