From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752504AbcHHOnA (ORCPT ); Mon, 8 Aug 2016 10:43:00 -0400 Received: from mail-cys01nam02on0045.outbound.protection.outlook.com ([104.47.37.45]:59136 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752217AbcHHOm5 (ORCPT ); Mon, 8 Aug 2016 10:42:57 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; Subject: Re: [PART2 PATCH v5 00/12] iommu/AMD: Introduce IOMMU AVIC support To: , , , References: <1469439131-11308-1-git-send-email-suravee.suthikulpanit@amd.com> CC: , , From: Suravee Suthikulpanit Message-ID: <02933980-5e2b-2a31-75ed-d225c7abb681@amd.com> Date: Mon, 8 Aug 2016 21:42:36 +0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <1469439131-11308-1-git-send-email-suravee.suthikulpanit@amd.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [115.87.78.87] X-ClientProxiedBy: SIXPR04CA0074.apcprd04.prod.outlook.com (10.141.119.32) To MWHPR12MB1453.namprd12.prod.outlook.com (10.172.55.22) X-MS-Office365-Filtering-Correlation-Id: 6fa2620b-a98e-41ab-c423-08d3bf9a48dd X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;2:jEDQXERI+vwRfx5Grc3uyeDmip3morCrDMb+O/4bzraziivvy4Mil99zrIM+VwH0s4s78zAwTj9W0XE1P5aiq81PNFq4U1wiL4SmBdiVaXuMxyqKgxVrI1ZF/YP2vLlne2Wx5q/CdG1TfP7fJNycV8YH0D6uftYbQlWZC4sp8jezQtF8wVWVp0LEUbAN9BTo;3:oLeoMCjb8PjlOC+aCiKm+CPWYW4QJqSbrGjsbmMsNmNEcCbbkP8mhy1dFsE09+bSxUSy//JsyBhf/3V+WvIDdTxHrap664MmKC75rc0ExovIASM8JCEJhdjNCWU4TIxB X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:MWHPR12MB1453; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;25:E0YbuATPCacv6UbPIfbX9XlZhXOc/JD2DZmcT/ORmnmBcZeel2qwqkFkqwtEgodUwx5IYjfvo3xTwAj0MFSK9plpw1tkX1El+erj82PM9bcCGRlMc181DwAcUQvV8Fj6xcP+SxrQziYEWIsq265tbrBG/jlsUQHJmKE0Uw0Tnqx1hn5wJ3Yb9YIw5c29HOYUqic56qrxc7SBaImjnpau9YWxw8SW/ONLs+ye9bmVe25aJBC1/BGLs1qhkBJayYXn8Kc4JoKij0lijpmt7ZcJmM1WUYA4vgTvEgASeOqTlw6jRIOkzSDsQDD6WgVpDKMOzoZ9VSrS9L3rvibcRmvLFYOCgdjKfvelXNGbs9XJaEnG3l9fYCP53eTy/ZAZxQorQOazG6PUmDrksMowPqqxtp5XFwBjiqD2m3ZtRvQ7s9WfePjSeftMT2LG/jgP3I8ffc+PxDP+foQ4ChDqrPj9has4JDyt2pfx+4A9odNmjeh/sNxYLY4LB6zHqXREyCTudPRyd4MYf8cn8dLeZ0NNBWYSq6o3IK7aMufmR0+hxOCXItOrS3ccpY9PVh7H6SQEqV3N4XmfrfiV9VEf89JuQM56Kz5smh2fUGBoQhMMq23sMfcuOe7m2qMaIjrDtgzj7mPDwxmsIuULi6g2tjfKdSNSCeZJSS6Wh3Alip8aWUetadHblOqBNi+UWDCHWor81qySqbsuA0s2A3eV2R/2I0kc0sfABCmy1vUb7ajyGp6XyDhD5AOgRk+DiBvfF0dG4JmqOcxeCyujn+xZbzNNR/0xepSQI5HneFwTAt5YLobtfJ7uH9SUzjY7VFwcD97T8FIjOGRnlUTBDrLIb8B9Sg== X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;31:mhR/0TYr/DV3FEV0ZLDOlTyAKQJt6P6r9aeiCf6v18jPRwmQRYgfunR194Mn6ZuqBgtqoyuS6QPMfTRjhFAXHudXpHoWZnoGH5J5YyU9oJ5nDDHImdpOp8s/RsFV1LtIjnG91w9eBMCyJD2V+jP7d9UVu6dv0u9JNAIFlF+0j8G/DF4MMHAQus9NypFJXnCNkjHiEs5z27reeV2zPRWEwMrQNPLo0jJWdMDk9DZGQu0=;20:vtOnXG7aFeO7D9VGHzT8kPHKIT6x58YF0UvXjM+ZA5CTYOvX3BqGlAmv5h8GYFVRyphErvHsuqN+dKdy79v4RguWZ5ONl2x4lQy8vTyjbE+Tt60XXZlOBX87pd5SkHpSnhJIczvaWU+8WCBv3h6pTyxIMprI8iM+apJAuWWauWQE6sV1q5wes+8yvQVi16LDjYRhXSpq0byQeL+PPEGnLIYTJfhfj8mh35kL32APHjP2M5Z6MLx7RSOn2Y9lDV6burRKAr9X2RWY+a3FIpzjknQKcFZyLDkYxnbXWNiTRm3upn8v9KLxovFF/IXTID0ybnw8RusIO3gQW0fMzXTwp6TieNFX/IdKNzi9GxwHfoVIO4Nh/Jvq8gCctudLG8VWmGf9BE2oa/1Xr62O2htYxDM0SuGxkx7x4wamSthrBj9eo8oN9k5boV4KONZirt/rPaXLIe4dYSV7FNbUpMsmxdURnGT0bbEpJwEPtgF/PAGNCWQMZ2/ZFmjGOB4jnO4g X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:MWHPR12MB1453;BCL:0;PCL:0;RULEID:;SRVR:MWHPR12MB1453; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;4:6YcvFokLJ21RGTQP/1h9mrs12qA5hdU8xpp7A7n9syfbG5gPWQvZx0TsN7ZRgruF9ZVKQT50lD7H5h0XhAs1/Io9kPi8gUEVW0y7yGH2tU8xjvrfd2L5SPh5+1y69UIdEqKDUa+hokG/TNb5Kt7sNRizsNo5wIlhn80t1rxd/QJue4mQJw+f6f/uxmMCMLNpwbJBUk96YVebHzP4ZIZXc79CHPk4fecmSs7s8F1oxUOLBei0g1E442HyyEp7h/umzcvQCL6XJq5rWFS/Hm1J0YW51Owbtfo51SD+FNUFxL1rC5UbqCT9iSGm7/LMUV+OCthybJ2rYLNsKA9oY7ijikIhxSUSU+ym6I1he8FUwLq+cODdcWZshLn07c616wWOAtc1jJEd1B9sU+NPEQPsce3Vm5IgJ+h3LjHvOIQJ9sch4FVfVd0UeNzwUDcFl1gLQsd6smboZRjzucfJIjGaUQ== X-Forefront-PRVS: 00286C0CA6 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(189002)(24454002)(7846002)(31686004)(5001770100001)(23676002)(50466002)(189998001)(19580405001)(42186005)(97736004)(36756003)(4326007)(15975445007)(101416001)(106356001)(305945005)(19580395003)(81166006)(81156014)(19273905006)(83506001)(8676002)(19300405004)(2870700001)(105586002)(68736007)(7736002)(77096005)(3846002)(15395725005)(92566002)(64126003)(65806001)(65956001)(66066001)(4001350100001)(2950100001)(33646002)(54356999)(2201001)(76176999)(50986999)(586003)(2906002)(47776003)(31696002)(86362001)(6116002)(65826006)(217873001)(562404015)(563064011);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1453;H:Suravees-MacBook-Pro.local;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNDUzOzIzOk55eHZ1OThwU21rTDdQc3ZRRW5rcjhMSW1U?= =?utf-8?B?MGRYUGF3NW1oamwyeWM2VElFYnBGUElCcyt3REhnR2phRnl3bHp5Zm9BazJw?= =?utf-8?B?bTdXcUdvb3FSVmU3aFpMUmhiYlQyVFlwUS9xc1grZER6U0R4ZWNTT2lMekhi?= =?utf-8?B?L1JMTGd5S0RnK283Z1phcGQ0cGp5VEtpY3B5cWR1NjQyUzIrb24rTDVyQWNj?= =?utf-8?B?UDUzeDFuS3ppU3hJTXF3c2V3dzB5Ym5FTlRULzFMdXdrVDUwTUdoSWw2azZn?= =?utf-8?B?TXdONFNxYmxqNlFXcUlMRFJjcnBtTVBVWWIrUmhPSEwvWFlIRVg3LzJUUGNj?= =?utf-8?B?OWFaMk5VNGp0VEE2YzNUN1UxYk85cGNHL3RkYWZOTWJhWjVBMWtMSUxtalBO?= =?utf-8?B?NVJTY0lmNFlxRzB4eFY0bTk4a0dPbEx0ZHZwejY0WVlnWjgzcnlaV3Q4RE9W?= =?utf-8?B?emRCQUl5dzNndGdXSGRYZDljallzRitmZE5EZnVGMHAzdDIyWFVtTDJlQTBz?= =?utf-8?B?Zlo3NDV6b0ZuY2kvQVU2V2h3d2kya0VuQ1NUdERKSHo5OEtEdTRYTnArWE13?= =?utf-8?B?dFBaNkR0SUNCS0FjaUZqVktMSC9PZjZSN2w2WGQ2eWlMSXZIY2ZHUlYwYkt2?= =?utf-8?B?bytlc2RoMThKOFJRU0k0VkJqRnhSWGNsOHBWOVZ4WkZZSmViaS9wYXc2VTRs?= =?utf-8?B?OVRDNUk0R2s0eC8vK0Fudi94SzRXZkVpZFh5Tzc1cjlNVmQxVjl6RUZ0K294?= =?utf-8?B?VHZlbENDcG9DQ0l2aHZmU1NjRFhjU2tFMU02NlR4RDNpRm9lRGUzZ0MzZ0wr?= =?utf-8?B?dWpWWXVLb2t0aVVBUmpNZWdMckZRNWxGVTQzNzBpWDlWNlpxaGY1aGxYWkxQ?= =?utf-8?B?aTVmeWk1aHJLTzdtZzJGc2tTa0U0QzhMTXJ1blVUS2RSTzRKVDlNbmZUV0tI?= =?utf-8?B?UzVwcjZXenFQcmVsc0JXQVY0b1llL2V1VDJDOGVSeVVjSm5TYjhRdGhFV3Jk?= =?utf-8?B?cnNOTXlHeUhEZFZJbkVvbE51aUJsR09DU2JkN21pdVV1RUNLQTdPNVpxdms5?= =?utf-8?B?T1c4TkJXNGdQalcrU29kU3hXUEx0QlRMbGJsbi91ZGZOVXZZbXNGbGFQVTlp?= =?utf-8?B?V0tsUnZFYlZuM0I4WjhnMTBENzd6dXlrQW1ObzhTUlFtWmM4K1VjUEQwZ21G?= =?utf-8?B?UFFKMStKUW43L1M2b2xrL2J3L2ROMk1nS0dZREZIYkRxbkZPN2V1em5oTEJy?= =?utf-8?B?M1ZiaGUxL2VTWnNMdHY0ZGppZG5wanBrWHdNNFoweTNJNmJMQlpCYlJQT1VZ?= =?utf-8?B?OE1HSE5xcGxTMlVXWkczWnRydjl3cHdJSXpTMkRPNEpFaXVUa2hkVjlyYk93?= =?utf-8?B?amNqL3ViRUxnb3lhQjNXNGs2ZWRLR0N6SkRSWW5xMnVNVlpCamwxZy9VcGk0?= =?utf-8?B?eFNGZmZuSnF2YUZuYURWRlFwK1BsMmhRZXhGS2xIQzZZNVBZdG9KY1F1ZUd5?= =?utf-8?B?NVJXRmtJZGlGRWEwcUFwVmMydFk1a2U1K1FkRWV4VW5kNk1UQ0hmaHUxQlNx?= =?utf-8?B?TGVUSXlEM1g0TmVhTDlMTDNEVVZWOWEyQS9maGFjSDVxREZtUlhRTHdQZzZB?= =?utf-8?B?YmdZM0NjQTh0K1p6enpwekNFREQ2bVhkN3hOWnZIZ1dLdjNzdE9EYUZOR2VT?= =?utf-8?B?d2xKazNHUHJVZi9ha2ZMc1V3ZTd0ZDhHRm5NOWtac0laODZnOHYxb0tMWWs5?= =?utf-8?B?VlJwTzcrZ1YvSlIvRGRXVHpUYU9Db0V2NlRVazkzVzlRWjF5TUI2YjNPek01?= =?utf-8?B?R201MlZPdENSb2RsSXhSS1M3V0loZHIzWWExanhCTXkyeHhMOElubkV2L0x6?= =?utf-8?B?bE8rWm52ZnNuVjRnTkhMOTY5SlpacW9nNTBCUng2bWFldjFSRDBPNTlyOGZl?= =?utf-8?B?R25LaE45SnFBPT0=?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;6:CSnDxP0e4oXHMRriedEU6whKq7sNxE9v1Nskaqw4gkH6Wtc5sVj36Zkpz0BqcZ4GDlAPQ8aV8UftL287Eh8O5C4VzvGS/arB0hml+VNWJ3Ve8qd/n5MpZTYE0tGNxOIbjw22MkH+SGH5YlZpWo13XCWuJv3NhjWHxzMMCCMAKN/ogvla0uHz0auDnTVPvOdoBXNHK1oVM192XMQTsWCTOzlymghxO//qOubntwQ7J0T8qQg2n7c3tX7kX7wtmy2uxSSkIGIDzFx42a/3+eTXUtcwWhW6FnSj1VcVGGu+QgPpofa6K8yMA90FFh10/W/bEaxmYDbqOKH6F5uSoZ/etA==;5:cHAqrpfu2YQOaRlEVET2Her1pT/Ip3qQGrZAajUWeZuHzDSl3BbP+2p1SA3rPjpHzDjxVmERcMTcxMcmXVQ1m1vuChVNeD3lXYIZBC7K5A816LiTiHbhyxOJw03iHerawXUiigy/nrb71k63ISFZ2g==;24:rU7rmgxYDJatqVg9PDkqtEmmeGDKqRRnWAB+ulcMEFQP/Hq3fOunHiLBEKDhPxs4heEb1+OYGvCt4vaf1Umx14+lyi0HNzi/G+DTZceeQs4=;7:zS1ZIP/IgRg7q76SFUGp2hyPvk/ZhubPa/7/VuNaoXBXcaZaz7WTb6S8wmE1bDnTQ34hfVs0KxUN47KqPc05otIecQrO9iCTC9pDfE8pfTGoz8fTbC1pzdmP0YBeWXlALq1pXfriIWeb/8B2lZzR6VyGmny5rhRU5OdW4VErNnuGoopEKAz4aWayxZdplg7Tj2L4h8BOc4bOXYsLldlpggC7/CYJNqLwoGTKK23D8xv17h1iof5GxgZjTzQPXJq/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;20:+6troGYIqs0Ik4NlKC8o9LTHchvvVLIHLxklVxZzPj22H7aKXpmnZEqMv3kiq7b5J0iy/dOpr6nLy/kJQ0QQdR7xqUTfFMqGFZjVsHfj6UaFaFwnFBt1abuN+S13578K9Z7sYwWsLaZ92LBZ1z7AWzf0KJfPFwe0zWfKsCRV7APGkVipqpxiN0b8iO7jZxF5yAuw1Tb6aP8+6T4cGPd3J06hKrp5vsKa30i7ck6d0WTfnS4Y3aqbhg9uZvSGys78 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Aug 2016 14:42:53.8147 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1453 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Joerg/Radim/Paolo, Are there any other concerns about this series? Thanks, Suravee On 7/25/16 16:31, Suravee Suthikulpanit wrote: > From: Suravee Suthikulpanit > > CHANGES FROM V4 > =============== > * Remove the hash look up in the amd_iommu_update_ga() (see patch 7/12). > Instead, use per-vcpu pi_list to keep track of posted interrupts so that > SVM can directly update IOMMU interrupt remapping table entries directly > when rescheduling VCPUs. (see patch 8/12 and 12/12)(per Radim's suggestion) > > * Re-implement AVIC VM-ID using a set of bit-mask to ensure no ID conflict > between active VMs. (see patch 10/12) > > * Verify VM-ID of the hash entry in avic_ga_log_notifier() before referencing > each per-VM data structure. (see patch 11/12) (per Radim's suggestion) > > GITHUB > ====== > Latest git tree can be found at: > http://github.com/ssuthiku/linux.git avic_part2_v5 > > OVERVIEW > ======== > This patch set is the second part of the two-part patch series to introduce > the new AMD Advance Virtual Interrupt Controller (AVIC) support. > > In addition to the SVM AVIC, AMD IOMMU also extends the AVIC capability > to allow I/O interrupts injection directly into the virtualized guest > local APIC without the need for hypervisor intervention. > > This patch series introduces a new hardware interrupt remapping (IR) mode > in AMD IOMMU driver, the Guest Virtual APIC (GA) mode. This is in contrast > to the existing "legacy" mode. The IR mode can be specified with a new > kernel parameter: > > amd_iommu_guest_ir=[vapic (default) | legacy] > > When enabling GA mode, the AMD IOMMU driver will configure device interrupt > remapping in GA mode when possible (i.e. SVM AVIC must be enabled, and if > the interrupt types are supported). Otherewise, the driver will fallback > to using the legacy IR mode. > > This patch series also introduces new interfaces between SVM and IOMMU > to allow: > * SVM driver to communicate to IOMMU with updated vcpu scheduling > information. > * IOMMU driver to notify SVM driver to schedule vcpu on to physical core > handle IOMMU GALog entry. > > DOCUMENTATIONS > ============== > More information about SVM AVIC can be found in the > AMD64 Architecture Programmer’s Manual Volume 2 - System Programming. > > http://support.amd.com/TechDocs/24593.pdf > > More information about IOMMU AVIC can be found int the > AMD I/O Virtualization Technology (IOMMU) Specification - Rev 2.62. > > http://support.amd.com/TechDocs/48882_IOMMU.pdf > > Any feedback and comments are very much appreciated. > > Thank you, > Suravee > > Suravee Suthikulpanit (12): > iommu/amd: Detect and enable guest vAPIC support > iommu/amd: Move and introduce new IRTE-related unions and structures > iommu/amd: Introduce interrupt remapping ops structure > iommu/amd: Add support for multiple IRTE formats > iommu/amd: Detect and initialize guest vAPIC log > iommu/amd: Adding GALOG interrupt handler > iommu/amd: Introduce amd_iommu_update_ga() > iommu/amd: Implements irq_set_vcpu_affinity() hook to setup vapic mode > for pass-through devices > iommu/amd: Enable vAPIC interrupt remapping mode by default > svm: Introduces AVIC per-VM ID > svm: Introduce AMD IOMMU avic_ga_log_notifier > svm: Implements update_pi_irte hook to setup posted interrupt > > arch/x86/include/asm/kvm_host.h | 2 + > arch/x86/kvm/svm.c | 381 +++++++++++++++++++++++++++++- > drivers/iommu/amd_iommu.c | 501 +++++++++++++++++++++++++++++++++++----- > drivers/iommu/amd_iommu_init.c | 183 ++++++++++++++- > drivers/iommu/amd_iommu_proto.h | 1 + > drivers/iommu/amd_iommu_types.h | 151 ++++++++++++ > include/linux/amd-iommu.h | 42 +++- > 7 files changed, 1191 insertions(+), 70 deletions(-) >