diff options
author | Joseph Mingrone <jrm@FreeBSD.org> | 2023-08-10 13:57:31 -0300 |
---|---|---|
committer | Joseph Mingrone <jrm@FreeBSD.org> | 2023-08-16 14:06:40 -0300 |
commit | bc7829212d153aeff69b439d08e2e3001ef88ba3 (patch) | |
tree | dbd5b697523d2fe44889d386bd07de89d5b4dad4 /sysutils/devcpu-data-intel/files | |
parent | security/tailscale: Update to 1.48.0 (diff) |
sysutils/cpu-microcode-*: Reorganize CPU microcode ports
Prior to this update, sysutils/devcpu-data, which only contained an RC
script, had run dependencies on the AMD and Intel microcode ports. This
made it cumbersome to have just the AMD or just the Intel microcode
ports installed. With this change, the microcode ports now depend on
the RC script.
Other changes:
- Use more intuitive port names: cpu-microcode, cpu-microcode-amd,
cpu-microcode-intel, and cpu-microcode-rc.
- Add the metaport, cpu-microcode, which pulls in all related ports.
- Pet portclippy/portfmt
Reviewed by: lwhsu, markj
Approved by: sbruno (maintainer)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D41406
Diffstat (limited to 'sysutils/devcpu-data-intel/files')
-rw-r--r-- | sysutils/devcpu-data-intel/files/LICENSE | 125 | ||||
-rw-r--r-- | sysutils/devcpu-data-intel/files/Makefile | 18 | ||||
-rw-r--r-- | sysutils/devcpu-data-intel/files/ucode-split.c | 203 |
3 files changed, 0 insertions, 346 deletions
diff --git a/sysutils/devcpu-data-intel/files/LICENSE b/sysutils/devcpu-data-intel/files/LICENSE deleted file mode 100644 index 905826435746..000000000000 --- a/sysutils/devcpu-data-intel/files/LICENSE +++ /dev/null @@ -1,125 +0,0 @@ -The terms of the software license agreement included with any software you download will control your use of the software. - -INTEL SOFTWARE LICENSE AGREEMENT - -IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING. -Do not use or load this software and any associated materials (collectively, -the "Software") until you have carefully read the following terms and -conditions. By loading or using the Software, you agree to the terms of this -Agreement. If you do not wish to so agree, do not install or use the Software. - -LICENSES: Please Note: -- If you are a network administrator, the "Site License" below shall -apply to you. -- If you are an end user, the "Single User License" shall apply to you. -- If you are an original equipment manufacturer (OEM), the "OEM License" -shall apply to you. - -SITE LICENSE. You may copy the Software onto your organization's computers -for your organization's use, and you may make a reasonable number of -back-up copies of the Software, subject to these conditions: - -1. This Software is licensed for use only in conjunction with Intel -component products. Use of the Software in conjunction with non-Intel -component products is not licensed hereunder. -2. You may not copy, modify, rent, sell, distribute or transfer any part -of the Software except as provided in this Agreement, and you agree to -prevent unauthorized copying of the Software. -3. You may not reverse engineer, decompile, or disassemble the Software. -4. You may not sublicense or permit simultaneous use of the Software by -more than one user. -5. The Software may include portions offered on terms in addition to those -set out here, as set out in a license accompanying those portions. - -SINGLE USER LICENSE. You may copy the Software onto a single computer for -your personal, noncommercial use, and you may make one back-up copy of the -Software, subject to these conditions: - -1. This Software is licensed for use only in conjunction with Intel -component products. Use of the Software in conjunction with non-Intel -component products is not licensed hereunder. -2. You may not copy, modify, rent, sell, distribute or transfer any part -of the Software except as provided in this Agreement, and you agree to -prevent unauthorized copying of the Software. -3. You may not reverse engineer, decompile, or disassemble the Software. -4. You may not sublicense or permit simultaneous use of the Software by -more than one user. -5. The Software may include portions offered on terms in addition to those -set out here, as set out in a license accompanying those portions. - -OEM LICENSE: You may reproduce and distribute the Software only as an -integral part of or incorporated in Your product or as a standalone -Software maintenance update for existing end users of Your products, -excluding any other standalone products, subject to these conditions: - -1. This Software is licensed for use only in conjunction with Intel -component products. Use of the Software in conjunction with non-Intel -component products is not licensed hereunder. -2. You may not copy, modify, rent, sell, distribute or transfer any part -of the Software except as provided in this Agreement, and you agree to -prevent unauthorized copying of the Software. -3. You may not reverse engineer, decompile, or disassemble the Software. -4. You may only distribute the Software to your customers pursuant to a -written license agreement. Such license agreement may be a "break-the- -seal" license agreement. At a minimum such license shall safeguard -Intel's ownership rights to the Software. -5. The Software may include portions offered on terms in addition to those -set out here, as set out in a license accompanying those portions. - -NO OTHER RIGHTS. No rights or licenses are granted by Intel to You, expressly -or by implication, with respect to any proprietary information or patent, -copyright, mask work, trademark, trade secret, or other intellectual property -right owned or controlled by Intel, except as expressly provided in this -Agreement. - -OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software -remains with Intel or its suppliers. The Software is copyrighted and -protected by the laws of the United States and other countries, and -international treaty provisions. You may not remove any copyright notices -from the Software. Intel may make changes to the Software, or to items -referenced therein, at any time without notice, but is not obligated to -support or update the Software. Except as otherwise expressly provided, Intel -grants no express or implied right under Intel patents, copyrights, -trademarks, or other intellectual property rights. You may transfer the -Software only if the recipient agrees to be fully bound by these terms and if -you retain no copies of the Software. - -LIMITED MEDIA WARRANTY. If the Software has been delivered by Intel on -physical media, Intel warrants the media to be free from material physical -defects for a period of ninety days after delivery by Intel. If such a defect -is found, return the media to Intel for replacement or alternate delivery of -the Software as Intel may select. - -EXCLUSION OF OTHER WARRANTIES. EXCEPT AS PROVIDED ABOVE, THE SOFTWARE IS -PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND -INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A -PARTICULAR PURPOSE. Intel does not warrant or assume responsibility for the -accuracy or completeness of any information, text, graphics, links or other -items contained within the Software. - -LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE -FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, -BUSINESS INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR -INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR -LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL -DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE -OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION. - -TERMINATION OF THIS AGREEMENT. Intel may terminate this Agreement at any time -if you violate its terms. Upon termination, you will immediately destroy the -Software or return all copies of the Software to Intel. - -APPLICABLE LAWS. Claims arising under this Agreement shall be governed by the -laws of California, excluding its principles of conflict of laws and the -United Nations Convention on Contracts for the Sale of Goods. You may not -export the Software in violation of applicable export laws and regulations. -Intel is not obligated under any other agreements unless they are in writing -and signed by an authorized representative of Intel. - -GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED -RIGHTS." Use, duplication, or disclosure by the Government is subject to -restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its -successor. Use of the Software by the Government constitutes acknowledgment -of Intel's proprietary rights therein. Contractor or Manufacturer is Intel -2200 Mission College Blvd., Santa Clara, CA 95052. diff --git a/sysutils/devcpu-data-intel/files/Makefile b/sysutils/devcpu-data-intel/files/Makefile deleted file mode 100644 index 975279ec2a14..000000000000 --- a/sysutils/devcpu-data-intel/files/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -INTEL_UCODE= Intel-Linux-Processor-Microcode-Data-Files-%%GH_TAGNAME%%/intel-ucode -OUTPUT_DIR= mcodes - -all: ucode -ucode: ucode-split - mkdir -p $(OUTPUT_DIR) - cd ${OUTPUT_DIR} && \ - for file in \ - ../${INTEL_UCODE}/[0-9,a-f][0-9,a-f]-[0-9,a-f][0-9,a-f]-[0-9,a-f][0-9,a-f]; do \ - ../ucode-split $$file; \ - done - -# Use the host cc to compile ucode-split in case of cross-compile -ucode-split: ucode-split.c - ${CC} ucode-split.c -o $@ - -clean: - rm -rf $(OUTPUT_DIR) ucode-split diff --git a/sysutils/devcpu-data-intel/files/ucode-split.c b/sysutils/devcpu-data-intel/files/ucode-split.c deleted file mode 100644 index be659a613902..000000000000 --- a/sysutils/devcpu-data-intel/files/ucode-split.c +++ /dev/null @@ -1,203 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (C) 2018 The FreeBSD Foundation. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <err.h> -#include <fcntl.h> -#include <stdbool.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -static const size_t bufsize = 65536; - -/* SDM vol 3 9.11.1 Intel microcode header. */ -struct microcode_update_header { - uint32_t header_version; - uint32_t update_revision; - uint32_t date; /* BCD mmddyyyy */ - uint32_t processor_signature; - uint32_t checksum; /* Over update data and header */ - uint32_t loader_revision; - uint32_t processor_flags; - uint32_t data_size; - uint32_t total_size; - uint32_t reserved[3]; -}; - -/* - * SDM vol 2A CPUID EAX = 01h Returns Model, Family, Stepping Information. - * Caller must free the returned string. - */ - -static char * -format_signature(uint32_t signature) -{ - char *buf; - unsigned family, model, stepping; - - family = (signature & 0xf00) >> 8; - model = (signature & 0xf0) >> 4; - stepping = signature & 0xf; - if (family == 0x06 || family == 0x0f) - model += (signature & 0xf0000) >> 12; - if (family == 0x0f) - family += (signature & 0xff00000) >> 20; - asprintf(&buf, "%02x-%02x-%02x", family, model, stepping); - if (buf == NULL) - err(1, "asprintf"); - return (buf); -} - -static void -dump_header(const struct microcode_update_header *hdr) -{ - char *sig_str; - int i; - bool platformid_printed; - - sig_str = format_signature(hdr->processor_signature); - printf("header version\t0x%x\n", hdr->header_version); - printf("revision\t0x%x\n", hdr->update_revision); - printf("date\t\t0x%x\t%04x-%02x-%02x\n", hdr->date, - hdr->date & 0xffff, (hdr->date & 0xff000000) >> 24, - (hdr->date & 0xff0000) >> 16); - printf("signature\t0x%x\t\t%s\n", hdr->processor_signature, sig_str); - printf("checksum\t0x%x\n", hdr->checksum); - printf("loader revision\t0x%x\n", hdr->loader_revision); - printf("processor flags\t0x%x", hdr->processor_flags); - platformid_printed = false; - for (i = 0; i < 8; i++) { - if (hdr->processor_flags & 1 << i) { - printf("%s%d", platformid_printed ? ", " : "\t\t", i); - platformid_printed = true; - } - } - printf("\n"); - printf("datasize\t0x%x\t\t0x%x\n", hdr->data_size, - hdr->data_size != 0 ? hdr->data_size : 2000); - printf("size\t\t0x%x\t\t0x%x\n", hdr->total_size, - hdr->total_size != 0 ? hdr->total_size : 2048); - free(sig_str); -} - -static void -usage(void) -{ - - printf("ucode-split [-v] microcode_file\n"); - exit(1); -} - -int -main(int argc, char *argv[]) -{ - struct microcode_update_header hdr; - char *buf, *output_file, *sig_str; - size_t len, resid; - ssize_t rv; - int c, ifd, ofd; - bool vflag; - - vflag = false; - while ((c = getopt(argc, argv, "v")) != -1) { - switch (c) { - case 'v': - vflag = true; - break; - default: - usage(); - } - } - argc -= optind; - argv += optind; - - if (argc != 1) - usage(); - - ifd = open(argv[0], O_RDONLY); - if (ifd < 0) - err(1, "open"); - - buf = malloc(bufsize); - if (buf == NULL) - err(1, "malloc"); - - for (;;) { - /* Read header. */ - rv = read(ifd, &hdr, sizeof(hdr)); - if (rv < 0) { - err(1, "read"); - } else if (rv == 0) { - break; - } else if (rv < (ssize_t)sizeof(hdr)) { - errx(1, "invalid microcode header"); - } - if (hdr.header_version != 1) - errx(1, "invalid header version"); - - if (vflag) - dump_header(&hdr); - - sig_str = format_signature(hdr.processor_signature); - asprintf(&output_file, "%s.%02x", sig_str, - hdr.processor_flags & 0xff); - free(sig_str); - if (output_file == NULL) - err(1, "asprintf"); - ofd = open(output_file, O_WRONLY | O_CREAT | O_TRUNC, 0600); - if (ofd < 0) - err(1, "open"); - - /* Write header. */ - rv = write(ofd, &hdr, sizeof(hdr)); - if (rv < (ssize_t)sizeof(hdr)) - err(1, "write"); - - /* Copy data. */ - resid = (hdr.total_size != 0 ? hdr.total_size : 2048) - - sizeof(hdr); - if (resid > 1 << 24) /* Arbitrary chosen maximum size. */ - errx(1, "header total_size too large"); - while (resid > 0) { - len = resid < bufsize ? resid : bufsize; - rv = read(ifd, buf, len); - if (rv < 0) - err(1, "read"); - else if (rv < (ssize_t)len) - errx(1, "truncated microcode data"); - if (write(ofd, buf, len) < (ssize_t)len) - err(1, "write"); - resid -= len; - } - if (vflag) - printf("written to %s\n\n", output_file); - close(ofd); - free(output_file); - } -} |