From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1424806AbcBRCZZ (ORCPT ); Wed, 17 Feb 2016 21:25:25 -0500 Received: from mail-bl2on0056.outbound.protection.outlook.com ([65.55.169.56]:11781 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1423366AbcBRCZX (ORCPT ); Wed, 17 Feb 2016 21:25:23 -0500 Authentication-Results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; Subject: Re: [PART1 RFC 5/9] svm: Add VMEXIT handlers for AVIC To: =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Paolo Bonzini References: <1455285574-27892-1-git-send-email-suravee.suthikulpanit@amd.com> <1455285574-27892-6-git-send-email-suravee.suthikulpanit@amd.com> <56BDFC72.7030905@redhat.com> <56C2C1BF.7010700@amd.com> <56C312E1.1080902@redhat.com> <20160216141330.GG10555@potion.brq.redhat.com> <56C354A5.4040807@redhat.com> <20160216180618.GA18952@potion.brq.redhat.com> CC: , , , , , , From: Suravee Suthikulpanit Message-ID: <56C52B80.5050104@amd.com> Date: Thu, 18 Feb 2016 09:25:04 +0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20160216180618.GA18952@potion.brq.redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [58.10.104.205] X-ClientProxiedBy: SINPR01CA0017.apcprd01.prod.exchangelabs.com (10.141.109.17) To SN1PR12MB0445.namprd12.prod.outlook.com (25.162.105.139) X-MS-Office365-Filtering-Correlation-Id: 21b8e548-3b81-42bd-7e67-08d3380abf32 X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0445;2:Y+ioX46BepVOmE6KG654l1ahoaQtsAbx0PLSRUI1+GytS6H0IgEU2HelEq/mJpdggUTotpkFSNsjp/+uPiVoq5yR1hoi2HZkvbLscmYkMgFRwqWWF/CqQlcyHLPrD41cYL3/YkHts5vqyZL6PVkP8+NwnhRCyX7TTjwKhYeRy1wvSGrCXDGqD38Ja7u1dZGO;3:3NoVskQhtLfy9Ir/Sj4BSCDLpwHQk+SYLhDwKyC7RZE+v+sEaHE9CsSNDa5GKGmYakOhFPxwx3YugcExIyTRFRhozyL3iC9M5RnFsayAwl31M4snwY3FQM8WI37Tg1ql;25:6ohgtrUoGg+qmjGdm8rsp7CUwoMSj4CZ//Ahq3TxCyyVJ0jJgOY6ljuiO/i1wwYuzQwHnXxvYYS1Vrx7Wf0pJCMCnTbCSYcb4aIzoXJLPtrCzJeJDyMO7rp1RyMVH8xNyz8EF1pLS38TgnfpZ2S45gQDZoMV7Y1ylbDnvpgo7gJE6Ewmo9l63PbK+NwO6l14qKy5Rii5FlesllxvIDf/gRCalzWnagRsHAZCptaLjqGkxR85NgafORhXUHXAgKZJOV/qmRpG9wChBaXifzUmx6MqOlF72ZIFQ9f/Pl2AZJ72FtNxol2WqzvCXEBpItoj X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0445; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0445;20:ld0Jf2i2vzU8A3WeWUrqeSu9THzZJQpHO86P7kOCLAECqtxc6wMZYFnWlfYwD1tQVmZEdf9eEOJAo6UORxvWc49zXilLVHulCHiTCGAnWISf9L1LEzueIugMDW4bLzAc8lnwAtk1TVUiVL/ZY4nhXQY3Ro/O82Z+h2aQIxn5oddeaGsHhqaE+qYMYowziQ0VoY5J7HY5LQp5IG01mxAbLBvFdHo9eP5ogINicqvAj1veng1e8ZV/vwZt0LqzkjzCzpnRXajwbXK6+/4bP1+7PsoouoL/9d/0CiA3iqfFstfmo5iTcfdQL6GEsGiGEnRhIHB/X0TIYrXfT9aGSlNneBflY8WwTaHyoy/r6qwW0fy0WqAYKpOQhN432XQE7TcZO48iJ71/Nd8Gl7jJz3e/CB1KaVcNKL3SlqQ9GYzPXzcMSCP2ZBXKgh8r1bBCdWG/a4q2JvQ7nB2mv3drbQMIpN0exbbG3pmbf4GkrYO61v01HZk82KD4DXPiE1bWnzO8;4:nTKIZqd+4bTNLty48i5kbt4D7V/M7Ql8yEFsfkHKJF8/bOdOuJ2YTISMqjM6JIgOHmAXPoTyTrkGGx5eX4Ck68e6jS4Ct4xCBgty597fezzesgoLmI5sjo2OLYAPVA8J3iUayWtJK9qb3PKbzPGBgXTgQttDfEscucQA65JU+9LSisv7SaaoxjSX6ZkhnU+eW0iTCMvkyyviFFeOq0erxtphVFEqRNz3EauEG6Ml4OekcCY0XdHNEF9wUfZbLyLW6P1gilVkqHviubSGr4zmOqY5Hxf3sfmdiHqxZDq5ZdRElabKVkLsJMhcETWxqj7G84gLqexOEb6bRTS199LK/pzWBF0IyTZhnU488XOnBZ2kyFTdo2vhM7QkE0VBBdNs X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:SN1PR12MB0445;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0445; X-Forefront-PRVS: 085634EFF4 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(479174004)(24454002)(164054003)(76104003)(377424004)(122386002)(6116002)(586003)(87976001)(5008740100001)(36756003)(3846002)(93886004)(40100003)(65806001)(23676002)(33656002)(1096002)(47776003)(42186005)(2870700001)(83506001)(5004730100002)(92566002)(66066001)(2950100001)(50986999)(77096005)(65956001)(76176999)(80316001)(4326007)(65816999)(87266999)(5001770100001)(189998001)(5001960100002)(59896002)(4001350100001)(2906002)(86362001)(54356999);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0445;H:Suravees-MacBook-Pro.local;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwNDQ1OzIzOmF1YnJ1U1V2MTZXRTBoVzFQUk9wbWI5Ymt0?= =?utf-8?B?RkNYcjdGcGg3N2t5aXdLUXBFVGh1SHVLRlQxbDVnZmdMSzU1ZWxzcXc2SVA4?= =?utf-8?B?VmFVQVRaK2FyUUZRdmZmckdKUEJFWjlGSzg0OU9SOU5iQlMrSVlOZXhNd0Rq?= =?utf-8?B?QzAvTEprVGphWWUreDBtazVMNUh4Y3dsY24wT0NUOXlQVm9LWE5RRDZ0U3Br?= =?utf-8?B?VnFIVDF1YW9zb1hCVFhDL2ptUmNFSFZkV3RqQ0F2aXJzaktqM0NUTXZ0ditB?= =?utf-8?B?UklZY2pFd051dVBwWVdkUE5ZbklUVUI2Z3hoVkRWR2J6ZTBKTk04cHB2WTBu?= =?utf-8?B?aUkvNFllNE82SUhFYTdrTnhYakgwSnNIaGI4N0VBeEFySW81Smx0ZjRlNmE2?= =?utf-8?B?aEtubFdYU05ockthQzhPSGRuK3JKc1FlZmNyLzdnNW1TdCtKTmJpMjg3d3dX?= =?utf-8?B?TGtMRHJ3S2lOMlVTNm9ZbFoxU1BlN0JheWo3N2tuRWpVbkl1MTFoVnEwRU1M?= =?utf-8?B?ZDd5a200OXFySldMcEVXVGw1Z0FLY3lmV0JOWUx6aEtjaTVDT2hzcWNzdVNQ?= =?utf-8?B?cGJtWnQrOVAvYkwxZTZjU2cwQy9qUjVZZVRzM3o0NzczMGZSVTRVRnQ3Q1BB?= =?utf-8?B?VGdabWltWW1BRUN4a01KdUhYV0RzS2NqR09aMVJLa0pvRWtBRGd2a0dpVjZu?= =?utf-8?B?alptZkViUWF4emorV0oyTHowRStHVlZobWVReTJLR1V0TGhwM1NmaThyRGR2?= =?utf-8?B?dXZRV1Z0SUttQkRlYVU4cjFHZ3dBWFV1Wjh4dzhSYlNEMjJWVGs5Z2F6enEx?= =?utf-8?B?LzZWU3ZYbFo4YnMxQWV4YWlPR2dMYktMekVLSjdwK0JCdGZGeVEwWUVxRjA5?= =?utf-8?B?eGVwblFCUGlyTS95VGY1aTkrRTkzSG40UDJ3N1BZUndtbGMrdDhpU0VVY1dj?= =?utf-8?B?SXB6V1BsOE5aUUMrVHlRT2ZZUjhrVTdtVVdEV3N4bThwODR4b1hMR3hkNTZZ?= =?utf-8?B?N3o3dW9qbGtPWFh5OHZNRHZScE1EbnpWdlJBYi9ybk9JRk1TUkxBOTU1ZUZs?= =?utf-8?B?WVFER2Z3eTYwREo5UE8xWElrOThibkM3cnM1bTJaYWJlN3hhTTY2aTFQVjMx?= =?utf-8?B?aGVGa05TUFh3ZjBGWlZyQ1ozOThrOFpxRE1FcndJQ3FXVVhkZkZ5b2s3aUFw?= =?utf-8?B?OTRBZU9vRG9wWFVjY2k0cjRUZDJjMjlWN0poZzRaaEsxcU5jR1NLNmtqamVi?= =?utf-8?B?MnhLb1VTYkc1SktUbUVyRkVvYmt6SEw3a0ZlMERnL05TNExlV0ZFc0wwYWFE?= =?utf-8?B?djZQVFM1YUFYNzgxczBuWVUyNHBrUWsvT1VMNmFyTkpCeTNyU1ZrUmd0Rmpm?= =?utf-8?B?U21lTFVSbjlxVTdQMjZ2RzVPMHhiS3pFVFdRd0JTbWloNU9ScUVMRUN2bzhC?= =?utf-8?B?TENGcTdUYk53TVA4ZDdhdnJXWVNZUThiSEcxblo4Z2hTYTFGMWc5Um1OeHBZ?= =?utf-8?B?WnJLai92M2M0UjlITkVGSGVWcmQwZ3NHaGw1cGxRRWxuWktuaFVsUVpHdVRl?= =?utf-8?B?Z0sxV0NUYUk1Q21BSlJrQjROMm03dmc9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0445;5:EQElAlkxP7sd4kJZhMDQfivSJDRjV0uP5MQSlLfnaX2/CPgbpJ18fHGgLwqbCGe0AE8o2SgVymgoPdy+6Fk2sym0RQIoupM6nsbsV67Db4OvRtfIqLw/iwhJ/mH5BwMocSHIx4+Xc7xxVZ5/UZqXKA==;24:k+9W4WESAsJlEqLzleIyKYdOXq/U6x0/pVwxjYYMCd5CgNwT/dCUKXTJvDHj1uWug8b0VFimcpZ+nEO4TaKCOnV5404D+5SuO+ypkyVZz5U=;20:oJOmVSUc94wBLk2+Uss8mM3STX+exWFm6/fQm3wyjWm1GZA7TAwQ+bBhcT1FQXIBlBmc/hL0H7VbHtiSzjem8SpIdJXZGEoXDLwXX7XxAIw+uYUwGqkY35RmD+UCg/VRlBmwhHlJeUz40dCFNhRqz+jXrLTsUzQeQT4nrkHuJDmegNIv2Op+CPRRqoUHzcIWpvgZjYahTIN61uXziOpXmqulX/qmEBe853cuR3y1bVV1pttnz4km44b6bqANMbcS X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Feb 2016 02:25:17.2487 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0445 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi On 2/17/16 01:06, Radim Krčmář wrote: > 2016-02-16 17:56+0100, Paolo Bonzini: >> >On 16/02/2016 15:13, Radim Krčmář wrote: >>> >>Yeah, I think atomic there means that it won't race with other writes to >>> >>the same byte in IRR. We're fine as long as AVIC writes IRR before >>> >>checking IsRunning on every destination, which it seems to be. >> > >> >More precisely, if AVIC writes all IRRs (5.1) and ANDs all IsRunning >> >flags before checking the result of the AND (6). >> > >>> >>(It would, but I believe that AVIC designers made it sane and the spec >>> >> doesn't let me read it in a way that supports your theories.) >> > >> >I hope so as well, and you've probably convinced me. But I still think >> >the code is wrong in this patch. Let's look at the spec that you pasted: > The code definitely is wrong. I'll be more specific when disagreeing, > sorry. > Would you please be a bit more specific on what you think I am not doing correctly to handle the #VMEXIT in the case of target not running below. + case AVIC_INCMP_IPI_ERR_TARGET_NOT_RUN: + kvm_lapic_reg_write(apic, APIC_ICR2, icrh); + kvm_lapic_reg_write(apic, APIC_ICR, icrl); This is actually not just writing to the register. Please note that writing to APIC_ICR register would also be calling apic_send_ipi(), which results in injecting interrupts to the target core: From: arch/x86/kvm/lapic.c: kvm_lapic_write_reg() [....] case APIC_ICR: /* No delay here, so we always clear the pending bit */ apic_set_reg(apic, APIC_ICR, val & ~(1 << 12)); apic_send_ipi(apic); break; case APIC_ICR2: if (!apic_x2apic_mode(apic)) val &= 0xff000000; apic_set_reg(apic, APIC_ICR2, val); break; Am I missing something? Thanks, Suravee