diff for duplicates of <1491952371.7236.22.camel@kernel.crashing.org> diff --git a/a/1.txt b/N1/1.txt index d724faa..4f5ece3 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,242 +1,205 @@ -On Tue, 2017-04-11 at 15:08 +0100, Lorenzo Pieralisi wrote: -> On Tue, Apr 11, 2017 at 11:38:26PM +1000, Benjamin Herrenschmidt wrote: -> > On Tue, 2017-04-11 at 13:28 +0100, Lorenzo Pieralisi wrote: -> > > This patch series[1] is a v3 of a previous version: -> > > -> > > v2: https://lkml.org/lkml/2017/3/27/220 -> > -> > I am not a fan of this at All. -> > -> > That whole concept of "ioremap_nopost" is simply not applicable to the -> > majority of architectures and certainly not in a way that can apply to -> > arbitrary mappings. -> > -> > It's also very wrong to provide a "default" operation whose semantics -> > are weaker than what it's supposed to implement. Very wrong actually. -> > People will use it assuming the non-posted behaviour and things will -> > break in subtle way when it cannot be provided. -> -> Well, what's very wrong for you it is not very wrong for others -> (it is just v3, that's fine, see thread below). - -Maybe, but I don't see in what universe it is ok to have something -defined for the stronger ordering semantics it provide silently -fallback to weaker semantics. - -> I can easily make ioremap_nopost() mirror ioremap_uc() (ie return -> NULL unless overriden so that basically you can't use in on an arch -> that can't provide its semantics) but then that becomes very wrong -> for other reviewers. - -Those reviewers are WRONG :-) - -> https://lkml.org/lkml/2017/4/6/396 -> -> > What exactly are you trying to fix here ? -> -> I wrote in the commit logs and cover letter what I am fixing here. - -Right right, what *actual bug you have observed* are you trying to fix -? - -I'm pretty such close to all non-x86 archs had that "problem" since the -dawn of time and it has never hurt anybody. - -That said, I don't think it makes sense to "solve" it by creating a -"generic" mapping semantic that is basically impossible to implement on -most architectures out there (and cannot be emulated). - -This is a problem to be solved by the bridge itself. If ARM has a -mapping attribute to make stores non-posted, keep this an ARM specific -attribute at this stage I'd say. - -> Anyway: -> -> "The PCI specifications (Rev 3.0, 3.2.5 "Transaction Ordering and -> Posting") mandate non-posted configuration transactions. As further -> highlighted in the PCIe specifications (4.0 - Rev0.3, "Ordering -> Considerations for the Enhanced Configuration Access Mechanism"), -> through ECAM and ECAM-derivative configuration mechanism, the memory -> mapped transactions from the host CPU into Configuration Requests on the -> PCI express fabric may create ordering problems for software because -> writes to memory address are typically posted transactions (unless the -> architecture can enforce through virtual address mapping non-posted -> write transactions behaviour) but writes to Configuration Space are not -> posted on the PCI express fabric." -> -> On ARM64: -> -> "This rule is reinforced by the ARM v8 architecture reference manual -> (issue A.k, Early Write Acknowledgment) that explicitly recommends -> that No Early Write Acknowledgment attribute should be used to map -> PCI configuration (write) transactions." -> -> > If a given PCIe host bridge (architecture specific) require a special -> > sauce to provide the illusion of non-posting, then implement this in -> > the actual root complex code. -> > -> > BTW. I'm pretty sure we "accidentally" made config writes posted at -> > least to the PHB on a number of powerpc systems forever and we *never* -> > had a problem because of it ;) -> -> Ok so we should ignore the PCIe specifications and ARM v8 reference -> manual waiting for a kernel bug to appear ? Is that what you suggest -> doing ? -> -> Lorenzo -> -> > > v2 -> v3: -> > > - Created a default ioremap_nopost() implementation in a -> > > separate -> > > asm-generic header and patched all arches to make use of it -> > > - Removed PCI drivers patches from the series to simplify the -> > > review, they will be posted separately once the -> > > ioremap_nopost() -> > > interface is settled -> > > - Fixed devm_ioremap_* BUS offset comments and implemented -> > > nopost interface on top of it -> > > - Added collected tags -> > > -> > > v1: https://lkml.org/lkml/2017/2/27/228 -> > > -> > > v1 -> v2: -> > > - Changed pci_remap_cfgspace() to more generic ioremap_nopost() -> > > interface -> > > - Added pgprot_nonposted -> > > - Fixed build errors on arches not relying on asm-generic -> > > headers -> > > - Added PCI versatile host controller driver patch -> > > - Added missing config space remapping to hisilicon host -> > > controller -> > > -> > > --------------------- -> > > Original cover letter -> > > --------------------- -> > > -> > > PCI local bus specifications (Rev3.0, 3.2.5 "Transaction Ordering -> > > and Posting") strictly require PCI configuration and I/O Address -> > > space -> > > write transactions to be non-posted. -> > > -> > > Current crop of DT/ACPI PCI host controllers drivers relies on -> > > the ioremap interface to map ECAM and ECAM-derivative PCI config -> > > regions and pci_remap_iospace() to create a VMA for mapping -> > > PCI host bridge I/O Address space transactions to CPU virtual address -> > > space. -> > > -> > > On some platforms (ie ARM/ARM64) ioremap fails to comply with the PCI -> > > configuration non-posted write transactions requirement, because it -> > > provides a memory mapping that issues "bufferable" or, in PCI terms -> > > "posted" write transactions. Likewise, the current -> > > pci_remap_iospace() -> > > implementation maps the physical address range that the PCI -> > > translates -> > > to I/O space cycles to virtual address space through pgprot_device() -> > > attributes that on eg ARM64 provides a memory mapping issuing -> > > posted writes transactions, which is not PCI specifications -> > > compliant. -> > > -> > > This patch series[1] addresses both issues in one go: -> > > -> > > - It updates the pci_remap_iospace() function to use a page mapping -> > > that guarantees non-posted write transactions for I/O space -> > > addresses -> > > - It adds a kernel API to remap PCI config space resources, so that -> > > architecture can override it with a mapping implementation that -> > > guarantees PCI specifications compliancy wrt non-posted write -> > > configuration transactions -> > > - It updates all PCI host controller implementations (and the generic -> > > ECAM layer) to use the newly introduced mapping interface -> > > -> > > Tested on Juno ECAM based interface (DT/ACPI). -> > > -> > > Non-ECAM PCI host controller drivers patches need checking to make -> > > sure that: -> > > -> > > - I patched the correct resource region mapping for config space -> > > - There are not any other ways to ensure posted-write completion -> > > in the respective pci_ops that make the relevant patch unnecessary -> > > -> > > [1] -> > > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git -> > > pci/config-io-mappings-fix-v3 -> > > -> > > Lorenzo Pieralisi (32): -> > > PCI: remove __weak tag from pci_remap_iospace() -> > > asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute -> > > PCI: fix pci_remap_iospace() remap attribute -> > > asm-generic: add ioremap_nopost() remap interface -> > > alpha: include default ioremap_nopost() implementation -> > > avr32: include default ioremap_nopost() implementation -> > > arc: include default ioremap_nopost() implementation -> > > cris: include default ioremap_nopost() implementation -> > > frv: include default ioremap_nopost() implementation -> > > hexagon: include default ioremap_nopost() implementation -> > > ia64: include default ioremap_nopost() implementation -> > > m32r: include default ioremap_nopost() implementation -> > > m68k: include default ioremap_nopost() implementation -> > > metag: include default ioremap_nopost() implementation -> > > microblaze: include default ioremap_nopost() implementation -> > > mips: include default ioremap_nopost() implementation -> > > mn10300: include default ioremap_nopost() implementation -> > > nios2: include default ioremap_nopost() implementation -> > > openrisc: include default ioremap_nopost() implementation -> > > parisc: include default ioremap_nopost() implementation -> > > powerpc: include default ioremap_nopost() implementation -> > > s390: include default ioremap_nopost() implementation -> > > sh: include default ioremap_nopost() implementation -> > > sparc: include default ioremap_nopost() implementation -> > > tile: include default ioremap_nopost() implementation -> > > unicore32: include default ioremap_nopost() implementation -> > > x86: include default ioremap_nopost() implementation -> > > xtensa: include default ioremap_nopost() implementation -> > > arm64: implement ioremap_nopost() interface -> > > arm: implement ioremap_nopost() interface -> > > lib: fix Devres devm_ioremap_* offset parameter kerneldoc -> > > description -> > > lib: implement Devres ioremap_nopost() interface -> > > -> > > Documentation/driver-model/devres.txt | 3 ++ -> > > arch/alpha/include/asm/io.h | 1 + -> > > arch/arc/include/asm/io.h | 1 + -> > > arch/arm/include/asm/io.h | 9 ++++ -> > > arch/arm/mm/ioremap.c | 7 +++ -> > > arch/arm/mm/nommu.c | 9 ++++ -> > > arch/arm64/include/asm/io.h | 12 +++++ -> > > arch/avr32/include/asm/io.h | 1 + -> > > arch/cris/include/asm/io.h | 1 + -> > > arch/frv/include/asm/io.h | 1 + -> > > arch/hexagon/include/asm/io.h | 2 + -> > > arch/ia64/include/asm/io.h | 1 + -> > > arch/m32r/include/asm/io.h | 1 + -> > > arch/m68k/include/asm/io.h | 1 + -> > > arch/metag/include/asm/io.h | 2 + -> > > arch/microblaze/include/asm/io.h | 1 + -> > > arch/mips/include/asm/io.h | 1 + -> > > arch/mn10300/include/asm/io.h | 1 + -> > > arch/nios2/include/asm/io.h | 1 + -> > > arch/openrisc/include/asm/io.h | 2 + -> > > arch/parisc/include/asm/io.h | 1 + -> > > arch/powerpc/include/asm/io.h | 1 + -> > > arch/s390/include/asm/io.h | 1 + -> > > arch/sh/include/asm/io.h | 1 + -> > > arch/sparc/include/asm/io.h | 1 + -> > > arch/tile/include/asm/io.h | 1 + -> > > arch/unicore32/include/asm/io.h | 1 + -> > > arch/x86/include/asm/io.h | 1 + -> > > arch/xtensa/include/asm/io.h | 1 + -> > > drivers/pci/pci.c | 4 +- -> > > include/asm-generic/ioremap-nopost.h | 9 ++++ -> > > include/asm-generic/pgtable.h | 4 ++ -> > > include/linux/device.h | 2 + -> > > include/linux/io.h | 2 + -> > > lib/devres.c | 84 -> > > +++++++++++++++++++++++++++++++++-- -> > > 35 files changed, 167 insertions(+), 5 deletions(-) -> > > create mode 100644 include/asm-generic/ioremap-nopost.h -> > > - -_______________________________________________ -linux-arm-kernel mailing list -linux-arm-kernel@lists.infradead.org -http://lists.infradead.org/mailman/listinfo/linux-arm-kernel +T24gVHVlLCAyMDE3LTA0LTExIGF0IDE1OjA4ICswMTAwLCBMb3JlbnpvIFBpZXJhbGlzaSB3cm90 +ZToKPiBPbiBUdWUsIEFwciAxMSwgMjAxNyBhdCAxMTozODoyNlBNICsxMDAwLCBCZW5qYW1pbiBI +ZXJyZW5zY2htaWR0IHdyb3RlOgo+ID4gT24gVHVlLCAyMDE3LTA0LTExIGF0IDEzOjI4ICswMTAw +LCBMb3JlbnpvIFBpZXJhbGlzaSB3cm90ZToKPiA+ID4gVGhpcyBwYXRjaCBzZXJpZXNbMV0gaXMg +YSB2MyBvZiBhIHByZXZpb3VzIHZlcnNpb246Cj4gPiA+IAo+ID4gPiB2MjogaHR0cHM6Ly9sa21s +Lm9yZy9sa21sLzIwMTcvMy8yNy8yMjAKPiA+IAo+ID4gSSBhbSBub3QgYSBmYW4gb2YgdGhpcyBh +dCBBbGwuCj4gPiAKPiA+IFRoYXQgd2hvbGUgY29uY2VwdCBvZiAiaW9yZW1hcF9ub3Bvc3QiIGlz +IHNpbXBseSBub3QgYXBwbGljYWJsZSB0byB0aGUKPiA+IG1ham9yaXR5IG9mIGFyY2hpdGVjdHVy +ZXMgYW5kIGNlcnRhaW5seSBub3QgaW4gYSB3YXkgdGhhdCBjYW4gYXBwbHkgdG8KPiA+IGFyYml0 +cmFyeSBtYXBwaW5ncy4KPiA+IAo+ID4gSXQncyBhbHNvIHZlcnkgd3JvbmcgdG8gcHJvdmlkZSBh +ICJkZWZhdWx0IiBvcGVyYXRpb24gd2hvc2Ugc2VtYW50aWNzCj4gPiBhcmUgd2Vha2VyIHRoYW4g +d2hhdCBpdCdzIHN1cHBvc2VkIHRvIGltcGxlbWVudC4gVmVyeSB3cm9uZyBhY3R1YWxseS4KPiA+ +IFBlb3BsZSB3aWxsIHVzZSBpdCBhc3N1bWluZyB0aGUgbm9uLXBvc3RlZCBiZWhhdmlvdXIgYW5k +IHRoaW5ncyB3aWxsCj4gPiBicmVhayBpbiBzdWJ0bGUgd2F5IHdoZW4gaXQgY2Fubm90IGJlIHBy +b3ZpZGVkLgo+IAo+IFdlbGwsIHdoYXQncyB2ZXJ5IHdyb25nIGZvciB5b3UgaXQgaXMgbm90IHZl +cnkgd3JvbmcgZm9yIG90aGVycwo+IChpdCBpcyBqdXN0IHYzLCB0aGF0J3MgZmluZSwgc2VlIHRo +cmVhZCBiZWxvdykuCgpNYXliZSwgYnV0IEkgZG9uJ3Qgc2VlIGluIHdoYXQgdW5pdmVyc2UgaXQg +aXMgb2sgdG8gaGF2ZSBzb21ldGhpbmcKZGVmaW5lZCBmb3IgdGhlIHN0cm9uZ2VyIG9yZGVyaW5n +IHNlbWFudGljcyBpdCBwcm92aWRlIHNpbGVudGx5CmZhbGxiYWNrIHRvIHdlYWtlciBzZW1hbnRp +Y3MuCgo+IEkgY2FuIGVhc2lseSBtYWtlIGlvcmVtYXBfbm9wb3N0KCkgbWlycm9yIGlvcmVtYXBf +dWMoKSAoaWUgcmV0dXJuCj4gTlVMTCB1bmxlc3Mgb3ZlcnJpZGVuIHNvIHRoYXQgYmFzaWNhbGx5 +IHlvdSBjYW4ndCB1c2UgaW4gb24gYW4gYXJjaAo+IHRoYXQgY2FuJ3QgcHJvdmlkZSBpdHMgc2Vt +YW50aWNzKSBidXQgdGhlbiB0aGF0IGJlY29tZXMgdmVyeSB3cm9uZwo+IGZvciBvdGhlciByZXZp +ZXdlcnMuCgpUaG9zZSByZXZpZXdlcnMgYXJlIFdST05HIDotKQoKPiBodHRwczovL2xrbWwub3Jn +L2xrbWwvMjAxNy80LzYvMzk2Cj4gCj4gPiBXaGF0IGV4YWN0bHkgYXJlIHlvdSB0cnlpbmcgdG8g +Zml4IGhlcmUgPwo+IAo+IEkgd3JvdGUgaW4gdGhlIGNvbW1pdCBsb2dzIGFuZCBjb3ZlciBsZXR0 +ZXIgd2hhdCBJIGFtIGZpeGluZyBoZXJlLgoKUmlnaHQgcmlnaHQsIHdoYXQgKmFjdHVhbCBidWcg +eW91IGhhdmUgb2JzZXJ2ZWQqIGFyZSB5b3UgdHJ5aW5nIHRvIGZpeAo/CgpJJ20gcHJldHR5IHN1 +Y2ggY2xvc2UgdG8gYWxsIG5vbi14ODYgYXJjaHMgaGFkIHRoYXQgInByb2JsZW0iIHNpbmNlIHRo +ZQpkYXduIG9mIHRpbWUgYW5kIGl0IGhhcyBuZXZlciBodXJ0IGFueWJvZHkuCgpUaGF0IHNhaWQs +IEkgZG9uJ3QgdGhpbmsgaXQgbWFrZXMgc2Vuc2UgdG8gInNvbHZlIiBpdCBieSBjcmVhdGluZyBh +CiJnZW5lcmljIiBtYXBwaW5nIHNlbWFudGljIHRoYXQgaXMgYmFzaWNhbGx5IGltcG9zc2libGUg +dG8gaW1wbGVtZW50IG9uCm1vc3QgYXJjaGl0ZWN0dXJlcyBvdXQgdGhlcmUgKGFuZCBjYW5ub3Qg +YmUgZW11bGF0ZWQpLgoKVGhpcyBpcyBhIHByb2JsZW0gdG8gYmUgc29sdmVkIGJ5IHRoZSBicmlk +Z2UgaXRzZWxmLiBJZiBBUk0gaGFzIGEKbWFwcGluZyBhdHRyaWJ1dGUgdG8gbWFrZSBzdG9yZXMg +bm9uLXBvc3RlZCwga2VlcCB0aGlzIGFuIEFSTSBzcGVjaWZpYwphdHRyaWJ1dGUgYXQgdGhpcyBz +dGFnZSBJJ2Qgc2F5LgoKPiBBbnl3YXk6Cj4gCj4gIlRoZSBQQ0kgc3BlY2lmaWNhdGlvbnMgKFJl +diAzLjAsIDMuMi41ICJUcmFuc2FjdGlvbiBPcmRlcmluZyBhbmQKPiBQb3N0aW5nIikgbWFuZGF0 +ZSBub24tcG9zdGVkIGNvbmZpZ3VyYXRpb24gdHJhbnNhY3Rpb25zLiBBcyBmdXJ0aGVyCj4gaGln +aGxpZ2h0ZWQgaW4gdGhlIFBDSWUgc3BlY2lmaWNhdGlvbnMgKDQuMCAtIFJldjAuMywgIk9yZGVy +aW5nCj4gQ29uc2lkZXJhdGlvbnMgZm9yIHRoZSBFbmhhbmNlZCBDb25maWd1cmF0aW9uIEFjY2Vz +cyBNZWNoYW5pc20iKSwKPiB0aHJvdWdoIEVDQU0gYW5kIEVDQU0tZGVyaXZhdGl2ZSBjb25maWd1 +cmF0aW9uIG1lY2hhbmlzbSwgdGhlIG1lbW9yeQo+IG1hcHBlZCB0cmFuc2FjdGlvbnMgZnJvbSB0 +aGUgaG9zdCBDUFUgaW50byBDb25maWd1cmF0aW9uIFJlcXVlc3RzIG9uIHRoZQo+IFBDSSBleHBy +ZXNzIGZhYnJpYyBtYXkgY3JlYXRlIG9yZGVyaW5nIHByb2JsZW1zIGZvciBzb2Z0d2FyZSBiZWNh +dXNlCj4gd3JpdGVzIHRvIG1lbW9yeSBhZGRyZXNzIGFyZSB0eXBpY2FsbHkgcG9zdGVkIHRyYW5z +YWN0aW9ucyAodW5sZXNzIHRoZQo+IGFyY2hpdGVjdHVyZSBjYW4gZW5mb3JjZSB0aHJvdWdoIHZp +cnR1YWwgYWRkcmVzcyBtYXBwaW5nIG5vbi1wb3N0ZWQKPiB3cml0ZSB0cmFuc2FjdGlvbnMgYmVo +YXZpb3VyKSBidXQgd3JpdGVzIHRvIENvbmZpZ3VyYXRpb24gU3BhY2UgYXJlIG5vdAo+IHBvc3Rl +ZCBvbiB0aGUgUENJIGV4cHJlc3MgZmFicmljLiIKPiAKPiBPbiBBUk02NDoKPiAKPiAiVGhpcyBy +dWxlIGlzIHJlaW5mb3JjZWQgYnkgdGhlIEFSTSB2OCBhcmNoaXRlY3R1cmUgcmVmZXJlbmNlIG1h +bnVhbAo+IChpc3N1ZSBBLmssIEVhcmx5IFdyaXRlIEFja25vd2xlZGdtZW50KSB0aGF0IGV4cGxp +Y2l0bHkgcmVjb21tZW5kcwo+IHRoYXQgTm8gRWFybHkgV3JpdGUgQWNrbm93bGVkZ21lbnQgYXR0 +cmlidXRlIHNob3VsZCBiZSB1c2VkIHRvIG1hcAo+IFBDSSBjb25maWd1cmF0aW9uICh3cml0ZSkg +dHJhbnNhY3Rpb25zLiIKPiAKPiA+IElmIGEgZ2l2ZW4gUENJZSBob3N0IGJyaWRnZSAoYXJjaGl0 +ZWN0dXJlIHNwZWNpZmljKSByZXF1aXJlIGEgc3BlY2lhbAo+ID4gc2F1Y2UgdG8gcHJvdmlkZSB0 +aGUgaWxsdXNpb24gb2Ygbm9uLXBvc3RpbmcsIHRoZW4gaW1wbGVtZW50IHRoaXMgaW4KPiA+IHRo +ZSBhY3R1YWwgcm9vdCBjb21wbGV4IGNvZGUuCj4gPiAKPiA+IEJUVy4gSSdtIHByZXR0eSBzdXJl +IHdlICJhY2NpZGVudGFsbHkiIG1hZGUgY29uZmlnIHdyaXRlcyBwb3N0ZWQgYXQKPiA+IGxlYXN0 +IHRvIHRoZSBQSEIgb24gYSBudW1iZXIgb2YgcG93ZXJwYyBzeXN0ZW1zIGZvcmV2ZXIgYW5kIHdl +ICpuZXZlcioKPiA+IGhhZCBhIHByb2JsZW0gYmVjYXVzZSBvZiBpdCA7KQo+IAo+IE9rIHNvIHdl +IHNob3VsZCBpZ25vcmUgdGhlIFBDSWUgc3BlY2lmaWNhdGlvbnMgYW5kIEFSTSB2OCByZWZlcmVu +Y2UKPiBtYW51YWwgd2FpdGluZyBmb3IgYSBrZXJuZWwgYnVnIHRvIGFwcGVhciA/IElzIHRoYXQg +d2hhdCB5b3Ugc3VnZ2VzdAo+IGRvaW5nID8KPiAKPiBMb3JlbnpvCj4gCj4gPiA+IHYyIC0+IHYz +Ogo+ID4gPiAJLSBDcmVhdGVkIGEgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0 +aW9uIGluIGEKPiA+ID4gc2VwYXJhdGUKPiA+ID4gCcKgwqBhc20tZ2VuZXJpYyBoZWFkZXIgYW5k +IHBhdGNoZWQgYWxsIGFyY2hlcyB0byBtYWtlIHVzZSBvZiBpdAo+ID4gPiAJLSBSZW1vdmVkIFBD +SSBkcml2ZXJzIHBhdGNoZXMgZnJvbSB0aGUgc2VyaWVzIHRvIHNpbXBsaWZ5IHRoZQo+ID4gPiAJ +wqDCoHJldmlldywgdGhleSB3aWxsIGJlIHBvc3RlZCBzZXBhcmF0ZWx5IG9uY2UgdGhlCj4gPiA+ +IGlvcmVtYXBfbm9wb3N0KCkKPiA+ID4gCcKgwqBpbnRlcmZhY2UgaXMgc2V0dGxlZAo+ID4gPiAJ +LSBGaXhlZCBkZXZtX2lvcmVtYXBfKiBCVVMgb2Zmc2V0IGNvbW1lbnRzIGFuZCBpbXBsZW1lbnRl +ZAo+ID4gPiAJwqDCoG5vcG9zdCBpbnRlcmZhY2Ugb24gdG9wIG9mIGl0Cj4gPiA+IAktIEFkZGVk +IGNvbGxlY3RlZCB0YWdzCj4gPiA+IAo+ID4gPiB2MTogaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIw +MTcvMi8yNy8yMjgKPiA+ID4gCj4gPiA+IHYxIC0+IHYyOgo+ID4gPiAJLSBDaGFuZ2VkIHBjaV9y +ZW1hcF9jZmdzcGFjZSgpIHRvIG1vcmUgZ2VuZXJpYyBpb3JlbWFwX25vcG9zdCgpCj4gPiA+IAnC +oMKgaW50ZXJmYWNlCj4gPiA+IAktIEFkZGVkIHBncHJvdF9ub25wb3N0ZWQKPiA+ID4gCS0gRml4 +ZWQgYnVpbGQgZXJyb3JzIG9uIGFyY2hlcyBub3QgcmVseWluZyBvbiBhc20tZ2VuZXJpYwo+ID4g +PiBoZWFkZXJzCj4gPiA+IAktIEFkZGVkIFBDSSB2ZXJzYXRpbGUgaG9zdCBjb250cm9sbGVyIGRy +aXZlciBwYXRjaAo+ID4gPiAJLSBBZGRlZCBtaXNzaW5nIGNvbmZpZyBzcGFjZSByZW1hcHBpbmcg +dG8gaGlzaWxpY29uIGhvc3QKPiA+ID4gY29udHJvbGxlcgo+ID4gPiAKPiA+ID4gLS0tLS0tLS0t +LS0tLS0tLS0tLS0tCj4gPiA+IE9yaWdpbmFsIGNvdmVyIGxldHRlcgo+ID4gPiAtLS0tLS0tLS0t +LS0tLS0tLS0tLS0KPiA+ID4gCj4gPiA+IFBDSSBsb2NhbCBidXMgc3BlY2lmaWNhdGlvbnMgKFJl +djMuMCwgMy4yLjUgIlRyYW5zYWN0aW9uIE9yZGVyaW5nCj4gPiA+IGFuZCBQb3N0aW5nIikgc3Ry +aWN0bHkgcmVxdWlyZSBQQ0kgY29uZmlndXJhdGlvbiBhbmQgSS9PIEFkZHJlc3MKPiA+ID4gc3Bh +Y2UKPiA+ID4gd3JpdGUgdHJhbnNhY3Rpb25zIHRvIGJlIG5vbi1wb3N0ZWQuCj4gPiA+IAo+ID4g +PiBDdXJyZW50IGNyb3Agb2YgRFQvQUNQSSBQQ0kgaG9zdCBjb250cm9sbGVycyBkcml2ZXJzIHJl +bGllcyBvbgo+ID4gPiB0aGUgaW9yZW1hcCBpbnRlcmZhY2UgdG8gbWFwIEVDQU0gYW5kIEVDQU0t +ZGVyaXZhdGl2ZSBQQ0kgY29uZmlnCj4gPiA+IHJlZ2lvbnMgYW5kIHBjaV9yZW1hcF9pb3NwYWNl +KCkgdG8gY3JlYXRlIGEgVk1BIGZvciBtYXBwaW5nCj4gPiA+IFBDSSBob3N0IGJyaWRnZSBJL08g +QWRkcmVzcyBzcGFjZSB0cmFuc2FjdGlvbnMgdG8gQ1BVIHZpcnR1YWwgYWRkcmVzcwo+ID4gPiBz +cGFjZS4KPiA+ID4gCj4gPiA+IE9uIHNvbWUgcGxhdGZvcm1zIChpZSBBUk0vQVJNNjQpIGlvcmVt +YXAgZmFpbHMgdG8gY29tcGx5IHdpdGggdGhlIFBDSQo+ID4gPiBjb25maWd1cmF0aW9uIG5vbi1w +b3N0ZWQgd3JpdGUgdHJhbnNhY3Rpb25zIHJlcXVpcmVtZW50LCBiZWNhdXNlIGl0Cj4gPiA+IHBy +b3ZpZGVzIGEgbWVtb3J5IG1hcHBpbmcgdGhhdCBpc3N1ZXMgImJ1ZmZlcmFibGUiIG9yLCBpbiBQ +Q0kgdGVybXMKPiA+ID4gInBvc3RlZCIgd3JpdGUgdHJhbnNhY3Rpb25zLiBMaWtld2lzZSwgdGhl +IGN1cnJlbnQKPiA+ID4gcGNpX3JlbWFwX2lvc3BhY2UoKQo+ID4gPiBpbXBsZW1lbnRhdGlvbiBt +YXBzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlIHRoYXQgdGhlIFBDSQo+ID4gPiB0cmFuc2xh +dGVzCj4gPiA+IHRvIEkvTyBzcGFjZSBjeWNsZXMgdG8gdmlydHVhbCBhZGRyZXNzIHNwYWNlIHRo +cm91Z2ggcGdwcm90X2RldmljZSgpCj4gPiA+IGF0dHJpYnV0ZXMgdGhhdCBvbiBlZyBBUk02NCBw +cm92aWRlcyBhIG1lbW9yeSBtYXBwaW5nIGlzc3VpbmcKPiA+ID4gcG9zdGVkIHdyaXRlcyB0cmFu +c2FjdGlvbnMsIHdoaWNoIGlzIG5vdCBQQ0kgc3BlY2lmaWNhdGlvbnMKPiA+ID4gY29tcGxpYW50 +Lgo+ID4gPiAKPiA+ID4gVGhpcyBwYXRjaCBzZXJpZXNbMV0gYWRkcmVzc2VzIGJvdGggaXNzdWVz +IGluIG9uZSBnbzoKPiA+ID4gCj4gPiA+IC0gSXQgdXBkYXRlcyB0aGUgcGNpX3JlbWFwX2lvc3Bh +Y2UoKSBmdW5jdGlvbiB0byB1c2UgYSBwYWdlIG1hcHBpbmcKPiA+ID4gwqAgdGhhdCBndWFyYW50 +ZWVzIG5vbi1wb3N0ZWQgd3JpdGUgdHJhbnNhY3Rpb25zIGZvciBJL08gc3BhY2UKPiA+ID4gYWRk +cmVzc2VzCj4gPiA+IC0gSXQgYWRkcyBhIGtlcm5lbCBBUEkgdG8gcmVtYXAgUENJIGNvbmZpZyBz +cGFjZSByZXNvdXJjZXMsIHNvIHRoYXQKPiA+ID4gwqAgYXJjaGl0ZWN0dXJlIGNhbiBvdmVycmlk +ZSBpdCB3aXRoIGEgbWFwcGluZyBpbXBsZW1lbnRhdGlvbiB0aGF0Cj4gPiA+IMKgIGd1YXJhbnRl +ZXMgUENJIHNwZWNpZmljYXRpb25zIGNvbXBsaWFuY3kgd3J0IG5vbi1wb3N0ZWQgd3JpdGUKPiA+ +ID4gwqAgY29uZmlndXJhdGlvbiB0cmFuc2FjdGlvbnMKPiA+ID4gLSBJdCB1cGRhdGVzIGFsbCBQ +Q0kgaG9zdCBjb250cm9sbGVyIGltcGxlbWVudGF0aW9ucyAoYW5kIHRoZSBnZW5lcmljCj4gPiA+ +IMKgIEVDQU0gbGF5ZXIpIHRvIHVzZSB0aGUgbmV3bHkgaW50cm9kdWNlZCBtYXBwaW5nIGludGVy +ZmFjZQo+ID4gPiAKPiA+ID4gVGVzdGVkIG9uIEp1bm8gRUNBTSBiYXNlZCBpbnRlcmZhY2UgKERU +L0FDUEkpLgo+ID4gPiAKPiA+ID4gTm9uLUVDQU0gUENJIGhvc3QgY29udHJvbGxlciBkcml2ZXJz +IHBhdGNoZXMgbmVlZCBjaGVja2luZyB0byBtYWtlCj4gPiA+IHN1cmUgdGhhdDoKPiA+ID4gCj4g +PiA+IC0gSSBwYXRjaGVkIHRoZSBjb3JyZWN0IHJlc291cmNlIHJlZ2lvbiBtYXBwaW5nIGZvciBj +b25maWcgc3BhY2UKPiA+ID4gLSBUaGVyZSBhcmUgbm90IGFueSBvdGhlciB3YXlzIHRvIGVuc3Vy +ZSBwb3N0ZWQtd3JpdGUgY29tcGxldGlvbgo+ID4gPiDCoCBpbiB0aGUgcmVzcGVjdGl2ZSBwY2lf +b3BzIHRoYXQgbWFrZSB0aGUgcmVsZXZhbnQgcGF0Y2ggdW5uZWNlc3NhcnkKPiA+ID4gCj4gPiA+ +IFsxXQo+ID4gPiBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv +bHBpZXJhbGlzaS9saW51eC5naXQKPiA+ID4gcGNpL2NvbmZpZy1pby1tYXBwaW5ncy1maXgtdjMK +PiA+ID4gCj4gPiA+IExvcmVuem8gUGllcmFsaXNpICgzMik6Cj4gPiA+IMKgIFBDSTogcmVtb3Zl +IF9fd2VhayB0YWcgZnJvbSBwY2lfcmVtYXBfaW9zcGFjZSgpCj4gPiA+IMKgIGFzbS1nZW5lcmlj +L3BndGFibGUuaDogaW50cm9kdWNlIHBncHJvdF9ub25wb3N0ZWQgcmVtYXAgYXR0cmlidXRlCj4g +PiA+IMKgIFBDSTogZml4IHBjaV9yZW1hcF9pb3NwYWNlKCkgcmVtYXAgYXR0cmlidXRlCj4gPiA+ +IMKgIGFzbS1nZW5lcmljOiBhZGQgaW9yZW1hcF9ub3Bvc3QoKSByZW1hcCBpbnRlcmZhY2UKPiA+ +ID4gwqAgYWxwaGE6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0 +aW9uCj4gPiA+IMKgIGF2cjMyOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBs +ZW1lbnRhdGlvbgo+ID4gPiDCoCBhcmM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgp +IGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIGNyaXM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25v +cG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIGZydjogaW5jbHVkZSBkZWZhdWx0IGlvcmVt +YXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgaGV4YWdvbjogaW5jbHVkZSBkZWZh +dWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgaWE2NDogaW5jbHVk +ZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgbTMycjog +aW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAg +bTY4azogaW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ +ID4gwqAgbWV0YWc6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0 +aW9uCj4gPiA+IMKgIG1pY3JvYmxhemU6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgp +IGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIG1pcHM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25v +cG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIG1uMTAzMDA6IGluY2x1ZGUgZGVmYXVsdCBp +b3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIG5pb3MyOiBpbmNsdWRlIGRl +ZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1lbnRhdGlvbgo+ID4gPiDCoCBvcGVucmlzYzog +aW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAg +cGFyaXNjOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1lbnRhdGlvbgo+ +ID4gPiDCoCBwb3dlcnBjOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1l +bnRhdGlvbgo+ID4gPiDCoCBzMzkwOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBp +bXBsZW1lbnRhdGlvbgo+ID4gPiDCoCBzaDogaW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0 +KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgc3BhcmM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFw +X25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIHRpbGU6IGluY2x1ZGUgZGVmYXVsdCBp +b3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIHVuaWNvcmUzMjogaW5jbHVk +ZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgeDg2OiBp +bmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1lbnRhdGlvbgo+ID4gPiDCoCB4 +dGVuc2E6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4g +PiA+IMKgIGFybTY0OiBpbXBsZW1lbnQgaW9yZW1hcF9ub3Bvc3QoKSBpbnRlcmZhY2UKPiA+ID4g +wqAgYXJtOiBpbXBsZW1lbnQgaW9yZW1hcF9ub3Bvc3QoKSBpbnRlcmZhY2UKPiA+ID4gwqAgbGli +OiBmaXggRGV2cmVzIGRldm1faW9yZW1hcF8qIG9mZnNldCBwYXJhbWV0ZXIga2VybmVsZG9jCj4g +PiA+IGRlc2NyaXB0aW9uCj4gPiA+IMKgIGxpYjogaW1wbGVtZW50IERldnJlcyBpb3JlbWFwX25v +cG9zdCgpIGludGVyZmFjZQo+ID4gPiAKPiA+ID4gwqBEb2N1bWVudGF0aW9uL2RyaXZlci1tb2Rl +bC9kZXZyZXMudHh0IHzCoMKgMyArKwo+ID4gPiDCoGFyY2gvYWxwaGEvaW5jbHVkZS9hc20vaW8u +aMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvYXJjL2luY2x1ZGUv +YXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSArCj4gPiA+IMKgYXJjaC9h +cm0vaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA5ICsrKysK +PiA+ID4gwqBhcmNoL2FybS9tbS9pb3JlbWFwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg +wqDCoMKgfMKgwqA3ICsrKwo+ID4gPiDCoGFyY2gvYXJtL21tL25vbW11LmPCoMKgwqDCoMKgwqDC +oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgOSArKysrCj4gPiA+IMKgYXJjaC9hcm02NC9p +bmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgMTIgKysrKysKPiA+ID4gwqBh +cmNoL2F2cjMyL2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsK +PiA+ID4gwqBhcmNoL2NyaXMvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC +oHzCoMKgMSArCj4gPiA+IMKgYXJjaC9mcnYvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKg +wqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBhcmNoL2hleGFnb24vaW5jbHVkZS9hc20vaW8u +aMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMiArCj4gPiA+IMKgYXJjaC9pYTY0L2luY2x1ZGUvYXNt +L2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvbTMyci9p +bmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBh +cmNoL202OGsvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSAr +Cj4gPiA+IMKgYXJjaC9tZXRhZy9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDC +oHzCoMKgMiArCj4gPiA+IMKgYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDC +oMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvbWlwcy9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDC +oMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBhcmNoL21uMTAzMDAvaW5jbHVkZS9hc20v +aW8uaMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSArCj4gPiA+IMKgYXJjaC9uaW9zMi9pbmNsdWRl +L2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSArCj4gPiA+IMKgYXJjaC9vcGVu +cmlzYy9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoHzCoMKgMiArCj4gPiA+IMKgYXJj +aC9wYXJpc2MvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ +ID4gwqBhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKg +MSArCj4gPiA+IMKgYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDC +oMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvc2gvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDC +oMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvc3BhcmMvaW5jbHVkZS9hc20v +aW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvdGlsZS9pbmNs +dWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBhcmNo +L3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDC +oGFyY2gveDg2L2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKg +MSArCj4gPiA+IMKgYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDC +oMKgfMKgwqAxICsKPiA+ID4gwqBkcml2ZXJzL3BjaS9wY2kuY8KgwqDCoMKgwqDCoMKgwqDCoMKg +wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgNCArLQo+ID4gPiDCoGluY2x1ZGUvYXNtLWdlbmVy +aWMvaW9yZW1hcC1ub3Bvc3QuaMKgwqB8wqDCoDkgKysrKwo+ID4gPiDCoGluY2x1ZGUvYXNtLWdl +bmVyaWMvcGd0YWJsZS5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA0ICsrCj4gPiA+IMKgaW5jbHVk +ZS9saW51eC9kZXZpY2UuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAyICsK +PiA+ID4gwqBpbmNsdWRlL2xpbnV4L2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC +oMKgwqDCoMKgfMKgwqAyICsKPiA+ID4gwqBsaWIvZGV2cmVzLmPCoMKgwqDCoMKgwqDCoMKgwqDC +oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCA4NAo+ID4gPiArKysrKysrKysrKysr +KysrKysrKysrKysrKysrKysrKystLQo+ID4gPiDCoDM1IGZpbGVzIGNoYW5nZWQsIDE2NyBpbnNl +cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs +dWRlL2FzbS1nZW5lcmljL2lvcmVtYXAtbm9wb3N0LmgKPiA+ID4gCgpfX19fX19fX19fX19fX19f +X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg +bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu +ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== diff --git a/a/content_digest b/N1/content_digest index 5da58c3..9c2033a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -28,250 +28,236 @@ Catalin Marinas <catalin.marinas@arm.com> Matt Turner <mattst88@gmail.com> Haavard Skinnemoen <hskinnemoen@gmail.com> - " Fenghua Yu <fenghua.yu@intel.co>\0" + Fenghua Yu <fenghua.yu@intel.com> + James Hogan <james.hogan@imgtec.com> + Chris Metcalf <cmetcalf@mellanox.com> + Arnd Bergmann <arnd@arndb.de> + Heiko Carstens <heiko.carstens@de.ibm.com> + Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> + Mikael Starvik <starvik@axis.com> + Ivan Kokshaysky <ink@jurassic.park.msu.ru> + Bjorn Helgaas <bhelgaas@google.com> + Stafford Horne <shorne@gmail.com> + linux-arm-kernel@lists.infradead.org + Richard Henderson <rth@twiddle.net> + Chris Zankel <chris@zankel.net> + Michal Simek <monstr@monstr.eu> + Tony Luck <tony.luck@intel.com> + Vineet Gupta <vgupta@synopsys.com> + linux-kernel@vger.kernel.org + Ralf Baechle <ralf@linux-mips.org> + Richard Kuo <rkuo@codeaurora.org> + Niklas Cassel <nks@flawful.org> + Luis R. Rodriguez <mcgrof@kernel.org> + Martin Schwidefsky <schwidefsky@de.ibm.com> + Ley Foon Tan <lftan@altera.com> + " David S. Miller <davem@davemloft.net>\0" "\00:1\0" "b\0" - "On Tue, 2017-04-11 at 15:08 +0100, Lorenzo Pieralisi wrote:\n" - "> On Tue, Apr 11, 2017 at 11:38:26PM +1000, Benjamin Herrenschmidt wrote:\n" - "> > On Tue, 2017-04-11 at 13:28 +0100, Lorenzo Pieralisi wrote:\n" - "> > > This patch series[1] is a v3 of a previous version:\n" - "> > > \n" - "> > > v2: https://lkml.org/lkml/2017/3/27/220\n" - "> > \n" - "> > I am not a fan of this at All.\n" - "> > \n" - "> > That whole concept of \"ioremap_nopost\" is simply not applicable to the\n" - "> > majority of architectures and certainly not in a way that can apply to\n" - "> > arbitrary mappings.\n" - "> > \n" - "> > It's also very wrong to provide a \"default\" operation whose semantics\n" - "> > are weaker than what it's supposed to implement. Very wrong actually.\n" - "> > People will use it assuming the non-posted behaviour and things will\n" - "> > break in subtle way when it cannot be provided.\n" - "> \n" - "> Well, what's very wrong for you it is not very wrong for others\n" - "> (it is just v3, that's fine, see thread below).\n" - "\n" - "Maybe, but I don't see in what universe it is ok to have something\n" - "defined for the stronger ordering semantics it provide silently\n" - "fallback to weaker semantics.\n" - "\n" - "> I can easily make ioremap_nopost() mirror ioremap_uc() (ie return\n" - "> NULL unless overriden so that basically you can't use in on an arch\n" - "> that can't provide its semantics) but then that becomes very wrong\n" - "> for other reviewers.\n" - "\n" - "Those reviewers are WRONG :-)\n" - "\n" - "> https://lkml.org/lkml/2017/4/6/396\n" - "> \n" - "> > What exactly are you trying to fix here ?\n" - "> \n" - "> I wrote in the commit logs and cover letter what I am fixing here.\n" - "\n" - "Right right, what *actual bug you have observed* are you trying to fix\n" - "?\n" - "\n" - "I'm pretty such close to all non-x86 archs had that \"problem\" since the\n" - "dawn of time and it has never hurt anybody.\n" - "\n" - "That said, I don't think it makes sense to \"solve\" it by creating a\n" - "\"generic\" mapping semantic that is basically impossible to implement on\n" - "most architectures out there (and cannot be emulated).\n" - "\n" - "This is a problem to be solved by the bridge itself. If ARM has a\n" - "mapping attribute to make stores non-posted, keep this an ARM specific\n" - "attribute at this stage I'd say.\n" - "\n" - "> Anyway:\n" - "> \n" - "> \"The PCI specifications (Rev 3.0, 3.2.5 \"Transaction Ordering and\n" - "> Posting\") mandate non-posted configuration transactions. As further\n" - "> highlighted in the PCIe specifications (4.0 - Rev0.3, \"Ordering\n" - "> Considerations for the Enhanced Configuration Access Mechanism\"),\n" - "> through ECAM and ECAM-derivative configuration mechanism, the memory\n" - "> mapped transactions from the host CPU into Configuration Requests on the\n" - "> PCI express fabric may create ordering problems for software because\n" - "> writes to memory address are typically posted transactions (unless the\n" - "> architecture can enforce through virtual address mapping non-posted\n" - "> write transactions behaviour) but writes to Configuration Space are not\n" - "> posted on the PCI express fabric.\"\n" - "> \n" - "> On ARM64:\n" - "> \n" - "> \"This rule is reinforced by the ARM v8 architecture reference manual\n" - "> (issue A.k, Early Write Acknowledgment) that explicitly recommends\n" - "> that No Early Write Acknowledgment attribute should be used to map\n" - "> PCI configuration (write) transactions.\"\n" - "> \n" - "> > If a given PCIe host bridge (architecture specific) require a special\n" - "> > sauce to provide the illusion of non-posting, then implement this in\n" - "> > the actual root complex code.\n" - "> > \n" - "> > BTW. I'm pretty sure we \"accidentally\" made config writes posted at\n" - "> > least to the PHB on a number of powerpc systems forever and we *never*\n" - "> > had a problem because of it ;)\n" - "> \n" - "> Ok so we should ignore the PCIe specifications and ARM v8 reference\n" - "> manual waiting for a kernel bug to appear ? Is that what you suggest\n" - "> doing ?\n" - "> \n" - "> Lorenzo\n" - "> \n" - "> > > v2 -> v3:\n" - "> > > \t- Created a default ioremap_nopost() implementation in a\n" - "> > > separate\n" - "> > > \t\302\240\302\240asm-generic header and patched all arches to make use of it\n" - "> > > \t- Removed PCI drivers patches from the series to simplify the\n" - "> > > \t\302\240\302\240review, they will be posted separately once the\n" - "> > > ioremap_nopost()\n" - "> > > \t\302\240\302\240interface is settled\n" - "> > > \t- Fixed devm_ioremap_* BUS offset comments and implemented\n" - "> > > \t\302\240\302\240nopost interface on top of it\n" - "> > > \t- Added collected tags\n" - "> > > \n" - "> > > v1: https://lkml.org/lkml/2017/2/27/228\n" - "> > > \n" - "> > > v1 -> v2:\n" - "> > > \t- Changed pci_remap_cfgspace() to more generic ioremap_nopost()\n" - "> > > \t\302\240\302\240interface\n" - "> > > \t- Added pgprot_nonposted\n" - "> > > \t- Fixed build errors on arches not relying on asm-generic\n" - "> > > headers\n" - "> > > \t- Added PCI versatile host controller driver patch\n" - "> > > \t- Added missing config space remapping to hisilicon host\n" - "> > > controller\n" - "> > > \n" - "> > > ---------------------\n" - "> > > Original cover letter\n" - "> > > ---------------------\n" - "> > > \n" - "> > > PCI local bus specifications (Rev3.0, 3.2.5 \"Transaction Ordering\n" - "> > > and Posting\") strictly require PCI configuration and I/O Address\n" - "> > > space\n" - "> > > write transactions to be non-posted.\n" - "> > > \n" - "> > > Current crop of DT/ACPI PCI host controllers drivers relies on\n" - "> > > the ioremap interface to map ECAM and ECAM-derivative PCI config\n" - "> > > regions and pci_remap_iospace() to create a VMA for mapping\n" - "> > > PCI host bridge I/O Address space transactions to CPU virtual address\n" - "> > > space.\n" - "> > > \n" - "> > > On some platforms (ie ARM/ARM64) ioremap fails to comply with the PCI\n" - "> > > configuration non-posted write transactions requirement, because it\n" - "> > > provides a memory mapping that issues \"bufferable\" or, in PCI terms\n" - "> > > \"posted\" write transactions. Likewise, the current\n" - "> > > pci_remap_iospace()\n" - "> > > implementation maps the physical address range that the PCI\n" - "> > > translates\n" - "> > > to I/O space cycles to virtual address space through pgprot_device()\n" - "> > > attributes that on eg ARM64 provides a memory mapping issuing\n" - "> > > posted writes transactions, which is not PCI specifications\n" - "> > > compliant.\n" - "> > > \n" - "> > > This patch series[1] addresses both issues in one go:\n" - "> > > \n" - "> > > - It updates the pci_remap_iospace() function to use a page mapping\n" - "> > > \302\240 that guarantees non-posted write transactions for I/O space\n" - "> > > addresses\n" - "> > > - It adds a kernel API to remap PCI config space resources, so that\n" - "> > > \302\240 architecture can override it with a mapping implementation that\n" - "> > > \302\240 guarantees PCI specifications compliancy wrt non-posted write\n" - "> > > \302\240 configuration transactions\n" - "> > > - It updates all PCI host controller implementations (and the generic\n" - "> > > \302\240 ECAM layer) to use the newly introduced mapping interface\n" - "> > > \n" - "> > > Tested on Juno ECAM based interface (DT/ACPI).\n" - "> > > \n" - "> > > Non-ECAM PCI host controller drivers patches need checking to make\n" - "> > > sure that:\n" - "> > > \n" - "> > > - I patched the correct resource region mapping for config space\n" - "> > > - There are not any other ways to ensure posted-write completion\n" - "> > > \302\240 in the respective pci_ops that make the relevant patch unnecessary\n" - "> > > \n" - "> > > [1]\n" - "> > > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git\n" - "> > > pci/config-io-mappings-fix-v3\n" - "> > > \n" - "> > > Lorenzo Pieralisi (32):\n" - "> > > \302\240 PCI: remove __weak tag from pci_remap_iospace()\n" - "> > > \302\240 asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute\n" - "> > > \302\240 PCI: fix pci_remap_iospace() remap attribute\n" - "> > > \302\240 asm-generic: add ioremap_nopost() remap interface\n" - "> > > \302\240 alpha: include default ioremap_nopost() implementation\n" - "> > > \302\240 avr32: include default ioremap_nopost() implementation\n" - "> > > \302\240 arc: include default ioremap_nopost() implementation\n" - "> > > \302\240 cris: include default ioremap_nopost() implementation\n" - "> > > \302\240 frv: include default ioremap_nopost() implementation\n" - "> > > \302\240 hexagon: include default ioremap_nopost() implementation\n" - "> > > \302\240 ia64: include default ioremap_nopost() implementation\n" - "> > > \302\240 m32r: include default ioremap_nopost() implementation\n" - "> > > \302\240 m68k: include default ioremap_nopost() implementation\n" - "> > > \302\240 metag: include default ioremap_nopost() implementation\n" - "> > > \302\240 microblaze: include default ioremap_nopost() implementation\n" - "> > > \302\240 mips: include default ioremap_nopost() implementation\n" - "> > > \302\240 mn10300: include default ioremap_nopost() implementation\n" - "> > > \302\240 nios2: include default ioremap_nopost() implementation\n" - "> > > \302\240 openrisc: include default ioremap_nopost() implementation\n" - "> > > \302\240 parisc: include default ioremap_nopost() implementation\n" - "> > > \302\240 powerpc: include default ioremap_nopost() implementation\n" - "> > > \302\240 s390: include default ioremap_nopost() implementation\n" - "> > > \302\240 sh: include default ioremap_nopost() implementation\n" - "> > > \302\240 sparc: include default ioremap_nopost() implementation\n" - "> > > \302\240 tile: include default ioremap_nopost() implementation\n" - "> > > \302\240 unicore32: include default ioremap_nopost() implementation\n" - "> > > \302\240 x86: include default ioremap_nopost() implementation\n" - "> > > \302\240 xtensa: include default ioremap_nopost() implementation\n" - "> > > \302\240 arm64: implement ioremap_nopost() interface\n" - "> > > \302\240 arm: implement ioremap_nopost() interface\n" - "> > > \302\240 lib: fix Devres devm_ioremap_* offset parameter kerneldoc\n" - "> > > description\n" - "> > > \302\240 lib: implement Devres ioremap_nopost() interface\n" - "> > > \n" - "> > > \302\240Documentation/driver-model/devres.txt |\302\240\302\2403 ++\n" - "> > > \302\240arch/alpha/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/arc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/arm/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2409 ++++\n" - "> > > \302\240arch/arm/mm/ioremap.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2407 +++\n" - "> > > \302\240arch/arm/mm/nommu.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2409 ++++\n" - "> > > \302\240arch/arm64/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 12 +++++\n" - "> > > \302\240arch/avr32/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/cris/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/frv/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/hexagon/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240arch/ia64/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/m32r/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/m68k/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/metag/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240arch/microblaze/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/mips/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/mn10300/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/nios2/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/openrisc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240arch/parisc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/powerpc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/s390/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/sh/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/sparc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/tile/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/unicore32/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/x86/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/xtensa/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240drivers/pci/pci.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2404 +-\n" - "> > > \302\240include/asm-generic/ioremap-nopost.h\302\240\302\240|\302\240\302\2409 ++++\n" - "> > > \302\240include/asm-generic/pgtable.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2404 ++\n" - "> > > \302\240include/linux/device.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240include/linux/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240lib/devres.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 84\n" - "> > > +++++++++++++++++++++++++++++++++--\n" - "> > > \302\24035 files changed, 167 insertions(+), 5 deletions(-)\n" - "> > > \302\240create mode 100644 include/asm-generic/ioremap-nopost.h\n" - "> > > \n" - "\n" - "_______________________________________________\n" - "linux-arm-kernel mailing list\n" - "linux-arm-kernel@lists.infradead.org\n" - http://lists.infradead.org/mailman/listinfo/linux-arm-kernel + "T24gVHVlLCAyMDE3LTA0LTExIGF0IDE1OjA4ICswMTAwLCBMb3JlbnpvIFBpZXJhbGlzaSB3cm90\n" + "ZToKPiBPbiBUdWUsIEFwciAxMSwgMjAxNyBhdCAxMTozODoyNlBNICsxMDAwLCBCZW5qYW1pbiBI\n" + "ZXJyZW5zY2htaWR0IHdyb3RlOgo+ID4gT24gVHVlLCAyMDE3LTA0LTExIGF0IDEzOjI4ICswMTAw\n" + "LCBMb3JlbnpvIFBpZXJhbGlzaSB3cm90ZToKPiA+ID4gVGhpcyBwYXRjaCBzZXJpZXNbMV0gaXMg\n" + "YSB2MyBvZiBhIHByZXZpb3VzIHZlcnNpb246Cj4gPiA+IAo+ID4gPiB2MjogaHR0cHM6Ly9sa21s\n" + "Lm9yZy9sa21sLzIwMTcvMy8yNy8yMjAKPiA+IAo+ID4gSSBhbSBub3QgYSBmYW4gb2YgdGhpcyBh\n" + "dCBBbGwuCj4gPiAKPiA+IFRoYXQgd2hvbGUgY29uY2VwdCBvZiAiaW9yZW1hcF9ub3Bvc3QiIGlz\n" + "IHNpbXBseSBub3QgYXBwbGljYWJsZSB0byB0aGUKPiA+IG1ham9yaXR5IG9mIGFyY2hpdGVjdHVy\n" + "ZXMgYW5kIGNlcnRhaW5seSBub3QgaW4gYSB3YXkgdGhhdCBjYW4gYXBwbHkgdG8KPiA+IGFyYml0\n" + "cmFyeSBtYXBwaW5ncy4KPiA+IAo+ID4gSXQncyBhbHNvIHZlcnkgd3JvbmcgdG8gcHJvdmlkZSBh\n" + "ICJkZWZhdWx0IiBvcGVyYXRpb24gd2hvc2Ugc2VtYW50aWNzCj4gPiBhcmUgd2Vha2VyIHRoYW4g\n" + "d2hhdCBpdCdzIHN1cHBvc2VkIHRvIGltcGxlbWVudC4gVmVyeSB3cm9uZyBhY3R1YWxseS4KPiA+\n" + "IFBlb3BsZSB3aWxsIHVzZSBpdCBhc3N1bWluZyB0aGUgbm9uLXBvc3RlZCBiZWhhdmlvdXIgYW5k\n" + "IHRoaW5ncyB3aWxsCj4gPiBicmVhayBpbiBzdWJ0bGUgd2F5IHdoZW4gaXQgY2Fubm90IGJlIHBy\n" + "b3ZpZGVkLgo+IAo+IFdlbGwsIHdoYXQncyB2ZXJ5IHdyb25nIGZvciB5b3UgaXQgaXMgbm90IHZl\n" + "cnkgd3JvbmcgZm9yIG90aGVycwo+IChpdCBpcyBqdXN0IHYzLCB0aGF0J3MgZmluZSwgc2VlIHRo\n" + "cmVhZCBiZWxvdykuCgpNYXliZSwgYnV0IEkgZG9uJ3Qgc2VlIGluIHdoYXQgdW5pdmVyc2UgaXQg\n" + "aXMgb2sgdG8gaGF2ZSBzb21ldGhpbmcKZGVmaW5lZCBmb3IgdGhlIHN0cm9uZ2VyIG9yZGVyaW5n\n" + "IHNlbWFudGljcyBpdCBwcm92aWRlIHNpbGVudGx5CmZhbGxiYWNrIHRvIHdlYWtlciBzZW1hbnRp\n" + "Y3MuCgo+IEkgY2FuIGVhc2lseSBtYWtlIGlvcmVtYXBfbm9wb3N0KCkgbWlycm9yIGlvcmVtYXBf\n" + "dWMoKSAoaWUgcmV0dXJuCj4gTlVMTCB1bmxlc3Mgb3ZlcnJpZGVuIHNvIHRoYXQgYmFzaWNhbGx5\n" + "IHlvdSBjYW4ndCB1c2UgaW4gb24gYW4gYXJjaAo+IHRoYXQgY2FuJ3QgcHJvdmlkZSBpdHMgc2Vt\n" + "YW50aWNzKSBidXQgdGhlbiB0aGF0IGJlY29tZXMgdmVyeSB3cm9uZwo+IGZvciBvdGhlciByZXZp\n" + "ZXdlcnMuCgpUaG9zZSByZXZpZXdlcnMgYXJlIFdST05HIDotKQoKPiBodHRwczovL2xrbWwub3Jn\n" + "L2xrbWwvMjAxNy80LzYvMzk2Cj4gCj4gPiBXaGF0IGV4YWN0bHkgYXJlIHlvdSB0cnlpbmcgdG8g\n" + "Zml4IGhlcmUgPwo+IAo+IEkgd3JvdGUgaW4gdGhlIGNvbW1pdCBsb2dzIGFuZCBjb3ZlciBsZXR0\n" + "ZXIgd2hhdCBJIGFtIGZpeGluZyBoZXJlLgoKUmlnaHQgcmlnaHQsIHdoYXQgKmFjdHVhbCBidWcg\n" + "eW91IGhhdmUgb2JzZXJ2ZWQqIGFyZSB5b3UgdHJ5aW5nIHRvIGZpeAo/CgpJJ20gcHJldHR5IHN1\n" + "Y2ggY2xvc2UgdG8gYWxsIG5vbi14ODYgYXJjaHMgaGFkIHRoYXQgInByb2JsZW0iIHNpbmNlIHRo\n" + "ZQpkYXduIG9mIHRpbWUgYW5kIGl0IGhhcyBuZXZlciBodXJ0IGFueWJvZHkuCgpUaGF0IHNhaWQs\n" + "IEkgZG9uJ3QgdGhpbmsgaXQgbWFrZXMgc2Vuc2UgdG8gInNvbHZlIiBpdCBieSBjcmVhdGluZyBh\n" + "CiJnZW5lcmljIiBtYXBwaW5nIHNlbWFudGljIHRoYXQgaXMgYmFzaWNhbGx5IGltcG9zc2libGUg\n" + "dG8gaW1wbGVtZW50IG9uCm1vc3QgYXJjaGl0ZWN0dXJlcyBvdXQgdGhlcmUgKGFuZCBjYW5ub3Qg\n" + "YmUgZW11bGF0ZWQpLgoKVGhpcyBpcyBhIHByb2JsZW0gdG8gYmUgc29sdmVkIGJ5IHRoZSBicmlk\n" + "Z2UgaXRzZWxmLiBJZiBBUk0gaGFzIGEKbWFwcGluZyBhdHRyaWJ1dGUgdG8gbWFrZSBzdG9yZXMg\n" + "bm9uLXBvc3RlZCwga2VlcCB0aGlzIGFuIEFSTSBzcGVjaWZpYwphdHRyaWJ1dGUgYXQgdGhpcyBz\n" + "dGFnZSBJJ2Qgc2F5LgoKPiBBbnl3YXk6Cj4gCj4gIlRoZSBQQ0kgc3BlY2lmaWNhdGlvbnMgKFJl\n" + "diAzLjAsIDMuMi41ICJUcmFuc2FjdGlvbiBPcmRlcmluZyBhbmQKPiBQb3N0aW5nIikgbWFuZGF0\n" + "ZSBub24tcG9zdGVkIGNvbmZpZ3VyYXRpb24gdHJhbnNhY3Rpb25zLiBBcyBmdXJ0aGVyCj4gaGln\n" + "aGxpZ2h0ZWQgaW4gdGhlIFBDSWUgc3BlY2lmaWNhdGlvbnMgKDQuMCAtIFJldjAuMywgIk9yZGVy\n" + "aW5nCj4gQ29uc2lkZXJhdGlvbnMgZm9yIHRoZSBFbmhhbmNlZCBDb25maWd1cmF0aW9uIEFjY2Vz\n" + "cyBNZWNoYW5pc20iKSwKPiB0aHJvdWdoIEVDQU0gYW5kIEVDQU0tZGVyaXZhdGl2ZSBjb25maWd1\n" + "cmF0aW9uIG1lY2hhbmlzbSwgdGhlIG1lbW9yeQo+IG1hcHBlZCB0cmFuc2FjdGlvbnMgZnJvbSB0\n" + "aGUgaG9zdCBDUFUgaW50byBDb25maWd1cmF0aW9uIFJlcXVlc3RzIG9uIHRoZQo+IFBDSSBleHBy\n" + "ZXNzIGZhYnJpYyBtYXkgY3JlYXRlIG9yZGVyaW5nIHByb2JsZW1zIGZvciBzb2Z0d2FyZSBiZWNh\n" + "dXNlCj4gd3JpdGVzIHRvIG1lbW9yeSBhZGRyZXNzIGFyZSB0eXBpY2FsbHkgcG9zdGVkIHRyYW5z\n" + "YWN0aW9ucyAodW5sZXNzIHRoZQo+IGFyY2hpdGVjdHVyZSBjYW4gZW5mb3JjZSB0aHJvdWdoIHZp\n" + "cnR1YWwgYWRkcmVzcyBtYXBwaW5nIG5vbi1wb3N0ZWQKPiB3cml0ZSB0cmFuc2FjdGlvbnMgYmVo\n" + "YXZpb3VyKSBidXQgd3JpdGVzIHRvIENvbmZpZ3VyYXRpb24gU3BhY2UgYXJlIG5vdAo+IHBvc3Rl\n" + "ZCBvbiB0aGUgUENJIGV4cHJlc3MgZmFicmljLiIKPiAKPiBPbiBBUk02NDoKPiAKPiAiVGhpcyBy\n" + "dWxlIGlzIHJlaW5mb3JjZWQgYnkgdGhlIEFSTSB2OCBhcmNoaXRlY3R1cmUgcmVmZXJlbmNlIG1h\n" + "bnVhbAo+IChpc3N1ZSBBLmssIEVhcmx5IFdyaXRlIEFja25vd2xlZGdtZW50KSB0aGF0IGV4cGxp\n" + "Y2l0bHkgcmVjb21tZW5kcwo+IHRoYXQgTm8gRWFybHkgV3JpdGUgQWNrbm93bGVkZ21lbnQgYXR0\n" + "cmlidXRlIHNob3VsZCBiZSB1c2VkIHRvIG1hcAo+IFBDSSBjb25maWd1cmF0aW9uICh3cml0ZSkg\n" + "dHJhbnNhY3Rpb25zLiIKPiAKPiA+IElmIGEgZ2l2ZW4gUENJZSBob3N0IGJyaWRnZSAoYXJjaGl0\n" + "ZWN0dXJlIHNwZWNpZmljKSByZXF1aXJlIGEgc3BlY2lhbAo+ID4gc2F1Y2UgdG8gcHJvdmlkZSB0\n" + "aGUgaWxsdXNpb24gb2Ygbm9uLXBvc3RpbmcsIHRoZW4gaW1wbGVtZW50IHRoaXMgaW4KPiA+IHRo\n" + "ZSBhY3R1YWwgcm9vdCBjb21wbGV4IGNvZGUuCj4gPiAKPiA+IEJUVy4gSSdtIHByZXR0eSBzdXJl\n" + "IHdlICJhY2NpZGVudGFsbHkiIG1hZGUgY29uZmlnIHdyaXRlcyBwb3N0ZWQgYXQKPiA+IGxlYXN0\n" + "IHRvIHRoZSBQSEIgb24gYSBudW1iZXIgb2YgcG93ZXJwYyBzeXN0ZW1zIGZvcmV2ZXIgYW5kIHdl\n" + "ICpuZXZlcioKPiA+IGhhZCBhIHByb2JsZW0gYmVjYXVzZSBvZiBpdCA7KQo+IAo+IE9rIHNvIHdl\n" + "IHNob3VsZCBpZ25vcmUgdGhlIFBDSWUgc3BlY2lmaWNhdGlvbnMgYW5kIEFSTSB2OCByZWZlcmVu\n" + "Y2UKPiBtYW51YWwgd2FpdGluZyBmb3IgYSBrZXJuZWwgYnVnIHRvIGFwcGVhciA/IElzIHRoYXQg\n" + "d2hhdCB5b3Ugc3VnZ2VzdAo+IGRvaW5nID8KPiAKPiBMb3JlbnpvCj4gCj4gPiA+IHYyIC0+IHYz\n" + "Ogo+ID4gPiAJLSBDcmVhdGVkIGEgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0\n" + "aW9uIGluIGEKPiA+ID4gc2VwYXJhdGUKPiA+ID4gCcKgwqBhc20tZ2VuZXJpYyBoZWFkZXIgYW5k\n" + "IHBhdGNoZWQgYWxsIGFyY2hlcyB0byBtYWtlIHVzZSBvZiBpdAo+ID4gPiAJLSBSZW1vdmVkIFBD\n" + "SSBkcml2ZXJzIHBhdGNoZXMgZnJvbSB0aGUgc2VyaWVzIHRvIHNpbXBsaWZ5IHRoZQo+ID4gPiAJ\n" + "wqDCoHJldmlldywgdGhleSB3aWxsIGJlIHBvc3RlZCBzZXBhcmF0ZWx5IG9uY2UgdGhlCj4gPiA+\n" + "IGlvcmVtYXBfbm9wb3N0KCkKPiA+ID4gCcKgwqBpbnRlcmZhY2UgaXMgc2V0dGxlZAo+ID4gPiAJ\n" + "LSBGaXhlZCBkZXZtX2lvcmVtYXBfKiBCVVMgb2Zmc2V0IGNvbW1lbnRzIGFuZCBpbXBsZW1lbnRl\n" + "ZAo+ID4gPiAJwqDCoG5vcG9zdCBpbnRlcmZhY2Ugb24gdG9wIG9mIGl0Cj4gPiA+IAktIEFkZGVk\n" + "IGNvbGxlY3RlZCB0YWdzCj4gPiA+IAo+ID4gPiB2MTogaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIw\n" + "MTcvMi8yNy8yMjgKPiA+ID4gCj4gPiA+IHYxIC0+IHYyOgo+ID4gPiAJLSBDaGFuZ2VkIHBjaV9y\n" + "ZW1hcF9jZmdzcGFjZSgpIHRvIG1vcmUgZ2VuZXJpYyBpb3JlbWFwX25vcG9zdCgpCj4gPiA+IAnC\n" + "oMKgaW50ZXJmYWNlCj4gPiA+IAktIEFkZGVkIHBncHJvdF9ub25wb3N0ZWQKPiA+ID4gCS0gRml4\n" + "ZWQgYnVpbGQgZXJyb3JzIG9uIGFyY2hlcyBub3QgcmVseWluZyBvbiBhc20tZ2VuZXJpYwo+ID4g\n" + "PiBoZWFkZXJzCj4gPiA+IAktIEFkZGVkIFBDSSB2ZXJzYXRpbGUgaG9zdCBjb250cm9sbGVyIGRy\n" + "aXZlciBwYXRjaAo+ID4gPiAJLSBBZGRlZCBtaXNzaW5nIGNvbmZpZyBzcGFjZSByZW1hcHBpbmcg\n" + "dG8gaGlzaWxpY29uIGhvc3QKPiA+ID4gY29udHJvbGxlcgo+ID4gPiAKPiA+ID4gLS0tLS0tLS0t\n" + "LS0tLS0tLS0tLS0tCj4gPiA+IE9yaWdpbmFsIGNvdmVyIGxldHRlcgo+ID4gPiAtLS0tLS0tLS0t\n" + "LS0tLS0tLS0tLS0KPiA+ID4gCj4gPiA+IFBDSSBsb2NhbCBidXMgc3BlY2lmaWNhdGlvbnMgKFJl\n" + "djMuMCwgMy4yLjUgIlRyYW5zYWN0aW9uIE9yZGVyaW5nCj4gPiA+IGFuZCBQb3N0aW5nIikgc3Ry\n" + "aWN0bHkgcmVxdWlyZSBQQ0kgY29uZmlndXJhdGlvbiBhbmQgSS9PIEFkZHJlc3MKPiA+ID4gc3Bh\n" + "Y2UKPiA+ID4gd3JpdGUgdHJhbnNhY3Rpb25zIHRvIGJlIG5vbi1wb3N0ZWQuCj4gPiA+IAo+ID4g\n" + "PiBDdXJyZW50IGNyb3Agb2YgRFQvQUNQSSBQQ0kgaG9zdCBjb250cm9sbGVycyBkcml2ZXJzIHJl\n" + "bGllcyBvbgo+ID4gPiB0aGUgaW9yZW1hcCBpbnRlcmZhY2UgdG8gbWFwIEVDQU0gYW5kIEVDQU0t\n" + "ZGVyaXZhdGl2ZSBQQ0kgY29uZmlnCj4gPiA+IHJlZ2lvbnMgYW5kIHBjaV9yZW1hcF9pb3NwYWNl\n" + "KCkgdG8gY3JlYXRlIGEgVk1BIGZvciBtYXBwaW5nCj4gPiA+IFBDSSBob3N0IGJyaWRnZSBJL08g\n" + "QWRkcmVzcyBzcGFjZSB0cmFuc2FjdGlvbnMgdG8gQ1BVIHZpcnR1YWwgYWRkcmVzcwo+ID4gPiBz\n" + "cGFjZS4KPiA+ID4gCj4gPiA+IE9uIHNvbWUgcGxhdGZvcm1zIChpZSBBUk0vQVJNNjQpIGlvcmVt\n" + "YXAgZmFpbHMgdG8gY29tcGx5IHdpdGggdGhlIFBDSQo+ID4gPiBjb25maWd1cmF0aW9uIG5vbi1w\n" + "b3N0ZWQgd3JpdGUgdHJhbnNhY3Rpb25zIHJlcXVpcmVtZW50LCBiZWNhdXNlIGl0Cj4gPiA+IHBy\n" + "b3ZpZGVzIGEgbWVtb3J5IG1hcHBpbmcgdGhhdCBpc3N1ZXMgImJ1ZmZlcmFibGUiIG9yLCBpbiBQ\n" + "Q0kgdGVybXMKPiA+ID4gInBvc3RlZCIgd3JpdGUgdHJhbnNhY3Rpb25zLiBMaWtld2lzZSwgdGhl\n" + "IGN1cnJlbnQKPiA+ID4gcGNpX3JlbWFwX2lvc3BhY2UoKQo+ID4gPiBpbXBsZW1lbnRhdGlvbiBt\n" + "YXBzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlIHRoYXQgdGhlIFBDSQo+ID4gPiB0cmFuc2xh\n" + "dGVzCj4gPiA+IHRvIEkvTyBzcGFjZSBjeWNsZXMgdG8gdmlydHVhbCBhZGRyZXNzIHNwYWNlIHRo\n" + "cm91Z2ggcGdwcm90X2RldmljZSgpCj4gPiA+IGF0dHJpYnV0ZXMgdGhhdCBvbiBlZyBBUk02NCBw\n" + "cm92aWRlcyBhIG1lbW9yeSBtYXBwaW5nIGlzc3VpbmcKPiA+ID4gcG9zdGVkIHdyaXRlcyB0cmFu\n" + "c2FjdGlvbnMsIHdoaWNoIGlzIG5vdCBQQ0kgc3BlY2lmaWNhdGlvbnMKPiA+ID4gY29tcGxpYW50\n" + "Lgo+ID4gPiAKPiA+ID4gVGhpcyBwYXRjaCBzZXJpZXNbMV0gYWRkcmVzc2VzIGJvdGggaXNzdWVz\n" + "IGluIG9uZSBnbzoKPiA+ID4gCj4gPiA+IC0gSXQgdXBkYXRlcyB0aGUgcGNpX3JlbWFwX2lvc3Bh\n" + "Y2UoKSBmdW5jdGlvbiB0byB1c2UgYSBwYWdlIG1hcHBpbmcKPiA+ID4gwqAgdGhhdCBndWFyYW50\n" + "ZWVzIG5vbi1wb3N0ZWQgd3JpdGUgdHJhbnNhY3Rpb25zIGZvciBJL08gc3BhY2UKPiA+ID4gYWRk\n" + "cmVzc2VzCj4gPiA+IC0gSXQgYWRkcyBhIGtlcm5lbCBBUEkgdG8gcmVtYXAgUENJIGNvbmZpZyBz\n" + "cGFjZSByZXNvdXJjZXMsIHNvIHRoYXQKPiA+ID4gwqAgYXJjaGl0ZWN0dXJlIGNhbiBvdmVycmlk\n" + "ZSBpdCB3aXRoIGEgbWFwcGluZyBpbXBsZW1lbnRhdGlvbiB0aGF0Cj4gPiA+IMKgIGd1YXJhbnRl\n" + "ZXMgUENJIHNwZWNpZmljYXRpb25zIGNvbXBsaWFuY3kgd3J0IG5vbi1wb3N0ZWQgd3JpdGUKPiA+\n" + "ID4gwqAgY29uZmlndXJhdGlvbiB0cmFuc2FjdGlvbnMKPiA+ID4gLSBJdCB1cGRhdGVzIGFsbCBQ\n" + "Q0kgaG9zdCBjb250cm9sbGVyIGltcGxlbWVudGF0aW9ucyAoYW5kIHRoZSBnZW5lcmljCj4gPiA+\n" + "IMKgIEVDQU0gbGF5ZXIpIHRvIHVzZSB0aGUgbmV3bHkgaW50cm9kdWNlZCBtYXBwaW5nIGludGVy\n" + "ZmFjZQo+ID4gPiAKPiA+ID4gVGVzdGVkIG9uIEp1bm8gRUNBTSBiYXNlZCBpbnRlcmZhY2UgKERU\n" + "L0FDUEkpLgo+ID4gPiAKPiA+ID4gTm9uLUVDQU0gUENJIGhvc3QgY29udHJvbGxlciBkcml2ZXJz\n" + "IHBhdGNoZXMgbmVlZCBjaGVja2luZyB0byBtYWtlCj4gPiA+IHN1cmUgdGhhdDoKPiA+ID4gCj4g\n" + "PiA+IC0gSSBwYXRjaGVkIHRoZSBjb3JyZWN0IHJlc291cmNlIHJlZ2lvbiBtYXBwaW5nIGZvciBj\n" + "b25maWcgc3BhY2UKPiA+ID4gLSBUaGVyZSBhcmUgbm90IGFueSBvdGhlciB3YXlzIHRvIGVuc3Vy\n" + "ZSBwb3N0ZWQtd3JpdGUgY29tcGxldGlvbgo+ID4gPiDCoCBpbiB0aGUgcmVzcGVjdGl2ZSBwY2lf\n" + "b3BzIHRoYXQgbWFrZSB0aGUgcmVsZXZhbnQgcGF0Y2ggdW5uZWNlc3NhcnkKPiA+ID4gCj4gPiA+\n" + "IFsxXQo+ID4gPiBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv\n" + "bHBpZXJhbGlzaS9saW51eC5naXQKPiA+ID4gcGNpL2NvbmZpZy1pby1tYXBwaW5ncy1maXgtdjMK\n" + "PiA+ID4gCj4gPiA+IExvcmVuem8gUGllcmFsaXNpICgzMik6Cj4gPiA+IMKgIFBDSTogcmVtb3Zl\n" + "IF9fd2VhayB0YWcgZnJvbSBwY2lfcmVtYXBfaW9zcGFjZSgpCj4gPiA+IMKgIGFzbS1nZW5lcmlj\n" + "L3BndGFibGUuaDogaW50cm9kdWNlIHBncHJvdF9ub25wb3N0ZWQgcmVtYXAgYXR0cmlidXRlCj4g\n" + "PiA+IMKgIFBDSTogZml4IHBjaV9yZW1hcF9pb3NwYWNlKCkgcmVtYXAgYXR0cmlidXRlCj4gPiA+\n" + "IMKgIGFzbS1nZW5lcmljOiBhZGQgaW9yZW1hcF9ub3Bvc3QoKSByZW1hcCBpbnRlcmZhY2UKPiA+\n" + "ID4gwqAgYWxwaGE6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0\n" + "aW9uCj4gPiA+IMKgIGF2cjMyOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBs\n" + "ZW1lbnRhdGlvbgo+ID4gPiDCoCBhcmM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgp\n" + "IGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIGNyaXM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25v\n" + "cG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIGZydjogaW5jbHVkZSBkZWZhdWx0IGlvcmVt\n" + "YXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgaGV4YWdvbjogaW5jbHVkZSBkZWZh\n" + "dWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgaWE2NDogaW5jbHVk\n" + "ZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgbTMycjog\n" + "aW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAg\n" + "bTY4azogaW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+\n" + "ID4gwqAgbWV0YWc6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0\n" + "aW9uCj4gPiA+IMKgIG1pY3JvYmxhemU6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgp\n" + "IGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIG1pcHM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25v\n" + "cG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIG1uMTAzMDA6IGluY2x1ZGUgZGVmYXVsdCBp\n" + "b3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIG5pb3MyOiBpbmNsdWRlIGRl\n" + "ZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1lbnRhdGlvbgo+ID4gPiDCoCBvcGVucmlzYzog\n" + "aW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAg\n" + "cGFyaXNjOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1lbnRhdGlvbgo+\n" + "ID4gPiDCoCBwb3dlcnBjOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1l\n" + "bnRhdGlvbgo+ID4gPiDCoCBzMzkwOiBpbmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBp\n" + "bXBsZW1lbnRhdGlvbgo+ID4gPiDCoCBzaDogaW5jbHVkZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0\n" + "KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgc3BhcmM6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFw\n" + "X25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIHRpbGU6IGluY2x1ZGUgZGVmYXVsdCBp\n" + "b3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4gPiA+IMKgIHVuaWNvcmUzMjogaW5jbHVk\n" + "ZSBkZWZhdWx0IGlvcmVtYXBfbm9wb3N0KCkgaW1wbGVtZW50YXRpb24KPiA+ID4gwqAgeDg2OiBp\n" + "bmNsdWRlIGRlZmF1bHQgaW9yZW1hcF9ub3Bvc3QoKSBpbXBsZW1lbnRhdGlvbgo+ID4gPiDCoCB4\n" + "dGVuc2E6IGluY2x1ZGUgZGVmYXVsdCBpb3JlbWFwX25vcG9zdCgpIGltcGxlbWVudGF0aW9uCj4g\n" + "PiA+IMKgIGFybTY0OiBpbXBsZW1lbnQgaW9yZW1hcF9ub3Bvc3QoKSBpbnRlcmZhY2UKPiA+ID4g\n" + "wqAgYXJtOiBpbXBsZW1lbnQgaW9yZW1hcF9ub3Bvc3QoKSBpbnRlcmZhY2UKPiA+ID4gwqAgbGli\n" + "OiBmaXggRGV2cmVzIGRldm1faW9yZW1hcF8qIG9mZnNldCBwYXJhbWV0ZXIga2VybmVsZG9jCj4g\n" + "PiA+IGRlc2NyaXB0aW9uCj4gPiA+IMKgIGxpYjogaW1wbGVtZW50IERldnJlcyBpb3JlbWFwX25v\n" + "cG9zdCgpIGludGVyZmFjZQo+ID4gPiAKPiA+ID4gwqBEb2N1bWVudGF0aW9uL2RyaXZlci1tb2Rl\n" + "bC9kZXZyZXMudHh0IHzCoMKgMyArKwo+ID4gPiDCoGFyY2gvYWxwaGEvaW5jbHVkZS9hc20vaW8u\n" + "aMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvYXJjL2luY2x1ZGUv\n" + "YXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSArCj4gPiA+IMKgYXJjaC9h\n" + "cm0vaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA5ICsrKysK\n" + "PiA+ID4gwqBhcmNoL2FybS9tbS9pb3JlbWFwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg\n" + "wqDCoMKgfMKgwqA3ICsrKwo+ID4gPiDCoGFyY2gvYXJtL21tL25vbW11LmPCoMKgwqDCoMKgwqDC\n" + "oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgOSArKysrCj4gPiA+IMKgYXJjaC9hcm02NC9p\n" + "bmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgMTIgKysrKysKPiA+ID4gwqBh\n" + "cmNoL2F2cjMyL2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsK\n" + "PiA+ID4gwqBhcmNoL2NyaXMvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC\n" + "oHzCoMKgMSArCj4gPiA+IMKgYXJjaC9mcnYvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKg\n" + "wqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBhcmNoL2hleGFnb24vaW5jbHVkZS9hc20vaW8u\n" + "aMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMiArCj4gPiA+IMKgYXJjaC9pYTY0L2luY2x1ZGUvYXNt\n" + "L2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvbTMyci9p\n" + "bmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBh\n" + "cmNoL202OGsvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSAr\n" + "Cj4gPiA+IMKgYXJjaC9tZXRhZy9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDC\n" + "oHzCoMKgMiArCj4gPiA+IMKgYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDC\n" + "oMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvbWlwcy9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDC\n" + "oMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBhcmNoL21uMTAzMDAvaW5jbHVkZS9hc20v\n" + "aW8uaMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSArCj4gPiA+IMKgYXJjaC9uaW9zMi9pbmNsdWRl\n" + "L2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMSArCj4gPiA+IMKgYXJjaC9vcGVu\n" + "cmlzYy9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoHzCoMKgMiArCj4gPiA+IMKgYXJj\n" + "aC9wYXJpc2MvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+\n" + "ID4gwqBhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKg\n" + "MSArCj4gPiA+IMKgYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDC\n" + "oMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvc2gvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDC\n" + "oMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvc3BhcmMvaW5jbHVkZS9hc20v\n" + "aW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDCoGFyY2gvdGlsZS9pbmNs\n" + "dWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxICsKPiA+ID4gwqBhcmNo\n" + "L3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9pby5owqDCoMKgwqDCoMKgwqB8wqDCoDEgKwo+ID4gPiDC\n" + "oGFyY2gveDg2L2luY2x1ZGUvYXNtL2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKg\n" + "MSArCj4gPiA+IMKgYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDC\n" + "oMKgfMKgwqAxICsKPiA+ID4gwqBkcml2ZXJzL3BjaS9wY2kuY8KgwqDCoMKgwqDCoMKgwqDCoMKg\n" + "wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgNCArLQo+ID4gPiDCoGluY2x1ZGUvYXNtLWdlbmVy\n" + "aWMvaW9yZW1hcC1ub3Bvc3QuaMKgwqB8wqDCoDkgKysrKwo+ID4gPiDCoGluY2x1ZGUvYXNtLWdl\n" + "bmVyaWMvcGd0YWJsZS5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA0ICsrCj4gPiA+IMKgaW5jbHVk\n" + "ZS9saW51eC9kZXZpY2UuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAyICsK\n" + "PiA+ID4gwqBpbmNsdWRlL2xpbnV4L2lvLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC\n" + "oMKgwqDCoMKgfMKgwqAyICsKPiA+ID4gwqBsaWIvZGV2cmVzLmPCoMKgwqDCoMKgwqDCoMKgwqDC\n" + "oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCA4NAo+ID4gPiArKysrKysrKysrKysr\n" + "KysrKysrKysrKysrKysrKysrKystLQo+ID4gPiDCoDM1IGZpbGVzIGNoYW5nZWQsIDE2NyBpbnNl\n" + "cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs\n" + "dWRlL2FzbS1nZW5lcmljL2lvcmVtYXAtbm9wb3N0LmgKPiA+ID4gCgpfX19fX19fX19fX19fX19f\n" + "X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg\n" + "bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu\n" + ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== -b4a27a70cbf2491ee12dfa52890aa28fb277afd7e5634efdea1f0d93ddbd3bbb +39757df2c4e13d96201739479781a98ca8b0a58808a403963e4bebd34ef92395
diff --git a/a/1.txt b/N2/1.txt index d724faa..940cdba 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -88,20 +88,20 @@ attribute at this stage I'd say. > > > v2 -> v3: > > > - Created a default ioremap_nopost() implementation in a > > > separate -> > > asm-generic header and patched all arches to make use of it +> > > ??asm-generic header and patched all arches to make use of it > > > - Removed PCI drivers patches from the series to simplify the -> > > review, they will be posted separately once the +> > > ??review, they will be posted separately once the > > > ioremap_nopost() -> > > interface is settled +> > > ??interface is settled > > > - Fixed devm_ioremap_* BUS offset comments and implemented -> > > nopost interface on top of it +> > > ??nopost interface on top of it > > > - Added collected tags > > > > > > v1: https://lkml.org/lkml/2017/2/27/228 > > > > > > v1 -> v2: > > > - Changed pci_remap_cfgspace() to more generic ioremap_nopost() -> > > interface +> > > ??interface > > > - Added pgprot_nonposted > > > - Fixed build errors on arches not relying on asm-generic > > > headers @@ -139,14 +139,14 @@ attribute at this stage I'd say. > > > This patch series[1] addresses both issues in one go: > > > > > > - It updates the pci_remap_iospace() function to use a page mapping -> > > that guarantees non-posted write transactions for I/O space +> > > ? that guarantees non-posted write transactions for I/O space > > > addresses > > > - It adds a kernel API to remap PCI config space resources, so that -> > > architecture can override it with a mapping implementation that -> > > guarantees PCI specifications compliancy wrt non-posted write -> > > configuration transactions +> > > ? architecture can override it with a mapping implementation that +> > > ? guarantees PCI specifications compliancy wrt non-posted write +> > > ? configuration transactions > > > - It updates all PCI host controller implementations (and the generic -> > > ECAM layer) to use the newly introduced mapping interface +> > > ? ECAM layer) to use the newly introduced mapping interface > > > > > > Tested on Juno ECAM based interface (DT/ACPI). > > > @@ -155,88 +155,83 @@ attribute at this stage I'd say. > > > > > > - I patched the correct resource region mapping for config space > > > - There are not any other ways to ensure posted-write completion -> > > in the respective pci_ops that make the relevant patch unnecessary +> > > ? in the respective pci_ops that make the relevant patch unnecessary > > > > > > [1] > > > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git > > > pci/config-io-mappings-fix-v3 > > > > > > Lorenzo Pieralisi (32): -> > > PCI: remove __weak tag from pci_remap_iospace() -> > > asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute -> > > PCI: fix pci_remap_iospace() remap attribute -> > > asm-generic: add ioremap_nopost() remap interface -> > > alpha: include default ioremap_nopost() implementation -> > > avr32: include default ioremap_nopost() implementation -> > > arc: include default ioremap_nopost() implementation -> > > cris: include default ioremap_nopost() implementation -> > > frv: include default ioremap_nopost() implementation -> > > hexagon: include default ioremap_nopost() implementation -> > > ia64: include default ioremap_nopost() implementation -> > > m32r: include default ioremap_nopost() implementation -> > > m68k: include default ioremap_nopost() implementation -> > > metag: include default ioremap_nopost() implementation -> > > microblaze: include default ioremap_nopost() implementation -> > > mips: include default ioremap_nopost() implementation -> > > mn10300: include default ioremap_nopost() implementation -> > > nios2: include default ioremap_nopost() implementation -> > > openrisc: include default ioremap_nopost() implementation -> > > parisc: include default ioremap_nopost() implementation -> > > powerpc: include default ioremap_nopost() implementation -> > > s390: include default ioremap_nopost() implementation -> > > sh: include default ioremap_nopost() implementation -> > > sparc: include default ioremap_nopost() implementation -> > > tile: include default ioremap_nopost() implementation -> > > unicore32: include default ioremap_nopost() implementation -> > > x86: include default ioremap_nopost() implementation -> > > xtensa: include default ioremap_nopost() implementation -> > > arm64: implement ioremap_nopost() interface -> > > arm: implement ioremap_nopost() interface -> > > lib: fix Devres devm_ioremap_* offset parameter kerneldoc +> > > ? PCI: remove __weak tag from pci_remap_iospace() +> > > ? asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute +> > > ? PCI: fix pci_remap_iospace() remap attribute +> > > ? asm-generic: add ioremap_nopost() remap interface +> > > ? alpha: include default ioremap_nopost() implementation +> > > ? avr32: include default ioremap_nopost() implementation +> > > ? arc: include default ioremap_nopost() implementation +> > > ? cris: include default ioremap_nopost() implementation +> > > ? frv: include default ioremap_nopost() implementation +> > > ? hexagon: include default ioremap_nopost() implementation +> > > ? ia64: include default ioremap_nopost() implementation +> > > ? m32r: include default ioremap_nopost() implementation +> > > ? m68k: include default ioremap_nopost() implementation +> > > ? metag: include default ioremap_nopost() implementation +> > > ? microblaze: include default ioremap_nopost() implementation +> > > ? mips: include default ioremap_nopost() implementation +> > > ? mn10300: include default ioremap_nopost() implementation +> > > ? nios2: include default ioremap_nopost() implementation +> > > ? openrisc: include default ioremap_nopost() implementation +> > > ? parisc: include default ioremap_nopost() implementation +> > > ? powerpc: include default ioremap_nopost() implementation +> > > ? s390: include default ioremap_nopost() implementation +> > > ? sh: include default ioremap_nopost() implementation +> > > ? sparc: include default ioremap_nopost() implementation +> > > ? tile: include default ioremap_nopost() implementation +> > > ? unicore32: include default ioremap_nopost() implementation +> > > ? x86: include default ioremap_nopost() implementation +> > > ? xtensa: include default ioremap_nopost() implementation +> > > ? arm64: implement ioremap_nopost() interface +> > > ? arm: implement ioremap_nopost() interface +> > > ? lib: fix Devres devm_ioremap_* offset parameter kerneldoc > > > description -> > > lib: implement Devres ioremap_nopost() interface -> > > -> > > Documentation/driver-model/devres.txt | 3 ++ -> > > arch/alpha/include/asm/io.h | 1 + -> > > arch/arc/include/asm/io.h | 1 + -> > > arch/arm/include/asm/io.h | 9 ++++ -> > > arch/arm/mm/ioremap.c | 7 +++ -> > > arch/arm/mm/nommu.c | 9 ++++ -> > > arch/arm64/include/asm/io.h | 12 +++++ -> > > arch/avr32/include/asm/io.h | 1 + -> > > arch/cris/include/asm/io.h | 1 + -> > > arch/frv/include/asm/io.h | 1 + -> > > arch/hexagon/include/asm/io.h | 2 + -> > > arch/ia64/include/asm/io.h | 1 + -> > > arch/m32r/include/asm/io.h | 1 + -> > > arch/m68k/include/asm/io.h | 1 + -> > > arch/metag/include/asm/io.h | 2 + -> > > arch/microblaze/include/asm/io.h | 1 + -> > > arch/mips/include/asm/io.h | 1 + -> > > arch/mn10300/include/asm/io.h | 1 + -> > > arch/nios2/include/asm/io.h | 1 + -> > > arch/openrisc/include/asm/io.h | 2 + -> > > arch/parisc/include/asm/io.h | 1 + -> > > arch/powerpc/include/asm/io.h | 1 + -> > > arch/s390/include/asm/io.h | 1 + -> > > arch/sh/include/asm/io.h | 1 + -> > > arch/sparc/include/asm/io.h | 1 + -> > > arch/tile/include/asm/io.h | 1 + -> > > arch/unicore32/include/asm/io.h | 1 + -> > > arch/x86/include/asm/io.h | 1 + -> > > arch/xtensa/include/asm/io.h | 1 + -> > > drivers/pci/pci.c | 4 +- -> > > include/asm-generic/ioremap-nopost.h | 9 ++++ -> > > include/asm-generic/pgtable.h | 4 ++ -> > > include/linux/device.h | 2 + -> > > include/linux/io.h | 2 + -> > > lib/devres.c | 84 +> > > ? lib: implement Devres ioremap_nopost() interface +> > > +> > > ?Documentation/driver-model/devres.txt |??3 ++ +> > > ?arch/alpha/include/asm/io.h???????????|??1 + +> > > ?arch/arc/include/asm/io.h?????????????|??1 + +> > > ?arch/arm/include/asm/io.h?????????????|??9 ++++ +> > > ?arch/arm/mm/ioremap.c?????????????????|??7 +++ +> > > ?arch/arm/mm/nommu.c???????????????????|??9 ++++ +> > > ?arch/arm64/include/asm/io.h???????????| 12 +++++ +> > > ?arch/avr32/include/asm/io.h???????????|??1 + +> > > ?arch/cris/include/asm/io.h????????????|??1 + +> > > ?arch/frv/include/asm/io.h?????????????|??1 + +> > > ?arch/hexagon/include/asm/io.h?????????|??2 + +> > > ?arch/ia64/include/asm/io.h????????????|??1 + +> > > ?arch/m32r/include/asm/io.h????????????|??1 + +> > > ?arch/m68k/include/asm/io.h????????????|??1 + +> > > ?arch/metag/include/asm/io.h???????????|??2 + +> > > ?arch/microblaze/include/asm/io.h??????|??1 + +> > > ?arch/mips/include/asm/io.h????????????|??1 + +> > > ?arch/mn10300/include/asm/io.h?????????|??1 + +> > > ?arch/nios2/include/asm/io.h???????????|??1 + +> > > ?arch/openrisc/include/asm/io.h????????|??2 + +> > > ?arch/parisc/include/asm/io.h??????????|??1 + +> > > ?arch/powerpc/include/asm/io.h?????????|??1 + +> > > ?arch/s390/include/asm/io.h????????????|??1 + +> > > ?arch/sh/include/asm/io.h??????????????|??1 + +> > > ?arch/sparc/include/asm/io.h???????????|??1 + +> > > ?arch/tile/include/asm/io.h????????????|??1 + +> > > ?arch/unicore32/include/asm/io.h???????|??1 + +> > > ?arch/x86/include/asm/io.h?????????????|??1 + +> > > ?arch/xtensa/include/asm/io.h??????????|??1 + +> > > ?drivers/pci/pci.c?????????????????????|??4 +- +> > > ?include/asm-generic/ioremap-nopost.h??|??9 ++++ +> > > ?include/asm-generic/pgtable.h?????????|??4 ++ +> > > ?include/linux/device.h????????????????|??2 + +> > > ?include/linux/io.h????????????????????|??2 + +> > > ?lib/devres.c??????????????????????????| 84 > > > +++++++++++++++++++++++++++++++++-- -> > > 35 files changed, 167 insertions(+), 5 deletions(-) -> > > create mode 100644 include/asm-generic/ioremap-nopost.h -> > > - -_______________________________________________ -linux-arm-kernel mailing list -linux-arm-kernel@lists.infradead.org -http://lists.infradead.org/mailman/listinfo/linux-arm-kernel +> > > ?35 files changed, 167 insertions(+), 5 deletions(-) +> > > ?create mode 100644 include/asm-generic/ioremap-nopost.h +> > > diff --git a/a/content_digest b/N2/content_digest index 5da58c3..a4fac0b 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -1,34 +1,10 @@ "ref\020170411122923.6285-1-lorenzo.pieralisi@arm.com\0" "ref\01491917906.7236.7.camel@kernel.crashing.org\0" "ref\020170411140857.GA6821@red-moon\0" - "From\0Benjamin Herrenschmidt <benh@kernel.crashing.org>\0" - "Subject\0Re: [PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings\0" + "From\0benh@kernel.crashing.org (Benjamin Herrenschmidt)\0" + "Subject\0[PATCH v3 00/32] PCI: fix config and I/O Address space memory mappings\0" "Date\0Wed, 12 Apr 2017 09:12:51 +1000\0" - "To\0Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>\0" - "Cc\0Jonas Bonn <jonas@southpole.se>" - Rich Felker <dalias@libc.org> - linux-pci@vger.kernel.org - Will Deacon <will.deacon@arm.com> - James E.J. Bottomley <jejb@parisc-linux.org> - David Howells <dhowells@redhat.com> - Max Filippov <jcmvbkbc@gmail.com> - Paul Mackerras <paulus@samba.org> - Huacai Chen <chenhc@lemote.com> - Guan Xuetao <gxt@mprc.pku.edu.cn> - Thomas Gleixner <tglx@linutronix.de> - Hans-Christian Egtvedt <egtvedt@samfundet.no> - linux-arch@vger.kernel.org - Jesper Nilsson <jesper.nilsson@axis.com> - Yoshinori Sato <ysato@users.sourceforge.jp> - Michael Ellerman <mpe@ellerman.id.au> - Helge Deller <deller@gmx.de> - Russell King <linux@armlinux.org.uk> - Ingo Molnar <mingo@redhat.com> - Geert Uytterhoeven <geert@linux-m68k.org> - Catalin Marinas <catalin.marinas@arm.com> - Matt Turner <mattst88@gmail.com> - Haavard Skinnemoen <hskinnemoen@gmail.com> - " Fenghua Yu <fenghua.yu@intel.co>\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "On Tue, 2017-04-11 at 15:08 +0100, Lorenzo Pieralisi wrote:\n" @@ -121,20 +97,20 @@ "> > > v2 -> v3:\n" "> > > \t- Created a default ioremap_nopost() implementation in a\n" "> > > separate\n" - "> > > \t\302\240\302\240asm-generic header and patched all arches to make use of it\n" + "> > > \t??asm-generic header and patched all arches to make use of it\n" "> > > \t- Removed PCI drivers patches from the series to simplify the\n" - "> > > \t\302\240\302\240review, they will be posted separately once the\n" + "> > > \t??review, they will be posted separately once the\n" "> > > ioremap_nopost()\n" - "> > > \t\302\240\302\240interface is settled\n" + "> > > \t??interface is settled\n" "> > > \t- Fixed devm_ioremap_* BUS offset comments and implemented\n" - "> > > \t\302\240\302\240nopost interface on top of it\n" + "> > > \t??nopost interface on top of it\n" "> > > \t- Added collected tags\n" "> > > \n" "> > > v1: https://lkml.org/lkml/2017/2/27/228\n" "> > > \n" "> > > v1 -> v2:\n" "> > > \t- Changed pci_remap_cfgspace() to more generic ioremap_nopost()\n" - "> > > \t\302\240\302\240interface\n" + "> > > \t??interface\n" "> > > \t- Added pgprot_nonposted\n" "> > > \t- Fixed build errors on arches not relying on asm-generic\n" "> > > headers\n" @@ -172,14 +148,14 @@ "> > > This patch series[1] addresses both issues in one go:\n" "> > > \n" "> > > - It updates the pci_remap_iospace() function to use a page mapping\n" - "> > > \302\240 that guarantees non-posted write transactions for I/O space\n" + "> > > ? that guarantees non-posted write transactions for I/O space\n" "> > > addresses\n" "> > > - It adds a kernel API to remap PCI config space resources, so that\n" - "> > > \302\240 architecture can override it with a mapping implementation that\n" - "> > > \302\240 guarantees PCI specifications compliancy wrt non-posted write\n" - "> > > \302\240 configuration transactions\n" + "> > > ? architecture can override it with a mapping implementation that\n" + "> > > ? guarantees PCI specifications compliancy wrt non-posted write\n" + "> > > ? configuration transactions\n" "> > > - It updates all PCI host controller implementations (and the generic\n" - "> > > \302\240 ECAM layer) to use the newly introduced mapping interface\n" + "> > > ? ECAM layer) to use the newly introduced mapping interface\n" "> > > \n" "> > > Tested on Juno ECAM based interface (DT/ACPI).\n" "> > > \n" @@ -188,90 +164,85 @@ "> > > \n" "> > > - I patched the correct resource region mapping for config space\n" "> > > - There are not any other ways to ensure posted-write completion\n" - "> > > \302\240 in the respective pci_ops that make the relevant patch unnecessary\n" + "> > > ? in the respective pci_ops that make the relevant patch unnecessary\n" "> > > \n" "> > > [1]\n" "> > > git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/linux.git\n" "> > > pci/config-io-mappings-fix-v3\n" "> > > \n" "> > > Lorenzo Pieralisi (32):\n" - "> > > \302\240 PCI: remove __weak tag from pci_remap_iospace()\n" - "> > > \302\240 asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute\n" - "> > > \302\240 PCI: fix pci_remap_iospace() remap attribute\n" - "> > > \302\240 asm-generic: add ioremap_nopost() remap interface\n" - "> > > \302\240 alpha: include default ioremap_nopost() implementation\n" - "> > > \302\240 avr32: include default ioremap_nopost() implementation\n" - "> > > \302\240 arc: include default ioremap_nopost() implementation\n" - "> > > \302\240 cris: include default ioremap_nopost() implementation\n" - "> > > \302\240 frv: include default ioremap_nopost() implementation\n" - "> > > \302\240 hexagon: include default ioremap_nopost() implementation\n" - "> > > \302\240 ia64: include default ioremap_nopost() implementation\n" - "> > > \302\240 m32r: include default ioremap_nopost() implementation\n" - "> > > \302\240 m68k: include default ioremap_nopost() implementation\n" - "> > > \302\240 metag: include default ioremap_nopost() implementation\n" - "> > > \302\240 microblaze: include default ioremap_nopost() implementation\n" - "> > > \302\240 mips: include default ioremap_nopost() implementation\n" - "> > > \302\240 mn10300: include default ioremap_nopost() implementation\n" - "> > > \302\240 nios2: include default ioremap_nopost() implementation\n" - "> > > \302\240 openrisc: include default ioremap_nopost() implementation\n" - "> > > \302\240 parisc: include default ioremap_nopost() implementation\n" - "> > > \302\240 powerpc: include default ioremap_nopost() implementation\n" - "> > > \302\240 s390: include default ioremap_nopost() implementation\n" - "> > > \302\240 sh: include default ioremap_nopost() implementation\n" - "> > > \302\240 sparc: include default ioremap_nopost() implementation\n" - "> > > \302\240 tile: include default ioremap_nopost() implementation\n" - "> > > \302\240 unicore32: include default ioremap_nopost() implementation\n" - "> > > \302\240 x86: include default ioremap_nopost() implementation\n" - "> > > \302\240 xtensa: include default ioremap_nopost() implementation\n" - "> > > \302\240 arm64: implement ioremap_nopost() interface\n" - "> > > \302\240 arm: implement ioremap_nopost() interface\n" - "> > > \302\240 lib: fix Devres devm_ioremap_* offset parameter kerneldoc\n" + "> > > ? PCI: remove __weak tag from pci_remap_iospace()\n" + "> > > ? asm-generic/pgtable.h: introduce pgprot_nonposted remap attribute\n" + "> > > ? PCI: fix pci_remap_iospace() remap attribute\n" + "> > > ? asm-generic: add ioremap_nopost() remap interface\n" + "> > > ? alpha: include default ioremap_nopost() implementation\n" + "> > > ? avr32: include default ioremap_nopost() implementation\n" + "> > > ? arc: include default ioremap_nopost() implementation\n" + "> > > ? cris: include default ioremap_nopost() implementation\n" + "> > > ? frv: include default ioremap_nopost() implementation\n" + "> > > ? hexagon: include default ioremap_nopost() implementation\n" + "> > > ? ia64: include default ioremap_nopost() implementation\n" + "> > > ? m32r: include default ioremap_nopost() implementation\n" + "> > > ? m68k: include default ioremap_nopost() implementation\n" + "> > > ? metag: include default ioremap_nopost() implementation\n" + "> > > ? microblaze: include default ioremap_nopost() implementation\n" + "> > > ? mips: include default ioremap_nopost() implementation\n" + "> > > ? mn10300: include default ioremap_nopost() implementation\n" + "> > > ? nios2: include default ioremap_nopost() implementation\n" + "> > > ? openrisc: include default ioremap_nopost() implementation\n" + "> > > ? parisc: include default ioremap_nopost() implementation\n" + "> > > ? powerpc: include default ioremap_nopost() implementation\n" + "> > > ? s390: include default ioremap_nopost() implementation\n" + "> > > ? sh: include default ioremap_nopost() implementation\n" + "> > > ? sparc: include default ioremap_nopost() implementation\n" + "> > > ? tile: include default ioremap_nopost() implementation\n" + "> > > ? unicore32: include default ioremap_nopost() implementation\n" + "> > > ? x86: include default ioremap_nopost() implementation\n" + "> > > ? xtensa: include default ioremap_nopost() implementation\n" + "> > > ? arm64: implement ioremap_nopost() interface\n" + "> > > ? arm: implement ioremap_nopost() interface\n" + "> > > ? lib: fix Devres devm_ioremap_* offset parameter kerneldoc\n" "> > > description\n" - "> > > \302\240 lib: implement Devres ioremap_nopost() interface\n" - "> > > \n" - "> > > \302\240Documentation/driver-model/devres.txt |\302\240\302\2403 ++\n" - "> > > \302\240arch/alpha/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/arc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/arm/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2409 ++++\n" - "> > > \302\240arch/arm/mm/ioremap.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2407 +++\n" - "> > > \302\240arch/arm/mm/nommu.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2409 ++++\n" - "> > > \302\240arch/arm64/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 12 +++++\n" - "> > > \302\240arch/avr32/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/cris/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/frv/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/hexagon/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240arch/ia64/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/m32r/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/m68k/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/metag/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240arch/microblaze/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/mips/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/mn10300/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/nios2/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/openrisc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240arch/parisc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/powerpc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/s390/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/sh/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/sparc/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/tile/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/unicore32/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/x86/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240arch/xtensa/include/asm/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2401 +\n" - "> > > \302\240drivers/pci/pci.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2404 +-\n" - "> > > \302\240include/asm-generic/ioremap-nopost.h\302\240\302\240|\302\240\302\2409 ++++\n" - "> > > \302\240include/asm-generic/pgtable.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2404 ++\n" - "> > > \302\240include/linux/device.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240include/linux/io.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2402 +\n" - "> > > \302\240lib/devres.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 84\n" + "> > > ? lib: implement Devres ioremap_nopost() interface\n" + "> > > \n" + "> > > ?Documentation/driver-model/devres.txt |??3 ++\n" + "> > > ?arch/alpha/include/asm/io.h???????????|??1 +\n" + "> > > ?arch/arc/include/asm/io.h?????????????|??1 +\n" + "> > > ?arch/arm/include/asm/io.h?????????????|??9 ++++\n" + "> > > ?arch/arm/mm/ioremap.c?????????????????|??7 +++\n" + "> > > ?arch/arm/mm/nommu.c???????????????????|??9 ++++\n" + "> > > ?arch/arm64/include/asm/io.h???????????| 12 +++++\n" + "> > > ?arch/avr32/include/asm/io.h???????????|??1 +\n" + "> > > ?arch/cris/include/asm/io.h????????????|??1 +\n" + "> > > ?arch/frv/include/asm/io.h?????????????|??1 +\n" + "> > > ?arch/hexagon/include/asm/io.h?????????|??2 +\n" + "> > > ?arch/ia64/include/asm/io.h????????????|??1 +\n" + "> > > ?arch/m32r/include/asm/io.h????????????|??1 +\n" + "> > > ?arch/m68k/include/asm/io.h????????????|??1 +\n" + "> > > ?arch/metag/include/asm/io.h???????????|??2 +\n" + "> > > ?arch/microblaze/include/asm/io.h??????|??1 +\n" + "> > > ?arch/mips/include/asm/io.h????????????|??1 +\n" + "> > > ?arch/mn10300/include/asm/io.h?????????|??1 +\n" + "> > > ?arch/nios2/include/asm/io.h???????????|??1 +\n" + "> > > ?arch/openrisc/include/asm/io.h????????|??2 +\n" + "> > > ?arch/parisc/include/asm/io.h??????????|??1 +\n" + "> > > ?arch/powerpc/include/asm/io.h?????????|??1 +\n" + "> > > ?arch/s390/include/asm/io.h????????????|??1 +\n" + "> > > ?arch/sh/include/asm/io.h??????????????|??1 +\n" + "> > > ?arch/sparc/include/asm/io.h???????????|??1 +\n" + "> > > ?arch/tile/include/asm/io.h????????????|??1 +\n" + "> > > ?arch/unicore32/include/asm/io.h???????|??1 +\n" + "> > > ?arch/x86/include/asm/io.h?????????????|??1 +\n" + "> > > ?arch/xtensa/include/asm/io.h??????????|??1 +\n" + "> > > ?drivers/pci/pci.c?????????????????????|??4 +-\n" + "> > > ?include/asm-generic/ioremap-nopost.h??|??9 ++++\n" + "> > > ?include/asm-generic/pgtable.h?????????|??4 ++\n" + "> > > ?include/linux/device.h????????????????|??2 +\n" + "> > > ?include/linux/io.h????????????????????|??2 +\n" + "> > > ?lib/devres.c??????????????????????????| 84\n" "> > > +++++++++++++++++++++++++++++++++--\n" - "> > > \302\24035 files changed, 167 insertions(+), 5 deletions(-)\n" - "> > > \302\240create mode 100644 include/asm-generic/ioremap-nopost.h\n" - "> > > \n" - "\n" - "_______________________________________________\n" - "linux-arm-kernel mailing list\n" - "linux-arm-kernel@lists.infradead.org\n" - http://lists.infradead.org/mailman/listinfo/linux-arm-kernel + "> > > ?35 files changed, 167 insertions(+), 5 deletions(-)\n" + "> > > ?create mode 100644 include/asm-generic/ioremap-nopost.h\n" + > > > -b4a27a70cbf2491ee12dfa52890aa28fb277afd7e5634efdea1f0d93ddbd3bbb +f79eba3db5f88de7a6d13ddf8dc54e6629e51ab2e37ceaa0a785bcfa3a48d11c
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.