From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3v9N2Y60KszDq6j for ; Sat, 28 Jan 2017 15:28:53 +1100 (AEDT) Message-ID: <1485577703.2980.104.camel@kernel.crashing.org> Subject: Re: ibmvtpm byteswapping inconsistency From: Benjamin Herrenschmidt To: Tyrel Datwyler , Michal =?ISO-8859-1?Q?Such=E1nek?= , Ashley Lai , Paul Mackerras , Michael Ellerman , Peter Huewe , Marcel Selhorst , Jarkko Sakkinen , Jason Gunthorpe , tpmdd-devel@lists.sourceforge.net, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Date: Sat, 28 Jan 2017 15:28:23 +1100 In-Reply-To: <48dc15a0-eaba-29e4-f39e-500177f98638@linux.vnet.ibm.com> References: <20170126212248.3f3e9103@kitsune.suse.cz> <1485481819.2980.82.camel@kernel.crashing.org> <1485547137.2980.94.camel@kernel.crashing.org> <48dc15a0-eaba-29e4-f39e-500177f98638@linux.vnet.ibm.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Fri, 2017-01-27 at 12:32 -0800, Tyrel Datwyler wrote: > Its possible being the end of the week I'm just a little dense, but > wouldn't be64_to_cpu() imply that we are byte-swapping something that is > already, or supposedly already, in BE format to cpu endianness? Which on > a BE cpu I would expect a no-op, and on a LE cpu the 64bit word to have > been swapped from BE --> LE? It's in BE format in memory. In LE mode, loading it into a register will get it the wrong way around, thus we have to swap it again. Once in a register it has no "endianness" per-se, what matters is that the act of loading from memory to a register would have loaded it the wrong way around in LE. > In my eyes the code does seem to support what I've argued. The same > thing is done in the scsi VIO drivers. The CRQ structure is laid out and > annotated BE. We use cpu_to_be() calls to load any non 8bit field. > Finally, each word is swapped to cpu endian when we hand it off for the > hcall. > > from ibmvfc_send_event(): > >         __be64 *crq_as_u64 = (__be64 *) &evt->crq; > >         <..snip..> > >         if ((rc = ibmvfc_send_crq(vhost, be64_to_cpu(crq_as_u64[0]), >                                   be64_to_cpu(crq_as_u64[1])))) { > > Again, maybe I'm missing something. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: ibmvtpm byteswapping inconsistency Date: Sat, 28 Jan 2017 15:28:23 +1100 Message-ID: <1485577703.2980.104.camel@kernel.crashing.org> References: <20170126212248.3f3e9103@kitsune.suse.cz> <1485481819.2980.82.camel@kernel.crashing.org> <1485547137.2980.94.camel@kernel.crashing.org> <48dc15a0-eaba-29e4-f39e-500177f98638@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <48dc15a0-eaba-29e4-f39e-500177f98638-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tpmdd-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org To: Tyrel Datwyler , Michal =?ISO-8859-1?Q?Such=E1nek?= , Ashley Lai , Paul Mackerras , Michael Ellerman , Peter Huewe , Marcel Selhorst , Jarkko Sakkinen , Jason Gunthorpe , tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: tpmdd-devel@lists.sourceforge.net T24gRnJpLCAyMDE3LTAxLTI3IGF0IDEyOjMyIC0wODAwLCBUeXJlbCBEYXR3eWxlciB3cm90ZToK PiBJdHMgcG9zc2libGUgYmVpbmcgdGhlIGVuZCBvZiB0aGUgd2VlayBJJ20ganVzdCBhIGxpdHRs ZSBkZW5zZSwgYnV0Cj4gd291bGRuJ3QgYmU2NF90b19jcHUoKSBpbXBseSB0aGF0IHdlIGFyZSBi eXRlLXN3YXBwaW5nIHNvbWV0aGluZyB0aGF0IGlzCj4gYWxyZWFkeSwgb3Igc3VwcG9zZWRseSBh bHJlYWR5LCBpbiBCRSBmb3JtYXQgdG8gY3B1IGVuZGlhbm5lc3M/IFdoaWNoIG9uCj4gYSBCRSBj cHUgSSB3b3VsZCBleHBlY3QgYSBuby1vcCwgYW5kIG9uIGEgTEUgY3B1IHRoZSA2NGJpdCB3b3Jk IHRvIGhhdmUKPiBiZWVuIHN3YXBwZWQgZnJvbSBCRSAtLT4gTEU/CgpJdCdzIGluIEJFIGZvcm1h dCBpbiBtZW1vcnkuIEluIExFIG1vZGUsIGxvYWRpbmcgaXQgaW50byBhIHJlZ2lzdGVyIHdpbGwK Z2V0IGl0IHRoZSB3cm9uZyB3YXkgYXJvdW5kLCB0aHVzIHdlIGhhdmUgdG8gc3dhcCBpdCBhZ2Fp bi4gT25jZSBpbiBhCnJlZ2lzdGVyIGl0IGhhcyBubyAiZW5kaWFubmVzcyIgcGVyLXNlLCB3aGF0 IG1hdHRlcnMgaXMgdGhhdCB0aGUgYWN0Cm9mIGxvYWRpbmcgZnJvbSBtZW1vcnkgdG8gYSByZWdp c3RlciB3b3VsZCBoYXZlIGxvYWRlZCBpdCB0aGUgd3JvbmcKd2F5IGFyb3VuZCBpbiBMRS4KCj4g SW4gbXkgZXllcyB0aGUgY29kZSBkb2VzIHNlZW0gdG8gc3VwcG9ydCB3aGF0IEkndmUgYXJndWVk LiBUaGUgc2FtZQo+IHRoaW5nIGlzIGRvbmUgaW4gdGhlIHNjc2kgVklPIGRyaXZlcnMuIFRoZSBD UlEgc3RydWN0dXJlIGlzIGxhaWQgb3V0IGFuZAo+IGFubm90YXRlZCBCRS4gV2UgdXNlIGNwdV90 b19iZSgpIGNhbGxzIHRvIGxvYWQgYW55IG5vbiA4Yml0IGZpZWxkLgo+IEZpbmFsbHksIGVhY2gg d29yZCBpcyBzd2FwcGVkIHRvIGNwdSBlbmRpYW4gd2hlbiB3ZSBoYW5kIGl0IG9mZiBmb3IgdGhl Cj4gaGNhbGwuCj4gCj4gZnJvbSBpYm12ZmNfc2VuZF9ldmVudCgpOgo+IAo+IMKgwqDCoMKgwqDC oMKgIF9fYmU2NCAqY3JxX2FzX3U2NCA9IChfX2JlNjQgKikgJmV2dC0+Y3JxOwo+IAo+IMKgwqDC oMKgwqDCoMKgwqA8Li5zbmlwLi4+Cj4gCj4gwqDCoMKgwqDCoMKgwqAgaWYgKChyYyA9IGlibXZm Y19zZW5kX2NycSh2aG9zdCwgYmU2NF90b19jcHUoY3JxX2FzX3U2NFswXSksCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJlNjRfdG9fY3B1KGNycV9hc191NjRbMV0pKSkpIHsKPiAKPiBBZ2FpbiwgbWF5YmUgSSdtIG1p c3Npbmcgc29tZXRoaW5nLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNoZWNrIG91dCB0aGUgdmli cmFudCB0ZWNoIGNvbW11bml0eSBvbiBvbmUgb2YgdGhlIHdvcmxkJ3MgbW9zdAplbmdhZ2luZyB0 ZWNoIHNpdGVzLCBTbGFzaERvdC5vcmchIGh0dHA6Ly9zZG0ubGluay9zbGFzaGRvdApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp0cG1kZC1kZXZlbCBtYWls aW5nIGxpc3QKdHBtZGQtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMu c291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3RwbWRkLWRldmVsCg==