Import of pkgsrc-2013Q2

This commit is contained in:
2013-09-26 17:14:40 +02:00
commit 785076ae39
74991 changed files with 4380255 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
The microcode data file contains the latest microcode definitions for all
Intel processors. Intel releases microcode updates to correct processor
behavior as documented in the respective processor specification updates.
While the regular approach to getting this microcode update is via a BIOS
upgrade, Intel realizes that this can be an administrative hassle. The Linux
operating system and VMware ESX products have a mechanism to update the
microcode after booting. For example, this file will be used by the
operating system mechanism if the file is placed in the /etc/firmware
directory of the Linux system.

View File

@@ -0,0 +1,36 @@
# $NetBSD: Makefile,v 1.5 2013/04/19 15:34:30 drochner Exp $
#
DISTNAME= microcode-20130222
PKGNAME= intel-microcode-netbsd-20130222
CATEGORIES= sysutils
MASTER_SITES= http://downloadmirror.intel.com/22508/eng/
EXTRACT_SUFX= .tgz
MAINTAINER= drochner@NetBSD.org
HOMEPAGE= http://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=22508
COMMENT= Firmware updates for Intel x86 processors
#LICENSE= # TODO: (see mk/license.mk)
ONLY_FOR_PLATFORM+= NetBSD-6.99.*-i386
ONLY_FOR_PLATFORM+= NetBSD-6.99.*-x86_64
WRKSRC= ${WRKDIR}
USE_LANGUAGES= c
FWDIR= libdata/firmware/cpu_x86_intel1
INSTALLATION_DIRS+= ${FWDIR}
RCD_SCRIPTS+= intel-microcode
post-extract:
${CP} ${FILESDIR}/extract.c ${WRKSRC}
do-build:
cd ${WRKSRC} && ${CC} extract.c -o extract
do-install:
cd ${DESTDIR}${PREFIX}/${FWDIR} && \
${WRKSRC}/extract ${WRKSRC}/microcode.dat
.include "../../mk/bsd.pkg.mk"

View File

@@ -0,0 +1,200 @@
@comment $NetBSD: PLIST,v 1.2 2012/10/30 13:26:51 drochner Exp $
libdata/firmware/cpu_x86_intel1/00000650-0
libdata/firmware/cpu_x86_intel1/00000650-1
libdata/firmware/cpu_x86_intel1/00000650-3
libdata/firmware/cpu_x86_intel1/00000651-0
libdata/firmware/cpu_x86_intel1/00000652-0
libdata/firmware/cpu_x86_intel1/00000652-1
libdata/firmware/cpu_x86_intel1/00000652-2
libdata/firmware/cpu_x86_intel1/00000653-0
libdata/firmware/cpu_x86_intel1/00000653-1
libdata/firmware/cpu_x86_intel1/00000653-2
libdata/firmware/cpu_x86_intel1/00000653-3
libdata/firmware/cpu_x86_intel1/00000660-0
libdata/firmware/cpu_x86_intel1/00000665-4
libdata/firmware/cpu_x86_intel1/0000066a-1
libdata/firmware/cpu_x86_intel1/0000066a-3
libdata/firmware/cpu_x86_intel1/0000066a-5
libdata/firmware/cpu_x86_intel1/0000066d-1
libdata/firmware/cpu_x86_intel1/0000066d-3
libdata/firmware/cpu_x86_intel1/0000066d-5
libdata/firmware/cpu_x86_intel1/00000671-2
libdata/firmware/cpu_x86_intel1/00000672-2
libdata/firmware/cpu_x86_intel1/00000673-2
libdata/firmware/cpu_x86_intel1/00000681-0
libdata/firmware/cpu_x86_intel1/00000681-2
libdata/firmware/cpu_x86_intel1/00000681-3
libdata/firmware/cpu_x86_intel1/00000681-4
libdata/firmware/cpu_x86_intel1/00000681-5
libdata/firmware/cpu_x86_intel1/00000683-3
libdata/firmware/cpu_x86_intel1/00000683-5
libdata/firmware/cpu_x86_intel1/00000686-0
libdata/firmware/cpu_x86_intel1/00000686-1
libdata/firmware/cpu_x86_intel1/00000686-2
libdata/firmware/cpu_x86_intel1/00000686-4
libdata/firmware/cpu_x86_intel1/00000686-7
libdata/firmware/cpu_x86_intel1/0000068a-4
libdata/firmware/cpu_x86_intel1/0000068a-5
libdata/firmware/cpu_x86_intel1/0000068a-7
libdata/firmware/cpu_x86_intel1/00000695-4
libdata/firmware/cpu_x86_intel1/00000695-5
libdata/firmware/cpu_x86_intel1/00000695-7
libdata/firmware/cpu_x86_intel1/000006a0-2
libdata/firmware/cpu_x86_intel1/000006a1-2
libdata/firmware/cpu_x86_intel1/000006b1-4
libdata/firmware/cpu_x86_intel1/000006b1-5
libdata/firmware/cpu_x86_intel1/000006b4-4
libdata/firmware/cpu_x86_intel1/000006b4-5
libdata/firmware/cpu_x86_intel1/000006d6-5
libdata/firmware/cpu_x86_intel1/000006e8-5
libdata/firmware/cpu_x86_intel1/000006ec-5
libdata/firmware/cpu_x86_intel1/000006ec-7
libdata/firmware/cpu_x86_intel1/000006f2-0
libdata/firmware/cpu_x86_intel1/000006f2-5
libdata/firmware/cpu_x86_intel1/000006f6-0
libdata/firmware/cpu_x86_intel1/000006f6-2
libdata/firmware/cpu_x86_intel1/000006f6-5
libdata/firmware/cpu_x86_intel1/000006f7-4
libdata/firmware/cpu_x86_intel1/000006f7-6
libdata/firmware/cpu_x86_intel1/000006fa-7
libdata/firmware/cpu_x86_intel1/000006fb-0
libdata/firmware/cpu_x86_intel1/000006fb-2
libdata/firmware/cpu_x86_intel1/000006fb-3
libdata/firmware/cpu_x86_intel1/000006fb-4
libdata/firmware/cpu_x86_intel1/000006fb-5
libdata/firmware/cpu_x86_intel1/000006fb-6
libdata/firmware/cpu_x86_intel1/000006fb-7
libdata/firmware/cpu_x86_intel1/000006fd-0
libdata/firmware/cpu_x86_intel1/000006fd-5
libdata/firmware/cpu_x86_intel1/000006fd-7
libdata/firmware/cpu_x86_intel1/00000f07-0
libdata/firmware/cpu_x86_intel1/00000f07-1
libdata/firmware/cpu_x86_intel1/00000f0a-0
libdata/firmware/cpu_x86_intel1/00000f0a-1
libdata/firmware/cpu_x86_intel1/00000f0a-2
libdata/firmware/cpu_x86_intel1/00000f12-2
libdata/firmware/cpu_x86_intel1/00000f24-1
libdata/firmware/cpu_x86_intel1/00000f24-2
libdata/firmware/cpu_x86_intel1/00000f24-4
libdata/firmware/cpu_x86_intel1/00000f25-0
libdata/firmware/cpu_x86_intel1/00000f25-1
libdata/firmware/cpu_x86_intel1/00000f25-2
libdata/firmware/cpu_x86_intel1/00000f25-4
libdata/firmware/cpu_x86_intel1/00000f26-1
libdata/firmware/cpu_x86_intel1/00000f27-1
libdata/firmware/cpu_x86_intel1/00000f27-2
libdata/firmware/cpu_x86_intel1/00000f27-3
libdata/firmware/cpu_x86_intel1/00000f29-1
libdata/firmware/cpu_x86_intel1/00000f29-2
libdata/firmware/cpu_x86_intel1/00000f29-3
libdata/firmware/cpu_x86_intel1/00000f32-0
libdata/firmware/cpu_x86_intel1/00000f32-2
libdata/firmware/cpu_x86_intel1/00000f32-3
libdata/firmware/cpu_x86_intel1/00000f33-0
libdata/firmware/cpu_x86_intel1/00000f33-2
libdata/firmware/cpu_x86_intel1/00000f33-3
libdata/firmware/cpu_x86_intel1/00000f34-0
libdata/firmware/cpu_x86_intel1/00000f34-2
libdata/firmware/cpu_x86_intel1/00000f34-3
libdata/firmware/cpu_x86_intel1/00000f34-4
libdata/firmware/cpu_x86_intel1/00000f41-0
libdata/firmware/cpu_x86_intel1/00000f41-1
libdata/firmware/cpu_x86_intel1/00000f41-2
libdata/firmware/cpu_x86_intel1/00000f41-3
libdata/firmware/cpu_x86_intel1/00000f41-4
libdata/firmware/cpu_x86_intel1/00000f41-5
libdata/firmware/cpu_x86_intel1/00000f41-7
libdata/firmware/cpu_x86_intel1/00000f43-0
libdata/firmware/cpu_x86_intel1/00000f43-2
libdata/firmware/cpu_x86_intel1/00000f43-3
libdata/firmware/cpu_x86_intel1/00000f43-4
libdata/firmware/cpu_x86_intel1/00000f43-7
libdata/firmware/cpu_x86_intel1/00000f44-0
libdata/firmware/cpu_x86_intel1/00000f44-2
libdata/firmware/cpu_x86_intel1/00000f44-3
libdata/firmware/cpu_x86_intel1/00000f44-4
libdata/firmware/cpu_x86_intel1/00000f44-7
libdata/firmware/cpu_x86_intel1/00000f47-0
libdata/firmware/cpu_x86_intel1/00000f47-2
libdata/firmware/cpu_x86_intel1/00000f47-3
libdata/firmware/cpu_x86_intel1/00000f47-4
libdata/firmware/cpu_x86_intel1/00000f47-7
libdata/firmware/cpu_x86_intel1/00000f48-0
libdata/firmware/cpu_x86_intel1/00000f48-1
libdata/firmware/cpu_x86_intel1/00000f48-2
libdata/firmware/cpu_x86_intel1/00000f48-3
libdata/firmware/cpu_x86_intel1/00000f48-4
libdata/firmware/cpu_x86_intel1/00000f48-6
libdata/firmware/cpu_x86_intel1/00000f49-0
libdata/firmware/cpu_x86_intel1/00000f49-2
libdata/firmware/cpu_x86_intel1/00000f49-3
libdata/firmware/cpu_x86_intel1/00000f49-4
libdata/firmware/cpu_x86_intel1/00000f49-5
libdata/firmware/cpu_x86_intel1/00000f49-7
libdata/firmware/cpu_x86_intel1/00000f4a-0
libdata/firmware/cpu_x86_intel1/00000f4a-2
libdata/firmware/cpu_x86_intel1/00000f4a-3
libdata/firmware/cpu_x86_intel1/00000f4a-4
libdata/firmware/cpu_x86_intel1/00000f4a-6
libdata/firmware/cpu_x86_intel1/00000f62-2
libdata/firmware/cpu_x86_intel1/00000f64-0
libdata/firmware/cpu_x86_intel1/00000f64-2
libdata/firmware/cpu_x86_intel1/00000f64-4
libdata/firmware/cpu_x86_intel1/00000f64-5
libdata/firmware/cpu_x86_intel1/00000f65-0
libdata/firmware/cpu_x86_intel1/00000f68-1
libdata/firmware/cpu_x86_intel1/00000f68-5
libdata/firmware/cpu_x86_intel1/00010661-0
libdata/firmware/cpu_x86_intel1/00010661-1
libdata/firmware/cpu_x86_intel1/00010661-7
libdata/firmware/cpu_x86_intel1/00010676-0
libdata/firmware/cpu_x86_intel1/00010676-2
libdata/firmware/cpu_x86_intel1/00010676-4
libdata/firmware/cpu_x86_intel1/00010676-6
libdata/firmware/cpu_x86_intel1/00010676-7
libdata/firmware/cpu_x86_intel1/00010677-4
libdata/firmware/cpu_x86_intel1/0001067a-0
libdata/firmware/cpu_x86_intel1/0001067a-2
libdata/firmware/cpu_x86_intel1/0001067a-4
libdata/firmware/cpu_x86_intel1/0001067a-5
libdata/firmware/cpu_x86_intel1/0001067a-6
libdata/firmware/cpu_x86_intel1/0001067a-7
libdata/firmware/cpu_x86_intel1/000106a4-0
libdata/firmware/cpu_x86_intel1/000106a4-1
libdata/firmware/cpu_x86_intel1/000106c2-0
libdata/firmware/cpu_x86_intel1/000106c2-2
libdata/firmware/cpu_x86_intel1/000106c2-3
libdata/firmware/cpu_x86_intel1/000106ca-0
libdata/firmware/cpu_x86_intel1/000106ca-2
libdata/firmware/cpu_x86_intel1/000106ca-3
libdata/firmware/cpu_x86_intel1/000106ca-4
libdata/firmware/cpu_x86_intel1/000106d1-3
libdata/firmware/cpu_x86_intel1/000106e4-0
libdata/firmware/cpu_x86_intel1/000106e4-3
libdata/firmware/cpu_x86_intel1/000106e5-0
libdata/firmware/cpu_x86_intel1/000106e5-1
libdata/firmware/cpu_x86_intel1/000106e5-4
libdata/firmware/cpu_x86_intel1/00020652-1
libdata/firmware/cpu_x86_intel1/00020652-4
libdata/firmware/cpu_x86_intel1/00020655-1
libdata/firmware/cpu_x86_intel1/00020655-4
libdata/firmware/cpu_x86_intel1/00020655-7
libdata/firmware/cpu_x86_intel1/00020661-0
libdata/firmware/cpu_x86_intel1/00020661-1
libdata/firmware/cpu_x86_intel1/000206a7-1
libdata/firmware/cpu_x86_intel1/000206a7-4
libdata/firmware/cpu_x86_intel1/000206d6-0
libdata/firmware/cpu_x86_intel1/000206d6-2
libdata/firmware/cpu_x86_intel1/000206d6-3
libdata/firmware/cpu_x86_intel1/000206d6-5
libdata/firmware/cpu_x86_intel1/000206d6-6
libdata/firmware/cpu_x86_intel1/000206d7-0
libdata/firmware/cpu_x86_intel1/000206d7-2
libdata/firmware/cpu_x86_intel1/000206d7-3
libdata/firmware/cpu_x86_intel1/000206d7-5
libdata/firmware/cpu_x86_intel1/000206d7-6
libdata/firmware/cpu_x86_intel1/000206f2-0
libdata/firmware/cpu_x86_intel1/000206f2-2
libdata/firmware/cpu_x86_intel1/000306a9-1
libdata/firmware/cpu_x86_intel1/000306a9-4
share/examples/rc.d/intel-microcode

View File

@@ -0,0 +1,5 @@
$NetBSD: distinfo,v 1.3 2013/04/19 15:34:30 drochner Exp $
SHA1 (microcode-20130222.tgz) = 1df2f36f0e97808861d17747826a77440a0f38f5
RMD160 (microcode-20130222.tgz) = aa2133df8d91ce8bbaa4305a8b2c18323b5103e8
Size (microcode-20130222.tgz) = 602449 bytes

View File

@@ -0,0 +1,164 @@
/* $NetBSD: extract.c,v 1.2 2013/04/19 15:34:30 drochner Exp $ */
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <err.h>
#include <x86/cpu_ucode.h>
FILE *in;
int lc;
static int
getbin(void *buf, int len)
{
char lbuf[100], *l;
uint32_t b[4];
int n;
while ((l = fgets(lbuf, sizeof(lbuf), in))) {
lc++;
if (l[0] == '/')
continue;
n = sscanf(l, "0x%x, 0x%x, 0x%x, 0x%x,",
&b[0], &b[1], &b[2], &b[3]);
if (n != 4)
errx(3, "can't digest line %d", lc);
if (len < 16)
errx(3, "wrong size assumption");
memcpy(buf, b, 16);
len -= 16;
if (len == 0)
return 0;
buf = (char *)buf + 16;
}
return (-1);
}
static int
isnewer(const char *fn, int rev)
{
int fd;
struct intel1_ucode_header uh;
fd = open(fn, O_RDONLY, 0);
if (fd < 0)
err(2, "open %s", fn);
read(fd, &uh, sizeof(uh));
close(fd);
return (uh.uh_rev > rev);
}
static int
link_unless_newer_exists(const char *name, const char *alias, int rev)
{
again:
if (link(name, alias) == 0) {
printf("link %s->%s\n", alias, name);
return 1;
}
if (errno != EEXIST)
err(2, "link %s->%s", alias, name);
if (isnewer(alias, rev))
return 0;
printf("replacing %s\n", alias);
if (unlink(alias))
err(2, "unlink %s", alias);
goto again;
}
static void
writeout(struct intel1_ucode_header *uh, int len,
struct intel1_ucode_ext_table *eh)
{
char name[18], alias[11];
int fd, used, i, j;
struct intel1_ucode_proc_signature *eps;
sprintf(name, "%08x.%08x", uh->uh_signature, uh->uh_rev);
fd = open(name, O_WRONLY|O_CREAT|O_TRUNC|O_EXCL, 0644);
if (fd < 0)
err(2, "open %s", name);
write(fd, uh, len);
close(fd);
used = 0;
for (i = 0; i < 8; i++) {
if (!(uh->uh_proc_flags & (1 << i)))
continue;
sprintf(alias, "%08x-%d", uh->uh_signature, i);
used += link_unless_newer_exists(name, alias, uh->uh_rev);
}
if (eh) {
/* extension headers are unused in rev. 20130222 */
for (j = 0; j < eh->uet_count; j++) {
eps = &eh->uet_proc_sig[j];
for (i = 0; i < 8; i++) {
if (!(eps->ups_proc_flags & (1 << i)))
continue;
sprintf(alias, "%08x-%d",
eps->ups_signature, i);
used += link_unless_newer_exists(name, alias,
uh->uh_rev);
}
}
}
unlink(name);
printf("%s: %d links\n", name, used);
}
int
main(int argc, char **argv)
{
struct intel1_ucode_header uh;
int datasize, totalsize;
void *theupdate;
struct intel1_ucode_ext_table *eh;
if (argc < 2)
errx(1, "need filename");
in = fopen(argv[1], "r");
if (!in)
err(2, "could not open \"%s\"", argv[1]);
for (;;) {
if (getbin(&uh, sizeof(uh)) < 0)
break;
if (uh.uh_header_ver != 1)
errx(3, "wrong file format, last line %d", lc);
if (uh.uh_data_size)
datasize = uh.uh_data_size;
else
datasize = 2000;
if (uh.uh_total_size)
totalsize = uh.uh_total_size;
else
totalsize = datasize + 48;
theupdate = malloc(totalsize);
memcpy(theupdate, &uh, 48);
if (getbin((char *)theupdate + 48, totalsize - 48) < 0)
errx(3, "data format");
if (totalsize != datasize + 48)
eh = (void *)((char *)theupdate + 48 + datasize);
else
eh = NULL;
writeout(theupdate, totalsize, eh);
free(theupdate);
}
fclose(in);
exit(0);
}

View File

@@ -0,0 +1,39 @@
#!@RCD_SCRIPTS_SHELL@
# PROVIDE: microcode
# REQUIRE: mountall
#
# attempts microcode update on all CPU cores (for Intel x86)
#
$_rc_subr_loaded . /etc/rc.subr
name=microcode
rcvar=$name
start_cmd="microcode_start"
_microcode_baremetal()
{
ncpu=`/sbin/sysctl -n hw.ncpu`
for i in `/usr/bin/jot - 0 \`expr $ncpu - 1\` 1`; do
/usr/sbin/cpuctl ucode $i || true
done
}
_microcode_xen()
{
/usr/sbin/cpuctl ucode || true
}
microcode_start()
{
if [ -e /kern/xen/privcmd ]; then
_microcode_xen
else
_microcode_baremetal
fi
}
load_rc_config $name
run_rc_command "$1"