Hi Tomasz > -----Original Message----- > From: linux-kernel-ow...@vger.kernel.org [mailto:linux-kernel- > ow...@vger.kernel.org] On Behalf Of Tomasz Nowicki > Sent: 22 December 2015 10:20 > To: Gabriele Paoloni; bhelg...@google.com; a...@arndb.de; > will.dea...@arm.com; catalin.mari...@arm.com; r...@rjwysocki.net; > hanjun....@linaro.org; lorenzo.pieral...@arm.com; ok...@codeaurora.org; > jiang....@linux.intel.com; stefano.stabell...@eu.citrix.com > Cc: robert.rich...@caviumnetworks.com; m...@semihalf.com; > liviu.du...@arm.com; dda...@caviumnetworks.com; t...@linutronix.de; > Wangyijing; suravee.suthikulpa...@amd.com; msal...@redhat.com; linux- > p...@vger.kernel.org; linux-arm-ker...@lists.infradead.org; linux- > a...@vger.kernel.org; linux-kernel@vger.kernel.org; linaro- > a...@lists.linaro.org; jchan...@broadcom.com; j...@redhat.com > Subject: Re: [PATCH V2 22/23] pci, acpi: Match PCI config space > accessors against platfrom specific quirks. > > On 21.12.2015 12:47, Gabriele Paoloni wrote: > > 2) In the quirk mechanism you proposed, I see that the callback > function > > allows to do some preparation work for the host bridge. For > example in > > Hisilicon hip05 case we would need to read some values from the > ACPI > > table (see acpi_pci_root_hisi_add() function in > > https://lkml.org/lkml/2015/12/3/426). > > I am quite new to ACPI and I wonder if it is OK to add such > "Packages" > > to the PCI host bridge ACPI device...or maybe we need to declare > a new > > one...? > > I may miss sth so please correct me in that case. > > https://lkml.org/lkml/2015/12/3/426 shows that you need special > handling for root->secondary.start bus number only, right? So how about > creating special MCFG region <rc-base:rc-base+rc-size> only for > <segment,bus>. > Like that: > > [0008] Base Address : <rc-base> > [0002] Segment Group Number : <segment> > [0001] Start Bus Number : <root->secondary.start> > [0001] End Bus Number : <root->secondary.start> > [0004] Reserved : 00000000 > > > static const struct dmi_system_id hisi_quirk[] = { > { > .ident = "HiSi...", > .matches = { > DMI_MATCH(<whatever you need to match your platform>), > }, > }, > { } > }; > > static struct pci_ops hisi_ecam_pci_ops = { > .map_bus = pci_mcfg_dev_base, > .read = hisi_pcie_cfg_read, > .write = hisi_pcie_cfg_write, > }; > > DECLARE_ACPI_MCFG_FIXUP(hisi_quirk, &hisi_ecam_pci_ops, > <segment>, <bus>); > > With above code you can use your custom PCI config accessor only for > that region. > > Let me know if that is not enough for you.
In principle I think it can work... Liudongdong, Guo Hanjun what is your opinion about? Thanks Gab > > Tomasz > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" > in the body of a message to majord...@vger.kernel.org More majordomo > info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/