Hi Tomasz > -----Original Message----- > From: linux-kernel-owner@xxxxxxxxxxxxxxx [mailto:linux-kernel- > owner@xxxxxxxxxxxxxxx] On Behalf Of Tomasz Nowicki > Sent: 22 December 2015 10:20 > To: Gabriele Paoloni; bhelgaas@xxxxxxxxxx; arnd@xxxxxxxx; > will.deacon@xxxxxxx; catalin.marinas@xxxxxxx; rjw@xxxxxxxxxxxxx; > hanjun.guo@xxxxxxxxxx; Lorenzo.Pieralisi@xxxxxxx; okaya@xxxxxxxxxxxxxx; > jiang.liu@xxxxxxxxxxxxxxx; Stefano.Stabellini@xxxxxxxxxxxxx > Cc: robert.richter@xxxxxxxxxxxxxxxxxx; mw@xxxxxxxxxxxx; > Liviu.Dudau@xxxxxxx; ddaney@xxxxxxxxxxxxxxxxxx; tglx@xxxxxxxxxxxxx; > Wangyijing; Suravee.Suthikulpanit@xxxxxxx; msalter@xxxxxxxxxx; linux- > pci@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux- > acpi@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linaro- > acpi@xxxxxxxxxxxxxxxx; jchandra@xxxxxxxxxxxx; jcm@xxxxxxxxxx > 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 majordomo@xxxxxxxxxxxxxxx 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-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html