From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1427217AbcBSLdc (ORCPT ); Fri, 19 Feb 2016 06:33:32 -0500 Received: from mail-bn1on0094.outbound.protection.outlook.com ([157.56.110.94]:19104 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1426497AbcBSLda (ORCPT ); Fri, 19 Feb 2016 06:33:30 -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?= 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> <56C52B80.5050104@amd.com> <20160218141817.GA6289@potion.brq.redhat.com> CC: Paolo Bonzini , , , , , , , From: Suravee Suthikulpanit Message-ID: <56C6FD66.8070502@amd.com> Date: Fri, 19 Feb 2016 18:32:54 +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: <20160218141817.GA6289@potion.brq.redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [125.24.190.162] X-ClientProxiedBy: PS1PR04CA0025.apcprd04.prod.outlook.com (25.169.60.35) To BY1PR12MB0438.namprd12.prod.outlook.com (25.162.147.14) X-MS-Office365-Filtering-Correlation-Id: 9fabf08f-3a2a-4ee5-68c7-08d339207bc9 X-Microsoft-Exchange-Diagnostics: 1;BY1PR12MB0438;2:kd8F0oS6sSBi7EkDD6tb31R+yblOcE7qJyPt2bK+uwBDmsZbqvhiIYyyvTYixzsoatmXb/FRIscJGib0yKrFIW7gN/8srdlatNQG9X9Xj6uL0uhC6JlyBMjrd5Fu/4ZEHaiJ9M2pc4k79eIJ6rcl4zKCw4KfmiATlFirVeT/Nylfl7hbpZnm7M202m3McYoe;3:gs/kX9X4BW5uAaDE6ob3+Y8cuH4e9lE2OHiq/D1dYlz1BptqKmmfCg5d+iEGwxlyx1DcdMg2P8Uwnxm6LgcyKxrIqGSx60+Faqj6cnmdt1ffEZ/wNuTbslk4AztRZKX9;25:cyaLpNzOZi0W2uUSJwNU9cPyONUwFRcOC4hauUeY013Rg+HpoKtnmVxl0v2PYUK5B29F5MBO+m+dZOp406UoEBCqG+Fpcri7o1wne0NSyHB8JqAn3uL26vHZkCMeQGqgw2GUs2p/CPHPAKOu+fg8S0OHyvqPEVlc+wDTFzh7MhhIzDRj0dpAuhhJzKAMguFsKayrcvw/EhRVD4L8kvL5Js1n25BZRLShnd7IB6LWIInYpaN+KD436FJ6UfyAk1MoQAhuitmQJPkIKSeAjktiBQN9VrFxeXOlPGU7wy/5N5NbCMyc7GQS9R2cGud4/KrP X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR12MB0438; X-Microsoft-Exchange-Diagnostics: 1;BY1PR12MB0438;20:GcD7RUj5eSg7s3Z6vBuYGGyu6xIBQmswA+4fDc+erBJiaZG9t2qMcFCxb8STcttizkYaJ+ljcgppoRiNCcYHVZ9H715onpstzMZOf2rS0Cfy5LZPGNZHpYAtK99BbDI2qlHEfS57c4djZd2QxbB8mGSy0yujFWZF/a/Z7iVwxYHtCYGodUGkwI2D0ryzX7L1hlIg6wslpOh9eJgZ4bIVTF/MEvg/elb4VMf4fsvgFAgMJFCjr6l4LsXYxgO6MGfMc8SqvknnRWNyJRGBgVFgdYPPHFMh6SdzZ7c39yLpRGYMYipFC841pQB0hZW0iDOpdeUVqCU3q2VhQ1oDYdhV98IhD1OFwGA+9aFV/Qcd2z3FjabgyJQOg1dXiYObdLhbXyp1Jq4MVAf4PWTemnbaPX9Cg3KvNiXMv2/DVzqABPMNbAUwa3wb0mkqHO8/HoTCsWOHJ03y4pC1pUL7OrbjVI0qyG5Q80meihmmb1ArKwoWde1HzUauMFyzfCfQYVMN;4:l7cvcqGOu2TkjcDIIgX+ZHqDv2d8haAqz5gXxvHJLCREtJHxpzQUk8LLukY7DI2Dbp+Q9kNlQ3p1dJ0khSN810O2xPlx9FrCfvY2Q1ZR3uMu8E6349Z4JozrxJW+IAAsgjMHNEcUUsFbLN8/nrgez8LknRdQnz0DPJXvaXVXUj5CS/prGwbx0vcabvpSlAS4XsMNkaMokcbsn2g+jdx5f7GtWKb2bhd+p4SNVIc+NYLHaX5WAruY4yIwPAeZGhXtTsr3FgnKoLFjYPLQvZJJUeih2havvyGRNTVl7hLPkHFrGkYAp3jVZlEd4aL1INepXxSWIFljvLpY7yMwhmckAK435AJtxq4wX7npwpTeCziwvTUKMBX/20hZGiIxVvHD 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:BY1PR12MB0438;BCL:0;PCL:0;RULEID:;SRVR:BY1PR12MB0438; X-Forefront-PRVS: 08572BD77F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(76104003)(51914003)(43784003)(24454002)(377424004)(479174004)(23676002)(92566002)(2906002)(66066001)(87266999)(110136002)(4326007)(122386002)(33656002)(2950100001)(5008740100001)(50986999)(54356999)(65956001)(2870700001)(77096005)(65816999)(47776003)(189998001)(5001960100002)(50466002)(1096002)(40100003)(3846002)(42186005)(80316001)(586003)(76176999)(87976001)(6116002)(5004730100002)(64126003)(93886004)(86362001)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:BY1PR12MB0438;H:Suravees-MacBook-Pro.local;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTFQUjEyTUIwNDM4OzIzOlRQV0puaEZVMnhkKzdTaDYvczhRRzNxWXMr?= =?utf-8?B?Q3BiWUpXNnJhUkJLTnhxdmtBZ0FzOWxjOCtlWFJ0N2NDY1dkVFNWLzk4TG9z?= =?utf-8?B?VmQxRzBPdExKUU1CY1pOTFJJdzBNV25IOEo3NW9NYnNFR1ZRVDFjWWh1eTRs?= =?utf-8?B?TUVWNjZidFY0NmF4Ly81UVhDNjU4YzJ4WWVlVUF2VW16ZTBXaDB2ZERzZXVK?= =?utf-8?B?c0sxQmdUN2FSMC9Jc28wRkQyT1k0bHJJWjdkTFgwa2haK3JMYjRiL1U4WkJH?= =?utf-8?B?SnFCSHJneGpNZHh3a3EyVzBvREZ6U2IvUmZld01BM1ZkUlFMbk5HaUQvUnFp?= =?utf-8?B?bXUwQWNnS3hteHBsREYvT2tyM09SM0M4QUV0VFlYbnFwSkVQVS80NUNZT1dm?= =?utf-8?B?ZUdkbldvWUg2VUtwTTUxVi90MXljS2VxZm95bCt1VDFYMXFxVXZ3RWNQcEZE?= =?utf-8?B?K1hjQnFpVEJ2VFZSRWkwTGdPdThtL0JrNGIwNEh6amg5TU5MQUdPUmk1eGl6?= =?utf-8?B?aVpPc09NYmgvOVRhZWRNVmorb2VrNTVCUm92cGJqd2ZsQis3aW9aRjdnbkhj?= =?utf-8?B?amxVV3NqZDlnOFFVeGlMNGRKYjNIM01TbUlkL0lCeG9nMExsVlhWdTlTODlG?= =?utf-8?B?eEwrQ3RSVkJjT1FqOHBoSTRrQk8wemxsNk5OQk1HdERoc2ZhenQ4TjJDSU1N?= =?utf-8?B?RktucjkyMEl6YzcrT1dCTnRWa1p4SjhqUmQyc01BQVFXaW0zSTl0YWR2NEwy?= =?utf-8?B?RkZubHkzaS8yamcyc3lEMjNRWEdzRDF1dnI0TG9qN3NwWXNtOXpNOHNTZWFV?= =?utf-8?B?TjRiZVV4Zk1zQURFRXc4SXhCdkMybzFMOEVQZGdZZUM0a1VOM0ZXMUJtREhK?= =?utf-8?B?UjVDUDd5QkJNRzVTMzN2K3E0ZFhWNnJ1Q2FPcldRS3ErbVdmaCtyQTFFRzE4?= =?utf-8?B?NjY1OFJseitVM2RHMXhVWURxOWRiUitrSTVqbDNYYUhrNnIzL1E4UE5zZ3p3?= =?utf-8?B?dGNlS1ptYzJIWmJycmNWRHEwNE9GN3ZlRDF2WThyYTdXaXU5VFVsczhYakUr?= =?utf-8?B?TFZJWjZWSzQzekE3dUJsdzJGK1BjVjlXVktQaUJwUnQxQUh5eEMxWUc0TFJH?= =?utf-8?B?VlhaemxJT00zdFFRbTZCUkVOL2tjM2FIQ3RGbFo2aHM5WGVzU3ppUGRKQ1Jk?= =?utf-8?B?SUJ2YkxSd05qSGxqejJTWEh3LzFoaURqb00xNjd5Y0x6MC9nS0FwS3JheVlV?= =?utf-8?B?dm5TbUtiTE5EYWpoaXpqZ2tuWVBiZ3NhQmdNVlhVZ052VHlFQ0FGSEV2SkMz?= =?utf-8?B?ZHdzcWZoQkxUNndoa2ZYcVVuMTdIYzFrRzIxQm4rY1krNjZmYndJdHlUaTVL?= =?utf-8?B?NkFhN2k5QVFReDVzQUdKRkZSOVUrby9BdXg0T2Q3Z09vZHphdU44bEFHd3Ex?= =?utf-8?B?dWhuVkFrOFUwNnYyUTltQmgrbE82aEFGVmx0UVFvQ2U0OHJ6RGpQVGtscjU5?= =?utf-8?Q?ValciUKp5WNpySI/1WDLuhbZs=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY1PR12MB0438;5:YU/Y3iDjyaKQBf7bz+iNAjiutZEHWgCjenxUwy7JW31q0bLjddet0elnUdQsx2OUNi5MYb15t9I8xlO/NzoM3Mzx3NdV6bkwAPU3TdtVxXLBqYhNuxY+G6awB3B/0zd/w1wyoZHXODoXtcoCUZLeMA==;24:u4q0XyHQynkGeHdqyPZy/lVtLtN1f4n79qVQzZfCMGOa6mRvkY0E+U1cUz/cIHssx83+YJk904HhHDBBihjCsGUqjySk8EP0XTbcbKRTlSk=;20:uDd+SLaJ9AJk8XPt6g6HuVWyP5Btz5vHf5rtSTIAkpMHojRr765fBpZ5xduZ0/KM0SskwXNnjlRcdYF0IZPdcro+00m3uLdcbP2BFaKTUGoKAlegExmA9pH4/9/5BchvR+LncidAU91rN5pmDVpNiXFZUJB0UTrp+tM4MVCHZ0Yt8Lyf4o0P7NEUdL2Dapb5rxW6oI4CsE/w9j59dBwVgrUMLkKIjx+U9ceUET25sLP4tHG5TCng5LP5tivy+U9l X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2016 11:33:22.8998 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR12MB0438 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 2/18/16 21:18, Radim Krčmář wrote: > 2016-02-18 09:25+0700, Suravee Suthikulpanit: >> 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: > > Exactly. Injecting the interrupt in AVIC_INCMP_IPI_ERR_TARGET_NOT_RUN > handler is causing the double-injection bug that Paolo described. > >> Am I missing something? > > Probably that AVIC already wrote to all IRRs (and sent appropriate > doorbells) before this VMEXIT, so KVM shouldn't repeat it. Ah, Ok I got it now. Thanks for the detail description. I am still waiting to hear back from the hardware designer to confirm the HW behavior. Meanwhile, I have tried NOT setting the IRR, and only kick_vcpu(). And things seem to work fine. Therefore, I think your analysis is likely to be correct. Thanks again, Suravee