From 9ee52be785cf91fc6a3c6aa27d484873f8270b72 Mon Sep 17 00:00:00 2001 From: "Allen, John" Date: Wed, 13 Feb 2019 18:41:48 +0000 Subject: [PATCH] linux-firmware: Add AMD SEV firmware Add AMD Secure Encrypted Virtualization (SEV) firmware to allow for the updating of the SEV firmware outside of BIOS releases. Naming convention and directory structure follows the convention defined in the kernel driver in drivers/crypto/ccp/psp-dev.c SEV firmware files are to be placed in the "amd" directory and names should follow the pattern: amd_sev_famh_modelh.sbin where FAMILY is the two-digit hexadecimal value of the target processor family (e.g. 17) where MODEL is the two-digit hexadecimal value of the target processor model (e.g. 01) or where the least significant nibble of the two-digit hexadecimal value can be an 'x' to indicate a range of models (e.g. 0x for 00 to of). The firmware provided is version 0.17 build 11 and is for AMD family 17h processors with models in the range 00h to 0fh. Signed-off-by: John Allen Signed-off-by: Josh Boyer --- LICENSE.amd-sev | 64 +++++++++++++++++++++++++++++++ WHENCE | 9 +++++ amd/amd_sev_fam17h_model0xh.sbin | Bin 0 -> 32000 bytes 3 files changed, 73 insertions(+) create mode 100644 LICENSE.amd-sev create mode 100644 amd/amd_sev_fam17h_model0xh.sbin diff --git a/LICENSE.amd-sev b/LICENSE.amd-sev new file mode 100644 index 0000000..de4d948 --- /dev/null +++ b/LICENSE.amd-sev @@ -0,0 +1,64 @@ +Copyright (C) 2015-2019 Advanced Micro Devices, Inc., All rights reserved. + +Permission is hereby granted by Advanced Micro Devices, Inc. ("AMD"), +free of any license fees, to any person obtaining a copy of this +microcode in binary form (the "Software") ("You"), to install, +reproduce, copy and distribute copies of the Software and to permit +persons to whom the Software is provided to do the same, subject to +the following terms and conditions. Your use of any portion of the +Software shall constitute Your acceptance of the following terms and +conditions. If You do not agree to the following terms and conditions, +do not use, retain or redistribute any portion of the Software. + +If You redistribute this Software, You must reproduce the above +copyright notice and this license with the Software. +Without specific, prior, written permission from AMD, You may not +reference AMD or AMD products in the promotion of any product derived +from or incorporating this Software in any manner that implies that +AMD endorses or has certified such product derived from or +incorporating this Software. + +You may not reverse engineer, decompile, or disassemble this Software +or any portion thereof. + +THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY OF ANY KIND, INCLUDING BUT NOT LIMITED TO WARRANTIES OF +MERCHANTABILITY, NONINFRINGEMENT, TITLE, FITNESS FOR ANY PARTICULAR +PURPOSE, OR WARRANTIES ARISING FROM CONDUCT, COURSE OF DEALING, OR +USAGE OF TRADE. IN NO EVENT SHALL AMD OR ITS LICENSORS BE LIABLE FOR +ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR +LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF DATA OR +INFORMATION) ARISING OUT OF AMD'S NEGLIGENCE, GROSS NEGLIGENCE, THE +USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF AMD HAS BEEN ADVISED +OF THE POSSIBILITY OF SUCH DAMAGES. BECAUSE SOME JURISDICTIONS +PROHIBIT THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR +INCIDENTAL DAMAGES OR THE EXCLUSION OF IMPLIED WARRANTIES, THE ABOVE +LIMITATION MAY NOT APPLY TO YOU. + +Without limiting the foregoing, the Software may implement third party +technologies for which You must obtain licenses from parties other +than AMD. You agree that AMD has not obtained or conveyed to You, and +that You shall be responsible for obtaining the rights to use and/or +distribute the applicable underlying intellectual property rights +related to the third party technologies. These third party +technologies are not licensed hereunder. + +If You use the Software (in whole or in part), You shall adhere to all +applicable U.S., European, and other export laws, including but not +limited to the U.S. Export Administration Regulations ("EAR"), (15 +C.F.R. Sections 730 through 774), and E.U. Council Regulation (EC) No +1334/2000 of 22 June 2000. Further, pursuant to Section 740.6 of the +EAR, You hereby certify that, except pursuant to a license granted by +the United States Department of Commerce Bureau of Industry and +Security or as otherwise permitted pursuant to a License Exception +under the U.S. Export Administration Regulations ("EAR"), You will not +(1) export, re-export or release to a national of a country in Country +Groups D:1, E:1 or E:2 any restricted technology, software, or source +code You receive hereunder, or (2) export to Country Groups D:1, E:1 +or E:2 the direct product of such technology or software, if such +foreign produced direct product is subject to national security +controls as identified on the Commerce Control List (currently found +in Supplement 1 to Part 774 of EAR). For the most current Country +Group listings, or for additional information about the EAR or Your +obligations under those regulations, please refer to the U.S. Bureau +of Industry and Security’s website at ttp://www.bis.doc.gov/. diff --git a/WHENCE b/WHENCE index 853990b..0c485f3 100644 --- a/WHENCE +++ b/WHENCE @@ -3311,6 +3311,15 @@ Licence: Redistributable. See LICENCE.go7007 for details -------------------------------------------------------------------------- +Driver: ccp - Platform Security Processor (PSP) device + +File: amd/amd_sev_fam17h_model0xh.sbin +Version: 2019-02-13 + +License: Redistributable. See LICENSE.amd-sev for details + +-------------------------------------------------------------------------- + Driver: microcode_amd - AMD CPU Microcode Update Driver for Linux File: amd-ucode/microcode_amd.bin diff --git a/amd/amd_sev_fam17h_model0xh.sbin b/amd/amd_sev_fam17h_model0xh.sbin new file mode 100644 index 0000000000000000000000000000000000000000..1f75b7d744c3998d9c10ce6ed559f8cf78e7c8e9 GIT binary patch literal 32000 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 aPOcz#^Wu5EiN#y}KPYEjik|r4PyP)ubE4D$ literal 0 HcmV?d00001