Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp5692431ybh; Wed, 7 Aug 2019 09:50:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqw7u4qmwtRs33yltTap5IxkOPxCAwKYtK0ketR7W/5V6Wq3zPo96i1TF71PFu0kr4uImDok X-Received: by 2002:a62:1807:: with SMTP id 7mr10053423pfy.149.1565196607352; Wed, 07 Aug 2019 09:50:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565196607; cv=none; d=google.com; s=arc-20160816; b=EX/guF6GteVjYhJ5qzzjclYDpNitjEAXab3ioc8w0J33EWzATzx4LpzI5a172Edrws 5bSvCCfEHlRsOw9oRh0oejcXpfY7Qa/NktyG+9re3IDIIZ8WLVg215OrbcX5MwdDQYnt VSxkpH58O7WylytgcbIrUiXXeSgZRzvrkvn2N+3msbexfz2p8WyaYIMfleIpyNu2Scrn Rr+LD00CnSzPII0xvyzZsdfMyugDF/Z055yih8ZIIVt8g1m/A2zvLs4xtpqdkzHWNWUq aAzrCtxvzawwP/u7Q1BRlCadDylrckJ63Q2DixaWNLb2siSAW7b7nD95wXSWO6ZgsyT3 VJXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=I/Bgc1nmbdXx9rJPcQmp+o8wju9ger4epWAHL137sIY=; b=w2FC5+ykvcrjgbLA9xS4RpuRszlrXO2C19UIexEb1bEQs+ZKIVNxrmvQrBo2pOEkc4 4knD0rdnFDg9/gBDapxuqsXxGf+77VdPD2Hg7qC4Xh5ndXixuVdKLyDJ44eIqTyB07PR BLWmH+Ivsq7o1o2IgFX25KOul8DvjMyN4lXeJX1mZFW4P3fYZaoB4vmdVpYZVAV2JDOb LarjlpcaZ+6eDT91ugmlsvmGae4DM2AW3D2iVyY+cMeS3/KgkQ3xzW4xboNO5CDrA37F vWIXKenGauWhvkLk3GsBS2ENFUWuKqYUfA18S7MMYapv90UZInpODwkgqOnKGBmDM0WS VMBA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n12si28315947pgh.210.2019.08.07.09.49.50; Wed, 07 Aug 2019 09:50:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730188AbfHGQle convert rfc822-to-8bit (ORCPT + 99 others); Wed, 7 Aug 2019 12:41:34 -0400 Received: from eu-smtp-delivery-151.mimecast.com ([207.82.80.151]:60254 "EHLO eu-smtp-delivery-151.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730010AbfHGQld (ORCPT ); Wed, 7 Aug 2019 12:41:33 -0400 Received: from AcuMS.aculab.com (156.67.243.126 [156.67.243.126]) (Using TLS) by relay.mimecast.com with ESMTP id uk-mta-14--X1NSQzOPs25ES1Om5nzQw-1; Wed, 07 Aug 2019 17:41:30 +0100 Received: from AcuMS.Aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) by AcuMS.aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Wed, 7 Aug 2019 17:41:30 +0100 Received: from AcuMS.Aculab.com ([fe80::43c:695e:880f:8750]) by AcuMS.aculab.com ([fe80::43c:695e:880f:8750%12]) with mapi id 15.00.1347.000; Wed, 7 Aug 2019 17:41:30 +0100 From: David Laight To: 'Mika Westerberg' CC: 'Yehezkel Bernat' , LKML , Andreas Noever , Michael Jamet , "Rafael J . Wysocki" , Len Brown , Lukas Wunner , Mario Limonciello , "Anthony Wong" , "linux-acpi@vger.kernel.org" Subject: RE: [PATCH 3/8] thunderbolt: Use 32-bit writes when writing ring producer/consumer Thread-Topic: [PATCH 3/8] thunderbolt: Use 32-bit writes when writing ring producer/consumer Thread-Index: AQHVMyIznn3HI+p3CEuvWWeqi0Ulhqa8L0swgDPP6oCAABFywP//9NeAgAAR0IA= Date: Wed, 7 Aug 2019 16:41:30 +0000 Message-ID: <91a579eb2f614739a9a1177bdde5513e@AcuMS.aculab.com> References: <20190705095800.43534-1-mika.westerberg@linux.intel.com> <20190705095800.43534-4-mika.westerberg@linux.intel.com> <0f3a47d8133945b181d623ea6e0d53f2@AcuMS.aculab.com> <20190807161359.GT2716@lahna.fi.intel.com> <79616dd147864771b0b74901e77f2607@AcuMS.aculab.com> <20190807163629.GV2716@lahna.fi.intel.com> In-Reply-To: <20190807163629.GV2716@lahna.fi.intel.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 X-MC-Unique: -X1NSQzOPs25ES1Om5nzQw-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: 'Mika Westerberg' [mailto:mika.westerberg@linux.intel.com] > Sent: 07 August 2019 17:36 > > On Wed, Aug 07, 2019 at 04:22:26PM +0000, David Laight wrote: > > From: Mika Westerberg > > > Sent: 07 August 2019 17:14 > > > To: David Laight > > > > > > On Fri, Jul 05, 2019 at 04:04:19PM +0000, David Laight wrote: > > > > > Really a matter of taste, but maybe you want to consider having a single > > > > > function, with a 3rd parameter, bool is_tx. > > > > > The calls here will be unified to: > > > > > ring_iowrite(ring, ring->head, ring->is_tx); > > > > > (No condition is needed here). > > > > > > > > > > The implementation uses the new parameter to decide which part of the register > > > > > to mask, reducing the code duplication (in my eyes): > > > > > > > > > > val = ioread32(ring_desc_base(ring) + 8); > > > > > if (is_tx) { > > > > > val &= 0x0000ffff; > > > > > val |= value << 16; > > > > > } else { > > > > > val &= 0xffff0000; > > > > > val |= value; > > > > > } > > > > > iowrite32(val, ring_desc_base(ring) + 8); > > > > > > > > > > I'm not sure if it improves the readability or makes it worse. Your call. > > > > > > > > Gah, that is all horrid beyond belief. > > > > If a 32bit write is valid then the hardware must not be updating > > > > the other 16 bits. > > > > In which case the driver knows what they should be. > > > > So it can do a single 32bit write of the required value. > > > > > > I'm not entirely sure I understand what you say above. Can you shed some > > > light on this by a concrete example how it should look like? :-) > > > > The driver must know both the tx and rx ring values, so: > > iowrite32(tx_val << 16 | rx_val, ring_desc_base(ring) + 8); > > > > I see. However, prod or cons side gets updated by the hardware as it > processes buffers and other side is only updated by the driver. I'm not > sure the above works here. If the hardware updates the other half of the 32bit word it doesn't ever work. In that case you must do 16bit writes. If the hardware is ignoring the byte-enables it is broken and unusable. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)