From nobody Wed May 1 11:10:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1500017358614801.6567332931808; Fri, 14 Jul 2017 00:29:18 -0700 (PDT) Received: from localhost ([::1]:35946 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dVv2K-00048r-NI for importer@patchew.org; Fri, 14 Jul 2017 03:29:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59112) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dVv0r-0002Ya-Dv for qemu-devel@nongnu.org; Fri, 14 Jul 2017 03:27:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dVv0o-0002iD-9P for qemu-devel@nongnu.org; Fri, 14 Jul 2017 03:27:45 -0400 Received: from mail-by2nam03on0057.outbound.protection.outlook.com ([104.47.42.57]:19184 helo=NAM03-BY2-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 1dVv0n-0002h3-S6; Fri, 14 Jul 2017 03:27:42 -0400 Received: from CY4PR03CA0105.namprd03.prod.outlook.com (10.171.242.174) by CY1PR0301MB1194.namprd03.prod.outlook.com (10.160.165.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Fri, 14 Jul 2017 07:27:39 +0000 Received: from BL2FFO11FD036.protection.gbl (2a01:111:f400:7c09::168) by CY4PR03CA0105.outlook.office365.com (2603:10b6:910:4d::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.13 via Frontend Transport; Fri, 14 Jul 2017 07:27:38 +0000 Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11FD036.mail.protection.outlook.com (10.173.161.132) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1240.9 via Frontend Transport; Fri, 14 Jul 2017 07:27:38 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.21]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v6E7RPn3029590; Fri, 14 Jul 2017 00:27:32 -0700 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; From: Bharat Bhushan To: , , , , , , Date: Fri, 14 Jul 2017 12:55:03 +0530 Message-ID: <1500017104-3574-2-git-send-email-Bharat.Bhushan@nxp.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1500017104-3574-1-git-send-email-Bharat.Bhushan@nxp.com> References: <1500017104-3574-1-git-send-email-Bharat.Bhushan@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131444908585658219; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39450400003)(39380400002)(39400400002)(39840400002)(39410400002)(39850400002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(50986999)(498600001)(8676002)(72206003)(105606002)(2201001)(5003940100001)(189998001)(50226002)(8656002)(54906002)(356003)(48376002)(68736007)(81166006)(39060400002)(626005)(2906002)(4326008)(53936002)(38730400002)(106466001)(8936002)(76176999)(305945005)(2950100002)(104016004)(47776003)(50466002)(85426001)(6666003)(86362001)(5660300001)(7416002)(36756003)(77096006)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB1194; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2FFO11FD036; 1:Q7aG2UJrJQ7uKxAkcZLXWp69HdcbFeLWenEjQV6B74?= =?us-ascii?Q?xFlUWlRIcYBqTkhN4EjrB+6IIJbMo9AmjJq2kOKYRlBGR/drE+GfnRxxfpZr?= =?us-ascii?Q?8RbPy1YAMuJ8/LA0rpNcqEGLC/YNMW8B7wWm9MwtlgCn2LotXxa9QPkXjlwM?= =?us-ascii?Q?8soSiLYCbs01U3e90ovPfv6RpghzFiyNwiAzfCgRl3995EmwNB88ssbz5X1Q?= =?us-ascii?Q?hEXoSPbX1BzHi6sjfjAyDDKwv9wyUdoMndb7vZW09W1918w27eQQt8YhitEx?= =?us-ascii?Q?AoHu1HlpLOpvAAEinPzwDdekdeM1K5r+V7cHQHNtCd1aUJ2FLrhUJv0gOaS/?= =?us-ascii?Q?30LuiFeL2EaRBqsAqn0fRiIAioqAOvs+F7D+GliVRMEsG9BTxT3msBpgCKde?= =?us-ascii?Q?R0Yv1WsWeFgXkouxIKf9Wq83Hje1T2lqtfBfnUklGpKPSwFEuII30RZHkfIB?= =?us-ascii?Q?aN9u0cO0FtTiWbV/I+NwaRBj4VlxaF6XPHoMu4l0N6ipdmd6qg7tNXqWAKJQ?= =?us-ascii?Q?EL8fDS2+0eF1g/vnSsEhAWyJ3CUxStGu8qBt2X9syo9lgDjjru4LayU5xB6h?= =?us-ascii?Q?n2Mg5JH7rT3TUNSJX+kvA4R4799kAjAmZ0gIpLf5hT+j3Sn62LD/055D3yEg?= =?us-ascii?Q?pj8onJ5nPDPpteP6FBV14T/HIgFj1ZM0YGv5B2cDrszrzMwVRSPRDnuRzZxl?= =?us-ascii?Q?hr/t8QXprg27o7aLbcdUqBoTezehc9g/eeIwTsJn9IZnVL2ueJbUO058xRBi?= =?us-ascii?Q?cYlcirbhZMC/TjVNc6eKYBR/n9Qwhg3LSAJj5WgmLPUGEXroS+ks9oRySK+3?= =?us-ascii?Q?bAiAXftuHzcwpadzruAUUv0WBvgMpzVNMELa0fi0tFCvtVEsvbo4wh+zgtYU?= =?us-ascii?Q?nmVuHDZdk2iLZO7wtf8kl/ELy8IaR0fhU6TZfzDr472S4a9u95YgSKBDipfR?= =?us-ascii?Q?iLYkl/EtD2rOYBR8RaT23L2R+ooR+wMnq+tsZOH7YqnTwSROp0hrjyjbL2z5?= =?us-ascii?Q?BWetmp/OpPR9rXVXasdmBDV4VuEuoQUYk1mkMqZvRs8XB1jZQS0tZVJrwang?= =?us-ascii?Q?5h62kV54TfpGnMEws9HA1j27MP?= MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6e1d5b3e-06da-4848-c609-08d4ca89ce3c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY1PR0301MB1194; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 3:vyA5sci67DNQFGIai1b1JQae63S0VNIOIC3kr6e9B9HqQ2VtwfyqNFjafCQv/fcn/8NEbM52xpj9DQQYS+DIJ0yvabO+S+DcKJVqPQaXsk4f8U4IkbDwyB3loB5vNk08mud3VEiRjxUmrZ7unaUKknDrNUeJ97y6+c2fbFc9YLUGkDELhhr9VZI3ivKuAcaWJBJuYeOfeg4RMQVlfBEaQwMvRhHHy/k7HSQsQXYMLbgBqbWWHziTnrgpP5M+BJXwG7qPQlKsIlaKfkcq1FG4Kaj7O+YxTKpjuiYYHaCuPbBMpChvkrdPKgBHERJOnMESxkn86FR60JC0cLqNv71MPvvH8iwSo5B8Mrq+puEI7cLqT2pgcWyfXKCljDkspT6Af8FspLUPldfcEK1lTfACoScq++GXyl8rdFn9/GwSaQv6aYmn3d1oHj2oeJN9khxE4NsmNnL8c7z+1GkNtPOk7OhV+1PxaIhccLt/jZpLBrqsUb0epS2W6ihxzBCLK/WGRVNv5MgqGVOC7C8CMQlAxX6eL7NSdq44aocX54by6P0wAfXDIoXf5tTH19qp/u+BlmildGTjhKq/Q3qKIoeiKrBOHrT3BhoS6Ln6R5a5lFUkBVtlLj7k0ZhgFCNLn5/IH4JiCixFsPC9yQWT0lXb9hjJ7CU/maeZrr/Wai9akGH1ofCmAOWzIamqN8nxcjeSF6J/p3DHMSvQxWv+7u/E2TnN77j6KKEF9MEGgYcKhIxk+QZ0+QB9QlV1uap79+m50iea9sjq30g++ijgoafK5WCXdVVwQaNPAsRSPcDXcAquvs3fIYp9AoeqxXMJaOzfTwPM3uDhwkXCNAaRjGSa2uUzwee8hHFwWU6DV840GJ0= X-MS-TrafficTypeDiagnostic: CY1PR0301MB1194: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 25:dy2tbfi+G+66GZmoFghKsnmQuyNrG1ykK78cNwP744XR3po5B/pVHgrGGnMlBM697wdIBC7T4kxHaTgSGcGvi3sIff5GjPMgZ5M7U4peN/pDjcV0gVbu0HaTp7z6XDkMd3CSdpJU39bPjzlHZzb8cgPGFNP3wXvuLdtpcwDWXEnevjdcBfnsz2U2RX0TFmhGqjX22QjQduu9KG1538xqYRY1DhU9icq2SvBB+EhmDjRLR6BrK18cGW7jsQmo7pIRFteI7hPnEoKh52Tlr+nmooCy9q4E6MiOfE467edPIzKkX1dgUuzyJRNWHpqXzGy+XnSVq1KVwnFbKFHR3/wDZdedkbJ0CIT7JNOvQnJ+IJU1yFJ/ajjqAyAxTrbHd2DmrpgvwsgorMQgpLyX8jzY2iLy5wR3787wLyAPk36Z7wzNooeLHRvsSZ4haUSttdwvMDqQ3ANdc8q7reBvy4HTRXYheP5c/SHdvpA+oW6JSX5tiXo8ItHgxCvMt+1Wa5pBGqTLk5kd+O/ce4u+13Dkwa0DBw6ZsJHH+zANWkeoKN+ohUl64K6/bKIY0QDwUnMi6Zwp8QE+dQ2WlQxhakdfMfBYFRvc/iYjWUshLz+Yk3iJhX8r7o18WjHH26LxoKj/kYOGdmy4QASEqZgXqvdzim+il6VIE1PdYWrBLvg1ZV2vPkp16Dsf6c8dhAYhYzaNdsQrIysRtwq4Rry/Wjmr0cuoWDvmarzlhgAZawiRVZNOAQwLEKqmus/4FP3pnLvd3+5SlorSPXpZQGEvqRI7Vd2vXrDa1pHc6XMzBaxewHewVczoUDXGprrjI2lb5brOyd+ARxYSOGtG8urwyFrlXpVLLZcnJGb9UiiOCDbGzSoG40NWt/z/Ly3BB8nOJBQ0Xrr9mf7T4x3TermNlKQm+vaeArPFkOdCbFq2qXb/esY= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 31:5Ql+aB44zSxkvSm35YQ11I3lphZ7eebtIdsWjdTcn9ldHM+qUqy6/52F7lQ8aYPxHe/6jQqLMeK+V+B7DUW9xuhsEppntnGM3E2nsXO3zw0QkCFVDd7kAuuNbCnhUWt+Zo1U2oNOazlGj02D52iXkxNFAzdeThU8WUvtizAYDY8mkXpITNti37cO64L3nVdqDkevMXzxs+rrBGbnWgcWGJ/yDIyqjdxqjSdyE32f4SfrTjYBNbTIrhcqPei4IUY80F5SL+t1WGiCbN2aaVFWpYxIpAcjkK7AZ7dra2kKQrgGHU2Ioe9iwYai5UaE+ipGSuZRbTvmFpFrYM2haP0Gpi3XMnbp6QMAA0JUN73OI1mETmn5C8Zh4Azur1r1+SNdQ5igb3PesaBaxTAqe7KoqLBArVXF2wnKmtULO12yr40tYPuObve1PsqAr/91p15mHfbxe5yVq4Csjy6SZ14F6SF2h44/KtU9waDai38b9+I1ZEcibKshRmlA5NRQzxjW7PK/bfowiZ7yl0ZStcnueFxcpeoshJ9/aZ4eX25mV3+6KjEyDgW+H+pB+fJ4rWX7t4ayhzvlrWrrydlDImD6zkwYifaKoou0+QYohnN7upFulJBYyQsVahmHsrsfw+IhkbAcyVr0qr3OlAVBJsoPwFnEA3IH7YnT7+U+7CLJgwePeNvZYrbdGqf+FhwHDW21Ip2zxRwsCL6mSlcM8HeXhA== X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197)(148574349560750); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(2017060910075)(13018025)(13016025)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6096035)(20161123565025)(20161123563025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(20161123559100)(20161123556025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR0301MB1194; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR0301MB1194; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1194; 4:zuJaI8ib5IOAiw6KSB1/r3iqPszsp0O5QaEfJWIb?= =?us-ascii?Q?/lwKBGj6zb4jxS5NxzruYVWwwgV0vaT3DEt09uUi3mFDIW1upzvjncDyoI9B?= =?us-ascii?Q?GLW5+Bxcms8mwnpryVTQrBIedmlevft1/Pez3QhGZjWr2smOs9aVuJL9iFEe?= =?us-ascii?Q?BV5CBih9i9qaCPONlF1hmWXL0WiiTIoblbXcdOOSOsvzWSW5ot1L4qJ+s2fV?= =?us-ascii?Q?8h5x3jj4SDWY4mAHBVWx2c7xADTgAjQ5k0HcTqEXynn8WgLPUrS6i7EbaEIN?= =?us-ascii?Q?yzf5KdWxIYEsjDqMcs2ucbeG8SrEi//1O+O+BO6JB9azGd8wM3BxZeYxNdnG?= =?us-ascii?Q?gqmW15C+0NhdULtHVdGipKMFVOoVP60YvGHo4qJ6vmb94dM419g4XfMPWmso?= =?us-ascii?Q?b6yPxS85BdjJzfoBPLcknnGcbpd56+l5iX4H7vh0cr8txd5qeylFOF9dDwiE?= =?us-ascii?Q?BucxbNrpQFg8tiZ6dmzIP9X3TB+RaByEmLvVldA8YvdiHVwx+KZYgPyLvinm?= =?us-ascii?Q?nOHqzMv+ors9st8hlDgr9yF57Umfjos+pWF7xQqpkAMw8Kq1MO+271eqNcy1?= =?us-ascii?Q?ezUeM6yLa/sv9KnZS9HSRYU0oF0srzh3RWVTHeURbmrulrx7eu4i5bt3aOzh?= =?us-ascii?Q?AEqLFmqMMBbJJ1LjO7J37y3oh8cPJzNhtB6jC9Lvym/mx6f4/klC3/ICAhpM?= =?us-ascii?Q?k+nh+xXkOOnPf3lfzaCljqalGKM9pokMOJunN6u4+eS+57BNXfr3mXBKcHbO?= =?us-ascii?Q?/XWKbxf0KtxuyDPqOFc+1t+8MbW0hqeITQq4ugrYk149mspsEPl3lfb/bSHG?= =?us-ascii?Q?LXN/zc/cAFtJftyOPtRRXAjdmsWwa1ECEKaZK4Qffq3sYYAygHNMLu6oLUlO?= =?us-ascii?Q?+L1ZyMSAl41/d91qZ8q2l6RFqkjBNQT+cbWB6mli00gs9kqKV5HnXae/5FJ6?= =?us-ascii?Q?aT3aC6ApCrNq5jI9hJUnQfF/n4WCz1kqy04oawJAFJzK8Xn5x/5E+d+3wtDz?= =?us-ascii?Q?Tgo23kPq8CnesSPsa00U5sW/Rnd/QIRFM8i9Afo3QCicUVEG+pfOv58GMQ0u?= =?us-ascii?Q?ehIr+fSOAM6vUIMcss+yHMN1n43HNIaImDd2Lk2M4OjPO0jnEZxilqPdCfiT?= =?us-ascii?Q?3cz0RquB4Ug4DMAgQw/5Sc/btwtfPr6p9qatN4nwnQkm6mbLhCid6v1afU6T?= =?us-ascii?Q?FQFfxr8z1Pqm0r/vlnOanO/at4BjXVk98DkxhfQ3huPu4W1m+z2D0AI11mzw?= =?us-ascii?Q?3mpc3Tsl/G4qyyg7fYhb5RI4qD4hwHgPLFSWFuk3WQa5vqRUeS57dZw+VgXx?= =?us-ascii?Q?k5NnxeA0QZY/uaKqVjEZsvZOIUf1EnGKwIZLu/cEuErz5dIHWJ+BpMZTPkKc?= =?us-ascii?Q?IuSKmQ=3D=3D?= X-Forefront-PRVS: 0368E78B5B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1194; 23:9+k9o4JJTB+RT36KKutYXfebn3lv27KgKLpFIGJ?= =?us-ascii?Q?Qkft19+nj+/95EhbwQuRPB/sL+WlgJdISO3YLo4p9IFTK6e2qt4lx4kzVHWn?= =?us-ascii?Q?JYJDlK9efRzerZ+RhgOpJZe4+IfCp3Tc2MsXCYoKrooUh7fawBPdQnIUJ6mM?= =?us-ascii?Q?yf28z4jDDURMoavEzCpNpyXUSQxyGyqOZhgaiCYUVdqIk38+VdIJ3jExYH63?= =?us-ascii?Q?qA500Lvz9LIgSWOfRVEvNI2wHj05dfYjzhLJa3hbTiCrElTnebSU4Sd//bJr?= =?us-ascii?Q?pIBMxNY5xOJS892CCQjCOV8LYq7QBbJTOON7xfb9nmlJYMRzvS22bEDI17I9?= =?us-ascii?Q?FkSEY7jLUvF6G/9HMMpugFcS3zMH2TZHZCeKrb5im6RVf3gtA8ywQOAYit2D?= =?us-ascii?Q?enZlwlBVNDZMI1qGlh6i7LLaGN4AJ5jQgvJxTMof6TE4l0CViDb3le/+xOCo?= =?us-ascii?Q?XEJ35J1OK8R+OR2d0XXlmIa5rAchk9WTg9+FvNQWLjd6UT8u9VLVljLZEgKU?= =?us-ascii?Q?dEcAnZQ1AG7rypxy2Xnvr158SbFcSOLervoNOG/Om5U3C/Y8bleAw9m1klFu?= =?us-ascii?Q?TZRrr4/3k/QLU4RcyHcorCl7ghyST4U95PAtHkXIdMdVt4Bax/8sIL35iIWP?= =?us-ascii?Q?3/uvZbsD5drk7ukIKPe9HN/n8R3Nbv7NLK/E4i8mPu3VCRiWip76GkLtYpxF?= =?us-ascii?Q?evORbNyp8FGKC1Bcj4JMuVFGHJ1SFHVrB16zWLMUeUhHwf5dIQCa9NcRf0ku?= =?us-ascii?Q?cq5E/rFgqRLV24UEnVDCNEKUBGYo3abhU6muvWVXSm9bbsVi0UL1nnJUXXx1?= =?us-ascii?Q?AQpS3qmp36F1Y+wXPZphqzClkzZGYYsq/xyY4oKsGWSmS2YD57zXfNM1gcJ6?= =?us-ascii?Q?AM9GZ9zpJlE77ptQzePfYJXPklpyOAYUci4CXPfVLzcLE3qwMmd68jVD9HXS?= =?us-ascii?Q?FzfLouU+BufTRCUyX+ffDO26hVYL2YYj+e4/I4vUcWG7EJN6Bt2c27ZuQC7H?= =?us-ascii?Q?w7vz0itSJnDRnW74W1kbM1g+Pp9wpAhZUt0yfglOi5TpnMvLvLJKflKqE1fg?= =?us-ascii?Q?jS3JizgfIku+48CZOvBZaQ80tuElH6vQRUIsXut6mWvObtXeh3qL3GBkx/LQ?= =?us-ascii?Q?VK+tgACM8qr7J4SDZHFUAQ+2cw1/U0pnamFupStOWBv89WQJw9pOhSi9gqzj?= =?us-ascii?Q?PsoBkKt+C+qRnl81E5banQkNZbAby6dzk3RZPaYIKjy8maYZZ1HAUJPwofzb?= =?us-ascii?Q?7er7wUfiAMP9GnEaWmf/5WTXV1zA4jnZWK1t3rZhUMdqyEUmOHB2QX3ucOY/?= =?us-ascii?Q?sQg=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1194; 6:xITpceC6Ac78TN1JjzAGsBMl0XHTB3ln+A/O4JNj?= =?us-ascii?Q?brW+3DWGwRDdGu9IK7n2JATUAgpW5KFSbg67J0NSEPBuV082ZP/Fo0hIDWah?= =?us-ascii?Q?dbFpoe+eFKGW1zHpqmkplGFoGSupSqeDF8kRafYoQOAxNfhbkLTKb+6iQ3wr?= =?us-ascii?Q?t+AkdG2I25KEoRUKQOGz0oFQpyBAU06DyDKpz2qWa4A8QjDg9rKL27PHNrQi?= =?us-ascii?Q?7SOW0L2fbIimLzzAuTbi+oQngDtovZuhywtQs6vJM6oOjU0OetnVfbK/Hx47?= =?us-ascii?Q?yWn6rbA9g3JfpZlqSZxULrZUwa0yvbrYpCjWD8+rVkSfBrLijR3yIRndVNpk?= =?us-ascii?Q?hwZy91uM2Wh0IPdheMeUuQ2tMUvJEkcG5NsFfH2ePRgZvRlm/lrskt6RSYSk?= =?us-ascii?Q?iMr7v6qBhQdEyIDHtGv2VAuhv1GkO6bi6V+gnty83k1tHn5bE730hb4BlC6c?= =?us-ascii?Q?VFKVYA3OYYQm2r+FqsFzziJJcnHVIR+f5JmLbUT9uQUu9ucSjCNexLLfTMz9?= =?us-ascii?Q?YK4dW4+OMfIkeD3OPg5xAqdQ8+7HXWN5ejCmssTCpAFvU5aGBhdhl7/EsJFZ?= =?us-ascii?Q?ZfgBP5PmsWawp0UnE7gU8hn7ikmZz22qCjZApAWIjODTvlVG5vYGm932Yc+G?= =?us-ascii?Q?ano+ZDM8KckMvGIyM4Qj5u2mAgrmkLRrWnQhvuul9IZitxKJQ3Vwz+4Wsph6?= =?us-ascii?Q?ScsTB9L//p6EibH6R1x29MPoIbb2n3ELsvWXsGDGLj/KfuXPCUHY1aPcU3J1?= =?us-ascii?Q?vKW4E22fDfSGOxWEdpCt2/ba4hTBDoKKJnudSAl3pWYqZDjQIjSV9E1djUp2?= =?us-ascii?Q?7gQo0JrwjjN0Ci3cpWJ63z9A4WRGXeJrLcgBaE49e3YtiURNlKYHxdPmOpoW?= =?us-ascii?Q?iJwxFAfVgPrT7r4c4iavlFQASFZLArNihIMO1+yNOnVw0yds0tw7EUssZQ7+?= =?us-ascii?Q?vnEqg1gReX6L4Akp1hWvLVknsyphMoABe+FMEJHgMQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 5:ONR2uApW94/3uJSLaXFMTXgM/DNfHy0M0FizUjRkdz9qa0+xdYpxmy3daFgaC290GrpCBAZhGlFjUmf8MPgvg/jJzCCLFGgtMTdvmKADl7ufs/NVKJsKcjyfi8mzWkeQknAcNzRvvCT6hO0dweU9bA55cORirhPzOT8g3cEmtGkYzrrsbxepXFdSdiCcCLKGK4qEL4nRE7ejPNutP6YRozzlskC1OihRglmjluHnpwNolaecGDK3TO/Sa7ztYM14CY6LLHxbI+RV7Jh3zPI3NqrjmwQxBgMVaYKnqR3C2/GcxW9uLjYMFmkBSksdbiwiTax6Uj/ZfcZWebJNQSS3fv2PbXyhJXo/dWtBQddIZKgU3SKwSfnjzskz69MifMDIJBtN/EN8okRYNM2ogo2s903lRVUpV8PoXBKIBepOT06lt5e0tYOOtgwP7Tub5C6JrMo56PqsgDdZl3QAaaoARfiAqQmKwIPDw3swmWPidfhmvaXWym3Ln6bNVQ4clf9YVG7cXijP56pF1rwzIOCgkg==; 24:XqrzYE1l3tQyx476ppi8iGzx4cw2WsjjjGaPT/r7UuqyfclndCHE5aAsZ2OVqP30gGc9lrSK4QslTGKbu2F+0CgbuMExOhTqCJSoNtWOymk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 7:p1u+rSJURDreXPfOk4SK+0j2f54xFHi4cjIlTUYeKgifibgGX9heZRRE1Pje+Auh8HwoHyIEVh5AHpCv5akj/lvXYCyrbdvtwkc3QUTegaP7Js6Ru9wZblqAPIwVYvmQeAK7/fzlyPDSvYrTTwn00L2yRgZh/ikp1HiMD6RBEQzZLl0n0xpssR47avA6K1lsdJl7p7penOehH8Nr3d+x57rQYr19C5zJDMClKZa9jdY/s7H0yEvJKK0CVTPzqRYeuTgbvoOY9gMvjpFRE0rqa5NoqfAn1+YO14YkSLBqaJUTayHH9L8QKqNaahZ2bxJJJrDgI918Br4y64abMyk/qY3gfWE/K6Aq6T3DrOZ7IDT9MwxCl54aTWSi5oiaBiTcZH6cOLHtMzHLsw+VQ47O2gXafbbxyCPSDqfo5aB1djZLNgM/Lq3D6VHp1z/BN5/5QqtWre2u1XiktUGJeXbdrGWjYXr/0emoy0jx7t1M/CXpSRo1bnynwFk+DxwyTiPhayJiyrLAxnd07eFLIpE3mZ4HZHWDpBd59PS+P9HrLV8EOEwNcT8LplCEh1AJCIcFYCsKHhLTRE8Ev2gPPlhi/sLBzQe5y2zzFTP87QWCTdgiIcvLncPgyACDNgt1CC0B+bXA3cz/SIXfe8BclnHQ/vm1yO0WXU0Mr9Z2IHHQiiKyP+9gt9CWf4wSKQx+jusjVtCplqpm7OwWwpZUFTUAkK2qfH9S90SrEPAnFZbjtJEzcPuOA7BSPhiv3fEebaFN50xczxRTCcoOonmKgjMJgaDZpQWKFee005QNeW8WBe4= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2017 07:27:38.2694 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB1194 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.57 Subject: [Qemu-devel] [RFC v2 PATCH 1/2] target/arm/kvm: Translate the MSI doorbell in kvm_arch_fixup_msi_route 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: wei@redhat.com, kevin.tian@intel.com, Bharat Bhushan , marc.zyngier@arm.com, tn@semihalf.com, will.deacon@arm.com, drjones@redhat.com, robin.murphy@arm.com, christoffer.dall@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Translate msi address if device is behind virtio-iommu. This logic is similar to vSMMUv3/Intel iommu emulation. This RFC patch does not handle the case where both vsmmuv3 and virtio-iommu are available. Signed-off-by: Bharat Bhushan --- v1-v2: - Added trace events - removed vSMMU3 link in patch description target/arm/kvm.c | 25 +++++++++++++++++++++++++ target/arm/trace-events | 3 +++ 2 files changed, 28 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 4555468..5a28956 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -21,7 +21,11 @@ #include "kvm_arm.h" #include "cpu.h" #include "internals.h" +#include "trace.h" #include "hw/arm/arm.h" +#include "hw/pci/pci.h" +#include "hw/pci/msi.h" +#include "hw/virtio/virtio-iommu.h" #include "exec/memattrs.h" #include "exec/address-spaces.h" #include "hw/boards.h" @@ -611,6 +615,27 @@ int kvm_arm_vgic_probe(void) int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route, uint64_t address, uint32_t data, PCIDevice *d= ev) { + AddressSpace *as =3D pci_device_iommu_address_space(dev); + IOMMUTLBEntry entry; + IOMMUDevice *sdev; + VirtIOIOMMU *s; + + if (as =3D=3D &address_space_memory) { + return 0; + } + + /* MSI doorbell address is translated by an IOMMU */ + sdev =3D container_of(as, IOMMUDevice, as); + s =3D sdev->viommu; + + entry =3D s->iommu_ops.translate(&sdev->iommu_mr, address, IOMMU_WO); + + route->u.msi.address_lo =3D entry.translated_addr; + route->u.msi.address_hi =3D entry.translated_addr >> 32; + + trace_kvm_arm_fixup_msi_route(address, sdev->devfn, sdev->iommu_mr.nam= e, + entry.translated_addr); + return 0; } =20 diff --git a/target/arm/trace-events b/target/arm/trace-events index e21c84f..eff2822 100644 --- a/target/arm/trace-events +++ b/target/arm/trace-events @@ -8,3 +8,6 @@ arm_gt_tval_write(int timer, uint64_t value) "gt_tval_write= : timer %d value %" P arm_gt_ctl_write(int timer, uint64_t value) "gt_ctl_write: timer %d value = %" PRIx64 arm_gt_imask_toggle(int timer, int irqstate) "gt_ctl_write: timer %d IMASK= toggle, new irqstate %d" arm_gt_cntvoff_write(uint64_t value) "gt_cntvoff_write: value %" PRIx64 + +# target/arm/kvm.c +kvm_arm_fixup_msi_route(uint64_t iova, uint32_t devid, const char *name, u= int64_t gpa) "MSI addr =3D 0x%"PRIx64" is translated for devfn=3D%d through= %s into 0x%"PRIx64 --=20 1.9.3 From nobody Wed May 1 11:10:56 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1500017471192844.9614211217273; Fri, 14 Jul 2017 00:31:11 -0700 (PDT) Received: from localhost ([::1]:35963 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dVv49-0005i0-UB for importer@patchew.org; Fri, 14 Jul 2017 03:31:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59131) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dVv0w-0002bc-ID for qemu-devel@nongnu.org; Fri, 14 Jul 2017 03:27:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dVv0t-0002jd-Cz for qemu-devel@nongnu.org; Fri, 14 Jul 2017 03:27:50 -0400 Received: from mail-by2nam01on0078.outbound.protection.outlook.com ([104.47.34.78]:31184 helo=NAM01-BY2-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 1dVv0s-0002j5-Ui; Fri, 14 Jul 2017 03:27:47 -0400 Received: from BLUPR0301CA0010.namprd03.prod.outlook.com (10.162.113.148) by CY1PR0301MB1194.namprd03.prod.outlook.com (10.160.165.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Fri, 14 Jul 2017 07:27:44 +0000 Received: from BL2FFO11FD037.protection.gbl (2a01:111:f400:7c09::189) by BLUPR0301CA0010.outlook.office365.com (2a01:111:e400:5259::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.13 via Frontend Transport; Fri, 14 Jul 2017 07:27:44 +0000 Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11FD037.mail.protection.outlook.com (10.173.161.133) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1240.9 via Frontend Transport; Fri, 14 Jul 2017 07:27:43 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.21]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v6E7RPn4029590; Fri, 14 Jul 2017 00:27:38 -0700 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; From: Bharat Bhushan To: , , , , , , Date: Fri, 14 Jul 2017 12:55:04 +0530 Message-ID: <1500017104-3574-3-git-send-email-Bharat.Bhushan@nxp.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1500017104-3574-1-git-send-email-Bharat.Bhushan@nxp.com> References: <1500017104-3574-1-git-send-email-Bharat.Bhushan@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131444908641929946; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39450400003)(39380400002)(39400400002)(39840400002)(39410400002)(39850400002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(50986999)(498600001)(8676002)(72206003)(105606002)(2201001)(5003940100001)(189998001)(50226002)(8656002)(54906002)(356003)(48376002)(68736007)(81166006)(39060400002)(626005)(2906002)(5890100001)(4326008)(53936002)(38730400002)(106466001)(8936002)(76176999)(305945005)(2950100002)(104016004)(47776003)(50466002)(85426001)(6666003)(86362001)(5660300001)(7416002)(36756003)(77096006)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB1194; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2FFO11FD037; 1:blE4+HGs5SGeUwZVu5O0DWLHr/D6HgwsZyp6/qNbOi?= =?us-ascii?Q?ESUK2eflJSDu4SvCq8CDo5hnrNzFA/kGlbRLgUfzKDRb7LlC0W4hSy3ueHNF?= =?us-ascii?Q?rXaELbQsPiBQN+IV5WsTgjACco+A9CPeAaH7wZzvD1oaXCtzhMqZKuBC6Dj2?= =?us-ascii?Q?5YSJ/il683EWHGsFMRKqjAxVd5stf1AB4fKR/ZjRQY9ySvul7qz3SRU2CH6M?= =?us-ascii?Q?9h1g/ydkX2eFA2YSVA4ahEYkGukBYO7QlbV5fUxeAJoJk3geg6g08Poe+s8C?= =?us-ascii?Q?joUuFXnheZtn/EqYGw+HKnypU+ac4SJdRSEjUfGQ1W4jjOZVS9zkorea5JuY?= =?us-ascii?Q?ril0MRvgr9SoCdC7gubQ+JJeODaa24FLonxP8OFTLzvRUnrvPQ5BaWi5Gw0A?= =?us-ascii?Q?9KkW2JtNRi5J58NPWOVF5bhFcflz1qzX5PPK1horjS6Waunh+pL7xQobSI5+?= =?us-ascii?Q?ChKU4b0H5zGWncdG/GB9fK9Fwv1NKR6U4B+e9J8y8qIdV7J8Zd0ox0AkOX2C?= =?us-ascii?Q?zMpJ0KNwoZN7RkCfTiFMbTODMKFlO6HXPTyeazFWKlKLhv67Q0MI6sjS5adm?= =?us-ascii?Q?hy2wtXZddLjxmW9lHfGSo7cp0/GOceZbrq5ibJigj7io3sPc/Eqf696lk0et?= =?us-ascii?Q?R8ImIhEOw3XWfmBusOirCDd02wso8BD/q0QkbiZcNmhOrtacwLvlsZ81l0s0?= =?us-ascii?Q?+/4Fw9lAsLTyz9UW/NwVX1KUC9CYewxikV2+EvLKQD6jcYXa+hP5C1gOZBqR?= =?us-ascii?Q?JXdPLNl+23V5bD09ea7RYlAc14AXbQOtHEK0Vh7m1x+TUvr4hbVDbK60qsmK?= =?us-ascii?Q?1EXoOWSer0GYZU2xfHz3jg5WbeD4ToTBybcPsTtN7yXbedeGvQMjziyZLz9+?= =?us-ascii?Q?fAPcFCViy9DUBqQ0SPTlZLzuENJDuRvsiZ+/pj3+uWj2H8PnSWfsl/lyKp5N?= =?us-ascii?Q?Br8mKpY005CclKgWcqQgI0KyYRfbbmA8wPDeEFlk/JulFzLcCsogcQSiCZFp?= =?us-ascii?Q?Kyu8OgAPfBnrBWOhey84AWbKj2g+aJOPhKFXnjKCLqYyvgwUMBpjbe2tkAdA?= =?us-ascii?Q?aFm2BDLoaRx8bJRfbntsEFzrS9?= MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e1a04fd6-6a8b-4596-6979-08d4ca89d197 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY1PR0301MB1194; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 3:2eZWIpR1M57iHbP3gjJWLl5wqPUUpieElNKE7g1AFH7dSZSQR4lHKbE3vyLiodNdF3eEWPmepHMgAExYrSC4N9GWvRuMdGUdCeyeskNWDQCLNbGd/+C15MNI1pErvyjb7ndEt0RjUTvVmjmnBnNQasw2yaBrKwIlHrNa5u3Psh//QsUu3dBz0vZ4JSn4pQBXvsYYhP3uy0IpHVmihCXKpKUwGvYD3WuyZezqoUoUSxPja87x2KZOlDVhHFPT73NT3af926jRrtY0WIUVJtW69esXm8KFxT39uERLgyehLJvwvKZMeaygNZ/6Kwg5szm56H+aUJHvz/gyV4evTbk5u7CAGiQIUdjUWRUj1Rd/1wQjZBMvOxr2aPwvAy4bHgTjGzuZkF6hi3qtqB5dWP3N/o4iebZ8YgsyLEjFrCiKcd+k2ijKM5YA8C85IOhxnvv54b3AN83SphBfegwkCQC+nZN4FEtlV67/2rKn1NQx4l6gjqBWCce4W6T/r2qcIpDhr2KXtw1Gtmh1ywxVQVGtkTOKrWgK1vpsMdMDfr3oZkaM9ERCnMebPaj2j8DcjcXM3gBXtOTZ65/vu5rGcqJI5rA4LA+y6GUVRzu/PkyBqhj1LcI4ZEU1AfjVh5BPO/WfYvEfkYRvx6fTzld9DSvig/Ix9nMrUgZG4atZ5tLBEn6Ck45uTaGOTayWGFsIW3uPRqqFg6cz0fZ9QScBhkLilEvnMQkS0YqeDpzUO+QDsYstbL/1riaFoq0EdsIHOw1ED9jkEQWubHtFutf2/9FB+sCimw2LFmptyKT0s08LwegIeQsZkzi20pDectY0fqXB0K3VziZMmopBfdSRSdhr37ClZg1r8JSDxDZkca8MWfU= X-MS-TrafficTypeDiagnostic: CY1PR0301MB1194: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 25:Co8KGC3Xz63tcWJgbnt2xDh/qT3LqC2eOpokBPf2C0xA6JC0cWbpoBTGKuZvmPkWlNIPbJGSPY3RgRREXVzYx1eGXs2IKpVkB3iubjb3WKjhknIviHJZp6SfkxdHvjA9zmMJGllLwBHNhsUKwJZoA6pNC89PQvX/h/DIipMYB3ntszuNCcSdQ2+f8ADvKNzSOZqOYV8s51e21mDq9EHJ5hB9XDXP5OPvuu/9MLta9xfogdyAljd/d7focrf1pzA+J/Yus+gMOwck/R8pbJu5yff+sT94fADtNNZFFoL1kmEVTA8zSaFBPzoEpgNiZMeJU2uocMZh8COxj3xMvmg2FHqIvqgdimNgXysSPWCzKTMNnen+frmrxB0xcqjHnRmnOMfMtaOkO+9u2Hxtl9bWcLnLUxsR9MJ5G+hUCyFYBfg3KLyjH9A/2vycm5KInVNLzhSrBAswJ1MUpBN17fgxSSQTf6ZDigPQ/4gt/LFI1vOCbsqoV7HOPTNLMhnCbtFGt5D4pI2EVWMpCTmATOvMgAQ1iRy5ZUCVUFkj5lnyGyYPD3o6vQVW5rdse0bKLn83cClAWGKHd5A7A2+SBAeU+iFN59R+Ag7Lcc7TJhP+bRY6BHHLHTBrBVSd34/rbsWG5tYAXHmnhrwj1tiflYc/fGreGO6mBo2Yc9OWl4Aujpsceh429SP2+mTNbOTfu99gKU6kx+2kcuqvMZaZSJrOzWad2Eg0D8U2ghQIY516T6NTGuVxR0D4XLELxHc78xTYDZHc8reC4dxyka1ptB4kclbtgPwhA6LjXsJZpa6adG31jtFAIqV0uGJuqjMXMN/IRre/9AP/tfkKiKN4QftlR2m7URpR4dGtO0hHnom92LeGu1p90A5KVCilJ44VHH/poEE92JkopBxca5h1no4pGyz8J02CxqYoJSEQ3Z4Zo+c= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 31:cVQXlvZAXUigAXOKIyA1/m6y8h4yExNlE5BEKI2lnKz+lnCqK5W+JyN7HN/ZiDXRBD/hux62fhkkuBFkxBSXJXJPEKfr18WoU2gtJJr9/zXa5i0sm9XT6qtAkssanHw1kABx2L0LQnjz2o1Bg4yaHMijQswMvGOvKv92pdZDm8YQ6rWsorhU7LILCczEEOQnd4kLjBLWo0I+D4meeTZZ7d4MZxI8zxqGsmdN7dqhGaj26sq21nIKzzrrTQpGDpA91kiM4hpnoqU9zK9M0ZoCqOi13KirSYzMRSJ3wC9AnZm3aBnD01sgdpqcWXhXFr+zgO5aMs2SawrbJqynap5UOm07HAPjbPaIuaugDRkA35afFbVFaewPRMPfb/DnG55Ac0kttYZlEreNwn+5MRTX08ghkCqPol1rCqaVm7xF/OoCwEStMzJjz42hsdEhd3JUgwwvUDxTCP3DKi6XaMphoFssUe33Qlpd5MULPqcWhXkXFu3bZCXHJ7d7vx2H77no0F66wqgYLSFGFmG0y8vTvuk/WyYV68sRlD5XjZu8FGS0bS8dmHF/vaO8qlFFRYrhiDGB7VAQEIqIIyFFMNZr89ODnXra6Ay/8oCL+0YQxGglUpdXtpXJPqg7oU6wRw3RLKBpXrwoSXvMzrViHTmGRqWdMx17mc6Uf1FcefF7cS4OCMlJ5mKNA5n3M2v9INvFySJhAQMXCLY/Zpo3Iae8Hw== X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(148574349560750)(167848164394848); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(2017060910075)(13018025)(13016025)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6096035)(20161123565025)(20161123563025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(20161123559100)(20161123556025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR0301MB1194; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR0301MB1194; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1194; 4:+CK2cUsi9kYMIwKlcdU+z2bnbrWUjr0Pnopn/hvc?= =?us-ascii?Q?+JwlU4B/ovVShOIG2pCwBWeuoYKAVZF7wbLMuQEPFNLF6gktVcdYIH27X4yg?= =?us-ascii?Q?WQwpW4pQpeVjAZWSsFHjTRuuRQ+STPty5sUnPDSCtgIYqV84epbHMfO/idGb?= =?us-ascii?Q?bpVXZmImyDwDN5aiPkAjnovBC9LuojIBTfmrza3APulBIcYv3p9KRbKfeYio?= =?us-ascii?Q?YJxLwbPh3gSly4rLkBkmArd7Sz/x2o27dBZjBZ7J95CjJnIYAKaXz9Wrb7g0?= =?us-ascii?Q?WjGNaweSlOvdaypEOUdlF0d4Lfv/PrvN4Zu71SZo1uAKl9vYOQ68hRL0eJjA?= =?us-ascii?Q?TUFkI4rxVUtoZAlpe7gyANMRhnmnkDnjyQR/Qj81dBNSj83ujnJ5q2SPHChp?= =?us-ascii?Q?r4OqlXSZZhhPGFIn8mBtlu7lE6DuKmpT2DftpPhnccBwga89zWDFcIh/xiTG?= =?us-ascii?Q?ThAUBqZaUX3ZdbDTj/ADAVXi1/tyYR2OBy3MFoainKVmD18OU/+RdU2OEHg0?= =?us-ascii?Q?1GmXKVvOif7EcxVkFYDDh1zikidBOpo4sHBzRBvblcYjAtXcDClGYYDHt+Gz?= =?us-ascii?Q?JDpHlCDTksDsedauwIbU2vWdHCJKAS9j6+ytWQPWlqkQkw2AmbLSoFUU5jQ5?= =?us-ascii?Q?k0+lddkyXW6cmPPaRFcRDTEyCP0qlz0egUaNOPzYseWSJfKWLUyuBvTvWGjd?= =?us-ascii?Q?Z3VgShOWF6tDKJe40GTjerhfYSRC/zToiMRcu+mpILxbFGu7V80EUfgz7T1K?= =?us-ascii?Q?th4HDvTrOIE95Pi8x9BrDJCfLBydmhl/LK8dv/hl2cYERIj03Y3FIhHSFgr3?= =?us-ascii?Q?qg6FgChgNduagnDa3E5kssYt9rAUBL/R7xmNvUmOqUQS3Is8anjD3/JXj9H+?= =?us-ascii?Q?qzt41aaGjPT5r9ejLOKYUHP/jtYR5LD1FBSjVC9ms6DA22lSKkWNoRFHXU1p?= =?us-ascii?Q?PtlrTcMr99hFwsO2VlxGJw5o+ZS/eWCA7rLm/Tz9uriieK0Chal116TeaG0k?= =?us-ascii?Q?4bFjNRyHsxIwkFJx425epqGByhUZlKFyBcLHBLViIDzCV4UAGeZwlRds+uFP?= =?us-ascii?Q?sGP0FdNyw+MoY6Ubl+AyFGhmA7b5dPs4vfeu/rWGw4884EertiyCwoCl1au0?= =?us-ascii?Q?e1WQTuRJenPQRp/8S6olW1ZC5wHxOVZT5Z8PFjmqO669pqxTezeBeOiL+FSB?= =?us-ascii?Q?+acpqC23BM59JRh9p7YEdCZvPZKB1SE+OIO2nKq7lAXodQgZxpIgQ9GCgtMs?= =?us-ascii?Q?CSrIdyNE9+LBLm9m2l9r+OHb2OXReaEUD5pcsseifpvXWdx8n//rVnRsQ8yx?= =?us-ascii?Q?LInVwBRy8q+SlyXhk8mv3UcTAOmA9hAcjyz2FUqrNCZzG8c9H8/VtMXElubA?= =?us-ascii?Q?NGN3jw=3D=3D?= X-Forefront-PRVS: 0368E78B5B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1194; 23:34spCzI2VyywH7hph3yKWi8y9iG7bOigxSnzGLV?= =?us-ascii?Q?Wv/JUEhkqYMDvJHOfm+h0NAVWzBpZqZqO79S2MUE9a39o6Mw5esKLcaKnTaL?= =?us-ascii?Q?we6/yWCqRcQmPa/njpzoENvjZLqC4/7lcQU+k3tI/mampGEUIQEYfcLt2kxE?= =?us-ascii?Q?p//SXT8aHw+RtlJmr2xgC+5i7Qa2qlTLl9XRX9qhmdWEqSLfiSjWBDaR6zXW?= =?us-ascii?Q?MaAKRzwuqiGNDxm/y5itWotk40+9KQ3FHt/kmSqXP5n/AuPFQ+YHfd435lQo?= =?us-ascii?Q?0lRdInYO+IXs2ANX83sUqYXNhE71OMGnQl4FThoq4jsq3574npQHA9BFv64C?= =?us-ascii?Q?lqdyiOA6I6rh042MAImY4yRhKqICjcG9gUroMQYSvVc1X+DbyazDMjtyjVIa?= =?us-ascii?Q?Y9UlLdP/F/IRzUKcR4H2hKPLT5adJG5fHvEWGbBDYdn3ZZFB+9hFg0I8+RwZ?= =?us-ascii?Q?eB5p1sGUGNbRAq2vbVqv05G03pAJgYPkb7yB2o0XyCzTypPg973LenwkTVFs?= =?us-ascii?Q?9orrM7x//VumVA+uJZKvs/SvpJLh1CCqcRWpUPk60gQTg58KOXVOreBFL9OM?= =?us-ascii?Q?0EYlqUJWMdgYoHBj+aTG862n60ymjX90kzWOQEd9bWyZtRj4x8QN4sdudwXP?= =?us-ascii?Q?udYTiVOSUnjcPHOWDEGRbcmvomrZ6dsjVeYM8S7KlX9fHSCFkcT/vTiyTTGd?= =?us-ascii?Q?nIATOAEds+CPdMyP4zOGsBFSavlCHMUZnwqQbxh/VFhdHa8p1WtuAceuHOmK?= =?us-ascii?Q?dERhZWNHA2vjCj4loWpS1hpXyXQdLi2efFD1IhY8QChRbYN6nXp2+D1hD4mC?= =?us-ascii?Q?OykMjTYTeYUJefigbLbaiEmbHCO3bM0v3Iyj93+3O5IAAyB1OhHZeVdnIHR0?= =?us-ascii?Q?IXv2iuT6Cl6ZJM3kpoBsj5ZcrCQMvaVOKWN/LTDZkuQc4TaYEaex2+2uAXEC?= =?us-ascii?Q?NYwf87R2HHTVCLHpxH10egS8/KCMpVkTatyWyrIs5QMU1GZgVgFdiQAXJl2/?= =?us-ascii?Q?OB2rJu4yxzSr6jc0xoyBhg5c3o+N4uQCbm/YjJ+ICeCuun4Ie5ShecD1r5cV?= =?us-ascii?Q?edcYj/fxZThP2FytGw4HM/zOoXjhPKKa+kuC1eH1FiN0mdBmRniqQJIOWL7p?= =?us-ascii?Q?VTif7GJFrqj7olN1zdClNG7tYpbanTmgjF4HDI52F2yklrCfwp9UEFL+l58A?= =?us-ascii?Q?v9qPOXZJOgIz27pqP86GE6zh7mYncsvHmZR4TWFeBObqqcGqBeqKotGgT+wj?= =?us-ascii?Q?Dde9yNiNPyWyhtNT8LCqtiZs0P0oofwq9/6Vm9wi80YEnpzcnNsYbQrO2TnA?= =?us-ascii?Q?YjECpnFwXMTwwgiRrJv2VdT0Bdq9ftmvYJFqSypilDba+?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1194; 6:pblHZ+gEiZc0plJsB5z9iEorL4Lfu7CPRwmNTAys?= =?us-ascii?Q?9FSwMs0kb2BY8rjynUhC1eTv9gbVPpWubdpgYW47Hoc8E23YD6gsz8gWkUuk?= =?us-ascii?Q?57OdqTI4HsVFNcZOJI8tEl8AgQSh0QS+cXl6PM2MaEe4uI6btP4sssmRxdYF?= =?us-ascii?Q?UcBrpE2uZ3XKil8+GH+JYAT7hC16JweXJKsSstRVl8NjWzvdaAUB45mD3y5P?= =?us-ascii?Q?cqXQ2hn61QlYrx3ZqLiaxB3wnkEpNpEL9Si2FeJtg+0l3KltJz95gX0k31Wc?= =?us-ascii?Q?zsWxcoolHpZgGKYTdT4qTXpTdvNVWmv9vEy+D809voHg794Xvp5BS4WS9vXD?= =?us-ascii?Q?7PPUbxV2po3zzZn042PeMMXioSiLye2AQH6G63toQhaKWZWinwX58KkUCUE6?= =?us-ascii?Q?q2SsrmFkSp51P/H9mYoyj4MlUFnFBVVr1NjDcOOU3r4TqK+AfhfKlw3dl61v?= =?us-ascii?Q?DglnF6bG7y1zqkRbyzefrPlXHbENyAFtWOv6v3U0ohbbqXZIgcc3jVON4ZuC?= =?us-ascii?Q?5togTkY0ED+Z+1GUn1XVCVQDG5FedI8h3QRBgd4fzQxMoAJ2gF0FnqPfQuCe?= =?us-ascii?Q?hvtdwitLemHWbhGIpmwdqiKYeMvNKK6Et/R2sV5LrR8pegfw4vAEh/4VJriI?= =?us-ascii?Q?9jpwlCvcbo0fkYygNKHH9J2yELaiiE+6gJ2Nyp932Tp7Cqlvo27gJCR2eWBI?= =?us-ascii?Q?88NiiBpfp/15/k9CzS4TgttNIxM5R0TOErEps7ki3Gegeb4oNg401RiyMR20?= =?us-ascii?Q?EOhu+YF9PxRwZJ6vUFT1dwGN8OmUbt+1VHyCAxmHQrBzBL4r3IMLC1bL7G/z?= =?us-ascii?Q?PTd2pe+DQGaBObXOebDyuJijkh9aSrIvSu6/WilWLLMgXycI+NmzMO6P8r6Q?= =?us-ascii?Q?pj1WFPRDalxWnh4bo96GkU7tKMqd2aTz6+h6os2MkwB3cbS6qos7i8XnIVAv?= =?us-ascii?Q?1FQWEiMI1rZkTKxxzkXYgga5lzsK45n+S7K9GLugbQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 5:MPwePL/T28faZKF0Y9apEFmFRyJTY/bjtHEVWX7F9bJgBusicA/1OM+1QoKuQytO76Cayp6Y2pOnGlG1NSDoxQKWGypVdNJeAyNuyC3m2a6/koJirRZLfD1Zd0Rsf+1qPLTlH0QeF8+YQxW4q5Vjjhi8RGE/15p6C00Z/CwAQmf3SzxsHVeHjDI/TRHoEyiU16G+DlO5GR1NY+EaiD80Kwp2aOPPuKQhHNDN8Y4llRbyLuxFhcTRXf/3xNodI5fT7VG1Re3qgTER8IWedT1cxoeIWylPHY95vQphkXtA3A5A3jecAIFzJotu1aGd0+HC9vACJ44YuYr9svAJ2AZLBmd7xs4mzgFD2jr2UwxGXKERZ757EFG3nhLyInT5wGFLlDyvsrBEYNaGdNWIIiTMu/VjePMEAUcqepGy5B76b7BHvxjYNAROo5NTumOctMTYNSs+Q1bi812SKG+T8V88H37VDOF2LlA61NBGPp8iLbMKawvPGiXf/Ty21p/xCtR612UariSftN3IEjou1GtYEA==; 24:GDfGwbUkYcTlwMf5ReJBRmaKPjOUCwKUCjih2pA0rvwuqqoFftxHWWzf+XcCSybQBRP35F3bMo8h6QE+xeDCHuIDva0jC4RLJn89hxUYi3A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1194; 7:y40nI4PafC/Dko3b/BJBqCrl+S4uzpnlhwJcu0G2/mFiWeju4ciND0ugI+YXkNVq1Zy/XbZUPzjrz7jnxu+R9g8JVGkzO6Rhde3PtmD8UQXbDG8wMAIFCIAlsmtcI9Tosk87sbsLmkJojm7UQdSnpTuKru3+vG0Xjs8rMGEozAthc5ykKKFNx6qX7jz4durPrJGHPwZQNfYwPmsXM9yZb8N7zsBmfzFDbytprbCDOkuEKfXOKgH7rVhfrG7stBe9fPCnWEVPOYj/Z544cPFtVI+PDS0eayCmnHCYlN/egKLwRIGdOz9BdhtHYF5Z6MCAlAq5O2tzD71f3DgWNQ6b3bU7OuEqAn5Piyj5PkRzAMw5SKx9at6sWgg9Q4p9d9snA6hlU+3q5gfHzIwZdvKx+SCc61w11eLoXWyJYHfy4ygNw9PaNTYLKpEvKlC8xUfZuCUvWKiPxAmJ0rdsVdMZ9EV3K4itpey6jWeq6aKHeERtY7wYFy7XFuc+m3BBQ3emTCExsAefrOT0X8QTm+et0HqjBJ9c+73GSn2rOA2vIZVX0+fxXTZPT2Qqww/h49jr9oVFJV0MS4oFx/xqlpQTBabiz6OYNnG1BbBEu9Seh2GM9zZk+RI285HeGnFH+gMJVj4bpQLcnyCbaPFeGfNygWj0rIs/Mj5o3C8Vpvd6AgVDqBbMNFx7ei58ku177a1uElyQ4xRmjT42iJZH0SiPaGg25jkkruO6qfHSd2bNg37z3wJTjk4tuwkZ6QCj0BSi7MEYlxDKt0bF4ilALjJmkICU5oBIm1ryOydbcDogd4U= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2017 07:27:43.9433 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB1194 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.34.78 Subject: [Qemu-devel] [RFC v2 PATCH 2/2] virtio-iommu: vfio integration with virtio-iommu 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: wei@redhat.com, kevin.tian@intel.com, Bharat Bhushan , marc.zyngier@arm.com, tn@semihalf.com, will.deacon@arm.com, drjones@redhat.com, robin.murphy@arm.com, christoffer.dall@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This patch allows virtio-iommu protection for PCI device-passthrough. MSI region is mapped by current version of virtio-iommu driver. This MSI region mapping in not getting pushed on hw iommu vfio_get_vaddr() allows only ram-region. This RFC patch needed to be improved. Signed-off-by: Bharat Bhushan --- v1-v2: - Added trace events hw/virtio/trace-events | 5 ++ hw/virtio/virtio-iommu.c | 133 +++++++++++++++++++++++++++++++++++= ++++ include/hw/virtio/virtio-iommu.h | 6 ++ 3 files changed, 144 insertions(+) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index 9196b63..3a3968b 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -39,3 +39,8 @@ virtio_iommu_unmap_left_interval(uint64_t low, uint64_t h= igh, uint64_t next_low, virtio_iommu_unmap_right_interval(uint64_t low, uint64_t high, uint64_t ne= xt_low, uint64_t next_high) "Unmap right [0x%"PRIx64",0x%"PRIx64"], new int= erval=3D[0x%"PRIx64",0x%"PRIx64"]" virtio_iommu_unmap_inc_interval(uint64_t low, uint64_t high) "Unmap inc [0= x%"PRIx64",0x%"PRIx64"]" virtio_iommu_translate_result(uint64_t virt_addr, uint64_t phys_addr, uint= 32_t sid) "0x%"PRIx64" -> 0x%"PRIx64 " for sid=3D%d" +virtio_iommu_notify_flag_add(const char *iommu) "Add virtio-iommu notifier= node for memory region %s" +virtio_iommu_notify_flag_del(const char *iommu) "Del virtio-iommu notifier= node for memory region %s" +virtio_iommu_remap(hwaddr iova, hwaddr pa, hwaddr size) "iova=3D0x%"PRIx64= " pa=3D0x%" PRIx64" size=3D0x%"PRIx64"" +virtio_iommu_map_region(hwaddr iova, hwaddr paddr, hwaddr map_size) "iova= =3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"PRIx64"" +virtio_iommu_unmap_region(hwaddr iova, hwaddr paddr, hwaddr map_size) "iov= a=3D0x%"PRIx64" pa=3D0x%" PRIx64" size=3D0x%"PRIx64"" diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index cd188fc..61f33cb 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -129,6 +129,48 @@ static gint interval_cmp(gconstpointer a, gconstpointe= r b, gpointer user_data) } } =20 +static void virtio_iommu_map_region(VirtIOIOMMU *s, hwaddr iova, hwaddr pa= ddr, + hwaddr size, int map) +{ + VirtioIOMMUNotifierNode *node; + IOMMUTLBEntry entry; + uint64_t map_size =3D (1 << 12); + int npages; + int i; + + npages =3D size / map_size; + entry.target_as =3D &address_space_memory; + entry.addr_mask =3D map_size - 1; + + for (i =3D 0; i < npages; i++) { + entry.iova =3D iova + (i * map_size); + if (map) { + trace_virtio_iommu_map_region(iova, paddr, map_size); + entry.perm =3D IOMMU_RW; + entry.translated_addr =3D paddr + (i * map_size); + } else { + trace_virtio_iommu_unmap_region(iova, paddr, map_size); + entry.perm =3D IOMMU_NONE; + entry.translated_addr =3D 0; + } + + QLIST_FOREACH(node, &s->notifiers_list, next) { + memory_region_notify_iommu(&node->iommu_dev->iommu_mr, entry); + } + } +} + +static gboolean virtio_iommu_unmap_single(gpointer key, gpointer value, + gpointer data) +{ + viommu_mapping *mapping =3D (viommu_mapping *) value; + VirtIOIOMMU *s =3D (VirtIOIOMMU *) data; + + virtio_iommu_map_region(s, mapping->virt_addr, 0, mapping->size, 0); + + return true; +} + static int virtio_iommu_attach(VirtIOIOMMU *s, struct virtio_iommu_req_attach *req) { @@ -170,10 +212,26 @@ static int virtio_iommu_detach(VirtIOIOMMU *s, { uint32_t devid =3D le32_to_cpu(req->device); uint32_t reserved =3D le32_to_cpu(req->reserved); + viommu_dev *dev; int ret; =20 trace_virtio_iommu_detach(devid, reserved); =20 + dev =3D g_tree_lookup(s->devices, GUINT_TO_POINTER(devid)); + if (!dev || !dev->as) { + return -EINVAL; + } + + dev->as->nr_devices--; + + /* Unmap all if this is last device detached */ + if (dev->as->nr_devices =3D=3D 0) { + g_tree_foreach(dev->as->mappings, virtio_iommu_unmap_single, s); + + g_tree_remove(s->address_spaces, GUINT_TO_POINTER(dev->as->id)); + g_tree_destroy(dev->as->mappings); + } + ret =3D g_tree_remove(s->devices, GUINT_TO_POINTER(devid)); =20 return ret ? VIRTIO_IOMMU_S_OK : VIRTIO_IOMMU_S_INVAL; @@ -217,6 +275,7 @@ static int virtio_iommu_map(VirtIOIOMMU *s, =20 g_tree_insert(as->mappings, interval, mapping); =20 + virtio_iommu_map_region(s, virt_addr, phys_addr, size, 1); return VIRTIO_IOMMU_S_OK; } =20 @@ -267,7 +326,9 @@ static int virtio_iommu_unmap(VirtIOIOMMU *s, } else { break; } + if (interval.low >=3D interval.high) { + virtio_iommu_map_region(s, virt_addr, 0, size, 0); return VIRTIO_IOMMU_S_OK; } else { mapping =3D g_tree_lookup(as->mappings, (gpointer)&interval); @@ -410,6 +471,37 @@ static void virtio_iommu_handle_command(VirtIODevice *= vdev, VirtQueue *vq) } } =20 +static void virtio_iommu_notify_flag_changed(MemoryRegion *iommu, + IOMMUNotifierFlag old, + IOMMUNotifierFlag new) +{ + IOMMUDevice *sdev =3D container_of(iommu, IOMMUDevice, iommu_mr); + VirtIOIOMMU *s =3D sdev->viommu; + VirtioIOMMUNotifierNode *node =3D NULL; + VirtioIOMMUNotifierNode *next_node =3D NULL; + + if (old =3D=3D IOMMU_NOTIFIER_NONE) { + trace_virtio_iommu_notify_flag_add(iommu->name); + node =3D g_malloc0(sizeof(*node)); + node->iommu_dev =3D sdev; + QLIST_INSERT_HEAD(&s->notifiers_list, node, next); + return; + } + + /* update notifier node with new flags */ + QLIST_FOREACH_SAFE(node, &s->notifiers_list, next, next_node) { + if (node->iommu_dev =3D=3D sdev) { + if (new =3D=3D IOMMU_NOTIFIER_NONE) { + trace_virtio_iommu_notify_flag_del(iommu->name); + QLIST_REMOVE(node, next); + g_free(node); + } + return; + } + } +} + + static IOMMUTLBEntry virtio_iommu_translate(MemoryRegion *mr, hwaddr addr, IOMMUAccessFlags flag) { @@ -523,11 +615,50 @@ static gint int_cmp(gconstpointer a, gconstpointer b,= gpointer user_data) return (ua > ub) - (ua < ub); } =20 +static gboolean virtio_iommu_remap(gpointer key, gpointer value, gpointer = data) +{ + viommu_mapping *mapping =3D (viommu_mapping *) value; + VirtIOIOMMU *s =3D (VirtIOIOMMU *) data; + + trace_virtio_iommu_remap(mapping->virt_addr, mapping->phys_addr, + mapping->size); + /* unmap previous entry and map again */ + virtio_iommu_map_region(s, mapping->virt_addr, 0, mapping->size, 0); + + virtio_iommu_map_region(s, mapping->virt_addr, mapping->phys_addr, + mapping->size, 1); + return true; +} + +static void virtio_iommu_replay(MemoryRegion *mr, IOMMUNotifier *n) +{ + IOMMUDevice *sdev =3D container_of(mr, IOMMUDevice, iommu_mr); + VirtIOIOMMU *s =3D sdev->viommu; + uint32_t sid; + viommu_dev *dev; + + sid =3D smmu_get_sid(sdev); + + qemu_mutex_lock(&s->mutex); + + dev =3D g_tree_lookup(s->devices, GUINT_TO_POINTER(sid)); + if (!dev) { + goto unlock; + } + + g_tree_foreach(dev->as->mappings, virtio_iommu_remap, s); + +unlock: + qemu_mutex_unlock(&s->mutex); + return; +} + static void virtio_iommu_device_realize(DeviceState *dev, Error **errp) { VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VirtIOIOMMU *s =3D VIRTIO_IOMMU(dev); =20 + QLIST_INIT(&s->notifiers_list); virtio_init(vdev, "virtio-iommu", VIRTIO_ID_IOMMU, sizeof(struct virtio_iommu_config)); =20 @@ -538,6 +669,8 @@ static void virtio_iommu_device_realize(DeviceState *de= v, Error **errp) s->config.input_range.end =3D -1UL; =20 s->iommu_ops.translate =3D virtio_iommu_translate; + s->iommu_ops.notify_flag_changed =3D virtio_iommu_notify_flag_changed; + s->iommu_ops.replay =3D virtio_iommu_replay; memset(s->as_by_bus_num, 0, sizeof(s->as_by_bus_num)); s->as_by_busptr =3D g_hash_table_new_full(as_uint64_hash, as_uint64_equal, diff --git a/include/hw/virtio/virtio-iommu.h b/include/hw/virtio/virtio-io= mmu.h index 2259413..76c758d 100644 --- a/include/hw/virtio/virtio-iommu.h +++ b/include/hw/virtio/virtio-iommu.h @@ -44,6 +44,11 @@ typedef struct IOMMUPciBus { IOMMUDevice *pbdev[0]; /* Parent array is sparse, so dynamically allo= c */ } IOMMUPciBus; =20 +typedef struct VirtioIOMMUNotifierNode { + IOMMUDevice *iommu_dev; + QLIST_ENTRY(VirtioIOMMUNotifierNode) next; +} VirtioIOMMUNotifierNode; + typedef struct VirtIOIOMMU { VirtIODevice parent_obj; VirtQueue *vq; @@ -55,6 +60,7 @@ typedef struct VirtIOIOMMU { GTree *address_spaces; QemuMutex mutex; GTree *devices; + QLIST_HEAD(, VirtioIOMMUNotifierNode) notifiers_list; } VirtIOIOMMU; =20 #endif --=20 1.9.3