From mboxrd@z Thu Jan 1 00:00:00 1970 From: phil.sutter@viprinet.com (Phil Sutter) Date: Tue, 6 Sep 2011 13:05:03 +0200 Subject: [PATCH] af_packet: flush complete kernel cache in packet_sendmsg In-Reply-To: <20110906095722.GK6619@n2100.arm.linux.org.uk> References: <20110505141107.GC30443@orbit.nwl.cc> <1314961686-30870-1-git-send-email-phil.sutter@viprinet.com> <1314971179.3092.159.camel@deadeye> <20110902172850.GB6619@n2100.arm.linux.org.uk> <20110905195714.GC29025@philter> <20110906095722.GK6619@n2100.arm.linux.org.uk> Message-ID: <20110906110503.GE29025@philter> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Sep 06, 2011 at 10:57:22AM +0100, Russell King - ARM Linux wrote: > > The code in question uses __get_free_pages(), and if that fails uses > > vmalloc() (see alloc_one_pg_vec_page() for reference). Both code paths > > show result in the same faulty behaviour. > > So, what you're wanting is cache coherency between vmalloc() and > userspace. There is no API in the kernel to do that, and you'll see > the same failures of this interface not only on ARM but also other > architectures with virtual caches. > > It sounds like we need an API to flush the cache using both the > userspace address, plus the kernel side address be that in the direct > map or the vmalloc map areas. > > Or maybe the right solution is to simply disable AF_PACKET MMAP support > for virtual cached architectures - it may be that adding cache flushing > calls makes the thing too expensive and the benefits of mmap over normal > read/write are lost. OK, that's horrible. Of course we depend on just this combination to work flawlessly, i.e. PACKET_MMAP && VIVT. :( Another userspace-interface I'm working on uses a different solution: memory is allocated in userspace and accessed from kernelspace using get_user_pages(). I did not explicitly search for the earlier described fault pattern, but we didn't notice any problem with this approach on the very same hardware either. I already see myself writing TPACKET_V3. ;) What do you think? Greetings, Phil -- Viprinet GmbH Mainzer Str. 43 55411 Bingen am Rhein Germany Zentrale: +49-6721-49030-0 Durchwahl: +49-6721-49030-134 Fax: +49-6721-49030-209 phil.sutter at viprinet.com http://www.viprinet.com Sitz der Gesellschaft: Bingen am Rhein Handelsregister: Amtsgericht Mainz HRB40380 Gesch?ftsf?hrer: Simon Kissel From mboxrd@z Thu Jan 1 00:00:00 1970 From: Phil Sutter Subject: Re: [PATCH] af_packet: flush complete kernel cache in packet_sendmsg Date: Tue, 6 Sep 2011 13:05:03 +0200 Message-ID: <20110906110503.GE29025@philter> References: <20110505141107.GC30443@orbit.nwl.cc> <1314961686-30870-1-git-send-email-phil.sutter@viprinet.com> <1314971179.3092.159.camel@deadeye> <20110902172850.GB6619@n2100.arm.linux.org.uk> <20110905195714.GC29025@philter> <20110906095722.GK6619@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Ben Hutchings , netdev@vger.kernel.org, "David S. Miller" , linux-arm-kernel@lists.infradead.org To: Russell King - ARM Linux Return-path: Content-Disposition: inline In-Reply-To: <20110906095722.GK6619@n2100.arm.linux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org List-Id: netdev.vger.kernel.org T24gVHVlLCBTZXAgMDYsIDIwMTEgYXQgMTA6NTc6MjJBTSArMDEwMCwgUnVzc2VsbCBLaW5nIC0g QVJNIExpbnV4IHdyb3RlOgo+ID4gVGhlIGNvZGUgaW4gcXVlc3Rpb24gdXNlcyBfX2dldF9mcmVl X3BhZ2VzKCksIGFuZCBpZiB0aGF0IGZhaWxzIHVzZXMKPiA+IHZtYWxsb2MoKSAoc2VlIGFsbG9j X29uZV9wZ192ZWNfcGFnZSgpIGZvciByZWZlcmVuY2UpLiBCb3RoIGNvZGUgcGF0aHMKPiA+IHNo b3cgcmVzdWx0IGluIHRoZSBzYW1lIGZhdWx0eSBiZWhhdmlvdXIuCj4gCj4gU28sIHdoYXQgeW91 J3JlIHdhbnRpbmcgaXMgY2FjaGUgY29oZXJlbmN5IGJldHdlZW4gdm1hbGxvYygpIGFuZAo+IHVz ZXJzcGFjZS4gIFRoZXJlIGlzIG5vIEFQSSBpbiB0aGUga2VybmVsIHRvIGRvIHRoYXQsIGFuZCB5 b3UnbGwgc2VlCj4gdGhlIHNhbWUgZmFpbHVyZXMgb2YgdGhpcyBpbnRlcmZhY2Ugbm90IG9ubHkg b24gQVJNIGJ1dCBhbHNvIG90aGVyCj4gYXJjaGl0ZWN0dXJlcyB3aXRoIHZpcnR1YWwgY2FjaGVz Lgo+IAo+IEl0IHNvdW5kcyBsaWtlIHdlIG5lZWQgYW4gQVBJIHRvIGZsdXNoIHRoZSBjYWNoZSB1 c2luZyBib3RoIHRoZQo+IHVzZXJzcGFjZSBhZGRyZXNzLCBwbHVzIHRoZSBrZXJuZWwgc2lkZSBh ZGRyZXNzIGJlIHRoYXQgaW4gdGhlIGRpcmVjdAo+IG1hcCBvciB0aGUgdm1hbGxvYyBtYXAgYXJl YXMuCj4gCj4gT3IgbWF5YmUgdGhlIHJpZ2h0IHNvbHV0aW9uIGlzIHRvIHNpbXBseSBkaXNhYmxl IEFGX1BBQ0tFVCBNTUFQIHN1cHBvcnQKPiBmb3IgdmlydHVhbCBjYWNoZWQgYXJjaGl0ZWN0dXJl cyAtIGl0IG1heSBiZSB0aGF0IGFkZGluZyBjYWNoZSBmbHVzaGluZwo+IGNhbGxzIG1ha2VzIHRo ZSB0aGluZyB0b28gZXhwZW5zaXZlIGFuZCB0aGUgYmVuZWZpdHMgb2YgbW1hcCBvdmVyIG5vcm1h bAo+IHJlYWQvd3JpdGUgYXJlIGxvc3QuCgpPSywgdGhhdCdzIGhvcnJpYmxlLiBPZiBjb3Vyc2Ug d2UgZGVwZW5kIG9uIGp1c3QgdGhpcyBjb21iaW5hdGlvbiB0bwp3b3JrIGZsYXdsZXNzbHksIGku ZS4gUEFDS0VUX01NQVAgJiYgVklWVC4gOigKCkFub3RoZXIgdXNlcnNwYWNlLWludGVyZmFjZSBJ J20gd29ya2luZyBvbiB1c2VzIGEgZGlmZmVyZW50IHNvbHV0aW9uOgptZW1vcnkgaXMgYWxsb2Nh dGVkIGluIHVzZXJzcGFjZSBhbmQgYWNjZXNzZWQgZnJvbSBrZXJuZWxzcGFjZSB1c2luZwpnZXRf dXNlcl9wYWdlcygpLiBJIGRpZCBub3QgZXhwbGljaXRseSBzZWFyY2ggZm9yIHRoZSBlYXJsaWVy IGRlc2NyaWJlZApmYXVsdCBwYXR0ZXJuLCBidXQgd2UgZGlkbid0IG5vdGljZSBhbnkgcHJvYmxl bSB3aXRoIHRoaXMgYXBwcm9hY2ggb24KdGhlIHZlcnkgc2FtZSBoYXJkd2FyZSBlaXRoZXIuIEkg YWxyZWFkeSBzZWUgbXlzZWxmIHdyaXRpbmcgVFBBQ0tFVF9WMy4KOykKCldoYXQgZG8geW91IHRo aW5rPwoKR3JlZXRpbmdzLCBQaGlsCgotLSAKVmlwcmluZXQgR21iSApNYWluemVyIFN0ci4gNDMK NTU0MTEgQmluZ2VuIGFtIFJoZWluCkdlcm1hbnkKClplbnRyYWxlOiAgICAgKzQ5LTY3MjEtNDkw MzAtMApEdXJjaHdhaGw6ICAgICs0OS02NzIxLTQ5MDMwLTEzNApGYXg6ICAgICAgICAgICs0OS02 NzIxLTQ5MDMwLTIwOQoKcGhpbC5zdXR0ZXJAdmlwcmluZXQuY29tCmh0dHA6Ly93d3cudmlwcmlu ZXQuY29tCgpTaXR6IGRlciBHZXNlbGxzY2hhZnQ6IEJpbmdlbiBhbSBSaGVpbgpIYW5kZWxzcmVn aXN0ZXI6IEFtdHNnZXJpY2h0IE1haW56IEhSQjQwMzgwCkdlc2Now6RmdHNmw7xocmVyOiBTaW1v biBLaXNzZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==