From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752394AbbKLNLQ (ORCPT ); Thu, 12 Nov 2015 08:11:16 -0500 Received: from mail-bn1bbn0104.outbound.protection.outlook.com ([157.56.111.104]:49478 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751861AbbKLNLD convert rfc822-to-8bit (ORCPT ); Thu, 12 Nov 2015 08:11:03 -0500 Authentication-Results: spf=pass (sender IP is 206.191.230.228) smtp.mailfrom=microsoft.com; redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=pass action=none header.from=microsoft.com; From: Dexuan Cui To: Vitaly Kuznetsov CC: "gregkh@linuxfoundation.org" , "linux-kernel@vger.kernel.org" , "devel@linuxdriverproject.org" , "olaf@aepfle.de" , "apw@canonical.com" , "jasowang@redhat.com" , KY Srinivasan Subject: RE: [PATCH V2 10/12] Drivers: hv: vmbus: channge vmbus_connection.channel_lock to mutex Thread-Topic: [PATCH V2 10/12] Drivers: hv: vmbus: channge vmbus_connection.channel_lock to mutex Thread-Index: AQHRHTayj3iMHRnaOkW4f7fe72FtQp6YRW1A Date: Thu, 12 Nov 2015 13:10:51 +0000 Message-ID: References: <1447295158-9012-1-git-send-email-kys@microsoft.com> <1447295184-9051-1-git-send-email-kys@microsoft.com> <1447295184-9051-10-git-send-email-kys@microsoft.com> <87vb97ijot.fsf@vitty.brq.redhat.com> In-Reply-To: <87vb97ijot.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.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;BN1AFFO11OLC003;1:EJl1UsYO+YGrPCIolVKp0YFEvcLlMB51nQk1Nj5xzNB6iTfET7/SYOIEMu/lYLrZJf8lAf99eiYRsPrEbIUqDsDsmIJyRaQDwH6MYEw5x9TZuZFdsCb8nfjtR1+dByLbps3IdSq3LwYAmeanHnwymPpVTzC6db+q1NFoPpK7s0SkXB2kIoWMttRt1eaUFXmft7qgUIVLSFcqz+IEWn0fX59L5Grjl/acJWvdv3+215LlczQlzzCvaDgU6nKQYtt2dnmr1/+cAT1a0ugO9BFPE2Uu5ydPCO7oa/s3cXGNKMBXrJDd/Z9yl6iszrRh7ZnLN1B4//IG6t/yU8VsV2tcBQ== X-Forefront-Antispam-Report: CIP:206.191.230.228;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(438002)(54534003)(199003)(164054003)(189002)(2900100001)(76176999)(108616004)(189998001)(50986999)(97756001)(19580395003)(92566002)(47776003)(106116001)(584604001)(86612001)(86362001)(66066001)(19580405001)(93886004)(106466001)(5004730100002)(81156007)(5008740100001)(5001920100001)(10400500002)(23726002)(5007970100001)(86146001)(15975445007)(10090500001)(107886002)(2950100001)(50466002)(97736004)(6806005)(87936001)(102836002)(5003600100002)(33646002)(110136002)(10290500002)(5005710100001)(5001960100002)(16796002)(4001430100002)(69596002)(24736003)(54356999)(46406003);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB119;H:064-smtp-out.microsoft.com;FPR:;SPF:Pass;PTR:ErrorRetry;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB119;2:gLxZRgl4BsZlGX+uk+9nQnY8A0h7Ue+O6FkRfiwR572W/zvBrkXHmJciBbWUvJB3aBV3rGyEaM8xnI0Sc6XzgAy9I/KfLBmeY/LNqSZmTZFS3fb2P711tvj1mkztRPErFtJpok09r3DXQZHmDooPt2ijipwBQV0UJlfZfFM9CMM=;3:+jSiMKKuT6jP6b4iaWRtiViKaBtlLL2RYJqId0I3SFgibxYG0SfHxmxCJWcQZl2eYCXBpcRTznY085mVMsqBfhsJbtg+VSAjNof3pXl9UDJMjwlIU9+SV/OjA8ycj+LRKdz6tI8ycO8JdHIpQ0K19K8ezVf+KPI8uO487TurAFt1W7TpMlOruPxZMmI/yQIxn+jAiQhvZM4Udt2Aarry95kxFTSV9pON7YUYjzRdKsmeZSVuO4h2MFcVOHNy8nymqlTW+qIDKRsC92MHryNSuA==;25:QV3mFX4HC/jkQ6QblFc2e6rpklAWCifubU2p4tBWF/UVAbWFULyOCesgGmTID28Awq/ThsIzATq1qnZiWRFvgacqPFzHHVnhm/KQU9XVAGfPeUkLkkDbRLgcIeRu6PooXGWu68XHhXt58tvWgaSUeFbEN9MDLgsbMWeojaBrivGknzSj5ZVYXRRZeiUordq7e9ZlZMjtgPI2wOXyxKyu7fzNjyG/XBeyfAYZrK0OT0JqAXDPf4xfbOtiyx7hifRe3hUWOd/zO7Pr0YJMeLTnlQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501001);SRVR:BLUPR03MB119; X-O365EOP-Header: O365_EOP: AllowList from IP - set SCL to -1 X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB119;20:CR3ZiM2pGO97WGWb69mVsBAOc2jwndMcUY7GcMSHd8zPuQO01MV+BHwFKN13YUDnXudfHf6suziNUKVbnjOa9BOCXY/wFhCYohd6vm96GuW1eiCP1L1N/qCmHaeGx2/jBp0UttRL7jjFsv3ec8qNP4Ryd0TU14NJn1KuwobSQCCTJr3TjreYDt91oFpLHyTGnBg045QrQZiNsWnWE318BqRy+s46pSTjh9H3wXLSwSGV4t1f6ISTEegiqAP7ZP3lyoGAsT5R33kM6Nn2bNZiHw2/+pLh+ov8QT+mcbWleC5Pl4oxRvx22aadgd3z4xXBaqmg8EDCDKeV3+2JEdT4GoPUOiUM18l7bKoy7G8oId9a438E+NMacdQ0ZlsymydahSzgVLIP2HCOk5BzZKPMwadlS12PD/FWjiHBQMvLQZX1y3eJnX5r5OPe+NVbHcLmHk1dvqWo4QFwrHE70qe9RwFF9Tskrm89tMnHDH5GVlnojb7nTX8ZyxYHYmhtMXft7m2ghKtve96BGdWANiuUzZXz+OrHc0ORkQAGgJiV/lUdh5E211ORaXanOONvJc0AkYWZfWvurI8gihwPN76fX5SLNAalVqO3+TzPqKNTwlU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(108003899814671); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(61425024)(601004)(2401047)(5005006)(520078)(8121501046)(10201501046)(3002001)(61426024)(61427024);SRVR:BLUPR03MB119;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB119; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB119;4:UayUVuPTUQVJeccOvmBPAWMUzfYEfZO6xWDMyFK1KEUPy4aVkPka32rmnrLSRTpG6Hi5YNOlJ9WBvtj8urfH6UnbQuV7LfrlgA7K9RxwJmOLUthVXkO2UmY36uNp55FlZ9ayGhbP2WjQBKZLp2DRnAGme/aNvyrd56iOdPUXhXHR45X3n8+wjme5k0CUlnq44fWi3IPqrzXMfT4rVlY2ISPrCJXlGCtbAenx86iM1Tl5lM1ko6siQ2/g78jXnAMYI2vFaped4QNOIMBDbGG5XtaoaqYHsYoqRry9w+uOjZChbI7bsE/AgHF0StK8ms38H1DAE+1DNq4TOSFfB3UoApUyUEIs+s0jkt5B8jN00Y6FeNZ/fUMHwV0LAerBEQtIjd7H8CB/ATPW2fxm0cVStbU4RLhfPmegBgO48bARAkDuXXfG8lK8hlsbin+sXSKq X-Forefront-PRVS: 07584EDBCD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB119;23:QE9DWGA/+aeNznO8MLKZuAwn5mr2xP9cquIOgBROIx?= =?us-ascii?Q?66mz3bKV6OipLN1DHohfgy0FFs75qa0oEaSHTnZj+bpiB0MuXZFRuhxZmgo3?= =?us-ascii?Q?jiQM6dmSque5+BGjxlCo/AJfdmJKI2PrcQ4KuNsFn9xr4kBH7e55Tv2hQLdM?= =?us-ascii?Q?20Hk+4ryDg9+6O+0RGnpdoIyRhwrrKMn2Iz6bguJx4w/oXGdguGLKqcG68UA?= =?us-ascii?Q?daJMTqRbWmkYcc0EGHchUYNO7EVZ9KVq7idWsHpRbFB0WRMbvBK8STM5zYhF?= =?us-ascii?Q?T9brqElEmUVom7z1fuNHkhT0h2+XqPH+JUv+EzVsiMcpVnJTDzrIxpD3Y7cv?= =?us-ascii?Q?9Z0FGIS4y0cnTqPh9UXyRUvn71XpCJN+lhFJx7SP8w5EDHtq6oIR75pNm1q+?= =?us-ascii?Q?f9wKP2q7+ar2M2tzEtlOLnBqbdcf5najbvNdE944hINErOIAbsioJZSaPPVQ?= =?us-ascii?Q?MnEUEGuwBs6+GlgcyRfhlx/9DL/I8p8VMs0eO9eSY9UgIIxZm8xPt3KvPiyT?= =?us-ascii?Q?VZkZe+f2snzcwuuLHf4aLrLMucGHfZpKJr7ahcPFlpOsCBxvxlS2cnEoJaxY?= =?us-ascii?Q?4nhR0c3Zg1h8ZD54UP6efP/fWXX2oCs8ds4wrT7B62JzSa6KuSb2OsQRYTTB?= =?us-ascii?Q?Nkh5/5WL9JrrYAa++yAgyf3bo7oKNO/FOl1teMbRkxPNLEPXPBFiiGn6/xnh?= =?us-ascii?Q?W7oO2NcoGSobcnZgwdxo8LBAgf3ubcnns5WqpQ0qciIEa+uuU2sNyNnR/dLt?= =?us-ascii?Q?puv1kLKcbzVZw0G1Dm7iG0Urse6llaA07W5bVIdt1kYbzsbNpujf5s/LOAkk?= =?us-ascii?Q?IAmODBotGpOr7+MSv9B+mZfe/eTxvErL0WbyaqOE6ZmnzYfPAg3aj/T8kUM1?= =?us-ascii?Q?KQayDk12hqqmyOUFoMdGo0Ua4CtasLpXjSJ047KsBxLSrEYREcncPLeINFV3?= =?us-ascii?Q?L0PHilbXY2UzPI2mc4cpz++tw8JtdcNTKbo+HaQGj+I0vG/zfxrswYnADKAe?= =?us-ascii?Q?OsUYYdmZD1gHJqll/AqRbo6jnHicbErHXfiIFNtObaJDOblQLdK4YDME6Whn?= =?us-ascii?Q?tP0LcZMJ1YsFRXGQszjvRYJEOAwolOnladmgUDd87xF8UcP2jfN2qViji09L?= =?us-ascii?Q?QT+Vw9+ZxpJmwsGb9KYl7ZoRRhPKrGP6NMS4sACdyb3hRabXxiuVZxqdAE0U?= =?us-ascii?Q?OOCJQG8iQ4Iq77VXkKAEaI3etPAf/yh5+HH78qS1QfU8BbDZSD/HDIz3CEBF?= =?us-ascii?Q?MUtu1iCHPOHaeo4gRNnXa4M6TwrDswVdzM2aPLdQQgpAzWOiLaby9qzYmzl6?= =?us-ascii?Q?oAoJMbYaBVPODzhqJNDNIMQcdmeLfveBYLJ+i3IhIvGGx0R/g3Xj7+qivjtY?= =?us-ascii?Q?lzDDEQRxdUGQdVhoduzuxHMPi3TtEZWgBj4abF+SeVsn8YJMKSnpuWRQpLiA?= =?us-ascii?Q?oAb59ADA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB119;5:Uinw7fXN2HpGT2PxUk1FqFxH4oaSQgdENT4+me1lDIqhrwAAlxQBGRw8LIowUqzfBx2s/tEBZ6Gjss4yNTFdPorw5vgnav78n3+4MGq2BvECSmhqaIRmV/jiUAi4wtFDIYX2mIiE0GGTJrxFOL2meg==;24:3I47mBfuV4H+nwKo9EjrDcNZxBID0PROlg+1l3mOEZjT7Q/FjIrm/32luP5HdvKl/VCEv/ns53GptKOASiUMf1kmfhW2wihp8Y2TVEsdB3w=;20:bp6Kydo0wv9QtkWz1ug1ZMpFRC/KjmTzB7Q7psujDtNALyMRGSnn+qtMY6/WdgMnqtwoaUHwWO8bykRWndOuRA== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2015 13:10:57.4539 (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.230.228];Helo=[064-smtp-out.microsoft.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB119 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > From: Vitaly Kuznetsov [mailto:vkuznets@redhat.com] > Sent: Thursday, November 12, 2015 18:41 > To: Dexuan Cui > Cc: gregkh@linuxfoundation.org; linux-kernel@vger.kernel.org; > devel@linuxdriverproject.org; olaf@aepfle.de; apw@canonical.com; > jasowang@redhat.com; KY Srinivasan > Subject: Re: [PATCH V2 10/12] Drivers: hv: vmbus: channge > vmbus_connection.channel_lock to mutex > > "K. Y. Srinivasan" writes: > > > From: Dexuan Cui > > > > spinlock is unnecessary here. > > mutex is enough. > > Hm, mutex is usually required when we need to sleep and a spinlock is > enough otherwise :-) Sorry, I should have written a better changelog. :-) > Or are you trying to say we don't need to disable interrupts here? In Yes. Here we try to protect vmbus_connection.chn_list and the related channel pointer (see relid2channel()) from being updated in parallel. The parallel paths, e.g., vmbus_process_offer() and vmbus_onoffer_rescind(), are in process context and no irq context is involved, so we don't need disable interrupts at all. > that can maybe we can just switch to spin_lock()/spin_unlock()? Switching to mutex actually makes preparation for a later patch (which will be posted to LKML once this pachset is accepted): Drivers: hv: vmbus: add an API vmbus_hvsock_device_unregister() https://github.com/dcui/linux/commit/185afe8394a9bdae2be11ee1ea2a38d05e373025 (on branch decui/vmsock_1020) For a vmsock socket connection, the host and the guest can be closing the connection at the same time. When the host tries to close the connection, a rescind offer is received in the VM. When the guest tries to close the connection, a new vmbus API vmbus_hvsock_device_unregister(channel) is invoked, so vmbus_hvsock_device_unregister() -> vmbus_device_unregister() is invoked and this can be running in parallel with vmbus_onoffer_rescind() -> vmbus_device_unregister(). The issue of "vmbus_onoffer_rescind () -> relid2channel()" is: it returns a channel pointer without the spinlock held, so actually there is no real protection for the channel pointer. So IMO we need to serialize vmbus_onoffer_rescind() and vmbus_hvsock_device_unregister(). Here I use mutex (rather than spinlock) because the critical section can sleep, due to vmbus_device_unregister(). Thanks, -- Dexuan