Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932474AbbGJNef (ORCPT ); Fri, 10 Jul 2015 09:34:35 -0400 Received: from foss.arm.com ([217.140.101.70]:50998 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932214AbbGJNeZ (ORCPT ); Fri, 10 Jul 2015 09:34:25 -0400 Date: Fri, 10 Jul 2015 14:34:58 +0100 From: Lorenzo Pieralisi To: Marc Zyngier Cc: Bjorn Helgaas , Thomas Gleixner , Jiang Liu , Jason Cooper , "linux-arm-kernel@lists.infradead.org" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Yijing Wang , Ma Jun Subject: Re: [PATCH v3 00/15] Introducing per-device MSI domain Message-ID: <20150710133458.GC11270@red-moon> References: <1436289485-28230-1-git-send-email-marc.zyngier@arm.com> <20150709135809.GA5223@red-moon> <559E8699.4010007@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <559E8699.4010007@arm.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1736 Lines: 43 On Thu, Jul 09, 2015 at 03:35:05PM +0100, Marc Zyngier wrote: [...] > > BTW, is there a reason why _all_ arm host bridges rely on > > pcibios_msi_controller (so pci_sys_data) instead of initializing > > the struct pci_bus.msi pointer to carry out the MSI controller look-up ? > > Probably an ordering issue - the bus may not be there yet. But ensuring > that the MSI domain is created early (before the bus is scanned) should > solve that problem nicely enough. Yes, I think the only reason is that, as sysdata, the msi controller pointer is propagated (in pci_alloc_child_bus()), with a tiny difference: sysdata can be passed to pci_scan_root_bus(), msi controller pointer can't (explicitly) at present. Since most of the ARM PCI host controllers have been converted to: - pci_create_root_bus() -> here we can init bus msi controller pointer - pci_scan_child_bus() we could get rid of pcibios_msi_controller on arm _now_ by just initializing the msi controller pointer in the struct pci_bus before pci_scan_child_bus() is called, unless I am missing something. I converted pcie-designware.c to stacked domains (and pci-keystone that relies on it, with its own quirks of course), I might take the step above as an intermediate step to have a common arm/arm64 generic host controller asap (ie for that getting rid of pcibios_msi_controller is mandatory, which requires converting all ARM host controllers to stacked domains, or taking the intermediate step above). Thanks, Lorenzo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/