From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0073.outbound.protection.outlook.com [104.47.32.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 20D9A21BBC435 for ; Thu, 22 Jun 2017 13:37:14 -0700 (PDT) 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; bh=ZXoH18gYJtxEHgrvLgAJI7lal4EmXNC95P8XYRiIKa4=; b=sM0qT5UgeFCoC9Nx41U34KbU8WjyQt8V2YeS+kjWb9nBKOUrnKHxCaNq3HBTTFoOnGK42Db1V3NzYW/HZiU1pCgkeHbkZ6gEwwidCnLig9H6eZr4rNfueg9neLPr+0DOxP8YYhrJNpddRFrBUHSkTrS3i0FQZSEVYox4CZHPZHo= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=amd.com; Received: from brijesh-build-machine.amd.com (165.204.77.1) by BY2PR12MB0145.namprd12.prod.outlook.com (10.162.82.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Thu, 22 Jun 2017 20:38:37 +0000 From: Brijesh Singh To: edk2-devel@lists.01.org Cc: Brijesh Singh , Jordan Justen , Laszlo Ersek Date: Thu, 22 Jun 2017 16:37:47 -0400 Message-Id: <1498163868-30191-17-git-send-email-brijesh.singh@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1498163868-30191-1-git-send-email-brijesh.singh@amd.com> References: <1498163868-30191-1-git-send-email-brijesh.singh@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CO1PR15CA0051.namprd15.prod.outlook.com (10.175.176.19) To BY2PR12MB0145.namprd12.prod.outlook.com (10.162.82.18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9f8b6cd2-c1bb-4c90-7ffa-08d4b9aea954 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(201703131423075)(201703031133081); SRVR:BY2PR12MB0145; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 3:6OOQhWFgbN7gj29gyMFcA3Ht+4d73M2cOaXs56gfHRAaAkGU4Bt6mNq0CyoK7Iv2BcOioNwYdQgWh/YYRNADxOvzGRu0fjo8uaB0wlahS9zVsjkVIaiwU1NVLW4icUQA7AmxLTOOeAIVgifPKxUjbBHpuzM0XiqdZSYCcZM2KmxRaDWInz05L06q2e+sPuN7laBZ3POQcDn5OF8avUdoLvPQ+lwYYmieGrKDs0EeR04S1TMTNTwvdTt6C4Aj7Zjean123ROBDZD1lNw9yH5Ec7tANdKU2+gFaGFNbKAsw2co8bj/CpCNIOqG7dwczVk7jrGsnsG9FiGF/OQfePiIA60kVaE9mK+70OwqFxJa1XM=; 25:kM7n4y/+4B3DkObSxHJTxiq/d+nSYIWPTKrA4laE4013DlF5wrj8HpN64rJDJEp+ccsC/AFU33MItX0tPm9sZHcEzTYBClxomOryqg0dZ4T2xmNlbe2wwSHbhq89+fiA6tvYcYQjH/QZAv/wyEnuh7cgoToy/yNp9vp1o5QPKxB7g/dLAezWhSGrAgbo1+r/hBjtoz3UfA5EyDb5I2nwR4XhRF9voSeMOEdC9xg/sIsGWshyZtv9wZgV+K76/cgl4634mckL+/QrvXDhww21T1cxqr+zA/jI3ja2FJFsD6ILKKssRF9KpuUTj3xNolv4jXvvSplcxl0umg0D9mnAiJ/NNTOtvVmbVLWLm2sMKO+b3X3zelf8uaeVjR/j3HH2NWrJ3DghcjUQduyWCIDHX1eW3Nmcuqjt0VEZtDff6mfW1YGJDylX0+SwUU+usj82M2QfJIDx08PAYqe6/ttwdGNKV9yBfVbWK4BDLTS1ZS8= X-MS-TrafficTypeDiagnostic: BY2PR12MB0145: X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 31:sVoNxXW5oigg4Z3NZCf5FVn+/cqUwU/xFL75iH4zsVu2cSliWVK9yt6wVHqnU5U9xEKKcuussYnoOl0ynz51k7eZN63R0LwDZg/ms41GqHALpaznHDDdAc7lN74uXfo5sm/v6L+EVjC3VBJeT9u2QyaYVLjldns9MWoTNy8ASkQHdpwdOdu/GGMhx5ZtWHid82GPHYuPOSPJV4RGXVsR+d38g0lLeQNW/zihzzpH7mY=; 20:nH7VEUp61iCHLRriZj3fW/qU03Vh3dnktC6sIqxm7I9LEDushsCoWYQ0zs+ileeLmB0ZEqr2ZAIWKdAr7JnfBvTBrd78We10wmvC1t/P2+QCV7ZZjIt1H3f9bO+SnsZo5kltvRhmFuFbpLD5dNQ87A/L3jd0QboYPLTuX56fVud2DcqP/EjRdvQMe3QDzJZ7FTxgVweIsyJ3U/HvtLqvOalxW9eRh4a933/u8AAmr2tK4h6WBAa7c3uwNzeyoMH153XerZPUJMa2nJeQOAsJGBcQnJRld/QuKcuwQVJSAMBhjaylFCHyALG/zP0JEVoqTajgF+aHZZ1wwjsy3fcjBgdBhgyRfw+WaUbiQVieMQ5dT0OuO9XcKNg2WB21s6MZB997eR3fsHVQcW6prFTpxVQaMRCb3ONomWJzIjdwFHHUQlsPd5dHGIK/E1Q6zB610r0ytSP8W4AUx7w31tDdMPLkrkYzbEeGl+n6wiiYBemQkuSujzrGJfdT8KLpOpUr X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123558100)(20161123560025)(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:4B2XxwJyvelzGqk8vfya0osVg19rfqMQxwkN/L988n?= =?us-ascii?Q?CHV3/Q9aq09Gbk2vhFdbS+xkPynV/amVIC664nW87FRryj31+DQsELbGomrE?= =?us-ascii?Q?qFh1mGuyp5wiuzJL4DBS8W8MLIepAn5dQhBpQPtk/yxppf/56t/tqMinLtnf?= =?us-ascii?Q?moyzHn7lJUhjsfLsi2YpMA+p1XhL8tQ3pmCyvfuH3nxTMjdBM9lDaqmSR9B+?= =?us-ascii?Q?SJmdEFvg+XuBKAFRojXvRqPh39sL7GUfRCxyBmdiVJYm4kJ3GwHQMknfuG73?= =?us-ascii?Q?OxPPepFYPPD+PpXDnkI4InhEMTPmtda1o6AswaH9hno6xz0ehiGl6XQAV8F3?= =?us-ascii?Q?t0+Cwaxm5bvge4gbqdOiydXR6R7OUXwt+jleIyGAghTAaZmvvo79Pa/oznbn?= =?us-ascii?Q?ny5QoTAaEbbVxGtfLKuOSDB9MW4arWZmqKSKD6Kdw/y1TwvFatNJS1E0WpdE?= =?us-ascii?Q?PXLbtmbiEkFlTO0OGZtDvAl0UrSWGE3ACRDzCcflJHJzzVHIye0cnsLPL1Xj?= =?us-ascii?Q?45rkalFhZ5tUSblc4TqOYJr9XmGOOgrjgeAat1zhvOL2t0m27HQDdU/PvAH8?= =?us-ascii?Q?fUaQYQ5ndK5pDXauZNPBzgEPlaVmNv7A3iPDCYZ4paxun0OlaSL0hYhEqhr3?= =?us-ascii?Q?0fxU6ZE5yNXxeX9jC4pQE3U7Kwr050BA9umiyQhoaIgKaLUNZy27g0CEm937?= =?us-ascii?Q?wb2Bf7wQkDBZZ1uZ89q9OMx7lMdUOKeIKHqdj+gh7HJn2y1W1qec5af2L0yn?= =?us-ascii?Q?zo5R81l6eegHtbb4iO9BWXQ70LXixZBLQLR05anFciwJMxH9xArjI/ILXssb?= =?us-ascii?Q?TdWAdI464UjC+SNKpE2Szbw7vvrxpDIZ1LutWzCDAdSN5EZxZQb3V8d0PtiR?= =?us-ascii?Q?Hh179o/nsteycr6o/IqbKVf7jmW1lGaj4vlEkAHZPbL4/jMBlpFpCuc9EcKi?= =?us-ascii?Q?q3Gzy2gxEOcF9+9w+3KH9oZpv6pW7hJkYQQgUsEQ05igMWb3s5B4XHUV0/gW?= =?us-ascii?Q?oa+HXBJtrFnDbI2kR12Aq8OFsCEmdaeyBOfxSjUNk43D5+nJ8vW4puQMArkC?= =?us-ascii?Q?Vklr0ahIfxYKE6cESDXxHtlIYnajsZ9fSFmB+o/0WNL6y39Tgs8dEMsJSE57?= =?us-ascii?Q?s0ImtfjjGw2VANkH1bleUjhMvhk1sTn5M9rbGxYsha8+mCAl54c32z3IoYda?= =?us-ascii?Q?dgaLAacLksz8L9hSxBl50OZZJQ/f5ZMD6C6d9HewIezZgP/E7ZBy8AzDf1NU?= =?us-ascii?Q?xZOLMG5SHoes4wTr8=3D?= X-Forefront-PRVS: 03468CBA43 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6029001)(6009001)(39450400003)(39840400002)(39850400002)(39860400002)(39410400002)(39400400002)(25786009)(189998001)(50226002)(76176999)(50986999)(2351001)(2361001)(7736002)(33646002)(2950100002)(6916009)(6666003)(6486002)(4326008)(53936002)(2906002)(110136004)(5003940100001)(8676002)(81166006)(38730400002)(478600001)(36756003)(305945005)(54906002)(47776003)(3846002)(66066001)(50466002)(48376002)(6116002)(86362001)(53416004)(5660300001)(42186005); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0145; H:brijesh-build-machine.amd.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR12MB0145; 23:/6jP12/+B1R5h8tX640M+gdtCyIL9b/8bnaMbNqiZ?= =?us-ascii?Q?6umo6FY9UU0zTh0e8RJ+2tmopGwE/CezdUDuXiXUSyPiEt7aEsBHpsIEPxbP?= =?us-ascii?Q?nMeKHoSVgZIf5HkofM64yY+2j1PJ5gCmKGpTBVGdPhcU9znUiZKIMdxw+D/j?= =?us-ascii?Q?VQNT1rAvFTi+f3JbJbdjybB8OqoTkYidWiPkdCFitcvGXwhKMu0y0MvrHG21?= =?us-ascii?Q?3/MNzRYWZlNaP9FFaZx54/Wdwi/IA+cJG2BzXn5DlxDLrUQfm/Q5Htik901M?= =?us-ascii?Q?3ZPqV+m8cCtoZR7Zjok6/0aAyPUU1QqStzYo7bzWC6jWvf+hGqf5iWxmhMb+?= =?us-ascii?Q?h52EGRwmcv4qD2j6rHr8BuXqQ3N3qWnHcBGtp9WH+uEadTvwEHJAjkU2GFYG?= =?us-ascii?Q?fG3i566XJgiGnlDE7wwMEbz/Lpr/cw3B0MIYRqhPixFBP0t3lnZXB6zAo+iV?= =?us-ascii?Q?yk8X6Q5mMwXTa2OxuvsZIHA4uhXG8WhU5v8yCtpiPhsDDLP1IWOnrSXBumRC?= =?us-ascii?Q?6/CPyg4eGgygdGOtQaVKQc3Uck+6AKFnAk4xORxqcuj7FbQrYrUytZZgEXcA?= =?us-ascii?Q?Lsc8JJlrlHqwFw1EG0G7n9QnqWYAwUtHKxh8Iq+ZMOdnMchQtsVazgPpT+99?= =?us-ascii?Q?H6Q0XoDCOr7Tf++qZcKuwI2sK7AtvAuZsE+d7G/cKAM8jVM9/Q308wnqaZVn?= =?us-ascii?Q?nreVctkt5pV7N1YxZdwRoIevxJK48dopfPVfvLIyx0X8pk7DGfhM9mS13C7c?= =?us-ascii?Q?p+f4BuPSAETNlID0MfojnQ22rYBb17/Vy6FCg4bjhfL3Yc9oQCuabQmLFytN?= =?us-ascii?Q?3YbgPm6w7hBVrSc15DxcJZoIMcLbbwl0/SaX4oHh3WIpXvL11n672dbwQuSZ?= =?us-ascii?Q?bjKY5dhHIgEtgmGb2MePqHJpefT3cX75zZqRLc6Gq2IRV2V/cHUvB4J4KLRh?= =?us-ascii?Q?NNV8ZnfgfyIyT1Q4ZTCtM2GdbaWuh3oau8Ar78sCzq4SR9Rx1n1zNQHjr+Md?= =?us-ascii?Q?q7Xf64EtNTXz5XLpujwJAOonP5kZCXJ+4lycTsvviVowg+wTw1DC3rFivFum?= =?us-ascii?Q?PH2x3QiR0XxZq86T8Q1rqmXxKb8VILECKXYvrsZHChbydjxSa08R0796o15X?= =?us-ascii?Q?R4B1/rRlzw=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR12MB0145; 6:XYBXZ0epWlK2iVFG72YBtzYLyqMpqpQ6tieAGG/1TZ?= =?us-ascii?Q?96G6jyVDFPLx4Zva04SaSoYLwsgsqXvVS8VBfmLCBwaqeuNY+M+aKuA89rRY?= =?us-ascii?Q?Jnr2Wo4zepHMkKzMf6eQJUSkF3zOFAWp2HfgOwqG9xaWL72CSsbjDMW0XWio?= =?us-ascii?Q?znJ4+BVWKEgzfUSaYH5Ihh91dyPHu3lqeYxM0C46ayBTe5+iH+xXypChts8j?= =?us-ascii?Q?mAO5IPYMOj3tW8T0rPcEbfPXmLBf1+8R7OiWW5a/E6L3uuFxde3ORi/Be1o8?= =?us-ascii?Q?IRIep0Y7dDgXqE+Q/oNI9uSqqlOYMhscU2ivejWcmAjnKUcU94D8SAeazA6e?= =?us-ascii?Q?68L0Ixg96TvexzCp+xzv7+Qn7ZRgrMNvCNSmETkUwXM0AS2FCu1ZWiw3/QTO?= =?us-ascii?Q?ZsKt1cEw5wKFazI0jDCF9437OejWapefy1tCxmeMQfq0QLp/mSUT7zc19pth?= =?us-ascii?Q?O9jiVviLE2GaQ3wvR4UahHpRcuSQgNDsnmPuEFiJJzNcaBx6qfcdbpnpvvvM?= =?us-ascii?Q?ki8WHEQXaU/fWDhO4dKvgS4a4/AS54inwIupfKFYU1bSOJSLgVJs4M49KVeu?= =?us-ascii?Q?6CT1rUwa4Us+oUA1Ssnmb0kKMYIKuZH7neCOEWWuTjAfb7qC6zOdGTKGRrBU?= =?us-ascii?Q?qc1fA/kvCeQVOEh+NaOdRa74kazbPT5PTWQvnS8k4UwJnBCsiT/7wLVIBMqr?= =?us-ascii?Q?hneuMSUh50/g8O3xhtYZ7I4zM8oPnzZXuJzmGv25EAb3XITPcXN1flVTgsHL?= =?us-ascii?Q?Mr0wOCVq5Y8B7uWXJ+TBh1Bd+Qb9Em5f40vUmFALTaZpLzTlEsKt1lg4gj/e?= =?us-ascii?Q?JzbP0eknNwzxxQidJk+twIehdf5Os8QjkAyMfcOomeziEXSIH91b39h8+G6s?= =?us-ascii?Q?xxPOlMCMbSIG56VHaJI7TpO0WUBo9r/u8YqxAIx0EJkBuEWuQWvg/vY8Kw/u?= =?us-ascii?Q?6fOrV5DXtmg30SRNhpmjniJRDDxSDPD3JHHwdxyKmx9gX6DJIL/APhY3d+Oa?= =?us-ascii?Q?Z0sIGXw+I9vi3rBFG+ZFFY?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 5:cm+ozC4lKP2UCLXFV8M5whCfqBSALPALvGy1YWX59o6+I2mLQyJPiDefELZaLqF7bRm1Do1TZ3tI2oK/LF0MZYra47t0MXc1bOslO12BpjSy+Oe8CttIgkQ8+L6Ck4zWtbLxxK44xK+4HTrSYLZ9mUqDm/1DjP3ihMIVm6ZoS1j2BtRIWh8wG0N3uITOdLPKIVzFqAz5wOQdW04a/yDDsV8I9n/vMqqY1ZHFsKO/A9Lmf0TZJiJ9fUxL7OcHwIWEiK9SlWxT0rXZHpsw0HqkbbH5GBpYgBokEOcpp58JxifSe3zEOF3thS8tYTn4NkHm2x3XnWYSVQCG6r4TC05GH2lO0+FmgCh25SD83+Pyk97/MiOYs/IyWFD2pIoWt84smPgJrYlAykeu0v9Z9NeuyCNHD1dBaE1pgFLLB9OlGnlSfxGNZAYY2WtRdtMGhDh2NkZg+cXKgsR00Al3hztj/WBJqnyeD6PLO1+Ka9Aab1cYSHwmHXZq4Khi14Yx0xD7; 24:oOu1G/hE4+s6gTRfm6aYahLLn/eObNWuiukViSw67hb0VnpfySwnttMqqlZqrwE5DH0d1uau81HJpzLi/iAQO7vbKRcL8YUuX9FrB0I+Ze4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 7:bzV/IWkx6IpIHpPf78n2IuOol8LCekMq1dIJhbyCftO/9mXwClZr5dEXsQefrd3USCjl6Cd+i6uMlwUNwC5+JF5DTWxRjK90fo8VSq8mW4AdxDMWyKZGGUQcdMMM0O3gNOhSuuw9gSFZ5QttHrcGiXiRCvuzt4qShnbx9M4rXEHv9k4A5/0t8SwR1fSOvOlJgklZMVpCzwsm4pK9CfIFHLHmDXSQFOo2I07Wg+pvdVVQKJyrlWThh3yk6AdGGOOTGJ8QRCSeGXLcapKtrq4+CGhZPOYhNQO+uF3QGqB/L1ef0P5oS0i4Ivp/D0+xWLt5K6ARLEt736e0Gr1LoslYFX8ERMebHOio3GYFmH3x+dob4Lqx7P9o7lEY0gf9U+llx5kdNcCQCQcaWhvoA17AmrMteVtZUxizmmbfpp5WxxmdYlPNf72chwW6B0/uNSqghJ4IKZQeTubyHils6H9HiKfPoq2GrNCB5QmusWqPc33ffgBOcksUFeyQ7HzgmxUg+4x7R9qwWFzeQBwv1dNY03T7DXXZpK+dhkSTgDDwFneS82j1yPhMNDT7Te31NfU/ZrjI9fuWRlrV4W9zzEW/b+FoPGWstxMPXmcmMofI7JeMVtDgLP9og8fiCHWaG45Lgyh+Y/nwch/jr/Npz7bAH0Fxl7/lj+muNgB5rChP25o+HAGSfPHpf+xSK2hkyyc1yQvdz3bqEMBj/OuNQWLyvk5UufUelD3ICd43hzCFjeTihVjk3NkzIpWPcYbsB8AnX3AB+mAmc595raM5l2W5d5vq2/mj31Kdj+fEKRxuvSE= X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0145; 20:J6VWQVLXP47tTvb31RShMNcYnhIvEsrcSOoTSQo596OA0UxMLfQlPvgVd8PTJySqyjwPxB4gIxG3z9uJ5Rv70ZEKmuFceLZo3RAGmiWvwa6wG2J0WKRLhFTfl8LuHLz7PGYa5zvhaxkl3P9aq1B57FOMdYvyQSWBHm9DHBVHbxf0emUNCY0RVYtdYovdTV3PTdGgS3YPp8vwUAFSBjzaMpA9j3ySHYvjC7iX9aRXRcLuuKdvBsqiprOr7a0zr5fL X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2017 20:38:37.7105 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR12MB0145 Subject: [PATCH v7 16/17] OvmfPkg/QemuFwCfgLib: Add SEV support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 20:37:14 -0000 Content-Type: text/plain When SEV is enabled, use a bounce buffer to perform the DMA operation. Cc: Jordan Justen Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Brijesh Singh Reviewed-by: Laszlo Ersek Reviewed-by: Jordan Justen --- OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c | 54 +++++++++++++++++++- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c b/OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c index 73a19772bee1..dbebd36b1853 100644 --- a/OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c +++ b/OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c @@ -72,6 +72,8 @@ InternalQemuFwCfgDmaBytes ( volatile FW_CFG_DMA_ACCESS *Access; UINT32 AccessHigh, AccessLow; UINT32 Status; + UINT32 NumPages; + VOID *DmaBuffer, *BounceBuffer; ASSERT (Control == FW_CFG_DMA_CTL_WRITE || Control == FW_CFG_DMA_CTL_READ || Control == FW_CFG_DMA_CTL_SKIP); @@ -80,11 +82,44 @@ InternalQemuFwCfgDmaBytes ( return; } - Access = &LocalAccess; + // + // When SEV is enabled then allocate DMA bounce buffer + // + if (InternalQemuFwCfgSevIsEnabled ()) { + UINTN TotalSize; + + TotalSize = sizeof (*Access); + // + // Skip operation does not need buffer + // + if (Control != FW_CFG_DMA_CTL_SKIP) { + TotalSize += Size; + } + + // + // Allocate SEV DMA buffer + // + NumPages = (UINT32)EFI_SIZE_TO_PAGES (TotalSize); + InternalQemuFwCfgSevDmaAllocateBuffer (&BounceBuffer, NumPages); + + Access = BounceBuffer; + DmaBuffer = (UINT8*)BounceBuffer + sizeof (*Access); + + // + // Decrypt data from encrypted guest buffer into DMA buffer + // + if (Control == FW_CFG_DMA_CTL_WRITE) { + CopyMem (DmaBuffer, Buffer, Size); + } + } else { + Access = &LocalAccess; + DmaBuffer = Buffer; + BounceBuffer = NULL; + } Access->Control = SwapBytes32 (Control); Access->Length = SwapBytes32 (Size); - Access->Address = SwapBytes64 ((UINTN)Buffer); + Access->Address = SwapBytes64 ((UINTN)DmaBuffer); // // Delimit the transfer from (a) modifications to Access, (b) in case of a @@ -117,6 +152,21 @@ InternalQemuFwCfgDmaBytes ( // After a read, the caller will want to use Buffer. // MemoryFence (); + + // + // If Bounce buffer was allocated then copy the data into guest buffer and + // free the bounce buffer + // + if (BounceBuffer != NULL) { + // + // Encrypt the data from DMA buffer into guest buffer + // + if (Control == FW_CFG_DMA_CTL_READ) { + CopyMem (Buffer, DmaBuffer, Size); + } + + InternalQemuFwCfgSevDmaFreeBuffer (BounceBuffer, NumPages); + } } -- 2.7.4