From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752584AbbJEXBz (ORCPT ); Mon, 5 Oct 2015 19:01:55 -0400 Received: from mail-by2on0062.outbound.protection.outlook.com ([207.46.100.62]:14528 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752554AbbJEXBx (ORCPT ); Mon, 5 Oct 2015 19:01:53 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=David.Daney@caviumnetworks.com; Subject: Re: [PATCH v4 5/5] PCI: Handle Enhanced Allocation (EA) capability for bridges To: "Sean O. Stalley" , David Daney References: <1443825476-26880-1-git-send-email-ddaney.cavm@gmail.com> <1443825476-26880-6-git-send-email-ddaney.cavm@gmail.com> <20151005225405.GC4821@sean.stalley.intel.com> CC: , , Bjorn Helgaas , "Michael S. Tsirkin" , =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= , , , , , David Daney From: David Daney Message-ID: <56130159.6000909@caviumnetworks.com> Date: Mon, 5 Oct 2015 16:01:45 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <20151005225405.GC4821@sean.stalley.intel.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [64.2.3.194] X-ClientProxiedBy: SN1PR07CA0017.namprd07.prod.outlook.com (25.162.170.155) To BN4PR07MB2129.namprd07.prod.outlook.com (25.164.63.11) X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2129;2:ulNDycq/nLeYIqwSRiRliCznD1E9VQI4Ta1OZdXMV0IVIIuuQsqWyTpjNuEc6vWSFPp00wZ/RN1F/OCgD3lc9xKwUON4ebA8p59cI0+PR+YywEnffYFz5ruDCP/1zPFQddmiPb4+uzwxNAMls5zQl8AZWIn3nmqwmB0+ntxwR9M=;3:AM9oZo3jA5aSWVTjF+HljKEowy7SL/q6O+qOUvuHlxlRdy1xpEUMKONe/Eyvi59TiBX2KQpA3fTo1cCamithhk6h6vprxqwD3JSziZa9bSxp7clHnRZin0iAZqgmA8A4EPvdoOyZ1znlIfLIGN4M/g==;25:pJyQMm1VaitcyrxKUAsfbLq+d79MtFzK9TghaBuNnYVKNvyx7q2tvnqHPkM5fEylJnCD4u6s5aMEVTh7AXptVe9115PpzAByTQlCO9cvrbynozK5x7T/Jf/YeXPX6BRjhD5jU81vuJRk6ZcI2cTKo4FxnMkEj7vDa0JnjKkZ4x3lFUqGl7tYJDvmEb6EAivF+sWQ7qHUVyjf75ZMkRtkW2XfuVbmvWS4rjoY0H4/vYzbYJTGx66KiBdep74TvKYB X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN4PR07MB2129; X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2129;20:pBPsxBrBJ18w+QUmmxBmyYW2T+j7MYxN1e+rX1fyWemIfiCUJ71W9ZVu1KwhRPJtY+2BznKLaWJbaKoQEcwlY6SivdaWYFE0Z592BEerE9UwmCoIxtmYuTkpGa370/H998LiL7Vu1iIStTUIAliwH2rleFk/ZXragxURciGskR6w4uumab9egEa2hGpcc0K8jlg886MmTbSMMimLBN8sIutsHeqRIrtTbxwLqrhf4jYPntz6c9OzQIpRlC9r8EmBGXoXkrv8MmZhlTrTnxdTfja9n/OuF4xZNMTL1n4nlh93NaJN8XeX1k9BNGgpz9xQoCcpRQjqy80pfwq5LCJBPV+9qgVjJoNc3LhFty6zA+Yt7ID9IM691zUDn0Zb+INSjOErtm8cKKwk1YOOVUZD1E7rT5KeCfYucwUN0diCF6FDvksUlGwxmPP0xeSNbbNeJXQn18OiqzAdZ3fl8XDfKx8Wrpg6cytap8RptsC+zgfOB+F2No1CJ73tsWQ8OIDRIpXjEYPdXnlr+hADjGJ8VhpVhjEs/7jR7I47dRB+Xo9lbPScsE5o3qRCYGtVP5YuQI7nMYcW4tI8wV4xciE999Dk4NivKD/MPyQXQriqaN8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:BN4PR07MB2129;BCL:0;PCL:0;RULEID:;SRVR:BN4PR07MB2129; X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2129;4:7yzhm8fk+mVOT1GkCrgfxbJiYx+aal4Mg25cyE8wnKjdZKQ5mHXANqaBko/bTZodcwUUsF49/7Rf+XBjiBpevNP5JVadPC+1zxjnI5j/k6sNS4GGyFfSvLFW1ut0bPfhLRslefcFJwXkdwNYKIWv3osXejS7ZCpSg9SSf7u+xF2suDaaDfjOQT5LBsv/K+oC6RpDEzIUiZDvH97z8ixnklSJczsMpHsmcCTTaWRbh0xcKuY6bXtekIETj6j+lZw+tm5Mrc70FUWbYUelAHpEBjNcrMPgIaZXOkrKp2O0ABwZgVnpiP8v+cIf04Y4cyrK/GhRe6YzBcMHrbwXzmd+6rH5sUy1Z9y5guZaKRytmww= X-Forefront-PRVS: 07200C0526 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6069001)(24454002)(189002)(164054003)(479174004)(199003)(377454003)(4001350100001)(65806001)(47776003)(64706001)(101416001)(76176999)(36756003)(64126003)(5007970100001)(117636001)(23746002)(65816999)(87266999)(77096005)(5001770100001)(53416004)(19580395003)(5008740100001)(81156007)(50986999)(59896002)(97736004)(76506005)(5004730100002)(69596002)(19580405001)(99136001)(105586002)(66066001)(189998001)(83506001)(5001920100001)(106356001)(54356999)(122386002)(65956001)(87976001)(50466002)(40100003)(92566002)(42186005)(46102003)(5001960100002)(2950100001)(62816006);DIR:OUT;SFP:1101;SCL:1;SRVR:BN4PR07MB2129;H:localhost.caveonetworks.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;BN4PR07MB2129;23:yAWAqrYj7drTqpYKU936QeaN5kJK++WdDv/b+?= =?Windows-1252?Q?a438C7xgRXLEXGqtIXxdxaNFQCW+4WBdWR1dbxfQ/sDxmJbdbuxIXpL+?= =?Windows-1252?Q?n0ZN/rLw8j1qnvWLOLckh8CdZxLzVizFRY2CKAf2Wdc/rB6/0YdJma8u?= =?Windows-1252?Q?xSJr3ozgOyue062zhtHxtUVxV1uINB7sNOlHgEwZlfiZAo0xOzV5V4kY?= =?Windows-1252?Q?n5PWTSY8+zuPf0dfGlUq8LjzqQ2BjizL3Ue7yj2HAjhdD1mQVxHunFXs?= =?Windows-1252?Q?+R5VWPy+PaMFgUytoFz9klIHceut8vuVZz/XVNRtdv4ORnpLeGxuzV3P?= =?Windows-1252?Q?p6IeoReEOZ5n9ENVlX/knCsC5Dm1ruxRZQC88zq4Yw4/5gCsQCcnxahN?= =?Windows-1252?Q?I8YQL9e5l6omwG+8O31inj4S9e6dG1hUlA6mH0RUTQrylg4kjNzdPgcM?= =?Windows-1252?Q?ukkHMLvf6agE5uSrdZVwPBDVJQYaBQuC+1JS5+z+4quTAR0OVxKxZS3H?= =?Windows-1252?Q?PVNvs6jhUKAhenaWerjZNmkHjJImw4CL+vaSUJTQB89MSwkZbPuBBxeV?= =?Windows-1252?Q?myh8AuqIpYwxrMQQlcajxFepzwKp3DShX+QG0o6SFxpEXKBo+JZr92wm?= =?Windows-1252?Q?HJxnCcb80/KZWvgNTxpvlzlwcy8lxPnYsfKtLv5EpFiuOLfjzwm4NIDR?= =?Windows-1252?Q?8+Zw9kxzvk4WQrc77zUVqISAT+/+cyhO6paCHB2zhgyKyFwRKD6LQ/20?= =?Windows-1252?Q?62bKvSEttN5RhRz7fBox6E7UkLZNpDt1Su6lX0yMsOY5rCrGEmG3cnZA?= =?Windows-1252?Q?GSlcS3fbBzcH3C4WggEJRifSRUtMUBf+CBzldkUrHgNJu7Hb3lkQFWL8?= =?Windows-1252?Q?E+XieBXUz4k6o95WnSDp6lBQJFTuqLpM6VyIf456sBrCM8gbpxFyE1hZ?= =?Windows-1252?Q?EQctNGD1YT7U6QpGsw4nN/NSrZ1UBfy7MzCkrrTRZPXw2OnX0J9sV1ep?= =?Windows-1252?Q?EFLFujyJx8p7xUxERjne0chXvUktQ/9XxWVH8b9mEg8Y72/yzf9LEYm3?= =?Windows-1252?Q?oifeu6Q2KJX4iCzxc+FBS/7CqefJJeHuxa9WjXyW8nHLYEI7DpfPu+8m?= =?Windows-1252?Q?kumsL2qcM8YQZOEeslGUt5cOuw5MxMnjtLt37FkkLZptjRpYFIvbm9uY?= =?Windows-1252?Q?XwT4tA4yE1I8ytu/1iAMXRknuxIK/us96LMKBPfK8J6/VgrXc/4bd7Ia?= =?Windows-1252?Q?FMUBgGkZcNP4CuXWInwWHt4N3eK1G0hhw6RjLnr1UEFaJQGaXhUWw7oG?= =?Windows-1252?Q?M6OY+mJbyogOmj4C/tpt6swgH0Tz2FjR5ablhQBV1XxpXAdBaZDj+od/?= =?Windows-1252?Q?ekskNzkIPzLbenOBEfIn/9xo7nuHZgXOrJxsf0MIlABBRV/E8U9HaOlJ?= =?Windows-1252?Q?3ZCrc5iIFmbMsQ7EMlyGbb3SYFbL5Uni6eacF97HfQw3yitbFAgPp+ed?= =?Windows-1252?Q?P3h08BZ1UiGMzKOkjCYiszvuTH9?= X-Microsoft-Exchange-Diagnostics: 1;BN4PR07MB2129;5:XKAqkEo5fremSKqiIQVkwuTJ9zcoX+x7dGJLh7rTnkgDxpsH4BOi3KDQL10jpFLjTynaOFbnOUcwpFqMonK419tyHLvctaNgP6rH4o36cB7o5LCXF5wy+1WJ99IwP9ZFkzLMa7kg48WG62XVC+aZfA==;24:/8ct2CPfZOWIui+JNTZGKeK5cJl3Xw1/V7seUikdGvxOKdayHOH0s1suHU2VjQ9zxTRN5OtKjNaoto+9DoHXdRH8bUD/9Xua3xWSZSfxmew=;20:DB+85FMDymVQPlmYAtOS97tDNW9ICSUt//NrQkzJ2fksUQSBRvvCiyGoThxdJlFusfc9Sr2I/EztiTm8VB2uNw== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2015 23:01:49.0730 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN4PR07MB2129 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/05/2015 03:54 PM, Sean O. Stalley wrote: > On Fri, Oct 02, 2015 at 03:37:56PM -0700, David Daney wrote: >> From: David Daney >> >> PCI bridges may have their properties be specified via EA entries. >> >> Extend the EA parser to extract the bridge resources, and modify >> pci_read_bridge_{io,mmio,mmio_pref}() to use resources previously >> obtained via EA. >> >> Save the offset to the EA capability in struct pci_dev, and use it to >> easily find the EA bridge subordinate and secondary bus numbers. >> >> When assigning the bridge resources a couple of changes are required >> so that the EA obtained IORESOURCE_PCI_FIXED are not resized, and >> correctly linked into the resource tree. >> >> 1) In pbus_size_mem() do not attempt to resize the bridge resources if >> they are marked as IORESOURCE_PCI_FIXED. >> >> 2) In pci_bus_alloc_from_region()for IORESOURCE_PCI_FIXED resources, just >> try to request the resource as is, without attempting to resize it. >> >> Signed-off-by: David Daney >> --- >> drivers/pci/bus.c | 7 +++++++ >> drivers/pci/pci.c | 13 +++++++++++++ >> drivers/pci/probe.c | 31 +++++++++++++++++++++++++++++-- >> drivers/pci/setup-bus.c | 3 +++ >> include/linux/pci.h | 1 + >> 5 files changed, 53 insertions(+), 2 deletions(-) >> @@ -801,8 +813,23 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass) >> >> pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses); >> primary = buses & 0xFF; >> - secondary = (buses >> 8) & 0xFF; >> - subordinate = (buses >> 16) & 0xFF; >> + if (dev->ea_cap) { >> + u32 dw1; >> + >> + pci_read_config_dword(dev, dev->ea_cap + 4, &dw1); >> + if (dw1 & 0xFF) >> + secondary = dw1 & 0xFF; >> + else >> + secondary = (buses >> 8) & 0xFF; >> + >> + if ((dw1 >> 8) & 0xFF) >> + subordinate = (dw1 >> 8) & 0xFF; >> + else >> + subordinate = (buses >> 16) & 0xFF; >> + } else { >> + secondary = (buses >> 8) & 0xFF; >> + subordinate = (buses >> 16) & 0xFF; >> + } > > We can refactor this to make it cleaner/more compact. from V3 review: > > > secondary = (buses >> 8) & 0xFF; > subordinate = (buses >> 16) & 0xFF; > if (dev->ea_cap) { > u32 sdw; > > pci_read_config_dword(dev, dev->ea_cap + 4, &sdw); > > if (sdw & 0xFF) > secondary = sdw & 0xFF; > > sdw >>= 8; > if (sdw & 0xFF) > subordinate = sdw & 0xFF; > } > Yes, that is cleaner. I think I didn't read the comments on v3 closely enough. I will switch to doing it this way. Thanks, David Daney > > -Sean >