Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753907AbbHFEog (ORCPT ); Thu, 6 Aug 2015 00:44:36 -0400 Received: from mail-bl2on0114.outbound.protection.outlook.com ([65.55.169.114]:14624 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752069AbbHFEoe convert rfc822-to-8bit (ORCPT ); Thu, 6 Aug 2015 00:44:34 -0400 Authentication-Results: spf=pass (sender IP is 206.191.229.116) smtp.mailfrom=microsoft.com; davemloft.net; dkim=none (message not signed) header.d=none; From: Dexuan Cui To: David Miller , KY Srinivasan CC: "olaf@aepfle.de" , "gregkh@linuxfoundation.org" , "jasowang@redhat.com" , "driverdev-devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "stephen@networkplumber.org" , "stefanha@redhat.com" , "netdev@vger.kernel.org" , "apw@canonical.com" , "pebolle@tiscali.nl" , "dan.carpenter@oracle.com" Subject: RE: [PATCH V4 7/7] Drivers: hv: vmbus: disable local interrupt when hvsock's callback is running Thread-Topic: [PATCH V4 7/7] Drivers: hv: vmbus: disable local interrupt when hvsock's callback is running Thread-Index: AQHQyk3ddXTrGmv8GkSSadcGzzqxlJ3zj6mQgArf2jA= Date: Thu, 6 Aug 2015 04:44:24 +0000 Message-ID: <1e6203fcf0c645c98944f25425db9406@SIXPR30MB031.064d.mgd.msft.net> References: <1438086930-19483-1-git-send-email-decui@microsoft.com> <20150729.152809.1531386671239230150.davem@davemloft.net> <77fb17eab5474ee7bf34bb1c148b84ea@SIXPR30MB031.064d.mgd.msft.net> In-Reply-To: <77fb17eab5474ee7bf34bb1c148b84ea@SIXPR30MB031.064d.mgd.msft.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [141.251.58.5] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11OLC007;1:3LQs3Pp00pegpHDydQZLjQziTabYrJZFZnUtiIO/KMsm6D2MMC/+cNfyKvxfphR9A23fR1MtKxzi5kE157UZ9aq5PuoIzDxgSwZxDB79EzRRV/Ow2zQvtquMM7uG7t7NLAusmcXJ+qh2spdTrGsq/bfatud4w4VK84VcLJKZFq2A1rTQoQHL35MFLiB1aay7Ih1KfRcAN6YYOOqYAXcVP21UUZqhax/swcAeHuFDsvXaoMjbZLsYl+1xSJQsW/cadr3oFwipC0dJp2CZOgUclg== X-Forefront-Antispam-Report: CIP:206.191.229.116;CTRY:US;IPV:CAL;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(438002)(51914003)(164054003)(189002)(199003)(13464003)(50986999)(46102003)(19580405001)(26826002)(50466002)(10400500002)(16796002)(77156002)(62966003)(24736003)(46406003)(23726002)(106116001)(5001770100001)(5003600100002)(19580395003)(6806004)(4001540100001)(1511001)(97736004)(81156007)(10090500001)(10290500002)(5001920100001)(5005710100001)(106466001)(5001960100002)(5001830100001)(92566002)(5001860100001)(102836002)(2656002)(2900100001)(68736005)(86146001)(2421001)(108616004)(2950100001)(86362001)(584604001)(33646002)(4001450100002)(76176999)(47776003)(189998001)(64706001)(87936001)(66066001)(86612001)(54356999)(69596002)(2561002)(97756001);DIR:OUT;SFP:1102;SCL:1;SRVR:BY1PR0301MB1253;H:064-smtp-out.microsoft.com;FPR:;SPF:Pass;PTR:ErrorRetry;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY1PR0301MB1253;2:VORVjYzKlA5ckGPxd0shbcxIvhu5q5nvzmoj1/LxMV1i9WrNndZOVa3gJ6T/q30w38IEh3GwdGF7/3c2vTvpjI2KhKSpmDir2lhUl9kRY+IJHFl2vHxBgAntLd5vrvcf0/uyQcrDWXb+KkrJFROlRW6NIJ45stb9RGQRUa7ePyo=;3:yzj0hP477y9qs0+8xKcqxN1Q5PNBTrEM9tGJoqfnsNSTuyCHwtDt+AD0HhdTsWZN4O1bijhbW1MOla/h0hKpuLFrhsBvA67qdQzzsssIyXH0jo/SGpjm5B/vjJaVrRA3hCNxgHP2YWwHZuI6Hb0EbcYST85vZc+RGuEV8ot/BbO/R72m6SjUqnI+Jpfovz+6lXO08EW+iCWUTDdWQHNZ/pC6FHGyM7cgUPL/CyW1/MnnW3vZ5teVlKN7sCPHpiZw;25:GOwHwW2+yfL9VsL1Uf1UaX78uRsurYipKO9D9Ity4gXHv9DEhR/c5oGJEYnzyfe5NeHzFsOGhNkmzoZO6jVgFcbkBtLpzF2AEiMsXm0SeVGb/Y/NslhArUi2xtf2Bwywu0FP6wyazKcrOCOegccihtWKoAiB6mBfuG1/bViBbhLNBDi0BmOH8ABGq8eNezQyBz6EDN+OKnAm+JI7+a3K93D0CscTCgJRgybdfYZG7W/DO0MNo3HZPc05wdkn1w7WP7diOPP4gXBSXIE6OJx3Og== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR0301MB1253; X-Microsoft-Exchange-Diagnostics: 1;BY1PR0301MB1253;20:KttlsH5o1vzQWApkmBEHxkEd1P1HZr6fRi0gYKN3cQX5SU7w+w2T8FLqPt94JNF9yEaMiQcJ1sHFioq/vN1Gvrh1Mtdp3C5cyLPFFKuy4qlGoV5QguDgSWnG3Clgj2RSWBNsmKjBM+Ats+Lviu4Dw/oXQsPKcdziyx/VEwnG7fmEHUjOm1Yk8J9jIKtf/9N2RbaLx96XSYL5Uj0FgWF1T+hkBfVyr3tmsIOBkGRbgmHhG9N23p2KzzONdiZIjfc/UZ6QhhpD/iVScz5uWlbikWYDmrW5KHB0WHHhuSQCHMdFJFnJI7Gtoq1RkR/w4e1GrCR90+PMWqTuBjCy4gUykvAFf3VNaW7qBPPXrL8fS6RAW4qyA+A5APTfcU10Qng4DYThZVJQYPV3vgqMzfALLv+nuRe1UJJ3XxeRjBbrD7WsnBOY0NNWj2iXwL9K9AwtEaQaxXM8LzVuoFpZQvBUdIg/vdUbAIbW+7cZ+cMR7fN6fv6ox12I0xbhlkzujVlJ;4:1i+mtT643ue1kIsue/qabu+YYaiSqr6nQ2PqT8pHLu4ExWoCu30/QT+uASiLzmfnOomiaHM/Jj0SobmF3cVpqNDu4KG1igzkxVqK5TOLGYkQKuuuMm9KNxf5RkPBuQc6dDXe1pIFpW8au3CTgEyV2K8uwN34wdMJ3F3REjdWAWLh7lBKxmEBJJfPKVEk/DsD86QZs452OF4STjNUo/S6bTDec/sFiizrLfFAGQhyrjDc0+jgUTwWXMgOa4s5x2EbacZrm+l6rwe8bgwfLibDQ12WW0+p54YtmRCpA3d5QM7E86KxFtDdfLfXmKASNRpi X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(108003899814671); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401001)(5005006)(3002001);SRVR:BY1PR0301MB1253;BCL:0;PCL:0;RULEID:;SRVR:BY1PR0301MB1253; X-Forefront-PRVS: 06607E485E X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY1PR0301MB1253;23:lZuV9xgq07OqIJh4FaLpmI57RPhUgBPzeZptb0E?= =?us-ascii?Q?ExIlUXif/NIFJKCgJq2X4uClZuZMIhZnAUkzRVeY0mAqOBHDzgWZcrdUffy7?= =?us-ascii?Q?MUzLh+EPrisbyyyAHRwekbMeWWj0qgbucgsJE/9wlVd/SEZOny6xHRrQyQXs?= =?us-ascii?Q?E0wFwLp2cAMnVcm0M71+ms4awnYbRAA7p6SCG9yeZLPMLTCglLgmVeVROyXv?= =?us-ascii?Q?0StqtTFS991CdxlssjRZyBbKQLPR90HVIT+n5S9fNa0Ay6oEOwWA6LFuymkL?= =?us-ascii?Q?PntMC4SdK3ggwqFN+QQePjd4goDZDl3aOWdCzkisEsDXcdkGUv8VZ3gAX07e?= =?us-ascii?Q?/Bdr3I7stqnHdHFegnDoKXgmYqa5F0DcuOTsAOM5L6ixvIL1TH6Cgi7vjWiK?= =?us-ascii?Q?shlR/0tVxhkgwS3v3uGuBEXh2W3D0CCGO9MWu0a0mv7ap6xZ2LPwH2WuQi7o?= =?us-ascii?Q?AUG3/2ag8I/Mk1novqki1QdBuz23HBl1AkVSWrY6ZTiTMIopmmNOiRRkD/CC?= =?us-ascii?Q?UXmPfn4C51YjsHat9hcw0gg0r0kQnWuNWH3UCimpBidzMSaKdtUcBKNiURfX?= =?us-ascii?Q?zsMW2DZgfzggkB6ilh30Fe6dN66cCzQ2cea0OejjB3l5q/Nh2C8Pi41V82g8?= =?us-ascii?Q?205gUB7Tg4wF0Xg4MZeqfxqr6hJfHi2stolcyPwSJ/TdoJpUPUXyaimF8wD7?= =?us-ascii?Q?xBcbxCLh6IZOvw8KnfdF/I4IBQadbUFtTwFcLxSDQy0VrauMWAPV0d593Pnb?= =?us-ascii?Q?UgysiGheUz8OX5PIfcQOHE4vto+ZEtJGqYpuWGEl6GvkamWfo74BQumiewAi?= =?us-ascii?Q?TI72X12kzohnIiUvyDIIcm5SCENdsSFXblf4qcHn1konsqr/zHKuaQaccy8U?= =?us-ascii?Q?x9XSC2fNvCfecbwDe/z5e+3KOKqSGlhC5m9DFpSsMVWn5gdqkmx/BM1AS3Z3?= =?us-ascii?Q?B9qUTpd33kl17nc9rECF5ti5nWBDKh4CKFYEVyYA3HWyZH6PSsgEfzLpKVsI?= =?us-ascii?Q?IdC/h1inLi5ggmOrRLAB4fw5cKQTTcDRbKz8OJKV000bwxpgfKwHYMXD6ym5?= =?us-ascii?Q?6VfEgH1+XY5JNCY/orjXChRW0XnBy+nmSDyJ/d59JAki5zecV1R6657WQtO0?= =?us-ascii?Q?2wY+7ZJwM86gSDn3590zf60VhaaMcQ9iN07u4DJax0caP2RskAOcYLe/Anpt?= =?us-ascii?Q?gS48Lph9+6m0pCFR9R9Rp33Gbc/O/xPnkMesW2P7K18iH3DD6+pM/yjBs/TU?= =?us-ascii?Q?bZCiho44j2Mb1Amk0hPxoziZt0k3E9V6pB2aqzZA9Xz8AFY58+a38VItCTfL?= =?us-ascii?Q?eXHkLzpTA3OWaNHmGud5anUdqKc0UejAqX1tKDFvxJ6gaq06pY4jQdORZ6SC?= =?us-ascii?Q?ShkbdnGpvZgZ81TCiD+haT6Um0U52UpPAQWzVF2Oh8z9jnHBgLWrAMNOW5mU?= =?us-ascii?Q?FpMtQBeCKnsaqDvtFuPsFQ3Q7mrTmtn9J2chBJc2AZCDdmhTU9cMpALHzWog?= =?us-ascii?Q?GvKxBkq/nONw6BByCdTnLlIDBabI+XQn0GVlQr+LNVu2gYAfXS58QzucRlvK?= =?us-ascii?Q?hsA1A7okNpi5YJmQA2L+duXvVrSsMgpbPY/g6ZFk=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY1PR0301MB1253;5:Glm1+qasJe8Q9sMRY0g5zyLkGijYBE4fD0ETya0lRQBns86DtiOHCgQsdZdZcdAU/bY9A8bkSuqjpIBNa1cyev6K9DfFVaXwPUKV546IbhCnw9mybJOFf7/6lJ9t+kbErObT/mQv57Vk8R3FpczsMA==;24:BsouISTjPijgJQA+pFQEqcV7u1Q2SIsH5N2qx84xhPlXs70E+ZD4QYXqPKwQy0QZbrr3T0tFyyqxPDXZh2Q8uMq7exjl4hAYIs0/v/wuBsY=;20:EP7Y24X5cJOT8GLW7kNvV/E6jBNkeA/gjBHWXdeZUkvwXVNUjP8BSAx3iOhSM2EuW15gY9oQdDOU1/S5kziwRw== X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2015 04:44:28.3902 (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: BY1PR0301MB1253 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3021 Lines: 71 > -----Original Message----- > From: devel [mailto:driverdev-devel-bounces@linuxdriverproject.org] On Behalf > Of Dexuan Cui > Sent: Thursday, July 30, 2015 18:18 > To: David Miller ; KY Srinivasan > Cc: olaf@aepfle.de; gregkh@linuxfoundation.org; jasowang@redhat.com; > driverdev-devel@linuxdriverproject.org; linux-kernel@vger.kernel.org; > stephen@networkplumber.org; stefanha@redhat.com; netdev@vger.kernel.org; > apw@canonical.com; pebolle@tiscali.nl; dan.carpenter@oracle.com > Subject: RE: [PATCH V4 7/7] Drivers: hv: vmbus: disable local interrupt when > hvsock's callback is running > > > From: David Miller > > Sent: Thursday, July 30, 2015 6:28 > > > From: Dexuan Cui > > > Date: Tue, 28 Jul 2015 05:35:30 -0700 > > > > > > In the SMP guest case, when the per-channel callback hvsock_events() is > > > running on virtual CPU A, if the guest tries to close the connection on > > > virtual CPU B: we invoke vmbus_close() -> vmbus_close_internal(), > > > then we can have trouble: on B, vmbus_close_internal() will send IPI > > > reset_channel_cb() to A, trying to set channel->onchannel_callbackto NULL; > > > on A, if the IPI handler happens between > > > "if (channel->onchannel_callback != NULL)" and invoking > > > channel->onchannel_callback, we'll invoke a function pointer of NULL. > > > > > > This is why the patch is necessary. > > > > > Sorry, I do not accept that you must use conditional locking and/or > > IRQ disabling. > > > > Boil it down to what is necessary for the least common denominator, > > and use that unconditionally. > > Hi David, > Thanks for the comment! > > I agree with you it's not clean to use conditional IRQ disabling. > > Here I didn't use unconditionally IRQ disabling because the Hyper-V netvsc > and storvsc driver's vmbus event callbacks (i.e. netvsc_channel_cb() and > storvsc_on_channel_callback()) may take relatively long time (e.g., netvsc can > operate at a speed of 10Gb) and I think it's bad to disable IRQ for long time > when the callbacks are running in a tasklet context, e.g., the Hyper-V timer > can be affected: see vmbus_isr() -> hv_process_timer_expiration(). > > To resolve the race condition between vmbus_close_internal() and > process_chn_event() in SMP case, now I propose a new method: > > we can serialize the 2 paths by adding > tasklet_disable(hv_context.event_dpc[channel->target_cpu]) and > tasklet_enable(...) in vmbus_close_internal(). > > In this way, we need the least change and we can drop this patch. > > Please let me know your opinion. > > -- Dexuan Hi David, KY and all, May I know your opinion about my idea of adding tasklet_disable/enbable() in vmbus_close_internal() and dropping this patch? 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/