From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753249AbcEBIFi (ORCPT ); Mon, 2 May 2016 04:05:38 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:57440 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752231AbcEBIFe (ORCPT ); Mon, 2 May 2016 04:05:34 -0400 From: Arnd Bergmann To: Tomasz Nowicki Cc: Bjorn Helgaas , catalin.marinas@arm.com, linux-pci@vger.kernel.org, will.deacon@arm.com, Lorenzo Pieralisi , ddaney@caviumnetworks.com, robert.richter@caviumnetworks.com, msalter@redhat.com, Liviu.Dudau@arm.com, jchandra@broadcom.com, linux-kernel@vger.kernel.org, hanjun.guo@linaro.org, Suravee.Suthikulpanit@amd.com, Thierry Reding Subject: Re: [PATCH 1/3] [RFC] pci: add new method for register PCI hosts Date: Mon, 02 May 2016 10:04:56 +0200 Message-ID: <8510060.F9ia068vGL@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: <5727034D.4000204@semihalf.com> References: <1461970899-4150603-1-git-send-email-arnd@arndb.de> <1461970899-4150603-2-git-send-email-arnd@arndb.de> <5727034D.4000204@semihalf.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:5cA5QAoXALUlnTahRXuYdf5pyb/zA09wiJPZeuGna5JRVg/bWHo 8HrIEG3oIdoT5SdWOJTFvESIxFxf+FO+2BM8IBWcdGt3n8nnXYPbIllZtW7fn5Nx33eTDEP r9Br6eQXAWBFnyNI+/shy5q6Jj9nkr14xCzRL6dmnGywMD1fwERlTRaUdOfVQOgQ5r4dz44 cfpJCwc09p7gCsNDtoulQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:w18jLS11LTA=:p81uFj4hKzzeXIuP7+1/Yo l3AAaDk44BAZ+Pxk+BjtEtwq/jm3gBrXRDMeNFtYiATUY4dJHqtLLjZJHaSw597NDtmmeTI3w 7FhFDg6c2umDZsnpis9BKycav41RMQvIdUjHcSFBkHRYVsBpjPtWWbB2Ppi9GBHNOHzcn/VJQ cfyBEuO4Frnyw+M4v83rnyPhl8HF0eMn8O5TxetXynJcYcmz5XvhlApoviBN4koAdijpwpJ0H cCFpsYFBg3fO3RMTz2gxWPEaPedKkdaAbcpnsi9Ss1P+tusl0xf2NpYevVpqdjkjGPUZW4+eP BprvIAgh4cEjriTiiz9mgQ4b/V8W4/DGsxE3XrNemytcrl5ngX0hCu94kVibGJ6Z8Mnps6GcG nU/DBn6YuEC7FNdSmKmatnaCXJjRliBBCk7KjZQAaneYKKNmzRUSA9qsKTysF3TxXv3LqlbCx NMc+UwssW91QDdPZYPdTgaoZff05S4zdkLzJ22NG6gGem+n3LM5h0h+bJqfpE0pU+IWZdVkMN ue98jBNo7r8KjzyWg5PhBbtoILLwGQ4gnQ0CBVH5K29brqmBIh/+QbT7OIDmy/wbUYjOTH+gD XjD3YUZncJSRWbm3MJ1u3qn/FNDX6y4johipDKentwwxOaGfjSP2sYlbQzzb1QMIoVcV98UAN hVzuT3QwPmjsvO1S33XCh3tnwCKSnr1NhQO/b8ZbUQEc3zw0FRskjaMH7VC/c1ppxNqe2lETB 0k3zoAJHpXgrHNVw Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Monday 02 May 2016 09:35:41 Tomasz Nowicki wrote: > > +int pci_register_host(struct pci_host_bridge *bridge) > > { > > int error; > > - struct pci_host_bridge *bridge; > > struct pci_bus *b, *b2; > > struct resource_entry *window, *n; > > + LIST_HEAD(resources); > > struct resource *res; > > resource_size_t offset; > > char bus_addr[64]; > > char *fmt; > > + struct device *parent = bridge->dev.parent; > > > > b = pci_alloc_bus(NULL); > > if (!b) > > - return NULL; > > + return -ENOMEM; > > + bridge->bus = b; > > > > - b->sysdata = sysdata; > > - b->ops = ops; > > - b->number = b->busn_res.start = bus; > > + /* temporarily move resources off the list */ > > + list_splice_init(&bridge->windows, &resources); > > + b->sysdata = bridge->sysdata; > > + b->msi = bridge->msi; > > + b->ops = bridge->ops; > > + b->number = b->busn_res.start = bridge->busnr; > > pci_bus_assign_domain_nr(b, parent); > > Have you considered to move domain assigning out of here? Domain is > common for every bus under host bridge, hence it could go into the > pci_host_bridge structure. Then I would vote for extra host bridge > allocation call which would assign standard things like this. > I had not thought of it, but it sounds like a good idea, thanks! The other members of struct bus that we assign here (sysdata, msi, and ops) are probably also constant for the bridge (need to verify this), so ideally we'd move all four out of the bus and replace them with a pointer to the pci_host_bridge to avoid walking up the bus hierarchy every time we want to access them. Arnd