From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751614AbdAPDMI (ORCPT ); Sun, 15 Jan 2017 22:12:08 -0500 Received: from mail-bl2nam02on0112.outbound.protection.outlook.com ([104.47.38.112]:24192 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750742AbdAPDMH (ORCPT ); Sun, 15 Jan 2017 22:12:07 -0500 From: Dexuan Cui To: Long Li , KY Srinivasan , "Haiyang Zhang" CC: "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH] hv: use substraction to update ring buffer index Thread-Topic: [PATCH] hv: use substraction to update ring buffer index Thread-Index: AQHSZvkom5nop+lDAkWLZ7iseKKMPKE6fjMw Date: Mon, 16 Jan 2017 03:12:03 +0000 Message-ID: References: <1483589302-27177-1-git-send-email-longli@exchange.microsoft.com> In-Reply-To: <1483589302-27177-1-git-send-email-longli@exchange.microsoft.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=decui@microsoft.com; x-originating-ip: [167.220.255.8] x-ms-office365-filtering-correlation-id: aea5f5c8-6f87-4960-93bf-08d43dbd7212 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:MWHPR03MB2494; x-microsoft-exchange-diagnostics: 1;MWHPR03MB2494;7:G6b8B87/RQ8JON/1W/qJmzkUbX2nCsihCRC/LzL3Y5jIKQNcSiGupfImnRSvJDYmAdJd1XsoOxBwxD1Oq2sbo4ja8I5xtEA95sTJk1kEGnWvVyMW8r8Ty2CmZFrjQtNLBaPc3q/joctnmJOIhAKJUe+q492vXoddVS3hDZIC2Yhn8eKj91jivN7l/Az17ceZtay/cFrP3yKSvyapvc3zgVgQJ4MFn0cG/JwMfPbFRuY6/31MzpCPQGGSqw0eayUOgt4ME/yAVE55MY10oUp+8fCj8Y2ErlI/vDdpAEg5OKNfc2SVB1JRPdA16/2Q/VF+Jey93/wbBoC/x0UgCZrmB80uTG+SBINmCU4RsDoJmeYywDsoGaGi2RPmA7Hq7MnMqYup2ptekGbH5koRik7eOp7o+0Um6iaIy2zePsAadzlcnsLQZGOe2IsWYAOF4hY37rFw9G1h+TGu7C1twxB+LQaT9iTi9eHChqSgE37eMY8= x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055)(788757137089); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(61425038)(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(61426038)(61427038)(6041248)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(6072148)(6047074)(6042181);SRVR:MWHPR03MB2494;BCL:0;PCL:0;RULEID:;SRVR:MWHPR03MB2494; x-forefront-prvs: 01894AD3B8 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(7916002)(199003)(189002)(6862003)(6506006)(6636002)(2950100002)(38730400001)(66066001)(229853002)(9686003)(4326007)(2906002)(10290500002)(1511001)(189998001)(5005710100001)(77096006)(2421001)(92566002)(5001770100001)(86362001)(7736002)(97736004)(6116002)(305945005)(2900100001)(86612001)(27001)(102836003)(50986999)(101416001)(3280700002)(74316002)(3660700001)(54356999)(76176999)(6436002)(106356001)(3846002)(105586002)(106116001)(8990500004)(8676002)(25786008)(55016002)(81166006)(15650500001)(122556002)(99286003)(10090500001)(54906002)(68736007)(5660300001)(33656002)(7696004)(81156014)(2561002)(8936002);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR03MB2494;H:MWHPR03MB2669.namprd03.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2017 03:12:03.7285 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB2494 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 v0G3CO3R010849 > From: devel [mailto:driverdev-devel-bounces@linuxdriverproject.org] On > Behalf Of Long Li > Sent: Thursday, January 5, 2017 12:08 > To: KY Srinivasan ; Haiyang Zhang > > Cc: devel@linuxdriverproject.org; linux-kernel@vger.kernel.org > Subject: [PATCH] hv: use substraction to update ring buffer index > > From: Long Li > > The ring buffer code uses %= to calculate index. For x86/64, %= compiles to > div, more than 10 times slower than sub. > > Replace div with sub for this data heavy code path. > > Signed-off-by: Long Li > --- > drivers/hv/ring_buffer.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c > index cd49cb1..f8eee6e 100644 > --- a/drivers/hv/ring_buffer.c > +++ b/drivers/hv/ring_buffer.c > @@ -135,7 +135,8 @@ hv_get_next_readlocation_withoffset(struct > hv_ring_buffer_info *ring_info, > u32 next = ring_info->ring_buffer->read_index; > > next += offset; > - next %= ring_info->ring_datasize; > + if (next >= ring_info->ring_datasize) > + next -= ring_info->ring_datasize; > > return next; > } > @@ -179,7 +180,8 @@ static u32 hv_copyfrom_ringbuffer( > memcpy(dest, ring_buffer + start_read_offset, destlen); > > start_read_offset += destlen; > - start_read_offset %= ring_buffer_size; > + if (start_read_offset >= ring_buffer_size) > + start_read_offset -= ring_buffer_size; > > return start_read_offset; > } > @@ -201,7 +203,8 @@ static u32 hv_copyto_ringbuffer( > memcpy(ring_buffer + start_write_offset, src, srclen); > > start_write_offset += srclen; > - start_write_offset %= ring_buffer_size; > + if (start_write_offset >= ring_buffer_size) > + start_write_offset -= ring_buffer_size; > > return start_write_offset; > } Hi Long, I guess you want to fix put_pkt_raw() too. :-) Thanks, -- Dexuan