Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759739AbcLPKbl (ORCPT ); Fri, 16 Dec 2016 05:31:41 -0500 Received: from mail-he1eur01on0071.outbound.protection.outlook.com ([104.47.0.71]:41125 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753951AbcLPKbb (ORCPT ); Fri, 16 Dec 2016 05:31:31 -0500 X-Greylist: delayed 1975 seconds by postgrey-1.27 at vger.kernel.org; Fri, 16 Dec 2016 05:31:30 EST From: Jerry Huang To: Felipe Balbi , "gregkh@linuxfoundation.org" CC: "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Rajesh Bhagat Subject: RE: [PATCH] USB3/DWC3: Enable undefined length INCR burst type Thread-Topic: [PATCH] USB3/DWC3: Enable undefined length INCR burst type Thread-Index: AQHSVSKUGATAu7bkYUajSqFxHuv8nqEJ6HqggABnhwCAAAR90A== Date: Fri, 16 Dec 2016 09:58:30 +0000 Message-ID: References: <1481619983-4782-1-git-send-email-jerry.huang@nxp.com> <87k2b0fd2z.fsf@linux.intel.com> In-Reply-To: <87k2b0fd2z.fsf@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=jerry.huang@nxp.com; x-originating-ip: [192.158.241.86] x-microsoft-exchange-diagnostics: 1;HE1PR0401MB2329;7:3LfvvBV24S8z0Q2vJFnb6kAjDMvEz7C9NdPWqP9XUDL9/v/IWQ6TPOk/l9WMAHCwjyydFnAFbnDIGua7eWMBut4pfbM/gmm4EERefyIy3a9rOkmK1R/NV+4LFdgnn1fnAcgdOEr/W8JERNNZIfXEHxflbKGvZKnA6/dQEeU8RFGIFx02azkPXPSrXD1+CeKi1lBB2vTgH+lUHkrzMVFaPaxHU+fX0w4DtwhaUVKljcQ9WDdfxRQNfimbtpeza0s46s6+bIk15rJ84ao5xv9+QKtrxiUr4nplGqhtiPJ5nh4bURruH6BxIJl5H/UAa2YUf7Bn3kUG/9bxz7gRNzxX3+uO2IvLhYmeHnIQMh/AfFEU47RFnrm0Ksky/cf/tiSzIJR93JD4D4WFJh8PTYvreBQA+HODaa5PigbrKoyaSjn3bI2WY9GC7la3vPCJgPwKyuUmH7KXN0YKlIthnr4/gA== x-forefront-antispam-report: SFV:SKI;SCL:-1SFV:NSPM;SFS:(10009020)(6009001)(7916002)(39450400003)(39850400002)(39410400002)(39840400002)(39860400002)(377454003)(199003)(189002)(13464003)(8676002)(81166006)(25786008)(81156014)(122556002)(5890100001)(2501003)(8936002)(6436002)(7696004)(74316002)(97736004)(5001770100001)(9686002)(189998001)(68736007)(229853002)(2900100001)(92566002)(77096006)(38730400001)(6506006)(76576001)(101416001)(86362001)(105586002)(2950100002)(66066001)(575784001)(33656002)(106116001)(106356001)(3846002)(4326007)(102836003)(76176999)(54356999)(2906002)(3280700002)(5660300001)(3660700001)(6116002)(50986999)(7736002)(305945005);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0401MB2329;H:DB5PR0401MB1813.eurprd04.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; x-ms-office365-filtering-correlation-id: bb0e2143-1b0f-46d4-1fbf-08d4259a1740 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:HE1PR0401MB2329; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055)(185117386973197); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6047074)(6072148);SRVR:HE1PR0401MB2329;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0401MB2329; x-forefront-prvs: 01583E185C spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2016 09:58:30.9290 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0401MB2329 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id uBGAVjph021209 Content-Length: 11103 Lines: 366 > -----Original Message----- > From: Felipe Balbi [mailto:balbi@kernel.org] > Sent: Friday, December 16, 2016 5:17 PM > To: Jerry Huang ; Jerry Huang > ; gregkh@linuxfoundation.org > Cc: linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org; Rajesh Bhagat > > Subject: RE: [PATCH] USB3/DWC3: Enable undefined length INCR burst type > > > Hi, > > Jerry Huang writes: > >> -----Original Message----- > >> From: Changming Huang [mailto:jerry.huang@nxp.com] > >> Sent: Tuesday, December 13, 2016 5:06 PM > >> To: balbi@kernel.org; gregkh@linuxfoundation.org > >> Cc: linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org; Jerry > >> Huang ; Rajesh Bhagat > >> Subject: [PATCH] USB3/DWC3: Enable undefined length INCR burst type > >> > >> While enabling undefined length INCR burst type and INCR16 burst > >> type, get better write performance on NXP Layerscape platform: > >> around 3% improvement (from 364MB/s to 375MB/s). > >> > >> Signed-off-by: Changming Huang > >> Signed-off-by: Rajesh Bhagat > >> --- > >> drivers/usb/dwc3/core.c | 6 ++++++ > >> drivers/usb/dwc3/core.h | 13 +++++++++++++ > >> 2 files changed, 19 insertions(+) > >> > >> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index > >> fea4469..0e11891 100644 > >> --- a/drivers/usb/dwc3/core.c > >> +++ b/drivers/usb/dwc3/core.c > >> @@ -621,6 +621,12 @@ static int dwc3_core_init(struct dwc3 *dwc) > >> goto err0; > >> } > >> > >> + /* Enable Undefined Length INCR Burst Type and Enable INCR16 > >> Burst */ > >> + reg = dwc3_readl(dwc->regs, DWC3_GSBUSCFG0); > >> + reg &= ~DWC3_GSBUSCFG0_INCRBRSTMASK; > >> + reg |= DWC3_GSBUSCFG0_INCR16BRSTENA | > >> DWC3_GSBUSCFG0_INCRBRSTENA; > >> + dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, reg); > >> + > >> /* > >> * Write Linux Version Code to our GUID register so it's easy to figure > >> * out which kernel version a bug was found. > >> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index > >> 6b60e42..8bfdb77 100644 > >> --- a/drivers/usb/dwc3/core.h > >> +++ b/drivers/usb/dwc3/core.h > >> @@ -156,6 +156,19 @@ > >> > >> /* Bit fields */ > >> > >> +/* Global SoC Bus Configuration Register 0 */ > >> +#define DWC3_GSBUSCFG0_DATABIGEND (1 << 11) > >> +#define DWC3_GSBUSCFG0_DESCBIGEND (1 << 10) > >> +#define DWC3_GSBUSCFG0_INCR256BRSTENA (1 << 7) > >> +#define DWC3_GSBUSCFG0_INCR128BRSTENA (1 << 6) > >> +#define DWC3_GSBUSCFG0_INCR64BRSTENA (1 << 5) > >> +#define DWC3_GSBUSCFG0_INCR32BRSTENA (1 << 4) > >> +#define DWC3_GSBUSCFG0_INCR16BRSTENA (1 << 3) > >> +#define DWC3_GSBUSCFG0_INCR8BRSTENA (1 << 2) > >> +#define DWC3_GSBUSCFG0_INCR4BRSTENA (1 << 1) > >> +#define DWC3_GSBUSCFG0_INCRBRSTENA (1 << 0) > >> +#define DWC3_GSBUSCFG0_INCRBRSTMASK 0xff > >> + > >> /* Global Debug Queue/FIFO Space Available Register */ > >> #define DWC3_GDBGFIFOSPACE_NUM(n) ((n) & 0x1f) > >> #define DWC3_GDBGFIFOSPACE_TYPE(n) (((n) << 5) & 0x1e0) > >> -- > > I will split this patch to two, one is for the performance tune, the > > other for macro definition in header file. > > there's no need for that. This patch is in good format. I do have a question, > however: how do you know this will work for all users? Burst size is a function > of how wide the interconnect where dwc3 is attached to, is. So I need to generate one new property in usb node to identify my platform? > You could very well be degrading performance for some users here. Can you > send me the result of the following commands *without* this patch applied? > > # mkdir -p /d > # mount -t debugfs none /d > # cat /d/*dwc3*/regdump > Below is the regdump: root@ls1043ardb:/d/3000000.usb3# cat regdump GSBUSCFG0 = 0x00100080 GSBUSCFG1 = 0x00000700 GTXTHRCFG = 0x00000000 GRXTHRCFG = 0x00000000 GCTL = 0x30c11004 GEVTEN = 0x00000000 GSTS = 0x3e800001 GUCTL1 = 0x0000018a GSNPSID = 0x5533280a GGPIO = 0x00000000 GUID = 0x00040900 GUCTL = 0x02008010 GBUSERRADDR0 = 0x00000000 GBUSERRADDR1 = 0x00000000 GPRTBIMAP0 = 0x00000000 GPRTBIMAP1 = 0x00000000 GHWPARAMS0 = 0x4020400a GHWPARAMS1 = 0x81e0c93b GHWPARAMS2 = 0x0130280a GHWPARAMS3 = 0x04108485 GHWPARAMS4 = 0x47822004 GHWPARAMS5 = 0x04204108 GHWPARAMS6 = 0x09049c20 GHWPARAMS7 = 0x0308044d GDBGFIFOSPACE = 0x00820000 GDBGLTSSM = 0x40000042 GPRTBIMAP_HS0 = 0x00000000 GPRTBIMAP_HS1 = 0x00000000 GPRTBIMAP_FS0 = 0x00000000 GPRTBIMAP_FS1 = 0x00000000 GUSB2PHYCFG(0) = 0x40102440 GUSB2PHYCFG(1) = 0x00000000 GUSB2PHYCFG(2) = 0x00000000 GUSB2PHYCFG(3) = 0x00000000 GUSB2PHYCFG(4) = 0x00000000 GUSB2PHYCFG(5) = 0x00000000 GUSB2PHYCFG(6) = 0x00000000 GUSB2PHYCFG(7) = 0x00000000 GUSB2PHYCFG(8) = 0x00000000 GUSB2PHYCFG(9) = 0x00000000 GUSB2PHYCFG(10) = 0x00000000 GUSB2PHYCFG(11) = 0x00000000 GUSB2PHYCFG(12) = 0x00000000 GUSB2PHYCFG(13) = 0x00000000 GUSB2PHYCFG(14) = 0x00000000 GUSB2PHYCFG(15) = 0x00000000 GUSB2I2CCTL(0) = 0x00000000 GUSB2I2CCTL(1) = 0x00000000 GUSB2I2CCTL(2) = 0x00000000 GUSB2I2CCTL(3) = 0x00000000 GUSB2I2CCTL(4) = 0x00000000 GUSB2I2CCTL(5) = 0x00000000 GUSB2I2CCTL(6) = 0x00000000 GUSB2I2CCTL(7) = 0x00000000 GUSB2I2CCTL(8) = 0x00000000 GUSB2I2CCTL(9) = 0x00000000 GUSB2I2CCTL(10) = 0x00000000 GUSB2I2CCTL(11) = 0x00000000 GUSB2I2CCTL(12) = 0x00000000 GUSB2I2CCTL(13) = 0x00000000 GUSB2I2CCTL(14) = 0x00000000 GUSB2I2CCTL(15) = 0x00000000 GUSB2PHYACC(0) = 0x00000000 GUSB2PHYACC(1) = 0x00000000 GUSB2PHYACC(2) = 0x00000000 GUSB2PHYACC(3) = 0x00000000 GUSB2PHYACC(4) = 0x00000000 GUSB2PHYACC(5) = 0x00000000 GUSB2PHYACC(6) = 0x00000000 GUSB2PHYACC(7) = 0x00000000 GUSB2PHYACC(8) = 0x00000000 GUSB2PHYACC(9) = 0x00000000 GUSB2PHYACC(10) = 0x00000000 GUSB2PHYACC(11) = 0x00000000 GUSB2PHYACC(12) = 0x00000000 GUSB2PHYACC(13) = 0x00000000 GUSB2PHYACC(14) = 0x00000000 GUSB2PHYACC(15) = 0x00000000 GUSB3PIPECTL(0) = 0x110e0002 GUSB3PIPECTL(1) = 0x00000000 GUSB3PIPECTL(2) = 0x00000000 GUSB3PIPECTL(3) = 0x00000000 GUSB3PIPECTL(4) = 0x00000000 GUSB3PIPECTL(5) = 0x00000000 GUSB3PIPECTL(6) = 0x00000000 GUSB3PIPECTL(7) = 0x00000000 GUSB3PIPECTL(8) = 0x00000000 GUSB3PIPECTL(9) = 0x00000000 GUSB3PIPECTL(10) = 0x00000000 GUSB3PIPECTL(11) = 0x00000000 GUSB3PIPECTL(12) = 0x00000000 GUSB3PIPECTL(13) = 0x00000000 GUSB3PIPECTL(14) = 0x00000000 GUSB3PIPECTL(15) = 0x00000000 GTXFIFOSIZ(0) = 0x00000082 GTXFIFOSIZ(1) = 0x00820103 GTXFIFOSIZ(2) = 0x01850205 GTXFIFOSIZ(3) = 0x038a0022 GTXFIFOSIZ(4) = 0x00000000 GTXFIFOSIZ(5) = 0x00000000 GTXFIFOSIZ(6) = 0x00000000 GTXFIFOSIZ(7) = 0x00000000 GTXFIFOSIZ(8) = 0x00000000 GTXFIFOSIZ(9) = 0x00000000 GTXFIFOSIZ(10) = 0x00000000 GTXFIFOSIZ(11) = 0x00000000 GTXFIFOSIZ(12) = 0x00000000 GTXFIFOSIZ(13) = 0x00000000 GTXFIFOSIZ(14) = 0x00000000 GTXFIFOSIZ(15) = 0x00000000 GTXFIFOSIZ(16) = 0x00000000 GTXFIFOSIZ(17) = 0x00000000 GTXFIFOSIZ(18) = 0x00000000 GTXFIFOSIZ(19) = 0x00000000 GTXFIFOSIZ(20) = 0x00000000 GTXFIFOSIZ(21) = 0x00000000 GTXFIFOSIZ(22) = 0x00000000 GTXFIFOSIZ(23) = 0x00000000 GTXFIFOSIZ(24) = 0x00000000 GTXFIFOSIZ(25) = 0x00000000 GTXFIFOSIZ(26) = 0x00000000 GTXFIFOSIZ(27) = 0x00000000 GTXFIFOSIZ(28) = 0x00000000 GTXFIFOSIZ(29) = 0x00000000 GTXFIFOSIZ(30) = 0x00000000 GTXFIFOSIZ(31) = 0x00000000 GRXFIFOSIZ(0) = 0x00000084 GRXFIFOSIZ(1) = 0x00840104 GRXFIFOSIZ(2) = 0x01880180 GRXFIFOSIZ(3) = 0x00000000 GRXFIFOSIZ(4) = 0x00000000 GRXFIFOSIZ(5) = 0x00000000 GRXFIFOSIZ(6) = 0x00000000 GRXFIFOSIZ(7) = 0x00000000 GRXFIFOSIZ(8) = 0x00000000 GRXFIFOSIZ(9) = 0x00000000 GRXFIFOSIZ(10) = 0x00000000 GRXFIFOSIZ(11) = 0x00000000 GRXFIFOSIZ(12) = 0x00000000 GRXFIFOSIZ(13) = 0x00000000 GRXFIFOSIZ(14) = 0x00000000 GRXFIFOSIZ(15) = 0x00000000 GRXFIFOSIZ(16) = 0x00000000 GRXFIFOSIZ(17) = 0x00000000 GRXFIFOSIZ(18) = 0x00000000 GRXFIFOSIZ(19) = 0x00000000 GRXFIFOSIZ(20) = 0x00000000 GRXFIFOSIZ(21) = 0x00000000 GRXFIFOSIZ(22) = 0x00000000 GRXFIFOSIZ(23) = 0x00000000 GRXFIFOSIZ(24) = 0x00000000 GRXFIFOSIZ(25) = 0x00000000 GRXFIFOSIZ(26) = 0x00000000 GRXFIFOSIZ(27) = 0x00000000 GRXFIFOSIZ(28) = 0x00000000 GRXFIFOSIZ(29) = 0x00000000 GRXFIFOSIZ(30) = 0x00000000 GRXFIFOSIZ(31) = 0x00000000 GEVNTADRLO(0) = 0x00000000 GEVNTADRHI(0) = 0x00000000 GEVNTSIZ(0) = 0x00000100 GEVNTCOUNT(0) = 0x00000000 GHWPARAMS8 = 0x00000904 DCFG = 0x00080804 DCTL = 0x00f00000 DEVTEN = 0x00000000 DSTS = 0x00c2bbf4 DGCMDPAR = 0x00000000 DGCMD = 0x00000000 DALEPENA = 0x00000000 DEPCMDPAR2(0) = 0x00000000 DEPCMDPAR1(0) = 0x00000002 DEPCMDPAR0(0) = 0xfec64001 DEPCMD(0) = 0x00000000 DEPCMDPAR2(1) = 0x00000000 DEPCMDPAR1(1) = 0x00000000 DEPCMDPAR0(1) = 0x00000000 DEPCMD(1) = 0x00000000 DEPCMDPAR2(2) = 0xfec63000 DEPCMDPAR1(2) = 0x00000000 DEPCMDPAR0(2) = 0x0000007f DEPCMD(2) = 0x00000000 DEPCMDPAR2(3) = 0x00000000 DEPCMDPAR1(3) = 0x00000000 DEPCMDPAR0(3) = 0x00000000 DEPCMD(3) = 0x00000000 DEPCMDPAR2(4) = 0xfec67000 DEPCMDPAR1(4) = 0x00000000 DEPCMDPAR0(4) = 0xfec668a8 DEPCMD(4) = 0x00000000 DEPCMDPAR2(5) = 0x00000000 DEPCMDPAR1(5) = 0x00000000 DEPCMDPAR0(5) = 0x00000000 DEPCMD(5) = 0x00000000 DEPCMDPAR2(6) = 0x00000000 DEPCMDPAR1(6) = 0x00000000 DEPCMDPAR0(6) = 0x00000000 DEPCMD(6) = 0x00000000 DEPCMDPAR2(7) = 0x00000000 DEPCMDPAR1(7) = 0x00000000 DEPCMDPAR0(7) = 0x00000000 DEPCMD(7) = 0x00000000 DEPCMDPAR2(8) = 0x00000000 DEPCMDPAR1(8) = 0x00000000 DEPCMDPAR0(8) = 0x00000000 DEPCMD(8) = 0x00000000 DEPCMDPAR2(9) = 0x00000000 DEPCMDPAR1(9) = 0x00000000 DEPCMDPAR0(9) = 0x00000000 DEPCMD(9) = 0x00000000 DEPCMDPAR2(10) = 0x00000000 DEPCMDPAR1(10) = 0x00000000 DEPCMDPAR0(10) = 0x00000000 DEPCMD(10) = 0x00000000 DEPCMDPAR2(11) = 0x00000000 DEPCMDPAR1(11) = 0x00000000 DEPCMDPAR0(11) = 0x00000000 DEPCMD(11) = 0x00000000 DEPCMDPAR2(12) = 0x00000000 DEPCMDPAR1(12) = 0x00000000 DEPCMDPAR0(12) = 0x00000000 DEPCMD(12) = 0x00000000 DEPCMDPAR2(13) = 0x00000000 DEPCMDPAR1(13) = 0x00000000 DEPCMDPAR0(13) = 0x00000000 DEPCMD(13) = 0x00000000 DEPCMDPAR2(14) = 0x00000000 DEPCMDPAR1(14) = 0x00000000 DEPCMDPAR0(14) = 0x00000000 DEPCMD(14) = 0x00000000 DEPCMDPAR2(15) = 0x00000000 DEPCMDPAR1(15) = 0x00000000 DEPCMDPAR0(15) = 0x00000000 DEPCMD(15) = 0x00000000 DEPCMDPAR2(16) = 0x00000000 DEPCMDPAR1(16) = 0x00000000 DEPCMDPAR0(16) = 0x00000000 DEPCMD(16) = 0x00000000 DEPCMDPAR2(17) = 0x00000000 DEPCMDPAR1(17) = 0x00000000 DEPCMDPAR0(17) = 0x00000000 DEPCMD(17) = 0x00000000 DEPCMDPAR2(18) = 0x00000000 DEPCMDPAR1(18) = 0x00000000 DEPCMDPAR0(18) = 0x00000000 DEPCMD(18) = 0x00000000 DEPCMDPAR2(19) = 0x00000000 DEPCMDPAR1(19) = 0x00000000 DEPCMDPAR0(19) = 0x00000000 DEPCMD(19) = 0x00000000 DEPCMDPAR2(20) = 0x00000000 DEPCMDPAR1(20) = 0x00000000 DEPCMDPAR0(20) = 0x00000000 DEPCMD(20) = 0x00000000 DEPCMDPAR2(21) = 0x00000000 DEPCMDPAR1(21) = 0x00000000 DEPCMDPAR0(21) = 0x00000000 DEPCMD(21) = 0x00000000 DEPCMDPAR2(22) = 0x00000000 DEPCMDPAR1(22) = 0x00000000 DEPCMDPAR0(22) = 0x00000000 DEPCMD(22) = 0x00000000 DEPCMDPAR2(23) = 0x00000000 DEPCMDPAR1(23) = 0x00000000 DEPCMDPAR0(23) = 0x00000000 DEPCMD(23) = 0x00000000 DEPCMDPAR2(24) = 0x00000000 DEPCMDPAR1(24) = 0x00000000 DEPCMDPAR0(24) = 0x00000000 DEPCMD(24) = 0x00000000 DEPCMDPAR2(25) = 0x00000000 DEPCMDPAR1(25) = 0x00000000