Accepting request 184278 from home:jeff_mahoney

New package: contains Intel CPU microcode. This used to be in microcode_ctl but microcode_ctl is no longer needed. A deleterequest follows shortly.

OBS-URL: https://build.opensuse.org/request/show/184278
OBS-URL: https://build.opensuse.org/package/show/Base:System/ucode-intel?expand=0&rev=1
This commit is contained in:
Andreas Jaeger 2013-07-25 06:27:38 +00:00 committed by Git OBS Bridge
commit 63ab97be08
7 changed files with 382 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

123
LICENSE Normal file
View File

@ -0,0 +1,123 @@
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.

163
intel-microcode2ucode.c Normal file
View File

@ -0,0 +1,163 @@
/*
* Convert Intel microcode.dat into individual ucode files
* named: intel-ucode/$family-$model-$stepping
*
* The subdir intel-ucode/ is created in the current working
* directory. We get multiple ucodes in the same file, so they
* are appended to an existing file. Make sure the directory
* is empty before every run of the converter.
*
* Kay Sievers <kay.sievers@vrfy.org>
*/
#ifndef _GNU_SOURCE
# define _GNU_SOURCE 1
#endif
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <limits.h>
#include <stdbool.h>
#include <inttypes.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
struct microcode_header_intel {
unsigned int hdrver;
unsigned int rev;
unsigned int date;
unsigned int sig;
unsigned int cksum;
unsigned int ldrver;
unsigned int pf;
unsigned int datasize;
unsigned int totalsize;
unsigned int reserved[3];
};
union mcbuf {
struct microcode_header_intel hdr;
unsigned int i[0];
char c[0];
};
int main(int argc, char *argv[])
{
char *filename = "/lib/firmware/microcode.dat";
FILE *f;
char line[LINE_MAX];
char buf[4000000];
union mcbuf *mc;
size_t bufsize, count, start;
int rc = EXIT_SUCCESS;
if (argv[1] != NULL)
filename = argv[1];
count = 0;
mc = (union mcbuf *) buf;
f = fopen(filename, "re");
if (f == NULL) {
printf("open %s: %m\n", filename);
rc = EXIT_FAILURE;
goto out;
}
while (fgets(line, sizeof(line), f) != NULL) {
if (sscanf(line, "%x, %x, %x, %x",
&mc->i[count],
&mc->i[count + 1],
&mc->i[count + 2],
&mc->i[count + 3]) != 4)
continue;
count += 4;
}
fclose(f);
bufsize = count * sizeof(int);
printf("%s: %lu(%luk) bytes, %zu integers\n",
filename,
bufsize,
bufsize / 1024,
count);
if (bufsize < sizeof(struct microcode_header_intel))
goto out;
mkdir("intel-ucode", 0750);
start = 0;
for (;;) {
size_t size;
unsigned int family, model, stepping;
unsigned int year, month, day;
mc = (union mcbuf *) &buf[start];
if (mc->hdr.totalsize)
size = mc->hdr.totalsize;
else
size = 2000 + sizeof(struct microcode_header_intel);
if (mc->hdr.ldrver != 1 || mc->hdr.hdrver != 1) {
printf("unknown version/format:\n");
rc = EXIT_FAILURE;
break;
}
/*
* 0- 3 stepping
* 4- 7 model
* 8-11 family
* 12-13 type
* 16-19 extended model
* 20-27 extended family
*/
family = (mc->hdr.sig >> 8) & 0xf;
if (family == 0xf)
family += (mc->hdr.sig >> 20) & 0xff;
model = (mc->hdr.sig >> 4) & 0x0f;
if (family == 0x06)
model += ((mc->hdr.sig >> 16) & 0x0f) << 4;
stepping = mc->hdr.sig & 0x0f;
year = mc->hdr.date & 0xffff;
month = mc->hdr.date >> 24;
day = (mc->hdr.date >> 16) & 0xff;
asprintf(&filename, "intel-ucode/%02x-%02x-%02x", family, model, stepping);
printf("\n");
printf("%s\n", filename);
printf("signature: 0x%02x\n", mc->hdr.sig);
printf("flags: 0x%02x\n", mc->hdr.pf);
printf("revision: 0x%02x\n", mc->hdr.rev);
printf("date: %04x-%02x-%02x\n", year, month, day);
printf("size: %zu\n", size);
f = fopen(filename, "ae");
if (f == NULL) {
printf("open %s: %m\n", filename);
rc = EXIT_FAILURE;
goto out;
}
if (fwrite(mc, size, 1, f) != 1) {
printf("write %s: %m\n", filename);
rc = EXIT_FAILURE;
goto out;
}
fclose(f);
free(filename);
start += size;
if (start >= bufsize)
break;
}
printf("\n");
out:
return rc;
}

5
intel-ucode.changes Normal file
View File

@ -0,0 +1,5 @@
-------------------------------------------------------------------
Wed Jul 24 23:17:08 UTC 2013 - jeffm@suse.com
- Initial packaging. Moved microcode from microctl_ctl package.

64
intel-ucode.spec Normal file
View File

@ -0,0 +1,64 @@
#
# spec file for package ucode-intel
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: ucode-intel
ExclusiveArch: %ix86 x86_64
Url: http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=22508&keyword=Microcode&lang=eng
Summary: Microcode Updates for Intel x86/x86_64 CPUs
License: Intel Software License Agreement
Group: Kernel/System
Version: 20130222
Release: 0
Source0: microcode-%{version}.tgz
Source1: intel-microcode2ucode.c
Source2: LICENSE
Supplements: modalias(x86cpu:vendor:0000:family:*:model:*:feature:*)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
This package contains the microcode update blobs for Intel x86 and x86-64 CPUs.
%prep
%setup -q -c intel-ucode
cp %{S:2} .
%build
%{__cc} -fwhole-program %{optflags} %{S:1} -o generate_microcode
./generate_microcode microcode.dat
%install
install -D -m 0755 generate_microcode %{buildroot}%{_bindir}/generate_microcode
for file in intel-ucode/*; do
install -D -m 0644 $file %{buildroot}/lib/firmware/$file
done
%post
#if this fails, the user must either reboot or reload manually.
test -f /sys/devices/system/cpu/microcode/reload && /bin/echo 1 > /sys/devices/system/cpu/microcode/reload || exit 0
%clean
rm -rf $RPM_BUILD_ROOT;
%files
%defattr(-,root,root)
%doc LICENSE
%{_bindir}/generate_microcode
%dir /lib/firmware/intel-ucode
/lib/firmware/intel-ucode/*
%changelog

3
microcode-20130222.tgz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fd25bd9777fc3c3b11f01e9090a2d24f7650023c9ec74bbf9f43bffe1d9d01cc
size 602449