From patchwork Thu Feb 25 02:12:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yinghai Lu X-Patchwork-Id: 587833 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 0A37B140779 for ; Thu, 25 Feb 2016 13:17:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758290AbcBYCQe (ORCPT ); Wed, 24 Feb 2016 21:16:34 -0500 Received: from userp1040.oracle.com ([156.151.31.81]:40785 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932680AbcBYCNx (ORCPT ); Wed, 24 Feb 2016 21:13:53 -0500 Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u1P2Dcfa028695 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 25 Feb 2016 02:13:38 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0022.oracle.com (8.14.4/8.13.8) with ESMTP id u1P2DbxH015359 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Thu, 25 Feb 2016 02:13:37 GMT Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserv0122.oracle.com (8.13.8/8.13.8) with ESMTP id u1P2DblQ005180; Thu, 25 Feb 2016 02:13:37 GMT Received: from userv0022.oracle.com (/10.132.126.176) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 24 Feb 2016 18:13:37 -0800 From: Yinghai Lu To: Bjorn Helgaas , David Miller , Benjamin Herrenschmidt , Wei Yang , TJ , Yijing Wang , Khalid Aziz Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Yinghai Lu Subject: [PATCH v10 55/59] PCI: Add debug print out for min_align and alt_size Date: Wed, 24 Feb 2016 18:12:46 -0800 Message-Id: <1456366370-28995-56-git-send-email-yinghai@kernel.org> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1456366370-28995-1-git-send-email-yinghai@kernel.org> References: <1456366370-28995-1-git-send-email-yinghai@kernel.org> X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Put all print out for all children align/size and result align/size together. We can print out device name at same time with min_align/alt_size calculation. So we can shut off debug print out from get_res_add_size() and get_res_add_align(). Signed-off-by: Yinghai Lu --- drivers/pci/setup-bus.c | 76 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 20 deletions(-) diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 7b89bf5..ff4c5c4 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -159,11 +159,6 @@ static resource_size_t get_res_add_size(struct list_head *head, if (!dev_res || !dev_res->add_size) return 0; - dev_printk(KERN_DEBUG, &dev_res->dev->dev, - "BAR %d: %pR get_res_add_size add_size %#llx\n", - (int)(res - &dev_res->dev->resource[0]), - res, (unsigned long long)dev_res->add_size); - return dev_res->add_size; } @@ -176,11 +171,6 @@ static resource_size_t get_res_add_align(struct list_head *head, if (!dev_res || !dev_res->min_align) return 0; - dev_printk(KERN_DEBUG, &dev_res->dev->dev, - "BAR %d: %pR get_res_add_align min_align %#llx\n", - (int)(res - &dev_res->dev->resource[0]), - res, (unsigned long long)dev_res->min_align); - return dev_res->min_align; } @@ -1271,6 +1261,8 @@ struct align_test_res { struct resource res; resource_size_t size; resource_size_t align; + struct device *dev; + int idx; }; static void free_align_test_list(struct list_head *head) @@ -1284,7 +1276,8 @@ static void free_align_test_list(struct list_head *head) } static int add_to_align_test_list(struct list_head *head, - resource_size_t align, resource_size_t size) + resource_size_t align, resource_size_t size, + struct device *dev, int idx) { struct align_test_res *tmp; @@ -1294,6 +1287,8 @@ static int add_to_align_test_list(struct list_head *head, tmp->align = align; tmp->size = size; + tmp->dev = dev; + tmp->idx = idx; list_add_tail(&tmp->list, head); @@ -1359,6 +1354,19 @@ static resource_size_t calculate_mem_align(struct list_head *head, resource_size_t min_align, good_align, aligned_size, start; int count = 0; + list_for_each_entry(p, head, list) + count++; + + printk(KERN_DEBUG " ===========BEGIN===calculate_mem_align========\n"); + if (count) { + printk(KERN_DEBUG " align/size:\n"); + list_for_each_entry(p, head, list) + dev_printk(KERN_DEBUG, p->dev, + "BAR %d: %08llx/%08llx\n", p->idx, + (unsigned long long)p->align, + (unsigned long long)p->size); + } + if (max_align <= align_low) { good_align = align_low; goto out; @@ -1366,9 +1374,6 @@ static resource_size_t calculate_mem_align(struct list_head *head, good_align = max_align; - list_for_each_entry(p, head, list) - count++; - if (count <= 1) goto out; @@ -1393,6 +1398,11 @@ static resource_size_t calculate_mem_align(struct list_head *head, } while (min_align > align_low); out: + printk(KERN_DEBUG " min_align/aligned_size: %08llx/%08llx\n", + (unsigned long long)good_align, + (unsigned long long)ALIGN(size, good_align)); + printk(KERN_DEBUG " ===========END===calculate_mem_align==========\n"); + return good_align; } @@ -1410,6 +1420,16 @@ static resource_size_t calculate_mem_alt_size(struct list_head *head, list_for_each_entry(p, head, list) count++; + printk(KERN_DEBUG " ===========BEGIN===calculate_mem_alt_size=====\n"); + if (count) { + printk(KERN_DEBUG " align/size:\n"); + list_for_each_entry(p, head, list) + dev_printk(KERN_DEBUG, p->dev, + "BAR %d: %08llx/%08llx\n", p->idx, + (unsigned long long)p->align, + (unsigned long long)p->size); + } + if (count <= 1) goto out; @@ -1434,6 +1454,11 @@ static resource_size_t calculate_mem_alt_size(struct list_head *head, } out: + printk(KERN_DEBUG " alt_align/alt_size: %08llx/%08llx\n", + (unsigned long long)max_align, + (unsigned long long)good_size); + printk(KERN_DEBUG " ===========END===calculate_mem_alt_size=======\n"); + return good_size; } @@ -1516,7 +1541,7 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, /* put SRIOV/ROM res to realloc list */ if (realloc_head && is_optional(i)) { add_to_align_test_list(&align_test_add_list, - align, r_size); + align, r_size, &dev->dev, i); r->end = r->start - 1; __add_to_list(realloc_head, dev, r, r_size, align, 0, 0); @@ -1535,7 +1560,7 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, if (r_size > 1) { add_to_align_test_list(&align_test_list, - align, r_size); + align, r_size, &dev->dev, i); size += r_size; if (align > max_align) max_align = align; @@ -1552,7 +1577,8 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, add_align = align; add_to_align_test_list(&align_test_add_list, add_align, - r_size + add_r_size); + r_size + add_r_size, + &dev->dev, i); sum_add_size += r_size + add_r_size; if (add_align > max_add_align) max_add_align = add_align; @@ -1562,14 +1588,14 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, add_to_align_test_list( &align_test_alt_list, dev_res->alt_align, - dev_res->alt_size); + dev_res->alt_size, &dev->dev, i); alt_size += dev_res->alt_size; if (alt_align < dev_res->alt_align) alt_align = dev_res->alt_align; } else if (r_size > 1) { add_to_align_test_list( &align_test_alt_list, - align, r_size); + align, r_size, &dev->dev, i); alt_size += r_size; if (alt_align < align) alt_align = align; @@ -1580,6 +1606,9 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, max_align = max(max_align, window_align); if (size || min_size) { + dev_printk(KERN_DEBUG, &bus->self->dev, + "BAR %d: bridge window %pR to %pR calculate_mem for MUST\n", + (int)(b_res - &bus->self->resource[0]), b_res, &bus->busn_res); min_align = calculate_mem_align(&align_test_list, max_align, size, window_align); size0 = calculate_size(size, min_size, @@ -1589,6 +1618,9 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, if (size0 && realloc_head) { alt_align = max(alt_align, window_align); + dev_printk(KERN_DEBUG, &bus->self->dev, + "BAR %d: bridge window %pR to %pR calculate_mem for ALT\n", + (int)(b_res - &bus->self->resource[0]), b_res, &bus->busn_res); /* need to increase size to fit more alt */ alt_size = calculate_mem_alt_size(&align_test_alt_list, alt_align, alt_size, @@ -1604,6 +1636,9 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, if (sum_add_size < min_sum_size) sum_add_size = min_sum_size; if (sum_add_size > size && realloc_head) { + dev_printk(KERN_DEBUG, &bus->self->dev, + "BAR %d: bridge window %pR to %pR calculate_mem for ADD\n", + (int)(b_res - &bus->self->resource[0]), b_res, &bus->busn_res); min_add_align = calculate_mem_align(&align_test_add_list, max_add_align, sum_add_size, window_align); @@ -1661,7 +1696,8 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask, final_add_size, min_add_align, alt_size, alt_align); dev_printk(KERN_DEBUG, &bus->self->dev, - "bridge window %pR to %pR add_size %llx add_align %llx alt_size %llx alt_align %llx req_size %llx req_align %llx\n", + "BAR %d: bridge window %pR to %pR add_size %llx add_align %llx alt_size %llx alt_align %llx req_size %llx req_align %llx\n", + (int)(b_res - &bus->self->resource[0]), b_res, &bus->busn_res, (unsigned long long)final_add_size, (unsigned long long)min_add_align,