From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755222AbcHSBUF (ORCPT ); Thu, 18 Aug 2016 21:20:05 -0400 Received: from mail-bl2nam02on0052.outbound.protection.outlook.com ([104.47.38.52]:6815 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754391AbcHSBUB (ORCPT ); Thu, 18 Aug 2016 21:20:01 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; From: Suravee Suthikulpanit To: , , , CC: , , , Suravee Suthikulpanit Subject: [PART2 PATCH v6 00/12] iommu/AMD: Introduce IOMMU AVIC support Date: Thu, 18 Aug 2016 14:42:32 -0500 Message-ID: <1471549364-6672-1-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [114.109.128.54] X-ClientProxiedBy: KL1PR0201CA0016.apcprd02.prod.outlook.com (10.167.53.154) To MWHPR12MB1453.namprd12.prod.outlook.com (10.172.55.22) X-MS-Office365-Filtering-Correlation-Id: ddd03a58-603e-4a6f-a389-08d3c79fe93c X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;2:em1jr6GTf5X/NSxufreFtLGa8mKmEuFITYIlGrePK0CsPR/XOs5eH1xh5yok+TWanfyAhnauMBHNwdeCv0Zjg7h+m7aIb2XyPCBLiZgvgQrYpSIVQfXwd0pkAnzq3oqal1FXhiii7h6IjIw7GLfAnBL+U9eilVeiNrpRHk/v6BTQBtBecnJ89oCm62wCNyvy;3:Ims22gcc3T5hskJfQXLCVQiJDPUTy+swjc0S2BCrY9Qy5YKwXwA6BVpr88EoVF+wNAhrwkm5ZcSKbfbc9+fxqDbgj/stU38pYiutCXrsA6J1J9UgisWtBPdbzp3P5zxc X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:MWHPR12MB1453; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;25:6Q9pUJLcyf03u5E0fdbo71bXat5lZbHqDN91NnFFpsNIZ1FHHVJXOpZ8sQiQ+OpfsamtDrFDMHItkzfpEOR5DW/vtqO3Ik3c/OcPXXMuSc/r6VbN8kIafcGsqwH27SlmvpcDgg3nsY4xnSNFmTCE/frCr9Tg6Z7xW3CGUGcDR1F9aOfuMA7l3osCzej61oXB7HZyEozlMlyNC6B1v/m8CynynELCjPEXxkrQVD6PKH/fanIV0kbM2yOb3jaUMcNDASmTPfCH0NPsZ78L6ehyZaSjnQEJL1R2lkL5E+UZI1PwrJpWWixdIoWYj0GXYnatEbeP0Im15MlSW22fQlA2bNbj8S6onlqj8whtXmtyIYqiq5bZg5J5E1WCy9PmfLV7KiMWqNDCk6NOESJADIuAq+PpYmd9eYdvAqZy5kO7IRymv9YVCbc+s8gsY0sLBXLE/NRMzbXfgpN0QSvdfByAQHtIJ/LpVI4sQYVXnNO+vNXB9hv28RRR3kufYFXacwylqxsUzknHEokNb9lDDwtLfMTIvRN8PlD7h5ECHZ3+fXmzntoH+ZlEDaI6eE8Pb2sU20iuGdTJwWcqBoGR2I5CP/gbkinkCKpvmU/GUly9FVxiliXaclzA8N0Ss+dJmKnXZyI4VMbYymPn25E4m0RG/XT9+yA2h6GkuRUitvn2WmcnaY8pldzq8jSJ4APz05ZolI+dkA7OdfFundLjSfofKGvNWsmbXnG96gfBP/ZBStN6f9wBTIgLBYqRV4MCS3fahAthZMvdYUPs7ttPXayOi8x1r+rtbhD8ucihsa+UUl4eDpoVZXvMLDiw8KmbbPADpmpx5LLakdCBhVeH6cNzXDvGjt5FADxDTKLsukltX1g= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;31:XjlrmXdT58wDYfG2mnithjGboy0QYdGAT/Y6/7LQk2eVyPyF1jBCIpQvf/87Df4zHhIyy0cSz9MXogk5pav6CkbOPNZU07WnMAKiI5ECxrRKoS0PejHgNElXdx6mB6WUPq0ptY3mC41nlJE7smlHCtQI2V5hRUfMzPjiU38BKNl2hYxbJiVovHv7sbByETQig1dtqOkYj2UVl5IfV1392z1cCnonxMAxjcrr2uDJI2o=;20:sEJbifFe6agbUFUetPEdOllBbwbzdimHIGty1DUlcDJ5iU7ldhQtO8K/qXJfdrsTOErXvwT7MVExQdOFidA6dWHiZJjirmf1roMIKmsnRViPfjFZ33l4a+w9byeFBKYWC3/tLZ+AYmNTfkbp7pG1rn1aaDI+4cMonSBhGEFhh8rMN3gzGsQK+ltLuqeDLqXTpxOLnro/feka5yYSyIS2+oHTh1nh2TfYtjsTaK7ksgcDhLccnwlU7BuUpFi//hU8i+G8HiGqpIQ4EKcOMdT5Qz1or3QpMXRcobFGgDENkf6B6x8Fj7866dIKFiRAbEOsqHlxcpZpI9RCHr7RtzKXnkvqrAf5mLalTTL69YsimK3qqUn1FiUwZ1RUQozKjRMaaZ4ejDEEoMEWq4sXL7BinMFjyQ3ZjeZx8gbct6Wx4g3+qZtRJyynOB2fjAKFFhpjas3tDpzn+6OBxuTa4R5HPqGnf/fA3yK4kRTaAHPUCkrdM23ZsnH265bbvhdQQLxD X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:MWHPR12MB1453;BCL:0;PCL:0;RULEID:;SRVR:MWHPR12MB1453; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;4:Yc47GVgAZqfDqRwREfCzoFy89GggXUJxtTxIg4fGVBewzCcDp3915HA/INB3RFM3tiUWuweUkwjsth23s2CCcnqvf2879/oBiLJVx7kMscDJWFjdQUFN80LRvc2su53T5tg61ExufDJ52e6SsziATwddyY8k8au3M/yvJTVdag97624DFouDn4eleInrvcwc0qwGxlkdEfD9qpkBo8O0WBI0I6l2Woa+nYkPc3vP7GQMEarTqLD/Kx+wfEbP+QAo5U/lM2q8KggJc9CEcQrVL/XsWha8RSFRslc2i7VV8x1EAfkIlnvnER8cZZcy9azvQ+1ubSs4VIDl1YgOXuk01P0lq/wkRV8C1471qbKMd9MRogzook4gPL5bZDPJtq6+RS0q0mJ8W07YffFSmUucp7j2Vm8KCQeKr/QcePrfmYpd6K3M9s9kC2o0pJwvB7s0fuiscZdUuK8vEISMtJCOI4QVvz6karbcqUWo4lfolH0= X-Forefront-PRVS: 0038DE95A2 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(189002)(199003)(86362001)(42186005)(50226002)(19580395003)(586003)(5820100001)(68736007)(92566002)(2870700001)(3846002)(6116002)(15395725005)(189998001)(105586002)(8676002)(81156014)(81166006)(15975445007)(47776003)(5001770100001)(97736004)(77096005)(50986999)(23676002)(19273905006)(50466002)(19300405004)(106356001)(36756003)(2201001)(305945005)(7846002)(7736002)(4326007)(2906002)(66066001)(229853001)(101416001)(217873001)(562404015)(563064011);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1453;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxNDUzOzIzOjFYb0k0MUhRNVNBendHY2ZrSzdLV21USXRx?= =?utf-8?B?TGo3YlQ4bTE1T3c1bDdUaUIxckxrVXpnN1JmVHlHVWR0RkltVzhzbFVENHdn?= =?utf-8?B?U0ZUUTZ4NWwrSndmRVFHUFZ0VFlSbEI5amk3ZHdFYmxsRlZYMTdFNG0zVmRS?= =?utf-8?B?bFZzZDdtZzNBL3BSTXRSYXJNdmdiaFdlWjRUZEVUWVN1RTNER2dOUkxDUFZ1?= =?utf-8?B?ZllRekhGNzNmTkYwNmhHRThORm9JbEZQSzBJZWV6ckdxTjFSNk9rdzJGcThq?= =?utf-8?B?T1FYcTY3b1k4bzZhQTc1Um0vUkphYkI2TnBZNDVSSzNxandYUFF6MmErZVFs?= =?utf-8?B?WGVZLzFySnYreWxnTjgyRzZEYWhNSFkwODd4c215SjdvSVpTdUhuNFl4U2Zi?= =?utf-8?B?UVRQNXU3SHU0TUpKaWY1algxTXZ2cndCNUN3UjZkbDJhZ2R2OVNHVkNqcUsr?= =?utf-8?B?cjR4Yy9LSkNtdUFTQko3eWlCM2FKUlFabWw2b01maHVHVmRaNnR2Q1hzZDFk?= =?utf-8?B?UmxBQytSbkxVRUh6TUJQbDNiQWNVbEFqRXowQmRBRGNBQ1lxNjNGSnR5N2tv?= =?utf-8?B?N0VWWERGbVNNamhhNWVsL2Y2QlRBbUM4ZTU5SmNBRzM4YVR6emMxODJSNE95?= =?utf-8?B?SGp2bWJ3VGQra2RUa1ZKbnFxRkFmdzc5NitiMjNZYUpnQmw2UzBJeVFpS1lk?= =?utf-8?B?c3pyUC9ITlJoZTY2SVZJMko4OC90VEZNNnpWdTRTcSttOE44bDl5WEt5QVAr?= =?utf-8?B?U3BRaWpBOFlKaVZ3cE9GMm85Z2ZXb3ZtdUdCK1NtaVUyeEdKa2E0L0FVTWlo?= =?utf-8?B?QytHK1ZBa1FGeWp4WXVtejhKamU2dm41c0hxbWxERDhnbmxybFFZUmVuZzBI?= =?utf-8?B?NXpKYnNSYmV3SGV2dTVDMGRxb3MxNFgzY1B4R0lCMEdEWXZLOSs0ZThwTzJs?= =?utf-8?B?UjZEYVNmZ25zSXB5a1hpODMwclVuOFpDbGkxZ2UzTHRzTWpMRHR5U1dCL25J?= =?utf-8?B?K012cXBucHlRUUQ1SmdjanBKS1ZOMFVNVFR3azh5bU4zeFNiWVB6NDBwS0RW?= =?utf-8?B?bU9wSDdCcEl4VUdGVzhTMVEzR2RRejlMQWtqc25nTXA0ODhKT1pJbERVZEpr?= =?utf-8?B?RzRvK3RIWUpTSzNCaWJ5SDl4Z1U3cm1tNHg5Vkh0VUFNSUMvMkE2dXRtQi8y?= =?utf-8?B?eXdWLytsMDZRQVBLVnFJVHZhdHRsTGFpb2ZvMEJ4cVpyYjAwbGdyZGJtZENU?= =?utf-8?B?cklINlZ5K2xPcE5yK2xneVFObW9RYS9lOXcxSmlvNE81eUVKR1NGTUdaamYx?= =?utf-8?B?UXRPTlFDOElCU1lNK3c2dEc0UXpoanFzZEpXbS8xUFFvRXpFRUF1akx3MmFx?= =?utf-8?B?UjJzOXNOMzRrK01zSHBiSDkwL295RWYrbVk3SnJBU05HNHBNbXJReE53S0Zk?= =?utf-8?B?dHlsYWlRRGlJUXVyTGVLOWxUNktKemFreW5NRVpKb1cwV01wb1JEbkJTeGRK?= =?utf-8?B?bUo4WFh4YnIxVnBBT0l6QlBBcURIb2lKMTE2WGQ2azdmWGhFdkk3aHFYRXQ3?= =?utf-8?B?WngzVlRNR3R2c1psRVd3L01rYXUveEJ3MGNWU09zcENsWVUvZ2ZlUkFmV0xo?= =?utf-8?Q?kudtrG9cDHzNcxX8DY4x?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;6:OGIKJuxO9SRx6JuHvzdyS/YJPMS0y96rWPcdwe2FjA1U9sRalrfHnOzWiMaTUxbNdwnBL+NRJMMjr7eAsVNEkR+iQIoND1DvXp2blCqF5v3iOnWFWd90OCWVo5JAPcVlZl47kFC1DYQfLkf/DlQ/gy/8yWMUfMxJEsJTMfxsAk9qJdw+/loBn5wecoXiyZ0NLTH8nRxLfkyYeHzFVRBPVYRg+Bfp/EwN4gVTla3WqgJV4AMadYjbfYbHg/HDYpmLIdyq7JwiR9PgJA0i4eL4K/rMuS5LZ3GToOHq6Ht9oxS5tfX7SNGmNMrYzGBz6bf6Q/H2oQEjYie5xZMQaD3ZCw==;5:/jwaj05ruKdGNbyA+f6Vv9ukdt3HfhV4g6H/UHeSWPWSKHwQuPRslsDZ0GzWXASTEdWafgb20PkcyjguS8XWYf9tKPa1XPgyAVqysUtXQzJF7H18Klcc5K85B9NWhGT72UemJJ9fr2z+v3ej1J7VNg==;24:yt4Zg0hsII3s4Beym+R5XTBMbHY+hm5S2U+UNHf+fazC6eyKO5pxTX72n+9UZJPrBgoApx+ZuUHf/bX+XdJd9rasy6mMgO3bvDyY3V79WNc=;7:y0T4DzOLczZy8KcPzGVBuon/qoAFnS6/ZYPyln0yZjBIXkcVan6hYh6z4QSzhr/SI6b3v9ZgiHvvLtaLUqncn8uHvwsx21NybmmYLLtZxIGUqy9LjDl5NmNjX2xk7mMQ30Optdkool3JsTnTgft7YFNwnSqOLtEQmOoIJF83VhLHUt47q1rsNifVajYx2fBDoDvwKl5exCRSjjuRO8IgO8M6Aq8Up03QgA7/pSUxtflXeOP39M8XF8ayjCOSJzP6 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1453;20:7i+0OAaNMWx7mfU0Yr6FZBVfVW3wqF7k2KTJfP0X7SsfBsb3Z4Cx5kn35yf19mk5AALFPE50ft9FGpnY3QNM3aEv4GTH5/EpgxW67JBiS5vFykWOVjKTdoFV+IPYe0/+4CFSDlNbBPOPL9sgcFxbEL5giGAAyLKO32nuBDE97FWjaAR/Lb7huEJERLkk3/gZHD8dXNTdjcDBnzPxQtRw5V7/QAbgaCY+nzxLO9uuoosBr6SgaOWg5scRZtJ6eOjU X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2016 19:43:18.7200 (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 CHANGES FROM V5 =============== Per Joerg: * Add documentation for amd_iommu_intr parameter. * Clean up early_amd_iommu_init() . * Do not update the tail pointer while processing ga_log. to avoid potential soft-lockup. Per Radim: * Fix vm_id logic. * Refactor avic_set_running(). * Use per-vcpu list of struct amd_ir_data instead of struct amd_iommu_pi_data. This result in changes in svm_update_pi_irte(). Misc: * Clean up amd_iommu_update_ga() * Other minor clean ups. GITHUB ====== Latest git tree can be found at: http://github.com/ssuthiku/linux.git avic_part2_v6 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 Documentation/kernel-parameters.txt | 9 + arch/x86/include/asm/kvm_host.h | 2 + arch/x86/kvm/svm.c | 371 +++++++++++++++++++++++++-- drivers/iommu/amd_iommu.c | 487 +++++++++++++++++++++++++++++++----- drivers/iommu/amd_iommu_init.c | 181 +++++++++++++- drivers/iommu/amd_iommu_proto.h | 1 + drivers/iommu/amd_iommu_types.h | 136 ++++++++++ include/linux/amd-iommu.h | 56 ++++- 8 files changed, 1154 insertions(+), 89 deletions(-) -- 1.9.1