Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934109AbbGVKYj (ORCPT ); Wed, 22 Jul 2015 06:24:39 -0400 Received: from mail-by2on0130.outbound.protection.outlook.com ([207.46.100.130]:29537 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934065AbbGVKYb convert rfc822-to-8bit (ORCPT ); Wed, 22 Jul 2015 06:24:31 -0400 Authentication-Results: spf=pass (sender IP is 206.191.229.116) smtp.mailfrom=microsoft.com; redhat.com; dkim=none (message not signed) header.d=none; From: Dexuan Cui To: Vitaly Kuznetsov CC: "gregkh@linuxfoundation.org" , "davem@davemloft.net" , "stephen@networkplumber.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "driverdev-devel@linuxdriverproject.org" , "olaf@aepfle.de" , "apw@canonical.com" , "jasowang@redhat.com" , KY Srinivasan , "pebolle@tiscali.nl" , "stefanha@redhat.com" Subject: RE: [PATCH V3 3/7] Drivers: hv: vmbus: add APIs to send/recv hvsock packet and get the r/w-ability Thread-Topic: [PATCH V3 3/7] Drivers: hv: vmbus: add APIs to send/recv hvsock packet and get the r/w-ability Thread-Index: AQHQw76VqYGDBjPNEkOE/olvP7hKHJ3nOw2g Date: Wed, 22 Jul 2015 10:09:10 +0000 Message-ID: <4538264677374d43961c2d709afb1dd3@SIXPR30MB031.064d.mgd.msft.net> References: <1437476293-6837-1-git-send-email-decui@microsoft.com> <87zj2pk3jf.fsf@vitty.brq.redhat.com> In-Reply-To: <87zj2pk3jf.fsf@vitty.brq.redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [141.251.57.4] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD019;1:e0mRmGQ6P7JPSt+g+ZeA1ghkbohMZaVoYvGUztifjxGdnLGffIqlgNq8n5zZajyY7fCm3ufL0xWnh6Z5SPRMJ2Tt7pJqcXDd1zjzioejLtF9n8cpiGlZNl2YUpwNicskNOccaXynhhFZNhQEDyji2SbToGtKpm5u5SGWK78O84Zx6XSxmMbKozQfMtcZmOGSBuAd2jqxo4xgg8qH9PrUenOmdCYzYf6Bxx+XgogxaDTU9v0tPAmAVwDMWf5ulUchUhfysZ7WePcbj0m1k8jiaV3f+GielDraBX9zcmXXS5eT8L+13QKvO45QMor1m1qfEMV+9UqHlVMdIq2h3v7z8406IEWPAfYJFDEoUjCitFlhdF2ozDdePirfb2gp7bYF X-Forefront-Antispam-Report: CIP:206.191.229.116;CTRY:US;IPV:CAL;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(438002)(199003)(189002)(164054003)(2900100001)(23726002)(92566002)(5003600100002)(76176999)(66066001)(54356999)(97756001)(33646002)(10090500001)(46102003)(47776003)(2656002)(16796002)(108616004)(19580395003)(86146001)(2950100001)(86362001)(5001960100002)(106116001)(106466001)(62966003)(87936001)(50986999)(24736003)(102836002)(46406003)(189998001)(6806004)(77156002)(50466002)(15583001);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB1346;H:064-smtp-out.microsoft.com;FPR:;SPF:Pass;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB1346;2:KCkA7yPwC6WUOjBGPOzWpE3HZJWjupEqnHpsXj4ymd82MwNRT7G6EvWCH6m0uKzJ;3:Yv3QAtb4BLsdCyFjr75eY5LkR9BOn+gTiIUkpgyBH5V7CO6rG3FtDjDV56j3aHx/yJ+rTMGHTB7AeNsvkM/wnAszfhibqiE5LnCj/1E+yQw+6JwbAspbrCiZNujfWDu1whvN2ZtzkRoZtw7k6M155j6W5XRGpmf+X/OPdbXKscI7OSpYdTnzPAzJw3yK3pnLn3qv3n4lrU0t2LJtBxj1ufQ17s0TKG2mJrQ6enBUiPm6VFn5l+IISUEkhaoR8BF/;25:1AwzefgmBtjuZ9ri6i1Di/1oYdDQqifWr3wpUSDzV7h1SL8uSCjgMzSpNl9TPnAU0hZw9DZ9KObqwahuNDJgWsDmBMHiTH/y1rF94dmlyk4ch8dHbQsD1N/VUzxwLTTLI9GfnRFgZFE6/ux4mft6+FB3j1HUpawLEmufv7IwrF/we2dwU2saZ/jKOWKzAmxMnZ7XDy3npRu0ii+CvyNzkZNMkicPBQGrIjontCX3BbUJnDMnEPZSPS0gXXpY8QZ3YxrTUTKgpbEbomBOdcATpA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1346;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB421; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB1346;20:uYkYjIejJeuGo2TKdGBcNyREbtgtpoE3APFrl3lPjf+hN/mBypEyA/MwF13sRn0wtm8lyis7KmPq07LdvZni3vyYrKGYRF1QDeUGKqyPAc3uq7i7rBvryZKAey8I3yqHssxrB6260U8Eaj8pRDVvq/LgDTVJwWIAqyrNGVfjnEry8vMxRkkJTDZ6urO8LjLaBL0d5qzSNfTCAMEA0bEtO/+2VrckqyqNqGEqb47bnAqCCUl9zsnvcghJNwylWHo+Zjp2DJnwgC5mwkYjh+V52vbKgCI39I4uykIZV9Pcel3JE4LvqJ45Vsx1/SjTWPA9O/maZqAb/AcoXZo27KhKuGpzBCM0hDyAK+MDXp9ZJbPWZsHxQMtl4t12ZxRW/VTyhIHd0338RpHVmLWhHbpM55HtqGOTo8CLdL3IDu115HszpNsWBrshYzsjfN5Jdb5KljLwQW2AJx1r8wHVmNQyC3suGJ+DHG9VBs6L8l7Mx7XLhHjYBLG6P/1NA4nM7iyc;4:0lBmZgBWvFv5ZBFVO35bFw0KnNrplhATBShxNlgEce7XRE0rVKbf84iP/NShk/qcReWf1ZkoitCYCT4RBrXLVEiDOsAV3KHgKrR5toEHnXwC1eDqAsUzFezJd7EEiQ1QpsmazeHmwHzdEFnuXtkujaGSJdh5jMEDABFgDf87yOAhdm7PjrxwSuRzzoELs6vQ1d4spKTCiXSGJ792QTXcBezCKO5VrmBvNbB8ypfWLM0z0QrGziu/Yj7dIOFPK3fy3BsyxDNGy4DLbb70eCPBNzuQwirgfIKJe7ZT95PHvghM6uXbBCMvEt9ykZA64wIO BLUPR03MB1346: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401001)(5005006)(3002001);SRVR:BLUPR03MB1346;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB1346; X-Forefront-PRVS: 0645BEB7AA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB1346;23:Sm/gypBjFQp7NaJ0QUt5xZMoLkDguYNI3N2L6drHT?= =?us-ascii?Q?UHoJBBm7EzAS9eN4SQPQ6d28wUI1pIn95wUL3c27g+ClVZ/UebaMvSsqE5di?= =?us-ascii?Q?xrvPQwCwhtikGu/qbVrZc7I5fPCs1m6wnxKaLJolBgcH3bSEUIZ3Eko45+rb?= =?us-ascii?Q?eOTdsIXmI8oS6qalRrFOeufwF3AN8YqIpZzlUDchnGnNhNXcAMpXBv2trb0G?= =?us-ascii?Q?UDmXWS+pvX207oxHGrx1ls4sYB/TeVn0ICdQKUDDyc79FWqRPxGHPIMZHkM8?= =?us-ascii?Q?2Rnx9hfwGS5y7xT8YvmHP/sUiKTXY3h/hmRfRfr0Gf6Ou0qXhjPfRtVSHiMr?= =?us-ascii?Q?w3KMmCz+eKZEYIAH6osLecB+pS0ef57zCVPndzExjChlH0ErcQTxW27v+vFy?= =?us-ascii?Q?9YMLqg+7bBCbrVg8zNR7Zdg+t46sekiZtK7q9VPodqnl0oxbd1fANX/Sz0oo?= =?us-ascii?Q?iHX3msLLaIxwC/MV9tCuwxiXdnwGxgk6MB4tfiLcrwcVTrydaHcqQHu+ytGn?= =?us-ascii?Q?AIpkkZojbvgI8+5797V55itl4dKjdtPpP3UaP1AdcxSi0LH2nqCu56rJP+3P?= =?us-ascii?Q?sZPKssrMUaa1YhBEqlSC6Mm3PZxnTi0H21sDOuUAo16dpCsTKZj7PVrTehKi?= =?us-ascii?Q?WeAEK7NcyOa6ssj9GKrEkWJCXJ+v3kx3bEEy4HoNcYq115/6O1Wj2sjJSJfb?= =?us-ascii?Q?Bh75WuYX8Oz1YHrRxSEdfpZcSeHmsAzqmmf64ZF9fBDBtOCjIiSY/ODYsoXp?= =?us-ascii?Q?b9WF4/kGqYjXpLJ+a8CwY1bEHW92kQnQ5jzod5lSVw7E8+tj+7zRfoZCK4Ku?= =?us-ascii?Q?Z/CpfMSW6NH64+maSgzyaf6cIslztLIxPwXPms2Hdy4JnkBEGwUbFuT+QGrO?= =?us-ascii?Q?jqjrWJ7A4n46rti2MaD2Pxx21wTZGDIWUy7iOwTeVyM60cs+b0N94+duogGM?= =?us-ascii?Q?i8ahnU02dVL9ypPXBOryPtGfvOuoWcDAxcSfu7b1HdRabBypZfQyJZy3lYi1?= =?us-ascii?Q?o1W28I5VLHyUfjniK3VrLVx?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB1346;5:eDsSjKRElnMdHxdl3cR9bCUfqGWTx6LA19WxokJuHnPW8qsienx/f9M6ZVgA73QBi/Uaae4skv81DKTYXHELxHev55E7TAY8dobF3axuLlIfySrmJZOKIcjd5/n3KVxVk725kx8nAS5wiceZPkjCew==;24:V1eD7ANjMzADVkjIXYuY3eRpgczh1ellgQwfjT7odfsLyHAEAIfgkQPFSyKComXTiAdZad7fczDa10xkWMVULMzxiTBXB97ZM42T3THraZQ=;20:vbpthoBpseUdnRSWZuDsg9zfrBXg0XPQ3VqKqZqzV5nqjLWB1iBUNmVNPzDl5PVGF2f5/Tvnf07xLNOvRFIzQA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2015 10:09:16.1549 (UTC) X-MS-Exchange-CrossTenant-Id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=72f988bf-86f1-41af-91ab-2d7cd011db47;Ip=[206.191.229.116];Helo=[064-smtp-out.microsoft.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB1346 X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB421;2:jg96lVoDAk7Cgg27YuUoxdMhNZUAuWlpDwMyLCo6X81dnpUsmudxqEXNbWUhvYALRccBSp/XHulJ4EIS2UXb+o1QRnUO62JIUZWGHerH/bgpAfs36wmQybMLEMHgTf4lihDwr9or+Mw2Bzd0NC4RhJxTzqDqM8G3wlfzQiA6bf8=;3:3gb9jzLCPT3OqEzs25dyjnmJz+o1hf6P/SX4cIpROO6KP6HfOwli3LjQe3kUtOlc/c6R2GRIB5UCzypeZJiPaCZSBhb1WRsUhazctn+jkFn965xhWXhyXMhN24b7aICWFOCV1G2O1O88OEMQp3QIN8LjeS9d0bquYTnN4LXtCOXS3uOeU3HUUAlSIiHpQO9rYgL1VTTfyrBoR0XljvPrCp9Tm2nVvAOZ39LdzC8gEDZHbMkpwmeOjcMBOy7QdM0C;25:+m0L+JHmrFLo2F8/jRq08W/exqWeTKFtP1i/3KOlDAN4PxiIQzkK+tZgCq/CWJtUuaj9hc0tvQb9OU0SVIvti1fcwbRzEbOJTlFhK/sGEgD/UM8Hng3Tqx2COSKEApKna85GJLR1gLNTngXVK/rzuCtxnxj04hjnsgYID2BhPffh7l7/SxhrmSrrXYdJu2BtRCvBy0ytp0Ce1KUYngHr/geFoSMnrCgg6tcZYEylUqaaT3QOS9noVXyruwavGc4S05G6xsXJL6VkMipq+w2vPQ==;20:t4qwggs+i86TjGCF9ZzjLX/3LYo0l+IlmY6S2GhFUh8t62PzM9bDEYE3s7xM5zYn6mjSdSusFs9xGGo/x+yRyg== BLUPR03MB421: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB421;23:uF4kX/EQEkOZWeHlPt+qY1+8cT1dM2JO3Kz1hTuS8kk1MWlRpa9XZqR6h1Tre9wjimFlr9zcCqeEI3XQR73IDL5H4jRQW2wkHgte6CsfcPVdaf9+aoL5Zbn/G2ZZmpC4cKwFpQF4K1xUHbo6mRBC/g4482/Fg6Jc0W4ap0XVk5p84S8NQ7PJCqp1aMmU5TJE/O76fFj1VhBlErYSslT+SD60OZr4msWi4xuiY0Hzhf/TPghUGEKiPlBkKi2UC9i0 X-OriginatorOrg: microsoft.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4438 Lines: 131 > From: Vitaly Kuznetsov > Sent: Tuesday, July 21, 2015 22:07 > > diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c >> ... > > +int vmbus_recvpacket_hvsock(struct vmbus_channel *channel, void *buffer, > > + u32 bufferlen, u32 *buffer_actual_len) > > +{ > > + struct vmpipe_proto_header *pipe_hdr; > > + struct vmpacket_descriptor *desc; > > + u32 packet_len, payload_len; > > + bool signal = false; > > + int ret; > > + > > + *buffer_actual_len = 0; > > + > > + if (bufferlen < HVSOCK_HEADER_LEN) > > + return -ENOBUFS; > > + > > + ret = hv_ringbuffer_peek(&channel->inbound, buffer, > > + HVSOCK_HEADER_LEN); > > + if (ret != 0) > > + return 0; > > I'd suggest you do something like > > if (ret == -EAGIAIN) > return 0; > else if (ret) > return ret; > > to make it future-proof (e.g. when a new error is returned by > hv_ringbuffer_peek). And a comment would also be useful as it is unclear > why we silence errors here. Hi Vitaly, Thanks! I think I made a mistake here: the "if (ret != 0) return 0;" should be changed to "if (ret != 0) return ret;" vmbus_recvpacket_hvsock() is only invoked in hvsock_recvmsg() in the case of can_read == true && need_refill == true, which means the bytes-available-to-read in the ringbuffer is bigger than HVSOCK_HEADER_LEN, so here hv_ringbuffer_peek() can only return 0. I'll fix this in V4. > > +void vmbus_get_hvsock_rw_status(struct vmbus_channel *channel, > > + bool *can_read, bool *can_write) > > +{ > > + u32 avl_read_bytes, avl_write_bytes, dummy; > > + > > + if (can_read != NULL) { > > + hv_get_ringbuffer_available_space(&channel->inbound, > > + &avl_read_bytes, > > + &dummy); > > + *can_read = avl_read_bytes >= HVSOCK_MIN_PKT_LEN; > > + } > > + > > + /* We write into the ringbuffer only when we're able to write a > > Not sure why checkpatch.pl doesn't complain but according to the > CodingStyle multi-line comments outside of drivers/net and net/ are > supposed to start with and empty '/*' line. Yeah, you're correct. I'll fix this in V4. BTW, it seems the rule is not strictly obeyed: :-) kernel/sched/fair.c:7290: /* don't kick the active_load_balance_cpu_stop, kernel/pid.c:273: /* When all that is left in the pid namespace kernel/watchdog.c:293: /* check for a hardlockup e kernel/signal.c:2376: /* A signal was successfully delivered, and the > > diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h > > @@ -885,6 +885,9 @@ extern int vmbus_sendpacket_ctl(struct > vmbus_channel *channel, > > u32 flags, > > bool kick_q); > > > > +extern int vmbus_sendpacket_hvsock(struct vmbus_channel *channel, > > + void *buf, u32 len); > > + > > I *think* if your argument list makes it to the second line it is supposed > to be alligned with the first one (e.g. 'void' should start at the same > position as 'struct' on the previous line). I think it's indeed aligned in the patch, i.e., here the 's' and the 'v' are at the same column. If I use Vim's ":set list" command, it will like like extern int vmbus_sendpacket_hvsock(struct vmbus_channel *channel,$ ^I^I^I^I void *buf, u32 len);$ Here I use 4 Tabs and 3 white spaces to make sure the 's' and the 'v' are at the same column. In the patch, due to the leading '+', they doesn't look like at the same column. Please let me know if I'm not using the correct aligning method. To be frank, I might depend too much on scripts/checkpatch.pl, which didn't find obvious issues in the patch. :-) > > extern int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel, > > struct hv_page_buffer pagebuffers[], > > u32 pagecount, > > @@ -934,6 +937,11 @@ extern int vmbus_recvpacket_raw(struct > vmbus_channel *channel, > > u32 *buffer_actual_len, > > u64 *requestid); > > > > +extern int vmbus_recvpacket_hvsock(struct vmbus_channel *channel, void > *buffer, > > + u32 bufferlen, u32 *buffer_actual_len); > > + > > the same. ditto > > +extern void vmbus_get_hvsock_rw_status(struct vmbus_channel *channel, > > + bool *can_read, bool *can_write); > > > > the same. ditto. Thanks, -- Dexuan -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/