From patchwork Tue Sep 11 16:49:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10595975 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 220EB13B8 for ; Tue, 11 Sep 2018 17:09:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 094CA29ACD for ; Tue, 11 Sep 2018 17:09:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F1B8229AD7; Tue, 11 Sep 2018 17:09:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4CD8729AD3 for ; Tue, 11 Sep 2018 17:09:48 +0000 (UTC) Received: from localhost ([::1]:58691 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzmAd-0005xF-G3 for patchwork-qemu-devel@patchwork.kernel.org; Tue, 11 Sep 2018 13:09:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55141) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzm6z-0000E3-HN for qemu-devel@nongnu.org; Tue, 11 Sep 2018 13:06:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fzlre-0002gX-0Q for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:14 -0400 Received: from mail-eopbgr730079.outbound.protection.outlook.com ([40.107.73.79]:55072 helo=NAM05-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fzlrd-0002dH-Q8 for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RQCMmuqVx3NbpG61XIWlgmEriZfpWbyMpfIlvjvSRMw=; b=3GGdkUIFwkveAXrQYnyL2U4/w6yl9E+Q5pgJe8pKpwRU+C5Xu8WXXIpJljUA1bTrJax9YvNmMAE6krwJedPU5GjiIA5YHOcpwAp/tHG7m4+PJGX1gPg83J25C3O+El9ZtrY/noYQSQBh5Q7pp38n4eutx48zZK6Dvtg4IpVjpe8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from sbrijesh-desktop.amd.com (165.204.77.1) by SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.16; Tue, 11 Sep 2018 16:50:05 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Tue, 11 Sep 2018 11:49:44 -0500 Message-Id: <1536684589-11718-2-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> References: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0065.namprd12.prod.outlook.com (2603:10b6:802:20::36) To SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d67504ff-549c-4632-a5d2-08d61806a05e X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:SN6PR12MB2688; X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 3:oQgQxx4fOWl6SDH+UrVo2TrNwvymMNTEqCPQyQgl57S2Rw4ZMQniMlDsGlf4fLYk5MTm2ZErVKSZOJBHVHOKiNL0siM79TEXR2SHaCqws6/dIPvS9IRVw4m/SLVlePndKg1/urFO0Q9FWxS9uY9l4Dehz9K4A4Vyc9QyLHkWLygt0YXJTI4iGRr6oxSeuG2M0w/i9tIFDmR629p6Ifa0/GsgaTEOn+ZGUyqf4+qacYvw9ron5vCFSoBHwL7aiSQj; 25:ThadWgbYNMRt0lmqCYywRhHdZxJW27gD//2C7EXjebXzBwvv3UNbsv5B0zCRgSIzgirPPPSYe/MrazSmkh/ypStL5l9Gd7MYnRUpM3evhaEbGyP7SBVuifbJyLDqSdxere00WKE009/7g6irmgAWmyLtZpgDOGJLnSw8A1fMqf9lauqL1vYo1bT9gJfW+wpWLfoFmAKZQwX7SBsPyHrKP5bzTaKOHqoHEKo7FqWgBZfXaenU4TK6r4yuVxCibLv9OH74w/DD+vTWFApyhWBA35RG3SzfQWKOMRMcuO2iwL9jZpTY4XOm8hghuzV9L8jb0gOBTYL/b2DiSZIvGLa6WA==; 31:EApXQ6yGI7KKzZ7PZ1igrujmsTLoj40r3zdthzn2tAIoBS8KJvVSCVdWxhTy6sc+xZbBRfkaks28vMiGp3WI6oW9Mv59yasJdHnvqUr4qKlUQASOn78DzK5tqaBs60e/szOyLrME348iTax2EUDAiHvjeU1O0lt2UYtp2L1qPuIhedIfysojksgfA4wvuQySANwcIXkvsxK+mKm8ayXT7C/jiD35yAQBFHK0NXvD+7Y= X-MS-TrafficTypeDiagnostic: SN6PR12MB2688: X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:KlU1g63eLI/wD9FhGMnDRfbb/wqAkyhzFvtWMuJ3U/wYQTtI3d8ermmOD9/Euq0jO0itDhHZj996u1bWSapxOzUkCM8hS9Fh16k5j4ko5aJQaqnArgb1YXmMO9EJMlg9QMa/LHL9ItUB4KWaCzCjjqagRL5GUYu4g/Rh5qXirvRhSpMIH5c5wJeVhtix4UjFLX20uckj90kmjCkg9Ydxjcq/UaAW6tubtc1+jk5+l/trwwqsEq123hF0wpLYWygH/+eJeRX+tTmz+PQNyyicr7RDRPYkQDnmK+x2671vuu626JpFKLDhwLON7N0fbZYqZ1JjEh5TOERZC7e/CfOx2fZ2MnE4u7n47LXjyOGl/BKMWslIUW1uAVgX6XL0CrbApmechA/kKqnYuN8Q9Bpvl6a4AN5LtH7Da8MNb320hl76bQIwbSreoZhEPGy/qj1sOGUGojYFmfHfkUtgKTF4q4+yzO9xI4SHhWgdXI4xcJEqHsa+SVpMjG7DBL8Jk4rh; 4:53e4EhUh7uoTHy6vJJfgdWDRYu3znyM3naAkIe4DQ7nDAq6ti52rND33GSjaX8giKJ5ukZS4qgfWv2Kh5aKl2ezR22hNoa+Ag4NVLzRkr4A+NcsWo5Q8YcI/skNyqqJ0lIVXEMJWVUkoqusc99GIj0qMNaGuiOQ89xXq2d9xgP8CPUjNlcocrrtgxL0XIu5aapLeUE36ee14GGVKr/ahCauvQIGat5R/jNqMIbBjrSUkuFMP++YBLuPxNxIzrxdGjYvAPur5GQG+rqZTOvIrEDLEmJeM9NRtnARV7jSbkWPCAegdhfL94OHnbUdDQfmsLPFbBy/TvbLeSzxH8+/hMlY8YuFMAgTDyfUtRhoy990= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(10201501046)(3002001)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699050); SRVR:SN6PR12MB2688; BCL:0; PCL:0; RULEID:; SRVR:SN6PR12MB2688; X-Forefront-PRVS: 0792DBEAD0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(376002)(39860400002)(396003)(189003)(199004)(2616005)(386003)(3846002)(97736004)(7736002)(48376002)(11346002)(316002)(305945005)(53416004)(6116002)(50466002)(476003)(2351001)(478600001)(486006)(39060400002)(956004)(7696005)(76176011)(4326008)(51416003)(6666003)(36756003)(6486002)(6916009)(106356001)(8676002)(68736007)(186003)(44832011)(2361001)(105586002)(52116002)(5660300001)(25786009)(81166006)(81156014)(2906002)(446003)(53936002)(47776003)(66066001)(54906003)(26005)(50226002)(8936002)(16586007)(16526019)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR12MB2688; H:sbrijesh-desktop.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR12MB2688; 23:iQWY15mdkH4p57RoQlVmMvllfX5vElpzl/13JpeSu?= GyGqdojnXhWfpCuxA9QWqW+FdonvvYqhX7GU7dnpJhT8t7kTkUVI10exQdrz7F1GvGL9COGDp6xaOuxxXsliT1AvCJcPoh/NHFVJbkL0gXEtM+umGDQPpmsRzR3TfgjbDqa0vylkJcbw5O23xTg9oOA0Kxis4kBaEF0228BZ8+Re94/BpOSaOP/0H9vfpcKpa7eD7AzVLpIMaIR7lDp0h9ExMZkquVmJUHU5S3HWAGUZJa8n/Ib51md3OhMK9cOghdB2eMxMeV3DxoIGesjD7zWWiWVG9439KVbXve9ZJxu+2Z+eigXMvYtolcIG1Ejd77KUS7/SrCM0Dvj4RphWIZD11NfI33DgbSnsbFF12493LF1IhCca/hJBy+fxS+CUYZ8HaW0zc4mqw5zfrR8HzdX4xZe2nMQomCvox70oSVVur39lCpmL6xo2NrmGuOaJnnwdzqhkbyL7U/u5SQXyAvtMm44qxSp+HXpWgbqp6V/bvq85PBVt8KcJMAn3S/KOQ/HewYotwr41By78oUGG7EMc01SxQB1t3V8ysF5+WWHXeZ8VfWEymD1JUT2yIisdduDz7fSpF/GXlZ/zaOdgkKMgDoOSnoIBOWWqevmx/h83XLM3YBsZWJSJpOgsyG4O5fceUOCF9+niSo3S7g8Z0v5ax8XD3OhM4r+PhUQigbVJ0aK4sC0TVL4MsOu/Pd7IXK9ygGabNc08BIJM5AiA75M7FzBOBeMKxn6vJQPj8cy1IoA9y9UAm+C9aKbHhdu3lLIRJq4IeZI24hYVwbZg7+J+KgLvSgo+Z/YI2Nni9YcA7S8Tzkzs0LLdM/sbTe9r7BWx2B+4nZM0Wh5pfJL74LKN8nm5QzxCbbOtZHq+NJMApak8/Oy8RRU2itIw6XVV6u3Tj/tIBRPD9aaJRZh0mbEoiBSpSuuOrYf0z+gjVPWaVpPeUvkrIIkqwYnO96HZS2K7EuXS0ecVOt0vM1SH8vBhdQ331ksaHb1JI6uoOQng51F1CDONdBlmbqyf5FzsfpKmPKqmuWpCNzEUfqUegM4x7Nb2qf6yVdKEzCyN4/o231T9LM141o5mLMTp8k/kJsLd1lYZAS0IXKtS3ibwhwEXNkp2mf6i22l0mqiG95jySH47TudtrNvLCI2smP54SWXdumzDebnE3DjbDfK4gVnTiuYDeGaePsMvxk/GVbMxyxLyEMM1+XU3LAgM8x+EPj8SUg1LZCnA4rK5zvesb5U X-Microsoft-Antispam-Message-Info: xeSzRMCCZXrAZlQ2lhnunPvn/Wfn07KRa4pCYGcwYBlUKD3FSa7oIumI+QiEk8wD4SpWfYdpIpwCakL7/xuNm3IELtaFewXHCn4v+sIjMak06o1ALrknWKuDkmMoBAXNimEJ0aol9tOiGVNlHlyCLXga8Y+8DB2ktBDk+iU+i0ip9G/vt4u1Wupee9sytjbET0xZVkbJSxv6g2hb07sKPUQqnGrS2Qoh8GBDZo41MG7YJRpEBQUnl/BpVt3XFM5P3WGblmqD5p2WqCC/NzNx9y8NnMtliPt37meJQCaWmGQCfs0e+d97vY5UvO4qxEX0dZNJkfDFfkFqxVWE+zeZHJVKDfxmgm+uwB9Lshy3Hmg= X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 6:YnrNmJKBQI8cR3cm/Nq7M9VXeWh8qume3N8wGqki5MwDudPkG2+a1c4xA1LrOcuuZNFRWNb5mkTH78ldl7EO5PUiJr0V9pdv0+cUPyq2eGZKUbeooW63TNU8LS+CjtNy4ST8zguXAiB85QVAzarvLWL0x8VGnKnNzIfNz+hlZUWywQbIW7rAkzbVIK7Vvo3c7ZEXodrs2cdb8t1kP+QktU+6pHa3Kc3oEcoNviRIy2QxCvlkLfIRz9/LkuPgU0UsM+Nc+uPh6AoC6PcI3YgGZhOzqfiw4VPdNP2huYIm5babNegtISm/a4A1mE7b+whXThOe92VMXVeiYCQ+9xeB221pI0n5USoA/fbjQnO+dbn+/y2p0IBHHwliqfNZujLJqnfUi+95/5FM7Ayg8PuXY6t7tXrPFFvTxqWMFO/xld806tBy4jz1s/BbAFeHg3hFlDDLDUc5FlZWDS0+vj0reg==; 5:N0O01RpAKWpXuOcvPgt4kgWPcg/bfaLq+3W+AMdUe8LYFBwEjHMJd/btI2dMDXaV71j89xBDhO+f/1NUOoA/eIHvvqitAr0kaaVf6uIlXA9JFvR/p9dI0Tje6vW2o2hMMY42DpeJ1kytZ0vyFc8UYsYUeJ13UtMuNFZQa+8ZO5Q=; 7:JYTqx5ymjmxyEnHwIMKCJDSWziUbznvxdHIn648Cu8EiKP9oM8VFlmUNHBAVI4oLGvzspDVH8tv+LI/3llivfU1NUYnxsdBm8AXXqqyYF+LP2RonGWn6BlRTFKdlqso9Nzq7NuvhHh1/V7PoNlOheBeQy2c3ZHh4SvFkydB5duyGN0fW2TaqsRupXE5NkaB2/zHn/KcZD0uB0Skpl/33oNGSdxC7AOtx9LevzyoqzI1WrxnJbCGvX5RRABYB2tnx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:remfyrKwmZKiLAcdRjjcqfb0HoyuQo6yfWmvoemKueMX9dH6vFK6DQzmAlAHZZgPQz7zOTu5nhTL4YhEMH4InvTEMeS52dHxv0VG6OTNbj3uzEnHXlU7swY9UCOfxRXhQ9Sj4ufYrj+DtC4EqEoZLhZqb3ThkgCr7OAc+yl5MkEl3P+cEdj6pdFU7UKfBIVAZaDVRXTpCnU0gnlhwr5HyjYhuzqOzJy3itrIi1/PaQ1iN+zFEUG67CikqN64aGEF X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2018 16:50:05.0856 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d67504ff-549c-4632-a5d2-08d61806a05e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2688 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.73.79 Subject: [Qemu-devel] [PATCH 1/6] x86_iommu: move the kernel-irqchip check in common code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Lendacky , Brijesh Singh , Eduardo Habkost , "Michael S. Tsirkin" , Paolo Bonzini , Suravee Suthikulpanit , Richard Henderson Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Interrupt remapping needs kernel-irqchip={off|split} on both Intel and AMD platforms. Move the check in common place. Cc: "Michael S. Tsirkin" Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Tom Lendacky Cc: Suravee Suthikulpanit Signed-off-by: Brijesh Singh Reviewed-by: Peter Xu --- hw/i386/intel_iommu.c | 7 ------- hw/i386/x86-iommu.c | 9 +++++++++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 3dfada1..84dbc20 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3248,13 +3248,6 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp) { X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(s); - /* Currently Intel IOMMU IR only support "kernel-irqchip={off|split}" */ - if (x86_iommu->intr_supported && kvm_irqchip_in_kernel() && - !kvm_irqchip_is_split()) { - error_setg(errp, "Intel Interrupt Remapping cannot work with " - "kernel-irqchip=on, please use 'split|off'."); - return false; - } if (s->intr_eim == ON_OFF_AUTO_ON && !x86_iommu->intr_supported) { error_setg(errp, "eim=on cannot be selected without intremap=on"); return false; diff --git a/hw/i386/x86-iommu.c b/hw/i386/x86-iommu.c index 8a01a2d..7440cb8 100644 --- a/hw/i386/x86-iommu.c +++ b/hw/i386/x86-iommu.c @@ -25,6 +25,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "trace.h" +#include "sysemu/kvm.h" void x86_iommu_iec_register_notifier(X86IOMMUState *iommu, iec_notify_fn fn, void *data) @@ -94,6 +95,14 @@ static void x86_iommu_realize(DeviceState *dev, Error **errp) return; } + /* Both Intel and AMD IOMMU IR only support "kernel-irqchip={off|split}" */ + if (x86_iommu->intr_supported && kvm_irqchip_in_kernel() && + !kvm_irqchip_is_split()) { + error_setg(errp, "Interrupt Remapping cannot work with " + "kernel-irqchip=on, please use 'split|off'."); + return; + } + if (x86_class->realize) { x86_class->realize(dev, errp); } From patchwork Tue Sep 11 16:49:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10595977 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3167814E5 for ; Tue, 11 Sep 2018 17:10:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 162E529B04 for ; Tue, 11 Sep 2018 17:10:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0002729AFC; Tue, 11 Sep 2018 17:10:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 3C4EF29AFC for ; Tue, 11 Sep 2018 17:10:33 +0000 (UTC) Received: from localhost ([::1]:58697 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzmBM-0006WO-Ea for patchwork-qemu-devel@patchwork.kernel.org; Tue, 11 Sep 2018 13:10:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54284) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzm6z-00082a-KL for qemu-devel@nongnu.org; Tue, 11 Sep 2018 13:06:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fzlre-0002gx-CC for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:14 -0400 Received: from mail-eopbgr730079.outbound.protection.outlook.com ([40.107.73.79]:55072 helo=NAM05-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fzlre-0002dH-4Z for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=50qXypgL3rGj2RiJOsCX04vAmFFKUogb/ljqA0HZGs0=; b=ElRMw46X1/aJ6kbuj6Z1TDq1zxOlpYdN9lH4TQWGULP3ePFyIA184azBwYV+3uI3CyQ236H2TX1lnasMfl8n/u0XAu85C/H0cQ1xpkqngSaZks2fxMYdN2vP14y2zuLKJjjZ3Me2547gKs4+wWkfESODBiQkD2AAhsKM4TKn9i0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from sbrijesh-desktop.amd.com (165.204.77.1) by SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.16; Tue, 11 Sep 2018 16:50:06 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Tue, 11 Sep 2018 11:49:45 -0500 Message-Id: <1536684589-11718-3-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> References: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0065.namprd12.prod.outlook.com (2603:10b6:802:20::36) To SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 31fb46f5-8bfd-4a37-6b8e-08d61806a134 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:SN6PR12MB2688; X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 3:HEcI9jTIvK3+UjY3N8G0nmRN+zr9DdzEhGklDJpyXbvls4nBK3QU9IJO8CQSJ09+Ii30QXO8APyslq86CnzJO9HsPmyuPI8lBRZ0glfwmaCZjpiU7j1JNJjUDvji1dtlMoeTI+Xy3Yu2OTDz4pexVFFjv4HeI5iGoqbYpRANQu7CM+nE9VqFuPUWDnl9oSMO2pvpmrDg8bcEM4QZLb6++Z8hZscCOO1dOK/KTbjX7rbTwMQunMPDkh4H2SIFvn5t; 25:m/vep6DL8YfhJElE8+LR/LD4ZQ/W99FHXA9I9ju8bwQ5j6ZvxMx0drbAMA1lul0vw15MNJw/Ff6HiYBk5vb7Vz2oyN0mE2xcXhFFCeTprF4M/ydNXPbNkb4unwdwsMTXvb+jPLEWxzFFgIuJR5YMMM38iTgdMfgcDJfwT+GqEWhocBKbhgf7PqvcbisaypBZep6V2AE6AQbNX8DiyRCzg0FNnGcpGG4U9ttvkrt41AB3g+9H++fAEM39NutnfyKdY0DgMwESy0DxPpkIhKfvat15a/NxWfnxc/qA2UU1oob7L/3OepVB/6VoEuq+AX3IjNFUzNbw44ph6Krz98rmNg==; 31:vkQM60lcInTa3uA3+UTqZhDbeOFkftwZIBrM2pGqeykxgW4VJ8+RTHIHmwEAMuLtHeiEqXuHqWPSgEOJj1SHL7Z72dwUqysiFD1NEuE/Fese7J/z1BQGdq+JM89u5CSvSBiGtKC0iVi40SLgliFUA8MEqh7kK8Gmzw+3NkR/T2Prn7VUStgmejxdsSsaVusadhIESLmkm2jzNMSQPAIvEtB+m0N1M7fRRjBf5DnJbhI= X-MS-TrafficTypeDiagnostic: SN6PR12MB2688: X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:A3Gu+FljQDB2lnirNeeAEFWwvFlABCHhiN4CBuPl2HdC14XSo5ydjK4LHaPhVpL7w71phqgXFzmhJ6052bHF17DGpXi1/ui1a8jUnt3IS7O6kufE8XCyZvv41p+Tnru87UfCxWEp9clgp7HFMDKTHRPViYajAXnlXagR+z2itWGwZDygCaXn5QeqyOk9MLOu8msUHL1iPdX4Mf2QYbVQ+szmOpy221ATKmdNofTr9CLZTIlI90rCFjFMuRwdGjUA65WzW8fwdLpkoiFcW2P4fBLLdfWhWhQksXJ7N88Fxi4KGwNQANw05zdl5flK3s9jn3NkjJvER+39TqKOG9cxo5IceOgfjcK8hNIoGG3WoAg1mS+9pL90GwT47JFOMZS5L0gwKBmezxXpefkdwTF2jOS++E99jk7CpkaaDTxJ6lJGuv5qgCVaUjuhNrU6zWwG+1rWcgihY6HtoERGmjMNdJulTyJp+UedxU2/TdfpccrIer++4MPxdBwef/NcJZK7; 4:02e6U5/SjXo7UgpwEH/713/KuAohrQy36rTswhIkSkOZgDcRahyudBf92b99CsfffDYbsQEXM5af0Vsmkmtfgs7KeLI2XPYR7S0jdKKSkuZiH1ombiN8tVly//hfcNjDOLOLL5R0cGmOpYGtkIBBas0dur+whXv8TBy/KaTx+YvhDe/3Ow4LJ5Mp/2MID92/J7NPOIEIkc4AkHHx1eAqEXmqJRw8vDsED2rMOJayjEENTgjfgBQBG9GGyqER31vaECbzzkaI286nD7970V+qhFR3NBPkLgY/bx5L7BUuZfLDTRPxYC/M73eOk34g1ykdB8lI6YtTkyRD5c6IajfaGGHJEIgillzG86Amzp904Ow= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(10201501046)(3002001)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699050); SRVR:SN6PR12MB2688; BCL:0; PCL:0; RULEID:; SRVR:SN6PR12MB2688; X-Forefront-PRVS: 0792DBEAD0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(376002)(39860400002)(396003)(189003)(199004)(2616005)(386003)(3846002)(97736004)(7736002)(48376002)(11346002)(316002)(305945005)(53416004)(6116002)(50466002)(476003)(2351001)(478600001)(486006)(39060400002)(956004)(7696005)(76176011)(4326008)(51416003)(6666003)(36756003)(6486002)(6916009)(106356001)(8676002)(68736007)(186003)(44832011)(2361001)(105586002)(52116002)(5660300001)(25786009)(81166006)(81156014)(2906002)(446003)(53936002)(47776003)(66066001)(54906003)(26005)(50226002)(8936002)(16586007)(14444005)(16526019)(575784001)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR12MB2688; H:sbrijesh-desktop.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR12MB2688; 23:D47OQpyHL4mezXPPE0z9BTn8dw3aeAVhjLe32WxPe?= 3+0XEBsZf4U+dU81YqjreGlok1t/9a93IqA8rTMdEPJK+/z8CZsJvxWcPnKux1v3CnpQtlCpPM5vFxQdAn/ZGx3tfw7XEyYnyot/rMF+UU3+5bt8RwtegNJrgtzJb88dRoGt/CIbYED4aPptg8pvqczvmMEfHAfZspWu2fEefSS/o9etfzNNitkrKaonc/FJ8z6ml9pAPsdSGdTTKnCIaGcHvRI4EC5Ja93MmSQTiBIXlGndwa13s212z0ibSrBd1aB4+29f12AKKlddHafhhJtj/Vn0U32rOMJX/R7m2lDZMEdxrJxVDq42Itd424fHaWl9BS9G/Gj5lo0V0THpbSANuhrzoBE8jRtmarIHJ5zcFWB+Y7stYlcNhfwW/Rqe415I/dUR0LGrxaDgLUyFUW0daBq73J9TmL0YXUmBmYS+9J/XffK6u4w8uj5wqPoNo3wltwXUE2RnbLINeiHurKvPzy+c8ilrzH2StlLb0LItYiM3Bz2gOWfrFO2DT7mSU77JA/yFEG4TL9c4q4ls7mpnb9H1KwazQoQWlcDugK6NHeoXhvFqI1OfT6289+MXoF7i+uM2jzOE6eU/gdtj91+X6fZKBSTfrDWsVhMnWBwhtDpPQIhnffvenVJ7lnq0UKtr+muxWBUzPsRpXdJ+P0Fv8ndBp9B/AO1xhUUTJZqUT5/GafKRLZicVQa5oOtXDfKsQGKLFYhEL8XG/r0koU7/xL6d6kpWTJ1u+EilqWtdQzORjjI5tcT/RNhsdKxKYqe6r64jiKXgn2xA8E0X/7RV54M5+JV3ygWV9NzmsG1WihZNGkjNTWubnTSwQ7DdLSUPAxGD4FPT7WI3XStXrJEp2zQ+/3pdHLUfJ0AaZJWTWMxDydUoPd5m3G66PBF4XtiNHLInxnH67JhIAApTC3HIdrjq+cVkSULPUI+3TtTWQEEx5BxDNhoJFUUNrrrsy/++AQkSV7eIg4zsHPNGTKI/dccaQa1XlGThEemu9dKJMj7MbDRnWT41HrM6VWS6IDnzICm4bgLJMLqD0O6oUYoR+H9WuwPM1u+z9n4sC4pBMWVS/i17M242RZOQ9a7dZe2SRjr1vo+kL/vCLzQIAISA38uSOut1Ay6a9/pRkZSWIOLUKUnUKKpa6YyIhDu025ArphB+eVdMf5NxzzQW65LR8c/I/oxB5jj7WgD/fqltdw6IasaZsSKqDn6eXTJW8hF8YIlFBJkG7q8Dzv/sRLT2L3iB51L/aa909LEtmuxHwDun59DzzCiUJRugK18hvA= X-Microsoft-Antispam-Message-Info: UFwra1AkTdyc6g1VeI3gbOvKUjvCD7CbhYTGUkYGbbvf+G+at5OqxXzsH+7l6vHcdbCC1FNcGQLx86Niw4U2p46tKN0r4YFPoOGOBEEolst30hGcKUXmswaUbJnHTOREn11fdcAIHcUPW5j+efal6EJByEIs0HHfJcLk2AbavVFpfR897F39WL+18zq8Kji4nnq9cMCcmbGqtMC+KTRXuPJNC7ftBOr8KY4cA/LBX73Y90rnDYQlZjywct3fQ4HFrwBNiygZf7Iupbd/vwJkqajAoL6pZDHJySOK3CF8YIGQbt5L3pKB3NRsVNtXJLcupAfPC774L4e21dusLv4JtxxHX3z2jBvuOpce1ec4Rss= X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 6:FthEAmqfR6wpmHJsFZMgWwKU47eQQ/M2zesN1QrRv6WUgr1U8e+uZ/oPJdE2SQQvQwwSjyfL0Wi5gJ/K4ugbkYY4mFlmaStBhXCSkEIWvI5JH7T4AHVwO+K7g/Ol3Fuio+9OzKxjvbFGx+/dlwRY7T4M7dks5QHXg9QpFH7GaVcHhav1i/V66i+lZmZRYJgJhTOYdb1mWXsIp0xH/4GcmDbdcC+fyq1GVsyIDxh8XRvbiVJCYq6P9CwajcxvcFeOcRB7mOUJRXGT9oIobAEp6q5Qe2dB/tKXgZ64BNnEUI1j1NlLT0SVGnIFJxHP3RSoGte3f2/m/DinwBrBNhqR8fThwRO4V1/2WhGy72B4Jq9j6YrDSDN32Mw2yhaoUJJr1lZ3aARWE78WNZu3jWhI9xZb4ksOX2MnaaL9q9OMCyHjYoovRjP2gRe+keML+dDBgicJQhTnHv4xuLBh0HiNmw==; 5:i2EUXCdA0s6sgAPkDohNKJNFjaD3ffJz8YlXWPJNoF4CvXDPs6gtrvOOyISTU2I4Xsrm/+C3iKwKOuJuiSJSf6kJ+8yN6GgTQTCILmZNDwrtG5Fa+e8fe/2N09m+pcPaFEIG/002tLIi6Bv4xO1I1bhnqk2/wD1atSYa9qHS1EM=; 7:ynk1eqOuvJNSZvgZnbCT+TgCCLQFlg/iJiYDDE2I2GrA4pTFfGwVzErW68E3hvEA3TayK2Nz9T17GXV56u2kn3vFxJ6C/uDCDYBsqX1klyonChBhP1s3ldxM/A6oyezimGdBJl6MJ8UdXnkzd7ioeOsQiz0ZvXpu1q87/0urV3r+yA25cwgYqjdNT6W1eKJM8ck3n4b3yMA00YMoDs931MRppiyxKym6SE/raXqaCZcM2YgHD2PpvDppmdAq8bjo SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:4fOE+m5dizb3FOcJQ2g8Jj5bNsZ7gaSn/7COqEdRwq4Vw8cbi0gTZs8kGp+PS84vT0rY/111t/FiMp58Z/uU0g028xAHxwtVAqZIpvW3jpnzi5FBqj1e2InTs+tWgMLNBcIH0uH+VVUkQO5RcB2C5LEuNyFBX+uB/nMFn7fOxBt6x4OyXGm+N9Hyp78U1hUYAr2EjwexCacqilyz0JD3c7id7yGikMRArTbHhu/T/KGmnaCrWUNarixWPbdTOLL2 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2018 16:50:06.3354 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 31fb46f5-8bfd-4a37-6b8e-08d61806a134 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2688 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.73.79 Subject: [Qemu-devel] [PATCH 2/6] x86_iommu/amd: Prepare for interrupt remap support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Lendacky , Brijesh Singh , Eduardo Habkost , "Michael S. Tsirkin" , Paolo Bonzini , Suravee Suthikulpanit , Richard Henderson Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Register the interrupt remapping callback and read/write ops for the amd-iommu-ir memory region. Cc: "Michael S. Tsirkin" Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Tom Lendacky Cc: Suravee Suthikulpanit Signed-off-by: Brijesh Singh --- hw/i386/amd_iommu.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++ hw/i386/amd_iommu.h | 17 +++++++- hw/i386/trace-events | 5 +++ 3 files changed, 127 insertions(+), 2 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 1fd669f..572ba0a 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -26,6 +26,7 @@ #include "amd_iommu.h" #include "qapi/error.h" #include "qemu/error-report.h" +#include "hw/i386/apic_internal.h" #include "trace.h" /* used AMD-Vi MMIO registers */ @@ -1026,6 +1027,101 @@ static IOMMUTLBEntry amdvi_translate(IOMMUMemoryRegion *iommu, hwaddr addr, return ret; } +/* Interrupt remapping for MSI/MSI-X entry */ +static int amdvi_int_remap_msi(AMDVIState *iommu, + MSIMessage *origin, + MSIMessage *translated, + uint16_t sid) +{ + int ret; + + assert(origin && translated); + + trace_amdvi_ir_remap_msi_req(origin->address, origin->data, sid); + + if (!iommu || !iommu->intr_enabled) { + memcpy(translated, origin, sizeof(*origin)); + goto out; + } + + if (origin->address & AMDVI_MSI_ADDR_HI_MASK) { + trace_amdvi_err("MSI address high 32 bits non-zero when " + "Interrupt Remapping enabled."); + return -AMDVI_IR_ERR; + } + + if ((origin->address & AMDVI_MSI_ADDR_LO_MASK) != APIC_DEFAULT_ADDRESS) { + trace_amdvi_err("MSI is not from IOAPIC."); + return -AMDVI_IR_ERR; + } + +out: + trace_amdvi_ir_remap_msi(origin->address, origin->data, + translated->address, translated->data); + return 0; +} + +static int amdvi_int_remap(X86IOMMUState *iommu, + MSIMessage *origin, + MSIMessage *translated, + uint16_t sid) +{ + return amdvi_int_remap_msi(AMD_IOMMU_DEVICE(iommu), origin, + translated, sid); +} + +static MemTxResult amdvi_mem_ir_write(void *opaque, hwaddr addr, + uint64_t value, unsigned size, + MemTxAttrs attrs) +{ + int ret; + MSIMessage from = { 0, 0 }, to = { 0, 0 }; + uint16_t sid = AMDVI_SB_IOAPIC_ID; + + from.address = (uint64_t) addr + AMDVI_INT_ADDR_FIRST; + from.data = (uint32_t) value; + + trace_amdvi_mem_ir_write_req(addr, value, size); + + if (!attrs.unspecified) { + /* We have explicit Source ID */ + sid = attrs.requester_id; + } + + ret = amdvi_int_remap_msi(opaque, &from, &to, sid); + if (ret < 0) { + /* TODO: report error */ + /* Drop the interrupt */ + return MEMTX_ERROR; + } + + apic_get_class()->send_msi(&to); + + trace_amdvi_mem_ir_write(to.address, to.data); + return MEMTX_OK; +} + +static MemTxResult amdvi_mem_ir_read(void *opaque, hwaddr addr, + uint64_t *data, unsigned size, + MemTxAttrs attrs) +{ + return MEMTX_OK; +} + +static const MemoryRegionOps amdvi_ir_ops = { + .read_with_attrs = amdvi_mem_ir_read, + .write_with_attrs = amdvi_mem_ir_write, + .endianness = DEVICE_LITTLE_ENDIAN, + .impl = { + .min_access_size = 4, + .max_access_size = 4, + }, + .valid = { + .min_access_size = 4, + .max_access_size = 4, + } +}; + static AddressSpace *amdvi_host_dma_iommu(PCIBus *bus, void *opaque, int devfn) { AMDVIState *s = opaque; @@ -1055,6 +1151,12 @@ static AddressSpace *amdvi_host_dma_iommu(PCIBus *bus, void *opaque, int devfn) address_space_init(&iommu_as[devfn]->as, MEMORY_REGION(&iommu_as[devfn]->iommu), "amd-iommu"); + memory_region_init_io(&iommu_as[devfn]->iommu_ir, OBJECT(s), + &amdvi_ir_ops, s, "amd-iommu-ir", + AMDVI_INT_ADDR_SIZE); + memory_region_add_subregion(MEMORY_REGION(&iommu_as[devfn]->iommu), + AMDVI_INT_ADDR_FIRST, + &iommu_as[devfn]->iommu_ir); } return &iommu_as[devfn]->as; } @@ -1172,6 +1274,10 @@ static void amdvi_realize(DeviceState *dev, Error **err) return; } + /* Pseudo address space under root PCI bus. */ + pcms->ioapic_as = amdvi_host_dma_iommu(bus, s, AMDVI_SB_IOAPIC_ID); + s->intr_enabled = x86_iommu->intr_supported; + /* set up MMIO */ memory_region_init_io(&s->mmio, OBJECT(s), &mmio_mem_ops, s, "amdvi-mmio", AMDVI_MMIO_SIZE); @@ -1205,6 +1311,7 @@ static void amdvi_class_init(ObjectClass *klass, void* data) dc->vmsd = &vmstate_amdvi; dc->hotpluggable = false; dc_class->realize = amdvi_realize; + dc_class->int_remap = amdvi_int_remap; /* Supported by the pc-q35-* machine types */ dc->user_creatable = true; } diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 8740305..74e568b 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -206,8 +206,18 @@ #define AMDVI_COMMAND_SIZE 16 -#define AMDVI_INT_ADDR_FIRST 0xfee00000 -#define AMDVI_INT_ADDR_LAST 0xfeefffff +#define AMDVI_INT_ADDR_FIRST 0xfee00000 +#define AMDVI_INT_ADDR_LAST 0xfeefffff +#define AMDVI_INT_ADDR_SIZE (AMDVI_INT_ADDR_LAST - AMDVI_INT_ADDR_FIRST + 1) +#define AMDVI_MSI_ADDR_HI_MASK (0xffffffff00000000ULL) +#define AMDVI_MSI_ADDR_LO_MASK (0x00000000ffffffffULL) + +/* Southbridge IOAPIC ID */ +#define AMDVI_SB_IOAPIC_ID 0xa0 + +/* Interrupt remapping errors */ +#define AMDVI_IR_ERR 0x1 + #define TYPE_AMD_IOMMU_DEVICE "amd-iommu" #define AMD_IOMMU_DEVICE(obj)\ @@ -278,6 +288,9 @@ typedef struct AMDVIState { /* IOTLB */ GHashTable *iotlb; + + /* Interrupt remapping */ + bool intr_enabled; } AMDVIState; #endif diff --git a/hw/i386/trace-events b/hw/i386/trace-events index 9e6fc4d..41d533c 100644 --- a/hw/i386/trace-events +++ b/hw/i386/trace-events @@ -101,6 +101,11 @@ amdvi_mode_invalid(uint8_t level, uint64_t addr)"error: translation level 0x%"PR amdvi_page_fault(uint64_t addr) "error: page fault accessing guest physical address 0x%"PRIx64 amdvi_iotlb_hit(uint8_t bus, uint8_t slot, uint8_t func, uint64_t addr, uint64_t txaddr) "hit iotlb devid %02x:%02x.%x gpa 0x%"PRIx64" hpa 0x%"PRIx64 amdvi_translation_result(uint8_t bus, uint8_t slot, uint8_t func, uint64_t addr, uint64_t txaddr) "devid: %02x:%02x.%x gpa 0x%"PRIx64" hpa 0x%"PRIx64 +amdvi_mem_ir_write_req(uint64_t addr, uint64_t val, uint32_t size) "addr 0x%"PRIx64" data 0x%"PRIx64" size 0x%"PRIx32 +amdvi_mem_ir_write(uint64_t addr, uint64_t val) "addr 0x%"PRIx64" data 0x%"PRIx64 +amdvi_ir_remap_msi_req(uint64_t addr, uint64_t data, uint8_t devid) "addr 0x%"PRIx64" data 0x%"PRIx64" devid 0x%"PRIx8 +amdvi_ir_remap_msi(uint64_t addr, uint64_t data, uint64_t addr2, uint64_t data2) "(addr 0x%"PRIx64", data 0x%"PRIx64") -> (addr 0x%"PRIx64", data 0x%"PRIx64")" +amdvi_err(const char *str) "%s" # hw/i386/vmport.c vmport_register(unsigned char command, void *func, void *opaque) "command: 0x%02x func: %p opaque: %p" From patchwork Tue Sep 11 16:49:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10595957 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 569C213B8 for ; Tue, 11 Sep 2018 17:07:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3E99329AD4 for ; Tue, 11 Sep 2018 17:07:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 322AC29AD6; Tue, 11 Sep 2018 17:07:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id CAAA329AD7 for ; Tue, 11 Sep 2018 17:07:44 +0000 (UTC) Received: from localhost ([::1]:58673 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzm8d-0003iB-PE for patchwork-qemu-devel@patchwork.kernel.org; Tue, 11 Sep 2018 13:07:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54203) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzm6z-0007z1-3J for qemu-devel@nongnu.org; Tue, 11 Sep 2018 13:06:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fzlrg-0002ic-GJ for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:16 -0400 Received: from mail-eopbgr730047.outbound.protection.outlook.com ([40.107.73.47]:60256 helo=NAM05-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fzlrg-0002ht-6g for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v3/bI+vnP6ZazzhQM6b0ad2kJRJ2S+ELkV12/tfrOxs=; b=aAb42HkeIwGxgIh1dbF9tmsNKVA3mXwIMTJngf+hzrs3dPoFIQvg8/YAQvjZuRU9g7Psu/Wkkif9AhFsPGO4CQsHca6kdTjRFi7eS/+TzN0bJfCDTC2pRwqRNsw+clhMwQn+GUutgkFET+KEhGcBnxVpWYeoaYI69rRXct87GHA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from sbrijesh-desktop.amd.com (165.204.77.1) by SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.16; Tue, 11 Sep 2018 16:50:07 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Tue, 11 Sep 2018 11:49:46 -0500 Message-Id: <1536684589-11718-4-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> References: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0065.namprd12.prod.outlook.com (2603:10b6:802:20::36) To SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c1b4a2fe-7ddc-46b2-ff72-08d61806a1f0 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:SN6PR12MB2688; X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 3:PrnmE2RmsMol86jDsrFSAg9PX/oMRUMnHM7p1RMez5jcO3qdqlZhEcLHEHXO7eTRXGJjEUIh6jUeEJkg7Dvs+03P6AmHWU6c7mBIk7UULrcQ5SidV6Ym8T0NJ7Y/Sf0MOW/k4oPmhMI3kzJT1Eb5O579/3+uXDJP7hVxzyKDRVviu3l1fpprWqbG8Wi2nxo5j6RYj+62IWweSQWHRFARVCjEF5D1fuQ+IoAraw/vLzps7HCHsiP5yXaDjyQioM3N; 25:swF4VZNnBC9PEMFWtVbf/UPIgV+nwhB3QdF+h5HLL65Q5798Azre0fzOPhtufjJ2Srq0QQ8EBm6dlLYhOsAJxgu8SEOr3T05F0jmFYsfgIuzoKFtKvi6vt+XVcuoSlTHz9dvYCSGQ6F6dttQ3m+B0QHaByYAPqp3d59lJaBPkcyKfrrArgChNy8bTHJWXPc/faUMKL76gw8oRobmF2FLdD7N2XQpZQEOtn2iYHxydr+mkj5TMXBiAOr1dTms5iMDLdiyIJGrM15o7uD+x04vyn4JVv13hC1zqzeMXt6Sv4E3yr8xf7RvzWtaittXPf37HsuSFOrVEcjz8lBpivfeww==; 31:oieBLCXICHByCGxYUjzgpMf6hO1xEQ4pLTk4hDMMVxPxbZHW5pqX64jJckrXNk8lIZnTrcgFd11RFc7MuwOKgrzbbcWy2UO1KXdg6eYzIZesLTcqLro/J7/O773HDohsLl5pet0SCIjXUf64GLGSJhmAUI6YKdrWJ6YIIIWVN4CiYOoobRaMGIg1dTyZw9ERi/mwrZg1zhPHbYpXxlT/zyDb+fS1nR3KeFlArTzcd6Q= X-MS-TrafficTypeDiagnostic: SN6PR12MB2688: X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:xqgFuDkJ+DvnQiZsPeGpEQA+6gJkQW0p2xfQ+zMj3ZIzfxKEnE42+3+XKRkFx98XkoUHaTIKUqHFhTsHTWWHw9z6gtNFoaXyFd33UCdGOUc7fYTiqS+vpufioocFi9d4B+ZMCp2Xnj/cLuknz8PNEh0s4J6W1e+E5dP/60xCBaKmN4dnIydsR7tp7Q4B+eOej7F6gsV6XhuJqHAtCC12QIC3O6sUwmZtdjfHhVC3krUbaAHh+Hpobo514rBz7IExzz9GyQljuTxyf+5Czg9Itnfp/JKQ4+UKkm/m5Ri4U/3/0shB6NCe+nG38BbiKOr3e3JZ7OTJlS6gD9c4It3MVNQRQ8iW5Bx8riNLAJxMAWEdUNh/X5PmLBipkZIzEhkY4zOmQZS13jvQDxEXGcrRa13ihutlrSoX+piseq8CboPHs/5Hn+7VLMMb5odcjihxzA9nCEbv8SLmF4Y5XT2ZB33nh43GC/pm5M5VPIZoxatNTWV6bu3TiwfGibHGZbRI; 4:XT5J7kcVsg4R5hQ6bpu9cqt6C02NC+Y471dgDaISCWQoAOYr9HILCCqBc2oz9j7l32VYk56K70zBnFUyK/JYst4yMSu4alSblLQ0mQeJO2UVZ3GoaClk1lznmWznqs4lNFEyOlS0aTVqfCnVR+DNaE82s8NAsTHC0y4ZacCh6idGogvzRMYRUJLiJWOqMrh8qLHfU5UP4HUVKfVONHE9grLUHLCrD388++uyvBBjY07KAr0l4HOlEcKfSN0U10WwIjZBbGSJgGzUEbeMZBFYJ0qo3bndv/vmVoxxcXgjY7lQFaH03cWbWspBI2Y+EOxkju078en/brYaofI4Wne6cg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(10201501046)(3002001)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699050); SRVR:SN6PR12MB2688; BCL:0; PCL:0; RULEID:; SRVR:SN6PR12MB2688; X-Forefront-PRVS: 0792DBEAD0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(376002)(39860400002)(396003)(189003)(199004)(2616005)(386003)(3846002)(97736004)(7736002)(48376002)(11346002)(316002)(305945005)(53416004)(6116002)(50466002)(476003)(2351001)(478600001)(966005)(486006)(39060400002)(956004)(7696005)(76176011)(4326008)(51416003)(6666003)(36756003)(6486002)(6916009)(106356001)(8676002)(68736007)(186003)(44832011)(2361001)(105586002)(52116002)(5660300001)(25786009)(81166006)(81156014)(2906002)(446003)(53936002)(47776003)(66066001)(54906003)(6306002)(26005)(50226002)(8936002)(16586007)(14444005)(16526019)(575784001)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR12MB2688; H:sbrijesh-desktop.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR12MB2688; 23:6nglAeMlAO1PX0n12OUP+dz1F/Gjgqr/X7Ep2koCm?= yaJ0mNzxYt/LxMt2uSAoTT1qzMoMqYl1wcKYOG76es++JaTbsw8ZdZISas8PSTbvDKgzH2MuRJm20VnwNDvATKdBYdZ4Pp0uRagEJQZspTbRrmxZt5GsaN33QhPE5IzK8bOMjsq2YIyO8PrZargS5fPqO9y35byRXONX3vYjEEum2KxFaWkt1m2RIYviWjdAaf73pay78tLR1Rey8I5MIOQ9UH9cOKH0Q+3CfWkM9fDmqZVVJqIMrHC0Pf7u2asp9OwF5wmhSUtC5U+sHXVCHzJ7OmLvpO8i93UhC289awwZpBiw9nAfFsgi9av+mSMr53XMdqae5YF7LVWwLsCkgEtiFX3fK/EaMV2LLHxwTtWqo5Ro/wqb3v6VQEjKT8XqN4OH1RqG+vAYoQr4uQ5ORbYemQQwjAuLUuCfUcDXnASKcGX43vspEvKj0x+bEb0ihpFTjYyAXtph8akKhi1ELWm8GZhzgf1+LCZ8R0RZXigYD58baw5w+N0e944p3RoM/ph63jUN6hgFSEZ5tuJT7EpYncDzrcGqD+LogU/NKB/HI1lh8Jir65aRDwIycrN8kYiYtkrYH5REQZTzKlEVKXS1eYaZTqf3wDRd0sibikReiKNV0WSgjuMzHAwZEVEJv9kUaar7aSy+gXx4c08llIYEQFWm08Ior5v53I3rpkq9dS2RfFq51u9LBbhNfthTRZUVPny6oQE7jOp50u5xbzOJonyJM4Jyy4u+XLppMJDvnP073Z+Hnp4uhogBhmtogu12Db8ZGqV8wlHKfS7Q1ZYJM6yHzC9VR1lD4gI17GST8DBilPxGmO5i3HFw0jt73Mz8RBtCTq+fJPddi4hRhTXJlMltPARofpdR87JtfRYMy6/Wc3FpAkrwP8rHVirPfPP1ldJqagZwd8JjadoLOcRyEapb2tfscWzGFgEc4og6OBqY36Wsw4B+tHA4fLihAfvtSFFCTz2C485d0XzfOcFOR6dH86RcesPhtTDj92pTlcvY9o8rqDFQ0BfoxZA+RAawxAXOrjwlfFO7g/AtJpcVW1cAWch9LCk70wLDRztlrwHUTjLV0b2Al+9pyAsa8MhyCiyW3XjWagOSgkScPcFmzE3pSZ2qD+5c/lMMpYLfR+wozzjI/vOYfeowvglh6vJDyFPGvv0Gv+iKQltOojPF83iU+FMGY9kf+WkxFRE3h3OuT32737I+Noo/m6gxoaxOd7X7OvTdbTv4lKbzZm5qCmLWXzqSTMHq9Wjjs9YGAxg8E6hj7fyyTKbSNvvFVurwr4tsX1vxIJK9SpTLaH5dhnOdYx+gXGYnVyA9U4kSQ== X-Microsoft-Antispam-Message-Info: O7NAzwdUKjENXOLDHnFiJZbHHK31FEcHWgSdeKOz/e7GCHf2/C4dbsvNkzNpV8s5zUdCwqEiBvJSPDnvWaRCXN+iXIndRCSpN7k6+dyejJWMWMAUpIZ9ho4nehQwjU0EtzmL0lLPJ1mW+GiZwoKsxwVFiPmCDMKtK4Rg13TaAObWwETR4GvOxw+XsNT2NCJkfGTUfLLpS8DwG1VEOlrGj4bzVaazyo7vf/ummqSizgrp7cELdwFwVYHU1qxDHNxldcWyh73mDFHhJg27C4mzfM63Q1xHH15XkUD9KaDFbgulB1Kudylzbx4BT34xTjxaepvqiek/drXOdegSj+Pl+2M5IJgaglka38J/w/mj2SU= X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 6:umlLpkBEHrxakeXA6SlBNuSSuBDPqPCkw2udrOnPJXv2Zi/aq9myy+oMqqU8uwr6xHeqG28Oi0nmqH4N1G82h0Oeoy23CpdZiFCVdLoKdHuBU2OsLBJ6QJtUCV+Oi1OP4Fi+izVcBggqhk7+Wek+Os6Ufsqje3bnDBOEqGLxdtw9B/jYVIrV3EwUlA5l3YgbeIYP/PEBLsXabp3Kj2yiNOkxqLAap2z+YlXjpg+RyQlVWMw4lL9nfFQACFH6hkgR5E4UC7Ed5LYfafkBHlPIG0FrOpYeW6VJEDJO6FZgsSOok0F5vjCZKoluqCdpc1VxnECOiXgbt0BtAu8NeCNUpdMIihuXB8ViXgtXKL/lxhHQ4uv/GY206LVfC2t+g+6KNnLuhZAJ3Tm0QjA6o9dc4shoNH2xeU5YrERd6P1Kd8qUBrgQkL7J4KXYJKe1lhD+fnxUrflGksuhOvC2zRZobA==; 5:91svV1P3urU7wbsxxdeaNFtTcZCPPaC/3CfozXSO0t/oT4sSYUrpGhNKULz6sz1t03ob4pwPmtBEdDqMcmgHGAfDLkxcL0tQniqfWXxnnvVH4jfyu19uh5rNdx6JOQuUaixi8HduePZDrKvSOuKuUf30961TFAyuQLRJJE5mOHI=; 7:7Wh9A1eP4ppxXv5us6HBXKxiss8fH7aGlFoavlQcZsErAvhzcBePkhmLQjWN/kYAPuRTKNOtPZUfD8aaMtLLzcVH/q+PDJxct1+OkebKR8FJJwTSblR1dTMW+SzT2I1VXyG3QQnZaSNcK6Sy6l8lRikmF6OZmuFb1mHUFyk7aXlfS657rDWAj0FeKmeREGZ9SsxzNcnvzJbv/CjbNvhfDmyNcd+HWy0jgQcxLcuvs4wpANq+U53OiSM2Yj9I+5XV SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:x4bpMILmqGWra6u0VT+zU/uOPswhf2r/ap/beYivUhAuq2YFfB6Ci4ccWUF7RYb4zsJCU78pDpt+tRmPlpsjC9tupO4PC279t2gLQ0FWOnb4QugAhjzYfs2qYNc8YKCwkyb154Y8+/pm8etEhsi87gfP6dsmQGm+kHAf8foTDj84uxUvlKbp8bPm1H/oLPCmegTPkEXTAdHq3sTtc3zN3rDsv+6fFGEPmzcmobgorm6EBA+j4ja1PZEZRgv/TKbN X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2018 16:50:07.9085 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c1b4a2fe-7ddc-46b2-ff72-08d61806a1f0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2688 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.73.47 Subject: [Qemu-devel] [PATCH 3/6] x86_iommu/amd: Add interrupt remap support when VAPIC is not enabled X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Lendacky , Brijesh Singh , Eduardo Habkost , "Michael S. Tsirkin" , Paolo Bonzini , Suravee Suthikulpanit , Richard Henderson Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Emulate the interrupt remapping support when guest virtual APIC is not enabled. See IOMMU spec: https://support.amd.com/TechDocs/48882_IOMMU.pdf (section 2.2.5.1) for details information. When VAPIC is not enabled, it uses interrupt remapping as defined in Table 20 and Figure 15 from IOMMU spec. Cc: "Michael S. Tsirkin" Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Tom Lendacky Cc: Suravee Suthikulpanit Signed-off-by: Brijesh Singh --- hw/i386/amd_iommu.c | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++ hw/i386/amd_iommu.h | 60 ++++++++++++++++- hw/i386/trace-events | 7 ++ 3 files changed, 253 insertions(+), 1 deletion(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 572ba0a..5ac19df 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -28,6 +28,8 @@ #include "qemu/error-report.h" #include "hw/i386/apic_internal.h" #include "trace.h" +#include "cpu.h" +#include "hw/i386/apic-msidef.h" /* used AMD-Vi MMIO registers */ const char *amdvi_mmio_low[] = { @@ -1027,6 +1029,119 @@ static IOMMUTLBEntry amdvi_translate(IOMMUMemoryRegion *iommu, hwaddr addr, return ret; } +static int amdvi_get_irte(AMDVIState *s, MSIMessage *origin, uint64_t *dte, + union irte *irte, uint16_t devid) +{ + uint64_t irte_root, offset; + + irte_root = dte[2] & AMDVI_IR_PHYS_ADDR_MASK; + offset = (origin->data & AMDVI_IRTE_OFFSET) << 2; + + trace_amdvi_ir_irte(irte_root, offset); + + if (dma_memory_read(&address_space_memory, irte_root + offset, + irte, sizeof(*irte))) { + trace_amdvi_ir_err("failed to get irte"); + return -AMDVI_IR_GET_IRTE; + } + + trace_amdvi_ir_irte_val(irte->val); + + return 0; +} + +static void amdvi_generate_msi_message(struct AMDVIIrq *irq, MSIMessage *out) +{ + out->address = APIC_DEFAULT_ADDRESS | \ + (irq->dest_mode << MSI_ADDR_DEST_MODE_SHIFT) | \ + (irq->redir_hint << MSI_ADDR_REDIRECTION_SHIFT) | \ + (irq->dest << MSI_ADDR_DEST_ID_SHIFT); + + out->data = (irq->vector << MSI_DATA_VECTOR_SHIFT) | \ + (irq->delivery_mode << MSI_DATA_DELIVERY_MODE_SHIFT); + + trace_amdvi_ir_generate_msi_message(irq->vector, irq->delivery_mode, + irq->dest_mode, irq->dest, irq->redir_hint); +} + +static int amdvi_int_remap_legacy(AMDVIState *iommu, + MSIMessage *origin, + MSIMessage *translated, + uint64_t *dte, + struct AMDVIIrq *irq, + uint16_t sid) +{ + int ret; + union irte irte; + + /* get interrupt remapping table */ + ret = amdvi_get_irte(iommu, origin, dte, &irte, sid); + if (ret < 0) { + return ret; + } + + if (!irte.fields.valid) { + trace_amdvi_ir_target_abort("RemapEn is disabled"); + return -AMDVI_IR_TARGET_ABORT; + } + + if (irte.fields.guest_mode) { + trace_amdvi_ir_target_abort("guest mode is not zero"); + return -AMDVI_IR_TARGET_ABORT; + } + + if (irte.fields.int_type > AMDVI_IOAPIC_INT_TYPE_ARBITRATED) { + trace_amdvi_ir_target_abort("reserved int_type"); + return -AMDVI_IR_TARGET_ABORT; + } + + irq->delivery_mode = irte.fields.int_type; + irq->vector = irte.fields.vector; + irq->dest_mode = irte.fields.dm; + irq->redir_hint = irte.fields.rq_eoi; + irq->dest = irte.fields.destination; + + return 0; +} + +static int __amdvi_int_remap_msi(AMDVIState *iommu, + MSIMessage *origin, + MSIMessage *translated, + uint64_t *dte, + uint16_t sid) +{ + int ret; + uint8_t int_ctl; + struct AMDVIIrq irq = { 0 }; + + int_ctl = (dte[2] >> AMDVI_IR_INTCTL_SHIFT) & 3; + trace_amdvi_ir_intctl(int_ctl); + + switch (int_ctl) { + case AMDVI_IR_INTCTL_PASS: + memcpy(translated, origin, sizeof(*origin)); + return 0; + case AMDVI_IR_INTCTL_REMAP: + break; + case AMDVI_IR_INTCTL_ABORT: + trace_amdvi_ir_target_abort("int_ctl abort"); + return -AMDVI_IR_TARGET_ABORT; + default: + trace_amdvi_ir_target_abort("int_ctl reserved"); + return -AMDVI_IR_TARGET_ABORT; + } + + ret = amdvi_int_remap_legacy(iommu, origin, translated, dte, &irq, sid); + if (ret < 0) { + return ret; + } + + /* Translate AMDVIIrq to MSI message */ + amdvi_generate_msi_message(&irq, translated); + + return 0; +} + /* Interrupt remapping for MSI/MSI-X entry */ static int amdvi_int_remap_msi(AMDVIState *iommu, MSIMessage *origin, @@ -1034,6 +1149,9 @@ static int amdvi_int_remap_msi(AMDVIState *iommu, uint16_t sid) { int ret; + uint64_t pass = 0; + uint64_t dte[4] = { 0 }; + uint8_t dest_mode, delivery_mode; assert(origin && translated); @@ -1055,10 +1173,79 @@ static int amdvi_int_remap_msi(AMDVIState *iommu, return -AMDVI_IR_ERR; } + /* + * When IOMMU is enabled, interrupt remap request will come either from + * IO-APIC or PCI device. If interrupt is from PCI device then it will + * have a valid requester id but if the interrupt it from IO-APIC + * then requester is will be invalid. + */ + if (sid == X86_IOMMU_SID_INVALID) { + sid = AMDVI_SB_IOAPIC_ID; + } + + amdvi_get_dte(iommu, sid, dte); + + /* interrupt remapping is disabled */ + if (!(dte[2] & AMDVI_IR_REMAP_ENABLE)) { + memcpy(translated, origin, sizeof(*origin)); + goto out; + } + + /* deliver_mode and dest_mode from MSI data */ + dest_mode = (origin->data >> 11) & 1; /* Bit 11 */ + delivery_mode = (origin->data >> 7) & 7; /* Bits 10:8 */ + + switch (delivery_mode) { + case AMDVI_IOAPIC_INT_TYPE_FIXED: + case AMDVI_IOAPIC_INT_TYPE_ARBITRATED: + trace_amdvi_ir_delivery_mode("fixed/arbitrated"); + ret = __amdvi_int_remap_msi(iommu, origin, translated, dte, sid); + if (ret < 0) { + goto remap_fail; + } else { + goto out; + } + case AMDVI_IOAPIC_INT_TYPE_SMI: + error_report("SMI is not supported!"); + goto remap_fail; + case AMDVI_IOAPIC_INT_TYPE_NMI: + pass = dte[3] & AMDVI_DEV_NMI_PASS_MASK; + trace_amdvi_ir_delivery_mode("nmi"); + break; + case AMDVI_IOAPIC_INT_TYPE_INIT: + pass = dte[3] & AMDVI_DEV_INT_PASS_MASK; + trace_amdvi_ir_delivery_mode("init"); + break; + case AMDVI_IOAPIC_INT_TYPE_EINT: + pass = dte[3] & AMDVI_DEV_EINT_PASS_MASK; + trace_amdvi_ir_delivery_mode("eint"); + break; + default: + trace_amdvi_ir_delivery_mode("unsupported delivery_mode"); + goto remap_fail; + } + + /* dest_mode 1 is valid for fixed and arbitrated interrupts only */ + if (dest_mode) { + trace_amdvi_ir_err("invalid dest_mode"); + goto remap_fail; + } + + if (pass) { + memcpy(translated, origin, sizeof(*origin)); + } else { + /* pass through is not enabled */ + trace_amdvi_ir_err("passthrough is not enabled"); + goto remap_fail; + } + out: trace_amdvi_ir_remap_msi(origin->address, origin->data, translated->address, translated->data); return 0; + +remap_fail: + return -AMDVI_IR_TARGET_ABORT; } static int amdvi_int_remap(X86IOMMUState *iommu, diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 74e568b..58ef4db 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -217,7 +217,65 @@ /* Interrupt remapping errors */ #define AMDVI_IR_ERR 0x1 - +#define AMDVI_IR_GET_IRTE 0x2 +#define AMDVI_IR_TARGET_ABORT 0x3 + +/* Interrupt remapping */ +#define AMDVI_IR_REMAP_ENABLE 1ULL +#define AMDVI_IR_INTCTL_SHIFT 60 +#define AMDVI_IR_INTCTL_ABORT 0 +#define AMDVI_IR_INTCTL_PASS 1 +#define AMDVI_IR_INTCTL_REMAP 2 + +#define AMDVI_IR_PHYS_ADDR_MASK (((1ULL << 45) - 1) << 6) + +/* MSI data 10:0 bits (section 2.2.5.1 Fig 14) */ +#define AMDVI_IRTE_OFFSET 0x7ff + +/* Delivery mode of MSI data (same as IOAPIC deilver mode encoding) */ +#define AMDVI_IOAPIC_INT_TYPE_FIXED 0x0 +#define AMDVI_IOAPIC_INT_TYPE_ARBITRATED 0x1 +#define AMDVI_IOAPIC_INT_TYPE_SMI 0x2 +#define AMDVI_IOAPIC_INT_TYPE_NMI 0x4 +#define AMDVI_IOAPIC_INT_TYPE_INIT 0x5 +#define AMDVI_IOAPIC_INT_TYPE_EINT 0x7 + +/* Pass through interrupt */ +#define AMDVI_DEV_INT_PASS_MASK (1UL << 56) +#define AMDVI_DEV_EINT_PASS_MASK (1UL << 57) +#define AMDVI_DEV_NMI_PASS_MASK (1UL << 58) +#define AMDVI_DEV_LINT0_PASS_MASK (1UL << 62) +#define AMDVI_DEV_LINT1_PASS_MASK (1UL << 63) + +/* Generic IRQ entry information */ +struct AMDVIIrq { + /* Used by both IOAPIC/MSI interrupt remapping */ + uint8_t trigger_mode; + uint8_t vector; + uint8_t delivery_mode; + uint32_t dest; + uint8_t dest_mode; + + /* only used by MSI interrupt remapping */ + uint8_t redir_hint; + uint8_t msi_addr_last_bits; +}; + +/* Interrupt remapping table fields (Guest VAPIC not enabled) */ +union irte { + uint32_t val; + struct { + uint32_t valid:1, + no_fault:1, + int_type:3, + rq_eoi:1, + dm:1, + guest_mode:1, + destination:8, + vector:8, + rsvd:8; + } fields; +}; #define TYPE_AMD_IOMMU_DEVICE "amd-iommu" #define AMD_IOMMU_DEVICE(obj)\ diff --git a/hw/i386/trace-events b/hw/i386/trace-events index 41d533c..98150c9 100644 --- a/hw/i386/trace-events +++ b/hw/i386/trace-events @@ -106,6 +106,13 @@ amdvi_mem_ir_write(uint64_t addr, uint64_t val) "addr 0x%"PRIx64" data 0x%"PRIx6 amdvi_ir_remap_msi_req(uint64_t addr, uint64_t data, uint8_t devid) "addr 0x%"PRIx64" data 0x%"PRIx64" devid 0x%"PRIx8 amdvi_ir_remap_msi(uint64_t addr, uint64_t data, uint64_t addr2, uint64_t data2) "(addr 0x%"PRIx64", data 0x%"PRIx64") -> (addr 0x%"PRIx64", data 0x%"PRIx64")" amdvi_err(const char *str) "%s" +amdvi_ir_irte(uint64_t addr, uint64_t data) "addr 0x%"PRIx64" offset 0x%"PRIx64 +amdvi_ir_irte_val(uint32_t data) "data 0x%"PRIx32 +amdvi_ir_err(const char *str) "%s" +amdvi_ir_intctl(uint8_t val) "int_ctl 0x%"PRIx8 +amdvi_ir_target_abort(const char *str) "%s" +amdvi_ir_delivery_mode(const char *str) "%s" +amdvi_ir_generate_msi_message(uint8_t vector, uint8_t delivery_mode, uint8_t dest_mode, uint8_t dest, uint8_t rh) "vector %d delivery-mode %d dest-mode %d dest-id %d rh %d" # hw/i386/vmport.c vmport_register(unsigned char command, void *func, void *opaque) "command: 0x%02x func: %p opaque: %p" From patchwork Tue Sep 11 16:49:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10595979 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BBF5314E5 for ; Tue, 11 Sep 2018 17:12:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9DA6A29AD7 for ; Tue, 11 Sep 2018 17:12:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 906BE29AE4; Tue, 11 Sep 2018 17:12:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id F366B29AD7 for ; Tue, 11 Sep 2018 17:12:15 +0000 (UTC) Received: from localhost ([::1]:58711 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzmD1-0007ok-0A for patchwork-qemu-devel@patchwork.kernel.org; Tue, 11 Sep 2018 13:12:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54702) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzm6z-0008Po-0v for qemu-devel@nongnu.org; Tue, 11 Sep 2018 13:06:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fzlrg-0002j5-Tf for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:17 -0400 Received: from mail-eopbgr730047.outbound.protection.outlook.com ([40.107.73.47]:60256 helo=NAM05-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fzlrg-0002ht-MW for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=V83Q2APt1D7/xNIG/7KF1EJEOqGH05DZttXNoF9SjgI=; b=wOjn+MDp185vfvG8W1KiUUyAbRLEMzqXja4+fR3kZpJdu8sCPnZc+OMIw3ZczwMOuudUUtcWg/FRprO/UFyQUSPCgpMhYSzcRgbI6rWVjCuECD/LOmJc+/t/W3iWW8L8tb6aHzyZrHz45I/w3OMwI+vGQai/YVEgE97vgpZIjR4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from sbrijesh-desktop.amd.com (165.204.77.1) by SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.16; Tue, 11 Sep 2018 16:50:10 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Tue, 11 Sep 2018 11:49:47 -0500 Message-Id: <1536684589-11718-5-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> References: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0065.namprd12.prod.outlook.com (2603:10b6:802:20::36) To SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ab4be30b-e481-486c-679f-08d61806a39a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:SN6PR12MB2688; X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 3:n0bU4AXkbGUyNWXwJttYBHnw20fIbEd5vRMKgITbUq74LrkWln4Xgcvh4rXYhiwE33VT34qdFZr/ajX/qQMp7c09AeYhcVzh1ULTzzzXad/swJZCyKTJgF1kTI7/GN3kmhXEYoGfU6hFH4JJeq2VukRJxANPaNWpVYMz4k5qb9tS5zpM7o58ZMsTuMeXVk3O80h2JilAbCQ6I5j+uj14pprY06Y5PYr7p9OQNc8LIWyWDBhAagB4jgVDWTVN+rpV; 25:2KPf2wC3bXceTTwBj/uxhPM7ZQ293P03/Mzzen2AJ2XBXyQeJhFu/k1pyYRAhoBfFoe4BfquTQdBfocE+gwE8mgVe/h+02KwhSMjsaWKaLYqFp/N6gimXubGxZCYBtYhCQrtp28GD6E6D7VDeygTJEfKq5wd2IF+/YOVhY7mj6OHXf7KcbooGxzh/V1Sj5AOKo2hnaThRwQulQS60XXoZ/fbrprly01OVOGvqplWC4UXorYbu/IpqRk8fVvhjnemQFg7TM9ry+bGfZXqtJNDy4NyDnUe8ORint/b/Jp9ef9BjU33qylYBxitiGq5k+jlIbWpohfO3fIkOnvLPUVb9w==; 31:HqKnvcCB8Tziqo4yVF4y8CmXhHgENaeh8EHXItYc3hbMhe+UB8tXVwTGsDyAlq8R6rttdmIuR5RRNixfUWRzf1Jq67xUqav/+U4OPAEj8FypSgM45yx2kLwimdmcE92JuoYBaBYeZ1Y1GHTtvEj9DAR703jma5mzPqUkntv+jBGIq2gZh6Esvr2eMMPJ/xGUvFgnLKuLCw2dgLriGRG7USWVuJv3YBGkz/DHpBQXIaI= X-MS-TrafficTypeDiagnostic: SN6PR12MB2688: X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:CqBwSAE1sk9TiUd37fax3dMa8RiEkBuZj/nitU6lPZ8/g5DzJRjaeStnIQcHdNYOhasZeJNK7RapDW3vqwRKaF+8Kg71ZaL4/1O1ARRQq1UyU4XInswx3+1qF5BcMJ4dKI1PJ9mdiCk0px/kLtKlclQjqEgk7Ho70A4s4GX/3J5YtTLAecg8NPiPWIWGeBsrjxiUXr/p5YK8v6E/NBKZClgp3QiQgpxMoY+/f4dCmZ2I0hNpSpWLpR6gDjRJ911Z0lYpx2DJbLHU95ZDNs/jjHWSkQ8uHLfDt40V8ZsqdoK7511CxcTimZbq5cv+0weAyIm6bFa8PD9vav8xyVLPFXGl/sUrakSzarHfPipCRh2Z0u93Ns3sBTr7Wc4zPivVB7/6dVuaV+s9sMAMOJ9TZHqtfivDoLYMU21X0zvAxxJU65kbBQawv440uMP1HjnrBMX/pVDq+gJ0MHGojfMY3qW8avDeDX8yAS+gkme/NDEsGzj4XJdQqN6E2EW8688C; 4:TSJT4xRavbGT0MTHe/Z/caRY2AM2IvBBWZ8VHG8+ozCwieNNZSYKbNz1YDJ+DUwq5nVEr6LXf2Ehmd+9CAAQ5gZkowewTAvWDNgokGlCn3yECwWLQPvvUX9MLHHmTXAl20dFYmbV9gLbxAI1uV/TfXpl6rG5HjjHrtdqoS9WMsnudxhDme9rhuu7gOBO85FV4H1QTM8S2BN5s3znWs/OiRza02XncjP3nRppypMPdU/L1W639q8n2IMxMMsDJ7rxqTci+PF1NaDFaU3ZfaDLfzqgczdW/M45rMCUvKF7lCFDmfOabJ7fPchcLU2qWhL/YstZmmv8VZZNH6jbX22EpMLGVbBGCYuLwItod5/EtOk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(10201501046)(3002001)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699050); SRVR:SN6PR12MB2688; BCL:0; PCL:0; RULEID:; SRVR:SN6PR12MB2688; X-Forefront-PRVS: 0792DBEAD0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(376002)(39860400002)(396003)(189003)(199004)(2616005)(386003)(3846002)(97736004)(7736002)(48376002)(11346002)(316002)(305945005)(53416004)(6116002)(50466002)(476003)(2351001)(478600001)(486006)(39060400002)(956004)(7696005)(76176011)(4326008)(51416003)(6666003)(36756003)(6486002)(6916009)(106356001)(8676002)(68736007)(186003)(44832011)(2361001)(105586002)(52116002)(5660300001)(25786009)(81166006)(81156014)(2906002)(446003)(53936002)(47776003)(66066001)(54906003)(26005)(50226002)(8936002)(16586007)(14444005)(16526019)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR12MB2688; H:sbrijesh-desktop.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR12MB2688; 23:j7UJ70tH9+g7Mdh6HCKn88YmLXyHDWWQc+ZqEFXke?= gmp8CEi/ViZE50unyhJ5csE3yI8j29btWPyAzq3C5ttzX9972f/MFWtG/0pRkGKZnDWJ2S+TdnivZ3WKTnBZCqApsXsuiGCvJ1CwApLEmTTr8a6clCxB86bFpTVkCX8wvxVDKPt59a1iqlbtwiDutRL94U94hVB2zydwFccTrK8UG2fKJrvWQybxKpCM7B0V1EVVxNUdRA+66lvXafm+/AL5bjnuTJ7yQ7iJ6ixLODR5MkH9bkOWJUYHhgx9yg+9H69eDO1nmyRupBmldgpONFPSajyURgn4dQ1HcqpdL2mOcjAri3mZrwsTgZFM0Pl2t0qdvhpguOk9uOIud4VatJ6ZjkuN1ggZDqu3ub5Do8xgp6brfcX+6UaouZ4Qeo1o4fVMHqfVVC62ZdBgd5/97M7t9rH2Ah2yzck9uBCcUMp+A/WG4mRWf4yv6uY3az4x0fW4XQviYDomWM6NkeC8CB71FNsjw6F5rmNeioK8mwCvNT8MA8L6+D3idgYj6AoHHNqHK5Z6puL16BfGMBhfCP3agdFJkfkF4jUeUYinOYXM/Gm1Mh4/wSzOVAu+AOX1g+UgEWtTG9B8yCzRJQNhIFJ6QHF/sRYzWFOG3dnEt2DfNnxCymAZ6plaYkWXwAaiLSopyo60b7BB4SR+XALqPnILnY/cznB2GER5rALREYlGl5gzX2a8lqBHtsLnp8k0oQbReYXcgVw04MAtUndbNUWe/JrmX9mwxRsCjdHBGA54n3tsdre2NqojqraPdOrQ8MgZdlA8ooysZmyqfZ/GR7lbnqEm/E4cHyoPBzFih0BdFsjDinRRD/WFAohwQtWo238aW3mbTNjvH3QPmrO2dotcGL01DX8+X9AkCj8CaRJsaDWBVMoucJu80+BVE8tkyVaKEEFTRuxSpzKSSymog9FJGluBNAeQFSSf7ZaLUAzluaKycQax4fGK6F/aapKa7b/ST+sdk4JVp7ZtNrQjrGVzyGyBJGXyDODiomZ+qqfxGcyid15zODi/5958M/pKSNPa2peHC1DbieAK4tG8e/Ey6pxBFVn983tnS7SEu8bYzG+8QWkAwR90gKPEVzu2ugj7RA92tN4GDRtzkX0iA4GYTX5v/Him10a4LYoy6ccZEGKcB/fA//QahsNSYMP0zJDSZJ+9yXMRFHAAuGaqCvvZZ0eN1sxuzjNa6ycRUbs5dhrtd+oek7LCvg4dUUN3Jj8JPxg7DsuHU9clmJGj/UXRjIU9XTg/By14yi91ZaK3A== X-Microsoft-Antispam-Message-Info: 23znLSkPEQt5Yltrs+bdjTY7eccVqtwzrk4u/LtCK01pARo0sxen64w3XC0qZamuzutBgJBdThgY70KNcKTmmCFn+CsXffenpa8vfSaDInh8suxv8RQiUxdzQlh+gAGz7+4HCb9jZRQvC6dgs3Y9318ZFwsmJhXxv8lRMayna7PoPip8lLc1BAXgXul/MeMK3N/VFFuUI9rdYivJS/61LG36qN2VFaesKTsBQLhRBRnM3G2+o8h3n7XK7kb4F6AzNBvvYsy/fdUfkLAIJ32hqB1fqYhVatk9VX5S4A0JS2zf4weXJDyljAG3ed6SzGTuSeqOlR5yr1BBrEVKn0uSF7QUQchgx76To5hJgSnf+/k= X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 6:VDNYj0vqMhpXVu2ewigorBWRKSsUwsdTpHdbOI/XEzcmJnwwg0Pkc4fY+lSXAuKI9N4fQ3fS5AWlSoGlGj6sRpWmRT0gl2LwN0FbsJaUVOp/Hey/HsRIBjpyuA7qQumdf7tgkH2cfajT2B5hD6/GO2m6pqv/GQTkn6d/TeJmDPM5pt17qAgLGek5s1QdakmPO99EIw40xJ73nQVKiwKIch0YZocwtO2WyY6VO2QYsxfrZQPCpMggXIXyen2Qale0pZFBiebTMDyVCwDxDy3hH/BNFHmQR4p6vTiHIeo3uVjUhqvADRHFMTgOeZMVjdm6Xf48bmKMFZ47464Md4SCmwzNU8hvwYzGS9db+hDg7btBSB92Erbwn0Zyfp/x2mJaGRsTxcuXRo+mr30tCKmbp3yGVnPHZTBYieyCGcAvXwMBRvQ7WIiHA2zEkWjlr5C7/ezz58wsGfZJozo+bdM//w==; 5:KlYNaatKM7NnskeuqV0guL+ShAz/uAV7pApjRbNVPWrf6CqpB7zG+CLrOWHIRWafs8jAHxRbUU/q3UOplljqCWTMH+FzOF/qg4j1QrZlPVaXrUOwaqf7395viCjijyRBl/wHqQBXSSTpDadkhy5nJ2jSQ11bLTBWZMEAKgb1oFo=; 7:/VErQUMfgpA+S2cRVKwLjnvORycQub7O/tCuZ75BXkzTWmIUGwozVjezJlwsVAkYaPhyPj7g7pCq3YsrdXZ4lImxU4TjBkowFiWioSYacFwX7RTpA3KHfbjFHpqm8fXlX6uiP7FQOIc4WXz9uVIE/KB1a2E15oizF3DNzPAypaLUke62i9zjnwdsgcidRiofsVCzxRTE+9biOZk7mmcAbSaT+89lq+bG11HuGy+tiyN3RrePOEFVqQ+kA9OCk3VJ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:Qj4zeji8aZxMGbpxN4yBPe7p0sgUbA9ZkuwTm7FE5FotezBk2yGDOoDMb0Sxg1GQJMipPOHvxPBaCT6iAb26rnFYsLFFKFpfFoZ0aMAKKdpDk8CHPJaXlk2Jp/l4qtkZOTyDMkneVe8nXeq2aRVt3bYszsW2p+1QcY/u87oiyS78fHuG2QhExKQpqyiXKvosYK6APomX/Eygh/iuW5MxZlC9o3PEyo/ttz8eKSbf9hvfZTzliRjXAt9TtB1zga6d X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2018 16:50:10.3482 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ab4be30b-e481-486c-679f-08d61806a39a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2688 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.73.47 Subject: [Qemu-devel] [PATCH 4/6] i386: acpi: add IVHD device entry for IOAPIC X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Lendacky , Brijesh Singh , Eduardo Habkost , "Michael S. Tsirkin" , Paolo Bonzini , Suravee Suthikulpanit , Richard Henderson Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP When interrupt remapping is enabled, add a special IVHD device (type IOAPIC) -- which is typically PCI device 14:0.0. Linux IOMMU driver checks for this special device. Cc: "Michael S. Tsirkin" Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Tom Lendacky Cc: Suravee Suthikulpanit Signed-off-by: Brijesh Singh --- hw/i386/acpi-build.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index e1ee8ae..5c2c638 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2519,6 +2519,7 @@ build_dmar_q35(GArray *table_data, BIOSLinker *linker) static void build_amd_iommu(GArray *table_data, BIOSLinker *linker) { + int ivhd_table_len = 28; int iommu_start = table_data->len; AMDVIState *s = AMD_IOMMU_DEVICE(x86_iommu_get_default()); @@ -2540,8 +2541,16 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker) (1UL << 6) | /* PrefSup */ (1UL << 7), /* PPRSup */ 1); + + /* + * When interrupt remapping is enabled, we add a special IVHD device + * for type IO-APIC. + */ + if (s->intr_enabled) { + ivhd_table_len += 8; + } /* IVHD length */ - build_append_int_noprefix(table_data, 28, 2); + build_append_int_noprefix(table_data, ivhd_table_len, 2); /* DeviceID */ build_append_int_noprefix(table_data, s->devid, 2); /* Capability offset */ @@ -2565,6 +2574,15 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker) */ build_append_int_noprefix(table_data, 0x0000001, 4); + /* + * When interrupt remapping is enabled, Linux IOMMU driver also checks + * for special IVHD device (type IO-APIC), which is typically presented + * as PCI device 14:00.0. + */ + if (s->intr_enabled) { + build_append_int_noprefix(table_data, 0x0100a00000000048, 8); + } + build_header(linker, table_data, (void *)(table_data->data + iommu_start), "IVRS", table_data->len - iommu_start, 1, NULL, NULL); } From patchwork Tue Sep 11 16:49:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 10595953 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 41C5F13B8 for ; Tue, 11 Sep 2018 17:06:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2B1CA29A64 for ; Tue, 11 Sep 2018 17:06:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1EAB029AD4; Tue, 11 Sep 2018 17:06:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 91E7429A64 for ; Tue, 11 Sep 2018 17:06:53 +0000 (UTC) Received: from localhost ([::1]:58671 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzm7o-0001ro-9X for patchwork-qemu-devel@patchwork.kernel.org; Tue, 11 Sep 2018 13:06:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54537) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fzm6R-0008Oo-BM for qemu-devel@nongnu.org; Tue, 11 Sep 2018 13:05:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fzlrs-0002vX-E7 for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:27 -0400 Received: from mail-eopbgr730082.outbound.protection.outlook.com ([40.107.73.82]:22781 helo=NAM05-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fzlrr-0002ja-Lb for qemu-devel@nongnu.org; Tue, 11 Sep 2018 12:50:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cQZqk6jLymiaxjF7nkqAIdFtrfGb50SSxkzkveLoSRY=; b=fFkeqWevBdmfxjVHkijn5CgeuAw/8n9H2M1koGMwx8z6l3S9eX8xtKbeYnLuT6Gsjs/Kbh+rVJgDRNrS7VvTRGplw0W3jFWtjtigmNp/Be18S3movjaohOeslqlQH9HtrCNZenN2Xy/QEYDjqSZwBoup9kYI6cnJr2wSUF3r2B8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Received: from sbrijesh-desktop.amd.com (165.204.77.1) by SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.16; Tue, 11 Sep 2018 16:50:12 +0000 From: Brijesh Singh To: qemu-devel@nongnu.org Date: Tue, 11 Sep 2018 11:49:49 -0500 Message-Id: <1536684589-11718-7-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> References: <1536684589-11718-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0065.namprd12.prod.outlook.com (2603:10b6:802:20::36) To SN6PR12MB2688.namprd12.prod.outlook.com (2603:10b6:805:6f::29) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bfdbf097-8578-451d-fe98-08d61806a4d9 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:SN6PR12MB2688; X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 3:Ur0Mbi0I6n/h2Q4XYSiVlV1JuI6qlFpBrxmzsQ0eKcJkFx8mY6igF0WM5XCdwoUDbt3x0KPhmUk3/aj7SXdBbtkJ0vmeV80vI4OunUGa68um9iJn/Y9YG4ssAw7B99Qa2DJULPqFUyATsrfwGFi3EOe+/XmY1hn4itN5uV2MHl4GWOov9ZEqTA4MvrvYyCgeYOujFIkG32+S4WCqXX6IIrRRE5rUkcfaDpk8b/nv70F3LCpmuqljB8jZBERRrDYS; 25:WYLpyc5Tei+1eOGyvxhKbog4cfhNLUpfazhge5HSJlAkTfdW4Nu9FSEeRfYeiuwkb2Dzn43AcPkibZ4ZcEysJA2RIdV/tngq2plq8Jfddkb+1F82GfuB0IUQZ45xGDj09X4/o3KW5gBwVuceX7WJL+LNCMfIJuPH/Vqd1W/yxPKBC2KFZW9rSyPX6In7jmi1BPH0qhgy7iibPZDwT70pNOCptwvXcLHCSdsz1RHX3vsQiRYSZZl+t9qAyZUVKOcSAu7x9eqnMsKmmeQqL3yIfIyP9xfBWE1U2skNyQkgiwnok3dJOR2DNyDV7Zdj61deByCMMZEzqkasODgWKDfgGA==; 31:myTTGK9glBEESad+L8k9kDOHq4mQUunZ8YDD0lsqBPn8roMgTtMXcaJpOKQaPtZ48KMBPL3IZIqImAn9O9cheSqcwVzb4XSognDRy0RNPTA44k/n0Jvra/aq6qKi1SfclsN6ikKwqyXYEQUxveIJymKZ0PS3yucfU0cLEY4GH2rTHmh6H1DiVgwApm3KNifhDMdLzfQoMuN0xSYm9IfZsKZX1Oe78oeV61g8eMW2Tj8= X-MS-TrafficTypeDiagnostic: SN6PR12MB2688: X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:z9jga83fIJOhKFyi3EpH4P22QYWHlR8R8hE0R3+JLro2rTunx53gNtACX2q7LXAf9BBaQN/CUFf5cgk4w9xcnaTVHaMiolkNGX0wxYBET7r7Axjr0POLcm36/7UfI2py8xHBRqDIhru40r9sZ1EfSKgFs63htE0ChQdGiJAFtO2HhfFTBuIsJxAyyVed6pWp0Mwlwci1YNpTDvUFyf+pqzAOjJgbQ4wtOQjiGbU/HxUPgBCaHjTQ9DuOAaHoLiZ/DME8sLb8jzLZxe9ec/NspIwYELu4NAIINqYIfwTng5lRewY05isF56yduGQ7uFNVVQYZL4WxMKuhrEn7nOxhk8Zhz6BI10h784jm48/44gSM+1LHjZrq0AnOReFHUECrn+qogME79IxvwkfLNfC2oCmtS8U24jKDOQdEXaTVCFeZQGmxQMbHToCwMiuaplUN+6G/wClICOxi2Xb4JPwK/+t0sz0XOXUhtHW8FlFqNW4WTYqfnohf6ohxcOnfl0eJ; 4:uBPuxT4rFtthDspgodhj75R3uA0XiB+7cR20l3w25TlagOxlBz522K8aynFjzgJ2VqA15FjHHvB4KN8tmoAmBHPmPldWaMKwog5pjWClHBljprL8SaR1Xz7ejdYRe+KTqxBWkAKqm2f86yA8fpt2VZBbgnYtBr3D5p3S1jtOdQWgA+5mEesEw6VMHUE6GHvu+P+55XBJr73IPml7pqT6k7rwrKOMnw7c1nNKvsgSx1Hs/RIqRyxilJQA8gnQaQgDrYTlDhf6ls3karBjTrTWIrLKIs8vMeV/Cad52ZZf8XZjI8xYT4gANw91QHzHcibB4UqGsYNkGTSJYoimQRT5DGZ3SE9YoN3I5c/BpKPAZw05GOG6YDlrkfettp3WJj2vwhmOPB8O5fXNgJY4ash0hA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158)(767451399110)(163750095850)(211171220733660); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(10201501046)(3002001)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(201708071742011)(7699050); SRVR:SN6PR12MB2688; BCL:0; PCL:0; RULEID:; SRVR:SN6PR12MB2688; X-Forefront-PRVS: 0792DBEAD0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(376002)(39860400002)(396003)(189003)(199004)(2616005)(386003)(3846002)(97736004)(7736002)(48376002)(11346002)(316002)(305945005)(53416004)(6116002)(50466002)(476003)(2351001)(478600001)(966005)(486006)(39060400002)(956004)(7696005)(76176011)(4326008)(51416003)(6666003)(36756003)(6486002)(6916009)(106356001)(8676002)(68736007)(186003)(44832011)(2361001)(105586002)(52116002)(5660300001)(25786009)(81166006)(81156014)(2906002)(446003)(53936002)(47776003)(66066001)(54906003)(6306002)(26005)(50226002)(8936002)(16586007)(16526019)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR12MB2688; H:sbrijesh-desktop.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR12MB2688; 23:JevEaEe1lya/HINDZbovN9qrQjmfwLwkVZjkRHBGl?= HGPV3C3GBupdu8g56N1UKOrcEjbKxegNzhEfVlQf9PewspYA9MmOGRK8U0rORbEDwa83UpxfsGT+fGtl5tS999KgIqXcyyx9Oov4ieyDZzr3AsWWvl5T3bdFmmDmle74C83cGlaUkxo9OM1vAqo5OZJ3/nuqyiSZCZvkEV4f/qgeLk4p5QG5NJxppGYjLSaZbWAdD+ht231Dq/tWNJQcKF+mgfVFlHwVMswbuyXr5Aso5Ss5WJRCJVY6kqJm0qxzMCFvgwMNNneXEXDIMFsZbvyGrKpmn8m9C4eC/7cF9sjDssgZH5zR6T2pxbwVpV6lj4dq+mZXH2jhswweo3mmv1VC+EgT9HFkOssUK2EdsEd6mAU2WLU8/ZRMi8h8eFgd8l41Rh/3YHQo/bZKH4oGV1BjqhlIVGC6QMaq8i3Ao67v3c5DJlqeiu4607ugRmGG8hkInlZrUVVrS/Q/g0tqdZnRAeflD7iIEjlGOI17VDz1dkiCG1PP/7Ot7MgvCjZZv2i2VDeP2jNno0+Be67AmgiyEv2I3WY7Kl7UFK4wEKmfAcc06/coKgjk9sOXT2ez7PZMzIxT6fQe+8N3OwQxkNAb0OkwSg6u0HJvK+zDAML2fNPqhQ2GV5Od9d4RVAor2ESeyWdDCTArCnVSPxgRrf08aDYmhCPtB3Ai0rm/m98REiW5R5VWMZ5nmsKUB/k+SuElMEEwMfk9DdRtVscctS+4hQ9qBRauADKdktyaCLp65Y7HRmOT9i/mATd40fvs7V/3pCVbKY31bZBC8M02AWa5Bd8zKilU6YJoO1iJtpcDNnYI8C0rJa+cXnfnPJ+w9I4nraZoYsO9ErFdBHO+yZSceoGEwPRsxGeFs197r9aE0Sqtm9DLyTKUooxh55Q7zaoJSVseW6c1TfAJCF9IsW/qTI1t8J3FhjCTMos6VjNRW6a+SoFsBg6rOYvzvQa5U3lruPXs7vWkAY0yQWht/cK6kkud0J5JcIZ42gv/QNtxf/fTJUFmL8Q5KNbtVW32vvdapvl/B4JoPUpR2JaGI8FaHyUh9ng5V2Pv5NA3aTYeVSR74e8LOUpuAxIemk0vh0In0JiCkH/qOGl3tJIak9/sQPEqxUltahDOUFk5z22X8jk9PBHzVDxOFbNDgLllGOIuO6IjN3n5eMVc2gh8YHQTcvzxc/mOXeM4UPnnux3JjkKBJ0+H3mzgY17d5lyFbkSSoEnV0d7UCieE0JiNZV83bUTEwK7TXMSivx3OPlVJIxf3k4jwGJzAbWiENnUvCI= X-Microsoft-Antispam-Message-Info: DyOY1eXJjJP0y0Qi57JO6Yfx0KAFAslbVj0qPJVA0La4UWjGSWQWTuoiJUMIcjO+olaPyUyaOoqRYqGLWkIDIg/6bsqWKJFbSJHXz3NHSlLiVwG6ucqqsZlERSTHhvg5zMoM8JkxHcqvMgXPGV8iJXqqHFJTJqD9O5ZLEPt89lP3AdtCM6ui828gPXUr1uCfGGbgHY2d5cqvP2bxE587hoPR+x6t95UJeq0hcjKgQFBa/yjRSLOge+38UCT6OMYPG/t3nJMpLnkjC4bo0BGEQz6SCeJV1vY7IcdiBAx5pYtzcJiyATaWNZsIcy3UgGWG0pHjl5/Ey0CBepigk+f3YzPHOO2ZT/uNbN+/My86SIo= X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 6:yQ307bE5vhY6jMjIl5T049JPq6wkvBwLMfRlKwy0cNfxKriPDZ26JY45CbZLJq6AtmtY2TUyzkvVgwNfnSuwmQmTmzbJMvrH5Uv5jwBxtwwqDGgoDmKwrUL3Bu4eFGxvE4maYvKe+o6OYP/73PwjD3+UmAy9pKJpHJKaiOeEMG0uAka5bBhx+Ga6t90aWVcSSdIwPjY1H6bw2i6+RuJVefiixI6k1JqzEHB09dM0z+njXrGyPmmL2/zQ6kYmr6MCulNUsVu4bxrBU9uNxH1dP/Ge4Rwls5BZuTxn6QZz2yv6wdOhAZHktl8NS0ORN8M1hbyIUGB2X7iw4IG5MI6Nv1pK16OM9cCPTKF9JOdjVazkuAgyXPT4XsgQiNFhGmXSyax4S/Gc88ZCEeGevbYkLO+iJSrxsjIIwSPNiwgMEpx8ZkjkVITnV9364f3Ukx4cFtxtwmKMCnu/ITlhXj+PFg==; 5:2eIlXYpqdMTMzjY7slahtIZHiL7qtonSfUwM6rlajagoUVCgIgTQD7W9zngUqzPNk8ECvRmSwjl6Qn3iJFHBC7ty2S1L/T0HLOmliJNFxpoq2tEMJSOQvOmjG7tleJnlOl5Qurpejk7j59o6WFiAO3ShQUxtC230WfoGSG+pRW0=; 7:keim8b+97YmYktxqdio+VHjZZKOUJB+jJUie013WMoUCjLp4X3gbskW3o7S1xf4Q9M+r3J/gBTyD6W28Etw/FEDnUxqEmyaL9n5LZWnaL0+M9PHb1CDMgqLPnKKRercIHmxHryZYaH0tYltUSCiAimd09ncHyFpFEeRp1GRJrLk9G3/ZdKxNiMy7YQebHAPzn6r7PgPIOjEveg6ZzSqup5x9XklfKuK30B+2l0IZCrGGQfxS5Cyraq9nxt/XT0iB SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2688; 20:DOU/VkZuzOjdRmIVR6/dKloxbcPOsiDg/j9jQ0e3HShGYqeI+S2N9ITCfWyaNrSt//xqjbgLIy6g4r+cTs4VbDg4bpWYrHIqLdgbmgWeEW1iAONzLynjnaVMD4gDekvrVOzeyZH5wy7uJmN4tilEBcyfnxILF9VYhvJseWYNaLJmDaMbzAf3KRVBscTz275Jaa3N+qKZhDhkergHc3DukEYQa2bF6LBg8589YrvZyaLZG7dCxkf/weD3Zcv4pOQK X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2018 16:50:12.7369 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bfdbf097-8578-451d-fe98-08d61806a4d9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2688 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.73.82 Subject: [Qemu-devel] [PATCH 6/6] x86_iommu/amd: Enable Guest virtual APIC support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Lendacky , Brijesh Singh , Eduardo Habkost , "Michael S. Tsirkin" , Paolo Bonzini , Suravee Suthikulpanit , Richard Henderson Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Now that amd-iommu support interrupt remapping, enable the GASup in IVRS table and GASup in extended feature register to indicate that IOMMU support guest virtual APIC mode. Note that the GAMSup is set to zero to indicate that Guest Virtual APIC does not support advanced interrupt features (i.e virtualized interrupts using the guest virtual APIC). See Table 21 from IOMMU spec for interrupt virtualization controls IOMMU spec: https://support.amd.com/TechDocs/48882_IOMMU.pdf Cc: "Michael S. Tsirkin" Cc: Paolo Bonzini Cc: Richard Henderson Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Tom Lendacky Cc: Suravee Suthikulpanit Signed-off-by: Brijesh Singh Reviewed-by: Peter Xu --- hw/i386/acpi-build.c | 3 ++- hw/i386/amd_iommu.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 5c2c638..1cbc8ba 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2565,7 +2565,8 @@ build_amd_iommu(GArray *table_data, BIOSLinker *linker) build_append_int_noprefix(table_data, (48UL << 30) | /* HATS */ (48UL << 28) | /* GATS */ - (1UL << 2), /* GTSup */ + (1UL << 2) | /* GTSup */ + (1UL << 6), /* GASup */ 4); /* * Type 1 device entry reporting all devices diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 1dab974..5defaac 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -177,7 +177,7 @@ /* extended feature support */ #define AMDVI_EXT_FEATURES (AMDVI_FEATURE_PREFETCH | AMDVI_FEATURE_PPR | \ AMDVI_FEATURE_IA | AMDVI_FEATURE_GT | AMDVI_FEATURE_HE | \ - AMDVI_GATS_MODE | AMDVI_HATS_MODE) + AMDVI_GATS_MODE | AMDVI_HATS_MODE | AMDVI_FEATURE_GA) /* capabilities header */ #define AMDVI_CAPAB_FEATURES (AMDVI_CAPAB_FLAT_EXT | \