From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752911AbdGXUGo (ORCPT ); Mon, 24 Jul 2017 16:06:44 -0400 Received: from mail-by2nam01on0080.outbound.protection.outlook.com ([104.47.34.80]:6848 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753183AbdGXUEj (ORCPT ); Mon, 24 Jul 2017 16:04:39 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: linux-kernel@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org Cc: Thomas Gleixner , Borislav Petkov , Joerg Roedel , "Michael S . Tsirkin" , Paolo Bonzini , =?UTF-8?q?=5C=22Radim=20Kr=C4=8Dm=C3=A1=C5=99=5C=22?= , Tom Lendacky , Brijesh Singh Subject: [RFC Part2 PATCH v3 10/26] KVM: Introduce KVM_MEMORY_ENCRYPT_REGISTER/UNREGISTER_RAM ioctl Date: Mon, 24 Jul 2017 15:02:47 -0500 Message-Id: <20170724200303.12197-11-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170724200303.12197-1-brijesh.singh@amd.com> References: <20170724200303.12197-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM3PR12CA0049.namprd12.prod.outlook.com (10.161.151.17) To BY2PR12MB0145.namprd12.prod.outlook.com (10.162.82.18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f9daf1e0-0a15-49e6-4cd0-08d4d2cf103c X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:BY2PR12MB0145; X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0145;3:AWKMVj4dwtb+d1Cyd6LO3rnzG3qBO/+ZzEwKXpW/X3I80hhf6tICc+bGkqQwnBxCJrSPw8EXSS6zMuSeKzqZPPioXpytQuJkFfTQgmK5hzzG/432nT1EYRDqUw9kDNP0d3BhkC3OFxj7GUCOKCYAZyB7cGdm06GQD5pbyo6tn57Gg23mA1PYjcFxb7s7ePQggSMS9CuM0nSfwfSNW8OfDxBiOEoEcSg0pYIyPLSq25OPQbuUFhWDNS6w+UVjdFClr7u8hubE1ECdZgs/x/1UqzXOYMhD9GMKzgu5cBDryL7iZCGZNN2Fumcx/DmCZh4aRJlOEIthbhYENKXgJUJ55LZEmKc7w1F5RwT0tYHy7wveE+SY7w4GQvFVTj8HO3ztsxxds6Z5AU0aGaZh/jYJo0jYM3hPUeD7M2W4IN6s7EnfxLPCQXNuFkxiOtgndJP6XxB+u3JdomjhWgy9/GAvNqUGtU5Jn3oaY3uOAYnC0PHg7KmuNWJllVHU8qeAok4l19sD8n/Jzb6v85dQ5JSPRnHrivpipOr1PZDrZg6Wgx2D3kTC1TpUahEoWhJ4T8mvpJbxpdYiHlQiQ4zNsxoyqPLXN04DbQf1DllrYrtzKscVYHAXyu3RFWZhOHFYbR/+V0MIO9TWvzvVdiO103TwCaxvP9JXN66YBEDhFG/9ciQ5IZuHX3qFV7/xeZJ5P5YH4DjgaAnNhZoTq0XtKdDm6XbOQXYIQ2GzviIWdcPtMyjqHJeZKmxxDnkEa/FgOKCo/RmMUdZAyxvb7Bv+hKKMaw== X-MS-TrafficTypeDiagnostic: BY2PR12MB0145: X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0145;25:XJz0Em8/IZYf83KGk3z2gKyMqTcOdPXJ7sFRz6q48rKuHi+NWzsBVeOrGl0OExDr2WIdFixBoZ1r6YSdJ9xnxJVesaN+6FrnXgHeeje5LYLt+SXYYpF1zbptYiqmbwoyLPhJMqW1fNVtfjC91ZRi1SiPuCKmQk8+O4Wx+RczJVcVLsBPQrSPZoEgi5tVs8lSERiAizbCbq+GlCddklycocAwf4Fy8+ZRQJgfRs+ML/hwcCkBd3MZCjq69dYJ+Kp0LeHwp0h+sZRoS6/I9Ef6rhUtzqhbgxGhayZ3ZJHfUt+fLQXoEqMsbgJZtMB33tN7OzGAw8WM7Jf7cyAjljHRwYieynKQkTZTq1qiAqLz5CSfejlKJBKuxFnEV01TyEdRWsa5QlDo6WADvedZdeenPrL649erE5bT87lM24JPS6nLSbtd10NlVdSD5is8X+adSyXDZtSzWn9nbZfsq1I41r6vPFvU4icNfydeIam5fX6l33zaCidVwf0mc8QtTE5ZwZM5xUwtWfeex582fOfD03ypMh6R6cspHxCWanYKzgUHWk3hdbmFvHeZhq3BqU5eZu3wkfDVu49dMLNJJbEU6453swUogO6NCvAeVElmpbsK2G5yMNg318wzQpOeyPQ6PBGKqTc3Z3pmT8157JuUaG6LaA80GNTA0XBmrKyX2NekBEoepgZy/F6+Y9duEgGZiMDZ9jfMBfl1+aecceiKCQEwcfkPioxYRgmTMswWtAhIvy7ldXCsA419YB81L8tNnh4au07xluYZBkTUNJcVHtmUKZVciNTjMkZhDbiJizj+yIWfyYFokazCHr2XQ2Skd3AxwqGMfsuUfAduE2VBAAtjZiv6iMU/tJ088UypaVAo46H55iGqndJKNY6a+mxLnnuKRgIGj1s8pRPN20W+jAzpAQ6/hiW+JwbysBWvt3A= X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0145;31:vKPxKAwjV2AZhLjd73uMtNvTmrwCS/RzYCU6sLFDe94vJUmF2hpf8dKOc6D+vCjCyQn9vq9OCTQVUxmTtsk6VsBs/zi9EhGejm4mkOjtl9Uh7cKL1yScHeoVnAO1qkxbBBl/Kr/Gb01fYSrB2Ym63kvbuH44lGNDzF//nwYQVCX9f8hEDs8Z3QJBc0O6mh8zrsBevfUJQRFbbGME5EbA52iugeiV+DhwDjw3C1v8TqcRGQ0uRBwj1asMhjh81yByer0OAVf7+dKhbqQV0qxaXwyuPTk5lEaK/65uvlxmHoTKbfUz3kM0O5Vb/hfKJjgo7+ejho8wBHvFVIIrBIxga1/MCeje/yednc4lZ6ag3rkt79se2Fo/wLT1nFVjyEudm3WXifQV/qhz4Vex6ji5XpoYFBjRU/jeS/W6klRclc14H8dKQYv0RHyo52Qm9w9m+LjlwTx9D9+x4Lyabf5su7LeOS2ILQ9BLLp6vsO21Q/QNOeF+udr5ZzjYYiKW/PQVM1yaQ3FYMuyrXkPrrkFI1y5GUyPAaqpOv4Cidi6bAZwHf6Bt94E6lebkrAJ3+0Rsy71n/bWnXBTkRdiQpIjbxr+S1xFHXawa//6LzNFuOv8KugJK0PLlPp7jFEwgbD/1co0Q1oVHIoG7U1KrhEn/WWEC5URwN/IjfFtUzJrr4A= X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0145;20:wv1JGfTCWScHlcquZ0zMlO3IFFvSBkOrkBPyCdngYVOSTEwxo6HqCCf9n/QTU+uTueF422bZBRJstGqI31T4VVl3OL8nGewW5Nq8uNF/09YWkYGhvRdjD4MhQaPwJoZYXIW8PPxn9x4B90gzyc3ZSom7MagzfLH4h168jfL7NpDAYpLwmsiq7Ga2/l+EqAq9HMMrTQOnQldSGLHmwaXIp3C75H4ArcQlcnxEBMh9ekyKu9GsBJ4NPOEkTuH/9UDL46Ifjv3So4Jq0fnL8v76+UDpvv1sNc7GIPRptoPEVsi+fqYdP5uFrFYQTqQlvVeBDncOl+U6JkeRpthgQ1wvsxp05H5RCQWpp1FeSTHDEhwWRK6K7uT9wsP6TAXAGnP4ioeqSGYQWcTxt9Wpdz8V2Z30bJbpY2DPRAua4twP0NXp5gAKZvPBgxFH6sJ3GgijxlqgcT3nm20Lcp2h4f2XR3iRhvFJqX4lrKwMN0XzKVh3ykVMVtyxJee46Hu8r6tj X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BY2PR12MB0145;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BY2PR12MB0145; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR12MB0145;4:MxO8RVYUzeooB3Gt2ciWAFMOaMFbsH+B77QCZCTdj8?= =?us-ascii?Q?YzxG6mRiY0C1jDr8POoWsYKU6iQiT+bbzWeFd0RQynfoZlh387o6DCHxqa8n?= =?us-ascii?Q?EXcQ0hFheyxqE5pViu0ehLUBw6fh3/kLahYdbS39C03nAh5N536Fu661oace?= =?us-ascii?Q?Y17Cu5XvCxPFUu5zJEohO6IPf8Nb89I2X+vFGP18HdRQvB3z66su8cJNU4nh?= =?us-ascii?Q?HoFIUm2mhWB7exogXF+bqcX9aIX+GI3EH7rgWXPea3Jpn7z1+nozrBtAROXu?= =?us-ascii?Q?WAz0VK/i+630XgO8B8Y2KCaPA+UN1TGOhkKIFIvLShi46NiKzUi+X/yfz2xV?= =?us-ascii?Q?cn//nOfmJr1CW14NVZ17pa4byScJoW3iLwHJUVtfkeKG5MOEuL6upOip5Dr4?= =?us-ascii?Q?hK+nPVB8rgWd9E2D0RuPaF1ypOWVYog0qN93jVzlD/UFhXppj26jNFfUShgx?= =?us-ascii?Q?xKguM/yzxfTVXnKQ62MXDaR7JEA+0ti9TTgLI2hkoADrQc1S75//4wRmageE?= =?us-ascii?Q?Qy46dqMtW2Bgb5wHaD6riazr6ez8RYxiEiqESncVPj/jOCYgAIz2WpD3Gulu?= =?us-ascii?Q?UtYUAllR6QbvK5GQAGQrzYSn+FXThxAYvJS22hGHRnN2n4OwrKNaPlXIP+/A?= =?us-ascii?Q?2m0CSiCezGAs2i9KwkrfPrCvxDjyXTwLqJxXcO6J4afmWVXKHLDf+XAdfNJO?= =?us-ascii?Q?MVVxBNTDEUSX8c5uN3lGz3c2FsgTsEDTmN8t6TcChUlQ9HS2Cd6Io20c+h7o?= =?us-ascii?Q?4TDfk4I3U9O2JUVvCSWRR2TkVVy4xUAYNKYwVIC7/Z1pb5MM0Bf+TPCXW+fB?= =?us-ascii?Q?hAj4EfRa4GerbnSLrGrUC9smqWu4nLtfd0PbNv31m0SnGzkD9g+tYHGs1imd?= =?us-ascii?Q?pEZUkIfejtNthvVkH6TACVSqDU+kC+EmhFs3wwBs+ecQPNFJPkuV479g7FtY?= =?us-ascii?Q?M25vfu83k7lQGvRF9FtGEnPFLV0DlsAhv9kkmKDj2qKxcJZt0vNmDU9gWc4A?= =?us-ascii?Q?3bM6PzdRqfqe8uQd/LOMC/rNsgxqnZUdLmQZqBDLgFfA9oFXNnYSd1O4wrn7?= =?us-ascii?Q?avyfG7GKDumq3Pq4xyL1SpCNI+NjJ67VBEsPENT1K3dMFzoq5tlPKOD7XaVt?= =?us-ascii?Q?W/wkP7x9tXGAtwdIPqftNZM28oH1b3UEiZtf47fMZ2doYOoJ5kSVhN1fVYWi?= =?us-ascii?Q?Mvs68UPFtbyNA7gRWiT9Y8C7q2NejdKXRs?= X-Forefront-PRVS: 0378F1E47A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(7370300001)(6009001)(39450400003)(39410400002)(39400400002)(39850400002)(39860400002)(39840400002)(189002)(199003)(7350300001)(68736007)(53416004)(105586002)(54906002)(97736004)(50466002)(6486002)(48376002)(2906002)(106356001)(33646002)(6116002)(1076002)(53936002)(3846002)(189998001)(101416001)(6666003)(2950100002)(478600001)(50986999)(76176999)(81156014)(50226002)(38730400002)(47776003)(5003940100001)(86362001)(25786009)(4326008)(36756003)(42186005)(8676002)(81166006)(110136004)(575784001)(5660300001)(66066001)(7736002)(305945005);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR12MB0145;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR12MB0145;23:+Xks/ogz778IDKlT7BnjdZnU7Dlmby+fvu0wXCcmh?= =?us-ascii?Q?wyBWZOIxpjjMBE/lB86KwZQFQGVWGHcnMkVKe5609Cz2JUarPXY5LHW0WEUb?= =?us-ascii?Q?mBVI9xK2SHUir8O8h+FOvpQgQtKk6zW+ttsVFSGdOg9NEElyTIqKpPyfcME/?= =?us-ascii?Q?EGEXR/V9BlsNRZNH0pIiRz1APoI+P4OKviuShwDaIxJ8VyK/gkQK5Q85PI+I?= =?us-ascii?Q?+oPO7obcQg3zQrsM+VLmzNTVWTnWbJu02eFp4mg25Oj4aGlM7GOWfCBOXl7X?= =?us-ascii?Q?EM1jxsRJNpKYXU82yOm+NoCc2Y19Jd99tNxVy/HsnvTH2k/0iFKB5Y/SG2Us?= =?us-ascii?Q?DTAW+r5LwraXd4EJvCnn0mmN9er767yX1mALSyyZJubOsdPPtGhXGxe3it4H?= =?us-ascii?Q?5CmgtJU8qEQA/OC6l+Ls5F64Kho7G3eirXGlZMwcWV3K6+1hxUB2nKpcHxZr?= =?us-ascii?Q?XPQcfD6rCKE/jeXA+XcKGRm44C9bPKR8Lm96L2vRORZByD1Ki1VbMrQLPELs?= =?us-ascii?Q?C/vtr3TJIG2blF6vJP616ZHJFS3TXhjk6vx4oD72b4QKpogXlGBNkdQNrsIP?= =?us-ascii?Q?qTTcFEdkEBc94ez0CCjaCWWCRbb0hxt3sVXBxtSNKS1woqC2RQx98ulP4jH0?= =?us-ascii?Q?pASMh5YhbYQKPyd5F29dlSG8TNvqZL+mVUaVuj9xFDSuZv5MF/Z7uXfo7P9E?= =?us-ascii?Q?iPoVNBDaoqeEX04RCT0ptyrPbAtG7O3//ZPHRc7IVJ8pQ8qbWKDOvg21D3ny?= =?us-ascii?Q?lSTJF/mX1W7/2hAVD1foYct9OZ7m0XA4a2EuKySRIxGYT44kcOX4HwjeysiV?= =?us-ascii?Q?+3KwJouHVZE2QrZVdZJ9itljvd5RyNTGI4bLhmqOU8Y6BjSDlMRdSXqerJ5A?= =?us-ascii?Q?cDKCs3FY12+9lMR1fUYX0Hm7MdbY6wgmLbQOTuFwFAlDadliFfrmsljKj9vf?= =?us-ascii?Q?3lzZPwZ3Bs+QIhcZa707Lh5FLwU00ZgQt2vGuX9KIoGcZZJjX1simnbbIwFY?= =?us-ascii?Q?jk3LwVwwuoHq3jB5aFLa791ZAyTcSLKryzAyXQlcHM0GLSfa6ZsI7s7TzRjI?= =?us-ascii?Q?It7vdNGXZWvj3Y8SqXX3jK4frH1+abeXpayJKjCmejrfJ5NC97Jp+CwrukOD?= =?us-ascii?Q?xnvDQ5MIjfYzmzA089C5DFloSAUhhjqkw5ovJ3WceIUDeBKu2HqajwrfIXBv?= =?us-ascii?Q?TW/nTj8Y09VI0qde2ixAgptrppn+fIOV8Njggh/fDrfhQXK0+e7WPweQxY/j?= =?us-ascii?Q?VwDbwvwoviwyBo153qBibwtEcyt3CWIOu//+pX2QJSvCN/ZC4OnnaXouBL3l?= =?us-ascii?B?dz09?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR12MB0145;6:xpXh7OFaD0ppiBsSRglqY6GxvreS2fZ+XzDZSl7JQe?= =?us-ascii?Q?gS3OM4c9BQ/wSzwU+AvvhwZ2ng+tJAlfIKLbSnUtaiEFvEuiXfEnR1ESHBjM?= =?us-ascii?Q?Ht7J3nbnca/OolKn9oUhUeIYzb2dqZYDoujEg+1VsMHC/jNn5CLnA2LEiFu2?= =?us-ascii?Q?CHnSDDMPrFEBlOlaTdQBPgXQU6P0dDQCydQxhGMZQkcYvlObIqv9cCF9waJl?= =?us-ascii?Q?4Po4ywKCCYwzwD2Ik7cstvWre6WFbDUDQZIDnPrwOneU94NjkFfuqdmGOv8G?= =?us-ascii?Q?X4nGiAu9iRTG/tx805EheLXKrB/xqrRuaCyeCTmVQpzAXH2asqWcD8/35tP6?= =?us-ascii?Q?4lGOBZOvsGOsS3ERxfJpwcmsFm7oYDGwrVTcMuPgnO1lHDPrgS/Uu7G0bAm8?= =?us-ascii?Q?XydVXlWxSOwMck2PcSfk4Tqz3KknzEjdembHLDJG62g+T0jwdWOEy/Jg3TEK?= =?us-ascii?Q?b2eL46Giyyp+BaYCYRV3uC9R/wwMGpPCmviC0uxIW3HZT9HRJsDtvGGWGnZX?= =?us-ascii?Q?P6mgRS3Kert1E7lgmORfOa8IslA5nP1wtdwML9j983SSBv89giUFwA0iyIZ2?= =?us-ascii?Q?HJJhqHLcLsZo6BPxTRhFvQ6ldG9ckhMNbVZdQNDSzzDPzTARUCNIgZ6DIQCG?= =?us-ascii?Q?8nCo57038t3H+KsdlOnf2K9k/gEtWryAHpWglKGiS+8IxpWCCPUKca767imZ?= =?us-ascii?Q?qZSwcb1kQ2XerLulLPP4nj4UvFDoBsus+wqnvCHWjpAmahJYCCfnmoHwBPWj?= =?us-ascii?Q?CLyeYQICmFZvQb/p9jwW5qL4LL8mvKWP/x92EjFjlNfhQReq1xYCk5stoS5h?= =?us-ascii?Q?3vdr/PC9l6emJ7QOuoOXS4aBrnvkNz2+fYKxgTCPuo02SNri5tSohvuPIGXI?= =?us-ascii?Q?np30Tx2vL3jVjZNC357Mr6DpD0vTKDOyh3OcGnx3r4DVjKTtp4jhqj4QVt2E?= =?us-ascii?Q?fqEBF1U7uWlYyc+9KYjpf0+T7PpwqPryVnqxsCr7ZWBvu+7yswqOBTO4DXAU?= =?us-ascii?Q?XPCag8ish20BZJ5SkFEWJ1?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0145;5:6DzKA46mh8GRaH3lzoPUvl7GynVshBMKMWN3UIycl7CScMK2x+t0mXeJtlqUilKg+R5Coye5yFC2CI0h4TUmpUJT0lNHRN++shlor2CANd30oV/+ZWJg+FRSBN5htKpthGZW0GM9JlqFxORZ9iPNp+8jHHRCw0s+sQ2/zd0RZe7BeyQ+Pz1zQURp7nma6W6swlPF1AQTK3PWA3IZ25OXV0Iv6MsiYpyXJCqQPxMi5uqLHQjxZJe391xUkW+ctaWeCUe7X1b++wBvXEYuYwDmmD8BnliAzqFNX60g2FrdGktjsypv7wWiiAS5tcGw868UgknrNytw1HA0+gZsVJWG5BjfZqMPppbUmVci6cDJmsxNrdvFOzaJ/T6GIh/64PF/CySl2gfaSSFSXQKKnsfYaZyfu1jlK2Fpv9USzAm1N1fjg24FHnxbFwKXTqIcBMtlSNx4ChkqxabcDj3Mb0EUoDLv3zyAKbdgwBTOOJOcWRzVURR8gsKMClPflJg8Pq05;24:72Y4JUilhg/hjYj8VclQI4eP7K1g80xwYKIQpqoMvwrIvSv27bGtKpoEkYiSzbyiqqAXbFobJGTVxAQeAkkSzfM7TcD/VKWW2giyd4KFc+8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0145;7:yW0rZFQY8jWiNQ1GUnWxX74Z8al1yDKafAw5KME2xyUDtUgZqOv+ek4yb9zOAVvPM6BF/83IM2AcvEQ97gae+NEKONnW5F7n2ikPhTpW3pJirwSTmCNrM6h3qlVkrCJ0ZzXPDde2ZlZOvL9/kTC7kJWxbYOfEdvSR28wxMMDBqKPiwn+qwJan7zzUyozE9BIhGesV2MGxSj/Pfy1io5NF74vmK7g/No/cptj6vLB0TdERTyy84YFhyj71kdCT86Le1kxANGHKZDEUofN+9DLK7pxR8K6wDCOqxy5O94/8ocM00hedZJxIs0QTcRn2ZXA67XUyD87Dn2MuvAUsvGY3Mygcdanxkmy6ixNoIyPwV7oHK8cav2ld0x4mJyg9w33uAsgQhnz8O5IFzubntrf5kGfYMe2icK8i/Z+X+wwzxwYDSB6FnNLPcBDbNqKp4XWoOfxOZN+zbgYfs0Jrw3FWGTd6TsqTu476F+IbKqXj8cnfCKojAFxBZzsyY3lFklycqg/Y56KNpNyAkgdLxnloZqGSXzLZcaQND9f2G+KUzgECLwKdMdT2zRB1uGvxMCDaSFxG9g4HAtWfLtp5J4qdPxBVIcO/FvTA2vHGbregsNRA7gUYNO7edHdhKJ9ia4O0cYsj2AVmlvIgApLrPEorR2JmUPf42zis+ucEwL0lSXK4XvwlPBy4WwNJcpCpzFAJj6p4sC2P4VCeaarbCYf7zvBbuDLvxnXbdi03FDGpAkPFNglTc3x9AhEGo/ZrDYpAsqLsXIQzQEqEFyuf2bcngcGnX4lrVvx85Fmz6xwYmU= X-Microsoft-Exchange-Diagnostics: 1;BY2PR12MB0145;20:g08fueNeBLECzbAtYFn0FnaC7YnuURgtD1+A+eYftGyhymCQSiumWf7/rs2H8iQ00G1SKtU8u+5PBOERWx3fb3/KBpJIks4JzV7dRKdDTy8dm5vm8z66y/NHzeYkfcLOjKZgOySOO56CkwDxhJ5VvyFVGZpb1fBIborkpWo78T9m9hbnSjE2IcjN4/VR4rxGJ7+RYb2RbtpqcLewnymoZyY2pObOTt3ULIpz+SON88Wos+1nkRY6irKUanhWxBWu X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2017 20:03:32.8845 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0145 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If hardware support memory encryption then KVM_MEMORY_REGISTER_RAM and KVM_MEMORY_UNREGISTER_RAM ioctl's can be used by userspace to register/ unregister the guest memory regions which may contains the encrypted data (e.g guest RAM, PCI BAR, SMRAM etc). Signed-off-by: Brijesh Singh --- arch/x86/include/asm/kvm_host.h | 4 ++++ arch/x86/kvm/x86.c | 36 ++++++++++++++++++++++++++++++++++++ include/uapi/linux/kvm.h | 9 +++++++++ 3 files changed, 49 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 99a0e11..4295f82 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1059,6 +1059,10 @@ struct kvm_x86_ops { void (*setup_mce)(struct kvm_vcpu *vcpu); int (*memory_encryption_op)(struct kvm *kvm, void __user *argp); + int (*memory_encryption_register_ram)(struct kvm *kvm, + struct kvm_memory_encrypt_ram *ram); + int (*memory_encryption_unregister_ram)(struct kvm *kvm, + struct kvm_memory_encrypt_ram *ram); }; struct kvm_arch_async_pf { diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index c9d3ff5..8febdb5 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3982,6 +3982,24 @@ static int kvm_vm_ioctl_memory_encryption_op(struct kvm *kvm, void __user *argp) return -ENOTTY; } +static int kvm_vm_ioctl_mem_encrypt_register_ram(struct kvm *kvm, + struct kvm_memory_encrypt_ram *ram) +{ + if (kvm_x86_ops->memory_encryption_register_ram) + return kvm_x86_ops->memory_encryption_register_ram(kvm, ram); + + return -ENOTTY; +} + +static int kvm_vm_ioctl_mem_encrypt_unregister_ram(struct kvm *kvm, + struct kvm_memory_encrypt_ram *ram) +{ + if (kvm_x86_ops->memory_encryption_unregister_ram) + return kvm_x86_ops->memory_encryption_unregister_ram(kvm, ram); + + return -ENOTTY; +} + long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg) { @@ -4246,6 +4264,24 @@ long kvm_arch_vm_ioctl(struct file *filp, r = kvm_vm_ioctl_memory_encryption_op(kvm, argp); break; } + case KVM_MEMORY_ENCRYPT_REGISTER_RAM: { + struct kvm_memory_encrypt_ram ram; + + r = -EFAULT; + if (copy_from_user(&ram, argp, sizeof(ram))) + goto out; + r = kvm_vm_ioctl_mem_encrypt_register_ram(kvm, &ram); + break; + } + case KVM_MEMORY_ENCRYPT_UNREGISTER_RAM: { + struct kvm_memory_encrypt_ram ram; + + r = -EFAULT; + if (copy_from_user(&ram, argp, sizeof(ram))) + goto out; + r = kvm_vm_ioctl_mem_encrypt_unregister_ram(kvm, &ram); + break; + } default: r = -ENOTTY; } diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index ab3b711..6074065 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h @@ -1357,6 +1357,15 @@ struct kvm_s390_ucas_mapping { #define KVM_S390_SET_CMMA_BITS _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log) /* Memory Encryption Commands */ #define KVM_MEMORY_ENCRYPT_OP _IOWR(KVMIO, 0xba, unsigned long) +#define KVM_MEMORY_ENCRYPT_REGISTER_RAM _IOR(KVMIO, 0xbb, \ + struct kvm_memory_encrypt_ram) +#define KVM_MEMORY_ENCRYPT_UNREGISTER_RAM _IOR(KVMIO, 0xbc, \ + struct kvm_memory_encrypt_ram) + +struct kvm_memory_encrypt_ram { + __u64 address; + __u64 size; +}; #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) -- 2.9.4