Nico Huber (nico.huber(a)secunet.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3524
-gerrit
commit b0c4c339566ddad4aabf8a893eaa2d82c1f043a3
Author: Nico Huber <nico.huber(a)secunet.com>
Date: Wed Jun 19 16:16:05 2013 +0200
sandybridge: Make build possible without descriptor.bin
On newer Intel systems, the flash ROM is shared between the host
processor (BIOS), it's Management Engine (ME) and an integrated ethernet
controller (GbE). The layout of the flash ROM (and other information) is
kept in the so called Intel Firmware Descriptor (IFD). If we only want
to build coreboot to update the BIOS section, all we need is the flash
layout.
This patch adds the option to specify the flash layout in the
mainboard's Kconfig, and thus, build without the real IFD. However,
with such a build, one has to make sure he doesn't overwrite the real
IFD on it's flash ROM (nor any other section that hasn't been included
by coreboot). A patch to write selected sections of a flash ROM with IFD
has been sent to the flashrom mailing list [1].
[1] http://www.flashrom.org/pipermail/flashrom/2013-June/011083.html
Change-Id: Ia23e439a00a197fb54852263f8e206f16c3e8851
Signed-off-by: Nico Huber <nico.huber(a)secunet.com>
---
Makefile.inc | 8 ++++-
src/southbridge/intel/bd82x6x/Kconfig | 51 +++++++++++++++++++++++++++---
src/southbridge/intel/bd82x6x/Makefile.inc | 24 ++++++++++++--
3 files changed, 75 insertions(+), 8 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
index da350d1..69ad3a1 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -212,7 +212,8 @@ CFLAGS += -Werror
endif
CFLAGS += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
-additional-dirs := $(objutil)/cbfstool $(objutil)/romcc $(objutil)/ifdtool $(objutil)/options
+additional-dirs := $(objutil)/cbfstool $(objutil)/romcc $(objutil)/ifdtool \
+ $(objutil)/ifdfake $(objutil)/options
#######################################################################
# generate build support files
@@ -275,6 +276,11 @@ $(IFDTOOL): $(top)/util/ifdtool/ifdtool.c
@printf " HOSTCC $(subst $(obj)/,,$(@))\n"
$(HOSTCC) $(HOSTCFLAGS) -o $@ $<
+IFDFAKE:=$(objutil)/ifdfake/ifdfake
+$(IFDFAKE): $(top)/util/ifdfake/ifdfake.c
+ @printf " HOSTCC $(subst $(obj)/,,$(@))\n"
+ $(HOSTCC) $(HOSTCFLAGS) -o $@ $<
+
#######################################################################
# needed objects that every mainboard uses
# Creation of these is architecture and mainboard independent
diff --git a/src/southbridge/intel/bd82x6x/Kconfig b/src/southbridge/intel/bd82x6x/Kconfig
index 1d544de..0be875e 100644
--- a/src/southbridge/intel/bd82x6x/Kconfig
+++ b/src/southbridge/intel/bd82x6x/Kconfig
@@ -59,6 +59,52 @@ config HPET_MIN_TICKS
hex
default 0x80
+config HAVE_IFD_BIN
+ bool
+ default y
+
+config BUILD_WITH_FAKE_IFD
+ bool "Build with a fake IFD"
+ default y if !HAVE_IFD_BIN
+ help
+ If you don't have an Intel Firmware Descriptor (ifd.bin) for your
+ board, you can select this option and coreboot will build without it.
+ Though, the resulting coreboot.rom will not contain all parts required
+ to get coreboot running on your board. You can however write only the
+ BIOS section to your board's flash ROM and keep the other sections
+ untouched. Unfortunately the current version of flashrom doesn't
+ support this yet. But there is a patch pending [1].
+
+ WARNING: Never write a complete coreboot.rom to your flash ROM if it
+ was built with a fake IFD. It just won't work.
+
+ [1] http://www.flashrom.org/pipermail/flashrom/2013-June/011083.html
+
+config IFD_BIOS_SECTION
+ depends on BUILD_WITH_FAKE_IFD
+ string
+ default ""
+
+config IFD_ME_SECTION
+ depends on BUILD_WITH_FAKE_IFD
+ string
+ default ""
+
+config IFD_GBE_SECTION
+ depends on BUILD_WITH_FAKE_IFD
+ string
+ default ""
+
+config IFD_PLATFORM_SECTION
+ depends on BUILD_WITH_FAKE_IFD
+ string
+ default ""
+
+config IFD_BIN_PATH
+ string "Path to intel firmware descriptor"
+ depends on !BUILD_WITH_FAKE_IFD
+ default "3rdparty/mainboard/$(MAINBOARDDIR)/descriptor.bin"
+
config HAVE_GBE_BIN
bool "Add gigabit ethernet firmware"
default n
@@ -88,12 +134,9 @@ config ME_BIN_PATH
depends on HAVE_ME_BIN
default "3rdparty/mainboard/$(MAINBOARDDIR)/me.bin"
-config IFD_BIN_PATH
- string "Path to intel firmware descriptor"
- default "3rdparty/mainboard/$(MAINBOARDDIR)/descriptor.bin"
-
config LOCK_MANAGEMENT_ENGINE
bool "Lock Management Engine section"
+ depends on !BUILD_WITH_FAKE_IFD
default n
help
The Intel Management Engine supports preventing write accesses
diff --git a/src/southbridge/intel/bd82x6x/Makefile.inc b/src/southbridge/intel/bd82x6x/Makefile.inc
index 73948d2..0c45c64 100644
--- a/src/southbridge/intel/bd82x6x/Makefile.inc
+++ b/src/southbridge/intel/bd82x6x/Makefile.inc
@@ -52,9 +52,27 @@ smm-$(CONFIG_USBDEBUG) += usb_debug.c
romstage-y += reset.c
romstage-y += early_spi.c
-bd82x6x_add_me: $(obj)/coreboot.pre $(IFDTOOL)
+ifeq ($(CONFIG_BUILD_WITH_FAKE_IFD),y)
+IFD_BIN_PATH := $(objgenerated)/ifdfake.bin
+IFD_SECTIONS := $(addprefix -b ,$(CONFIG_IFD_BIOS_SECTION:"%"=%)) \
+ $(addprefix -m ,$(CONFIG_IFD_ME_SECTION:"%"=%)) \
+ $(addprefix -g ,$(CONFIG_IFD_GBE_SECTION:"%"=%)) \
+ $(addprefix -p ,$(CONFIG_IFD_PLATFORM_SECTION:"%"=%))
+else
+IFD_BIN_PATH := $(CONFIG_IFD_BIN_PATH)
+endif
+
+bd82x6x_add_me: $(obj)/coreboot.pre $(IFDTOOL) $(IFDFAKE)
+ifeq ($(CONFIG_BUILD_WITH_FAKE_IFD),y)
+ printf "\n**WARNING**\n"
+ printf "Coreboot will be built with a fake Intel Firmware Descriptor (IFD).\n"
+ printf "Never write a complete coreboot.rom with a fake IFD to your board's\n"
+ printf "flash ROM! Make sure that you only write valid flash regions.\n\n"
+ printf " IFDFAKE Building a fake Intel Firmware Descriptor\n"
+ $(IFDFAKE) $(IFD_SECTIONS) $(IFD_BIN_PATH)
+endif
printf " DD Adding Intel Firmware Descriptor\n"
- dd if=$(CONFIG_IFD_BIN_PATH) \
+ dd if=$(IFD_BIN_PATH) \
of=$(obj)/coreboot.pre conv=notrunc >/dev/null 2>&1
ifeq ($(CONFIG_HAVE_ME_BIN),y)
printf " IFDTOOL me.bin -> coreboot.pre\n"
@@ -74,7 +92,7 @@ ifeq ($(CONFIG_LOCK_MANAGEMENT_ENGINE),y)
printf " IFDTOOL Locking Management Engine\n"
$(objutil)/ifdtool/ifdtool -l $(obj)/coreboot.pre
mv $(obj)/coreboot.pre.new $(obj)/coreboot.pre
-else
+else ifneq ($(CONFIG_BUILD_WITH_FAKE_IFD),y)
printf " IFDTOOL Unlocking Management Engine\n"
$(objutil)/ifdtool/ifdtool -u $(obj)/coreboot.pre
mv $(obj)/coreboot.pre.new $(obj)/coreboot.pre
Nico Huber (nico.huber(a)secunet.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3523
-gerrit
commit ee952f47ec8575515efa80b7983b08ea9e24320c
Author: Nico Huber <nico.huber(a)secunet.com>
Date: Wed Jun 19 12:41:19 2013 +0200
ifdfake - Create an IFD with just a section layout
This new tool called `ifdfake` just creates an empty Intel Firmware
Descriptor (IFD) and writes the IFD signature plus the section layout
given on the command line.
usage: ifdfake [(-b|-m|-g|-p) <start>:<end>]... <output file>
-b | --bios <start>:<end> BIOS region
-m | --me <start>:<end> Intel ME region
-g | --gbe <start>:<end> Gigabit Ethernet region
-p | --platform <start>:<end> Platform Data region
-h | --help print this help
<start> and <end> bounds are given in Bytes, the <end> bound is inclusive.
All regions must be multiples of 4K in size and 4K aligned.
The descriptor region always resides in the first 4K.
An IFD created with ifdfake won't work as a replacement for a real IFD.
Never try to flash such an IFD to your board!
The output of ifdfake can be utilized to build an image with just the
later added sections (like coreboot itself) being valid. The resulting
image can then be partially written to a machines flash ROM to just
update coreboot (i.e. the BIOS section).
Change-Id: I925b47cab5c6d490a79d684bdd7a7a45ac442640
Signed-off-by: Nico Huber <nico.huber(a)secunet.com>
---
.gitignore | 1 +
util/ifdfake/Makefile | 44 +++++++++++
util/ifdfake/ifdfake.c | 208 +++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 253 insertions(+)
diff --git a/.gitignore b/.gitignore
index e57e32f..0061152 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,6 +62,7 @@ util/dumpmmcr/dumpmmcr
util/ectool/ectool
util/getpir/getpir
util/ifdtool/ifdtool
+util/ifdfake/ifdfake
util/inteltool/.dependencies
util/inteltool/inteltool
util/k8resdump/k8resdump
diff --git a/util/ifdfake/Makefile b/util/ifdfake/Makefile
new file mode 100644
index 0000000..4b7308a
--- /dev/null
+++ b/util/ifdfake/Makefile
@@ -0,0 +1,44 @@
+#
+# ifdfake - Create an Intel Firmware Descriptor with just a section layout
+#
+# Copyright (C) 2013 secunet Security Networks AG
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
+#
+
+PROGRAM = ifdfake
+
+CC = gcc
+INSTALL = /usr/bin/install
+PREFIX = /usr/local
+CFLAGS = -O2 -g -Wall -W
+LDFLAGS =
+
+OBJS = ifdfake.o
+
+all: $(PROGRAM)
+
+$(PROGRAM): $(OBJS)
+ $(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
+
+clean:
+ rm -f $(PROGRAM) *.o *~
+
+distclean: clean
+
+install: $(PROGRAM)
+ mkdir -p $(DESTDIR)$(PREFIX)/bin
+ $(INSTALL) $(PROGRAM) $(DESTDIR)$(PREFIX)/bin
+
+.PHONY: all clean distclean
diff --git a/util/ifdfake/ifdfake.c b/util/ifdfake/ifdfake.c
new file mode 100644
index 0000000..70f8db1
--- /dev/null
+++ b/util/ifdfake/ifdfake.c
@@ -0,0 +1,208 @@
+/*
+ * ifdfake - Create an Intel Firmware Descriptor with just a section layout
+ *
+ * Copyright (C) 2013 secunet Security Networks AG
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <getopt.h>
+
+#define FDBAR_OFFSET 0x10
+#define FRBA_OFFSET 0x40
+
+typedef struct {
+ uint32_t base, limit, size;
+} region_t;
+
+static void write_image(const region_t regions[], const char *const image)
+{
+ FILE *const f = fopen(image, "w");
+ if (!f) {
+ perror("Could not open file");
+ exit(EXIT_FAILURE);
+ }
+
+ if (fseek(f, 0x1000 - 1, SEEK_SET)) {
+ perror("Failed to seek to end of descriptor");
+ exit(EXIT_FAILURE);
+ }
+ char zero = '\0';
+ if (fwrite(&zero, 1, 1, f) != 1) {
+ fprintf(stderr, "Failed to write at end of descriptor.\n");
+ exit(EXIT_FAILURE);
+ }
+
+ if (fseek(f, FDBAR_OFFSET, SEEK_SET)) {
+ perror("Failed to seek to fdbar");
+ exit(EXIT_FAILURE);
+ }
+
+ struct {
+ uint32_t flvalsig;
+ uint32_t flmap0;
+ } fdbar;
+ memset(&fdbar, 0x00, sizeof(fdbar));
+ fdbar.flvalsig = 0x0ff0a55a;
+ fdbar.flmap0 = (FRBA_OFFSET >> 4) << 16;
+ if (fwrite(&fdbar, sizeof(fdbar), 1, f) != 1) {
+ fprintf(stderr, "Failed to write fdbar.\n");
+ exit(EXIT_FAILURE);
+ }
+
+ int i;
+ uint32_t frba[5];
+ for (i = 0; i < 5; ++i) {
+ if (regions[i].size)
+ frba[i] = ((regions[i].limit & 0xfff000) << (16 - 12)) |
+ ((regions[i].base & 0xfff000) >> 12);
+ else
+ frba[i] = 0x00000fff;
+ }
+
+ if (fseek(f, FRBA_OFFSET, SEEK_SET)) {
+ perror("Failed to seek to frba");
+ exit(EXIT_FAILURE);
+ }
+ if (fwrite(frba, sizeof(frba), 1, f) != 1) {
+ fprintf(stderr, "Failed to write frba.\n");
+ exit(EXIT_FAILURE);
+ }
+
+ fclose(f);
+}
+
+static int parse_region(const char *_arg, region_t *const region)
+{
+ char *const start = strdup(_arg);
+ if (!start) {
+ fprintf(stderr, "Out of memory.\n");
+ exit(EXIT_FAILURE);
+ }
+
+ char *const colon = strchr(start, ':');
+ if (!colon) {
+ free(start);
+ return -1;
+ }
+ *colon = '\0';
+
+ char *const end = colon + 1;
+
+ errno = 0;
+ region->base = strtoul(start, NULL, 0);
+ region->limit = strtoul(end, NULL, 0);
+ region->size = region->limit - region->base + 1;
+
+ free(start);
+ if (errno) {
+ perror("Failed to parse region");
+ return -1;
+ } else {
+ return 0;
+ }
+}
+
+static void print_usage(const char *name)
+{
+ printf("usage: %s [(-b|-m|-g|-p) <start>:<end>]... <output file>\n", name);
+ printf("\n"
+ " -b | --bios <start>:<end> BIOS region\n"
+ " -m | --me <start>:<end> Intel ME region\n"
+ " -g | --gbe <start>:<end> Gigabit Ethernet region\n"
+ " -p | --platform <start>:<end> Platform Data region\n"
+ " -h | --help print this help\n\n"
+ "<start> and <end> bounds are given in Bytes, the <end> bound is inclusive.\n"
+ "All regions must be multiples of 4K in size and 4K aligned.\n"
+ "The descriptor region always resides in the first 4K.\n\n"
+ "An IFD created with ifdfake won't work as a replacement for a real IFD.\n"
+ "Never try to flash such an IFD to your board!\n\n");
+}
+
+int main(int argc, char *argv[])
+{
+ int opt, option_index = 0, idx;
+ region_t regions[5];
+
+ memset(regions, 0x00, sizeof(regions));
+
+ static struct option long_options[] = {
+ {"bios", 1, NULL, 'b'},
+ {"me", 1, NULL, 'm'},
+ {"gbe", 1, NULL, 'g'},
+ {"platform", 1, NULL, 'p'},
+ {"help", 0, NULL, 'h'},
+ {0, 0, 0, 0}
+ };
+
+ while ((opt = getopt_long(argc, argv, "b:m:g:p:h?",
+ long_options, &option_index)) != EOF) {
+ switch (opt) {
+ case 'b': case 'm': case 'g': case 'p':
+ switch (opt) {
+ case 'b': idx = 1; break;
+ case 'm': idx = 2; break;
+ case 'g': idx = 3; break;
+ case 'p': idx = 4; break;
+ default: idx = 0; break; /* can't happen */
+ }
+ if (parse_region(optarg, ®ions[idx])) {
+ print_usage(argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ break;
+ case 'h':
+ case '?':
+ default:
+ print_usage(argv[0]);
+ exit(EXIT_SUCCESS);
+ break;
+ }
+ }
+
+ if (optind + 1 != argc) {
+ fprintf(stderr, "No output file given.\n\n");
+ print_usage(argv[0]);
+ exit(EXIT_FAILURE);
+ }
+
+ regions[0].base = 0x00000000;
+ regions[0].limit = 0x00000fff;
+ regions[0].size = 0x00001000;
+ for (idx = 1; idx < 5; ++idx) {
+ if (regions[idx].size) {
+ if (regions[idx].base & 0xfff)
+ fprintf(stderr, "Region %d is "
+ "not 4K aligned.\n", idx);
+ else if (regions[idx].size & 0xfff)
+ fprintf(stderr, "Region %d size is "
+ "no multiple of 4K.\n", idx);
+ else if (regions[idx].limit <= regions[idx].base)
+ fprintf(stderr, "Region %d is empty.\n", idx);
+ else
+ continue;
+ print_usage(argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ write_image(regions, argv[optind]);
+
+ return 0;
+}
Nico Huber (nico.huber(a)secunet.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3522
-gerrit
commit 73f9008fdfa5ba7d15cfb10326af55e28592614d
Author: Nico Huber <nico.huber(a)secunet.com>
Date: Wed Jun 19 15:57:34 2013 +0200
sandybridge: Make inclusion of me.bin optional
Current build configuration always wants to include an Intel Management
Engine firmware (me.bin) on Sandy Bridge systems. However, we can have
a working coreboot without it, as long as the factory delivered ME
firmware is kept untouched in the flash ROM. So let the user decide if
a ME firmware will be included in the build.
Change-Id: I9a1cc29d4940ba22355eb9e653606e436f07e04c
Signed-off-by: Nico Huber <nico.huber(a)secunet.com>
---
src/southbridge/intel/bd82x6x/Kconfig | 12 ++++++++++++
src/southbridge/intel/bd82x6x/Makefile.inc | 2 ++
2 files changed, 14 insertions(+)
diff --git a/src/southbridge/intel/bd82x6x/Kconfig b/src/southbridge/intel/bd82x6x/Kconfig
index 08a60f9..1d544de 100644
--- a/src/southbridge/intel/bd82x6x/Kconfig
+++ b/src/southbridge/intel/bd82x6x/Kconfig
@@ -72,8 +72,20 @@ config GBE_BIN_PATH
depends on HAVE_GBE_BIN
default "3rdparty/mainboard/$(MAINBOARDDIR)/gbe.bin"
+config HAVE_ME_BIN
+ bool "Add Intel Management Engine firmware"
+ default y
+ help
+ The Intel processor in the selected system requires a special firmware
+ for an integrated controller called Management Engine (ME). The ME
+ firmware might be provided in coreboot's 3rdparty repository. If
+ not and if you don't have the firmware elsewhere, you can still
+ build coreboot without it. In this case however, you'll have to make
+ sure that you don't overwrite your ME firmware on your flash ROM.
+
config ME_BIN_PATH
string "Path to management engine firmware"
+ depends on HAVE_ME_BIN
default "3rdparty/mainboard/$(MAINBOARDDIR)/me.bin"
config IFD_BIN_PATH
diff --git a/src/southbridge/intel/bd82x6x/Makefile.inc b/src/southbridge/intel/bd82x6x/Makefile.inc
index e277450..73948d2 100644
--- a/src/southbridge/intel/bd82x6x/Makefile.inc
+++ b/src/southbridge/intel/bd82x6x/Makefile.inc
@@ -56,11 +56,13 @@ bd82x6x_add_me: $(obj)/coreboot.pre $(IFDTOOL)
printf " DD Adding Intel Firmware Descriptor\n"
dd if=$(CONFIG_IFD_BIN_PATH) \
of=$(obj)/coreboot.pre conv=notrunc >/dev/null 2>&1
+ifeq ($(CONFIG_HAVE_ME_BIN),y)
printf " IFDTOOL me.bin -> coreboot.pre\n"
$(objutil)/ifdtool/ifdtool \
-i ME:$(CONFIG_ME_BIN_PATH) \
$(obj)/coreboot.pre
mv $(obj)/coreboot.pre.new $(obj)/coreboot.pre
+endif
ifeq ($(CONFIG_HAVE_GBE_BIN),y)
printf " IFDTOOL gbe.bin -> coreboot.pre\n"
$(objutil)/ifdtool/ifdtool \
Nico Huber (nico.huber(a)secunet.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3521
-gerrit
commit dbe17077932069dcae486223594b9e809164075e
Author: Nico Huber <nico.huber(a)secunet.com>
Date: Mon Jun 24 12:39:53 2013 +0200
bd82x6x: Fix early USB BAR programming (finally?)
The xHCI controller's MMIO space has a length of 64KiB not 4KiB.
Therefore, setting the xHCI BAR to 0xe8001000 worked the same like
setting it to 0xe8000000, as bit12 is reserved and ignored. This again
interfered with the MMIO space of the first EHCI controller and broke
S3 resume on Ivy Bridge.
AFAIK, the MRC ignores the setting of the xHCI BAR, anyway. So just drop
these lines.
Change-Id: I8af9c2ba34133f15636a9056fc8880b3b6ab95e0
Signed-off-by: Nico Huber <nico.huber(a)secunet.com>
---
src/southbridge/intel/bd82x6x/early_usb.c | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/src/southbridge/intel/bd82x6x/early_usb.c b/src/southbridge/intel/bd82x6x/early_usb.c
index baf8c4f..ea2bf38 100644
--- a/src/southbridge/intel/bd82x6x/early_usb.c
+++ b/src/southbridge/intel/bd82x6x/early_usb.c
@@ -26,7 +26,6 @@
#define PCH_EHCI1_TEMP_BAR0 0xe8000000
#define PCH_EHCI2_TEMP_BAR0 0xe8000400
-#define PCH_XHCI_TEMP_BAR0 0xe8001000
/*
* Setup USB controller MMIO BAR to prevent the
@@ -39,7 +38,6 @@ void enable_usb_bar(void)
{
device_t usb0 = PCH_EHCI1_DEV;
device_t usb1 = PCH_EHCI2_DEV;
- device_t usb3 = PCH_XHCI_DEV;
u32 cmd;
/* USB Controller 1 */
@@ -55,11 +53,4 @@ void enable_usb_bar(void)
cmd = pci_read_config32(usb1, PCI_COMMAND);
cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
pci_write_config32(usb1, PCI_COMMAND, cmd);
-
- /* USB3 Controller */
- pci_write_config32(usb3, PCI_BASE_ADDRESS_0,
- PCH_XHCI_TEMP_BAR0);
- cmd = pci_read_config32(usb3, PCI_COMMAND);
- cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
- pci_write_config32(usb3, PCI_COMMAND, cmd);
}
the following patch was just integrated into master:
commit ef561a5582963b21d098e671cfb83ac7bb4819a1
Author: Rudolf Marek <r.marek(a)assembler.cz>
Date: Mon May 27 18:45:32 2013 +0200
Asus F2A85-M: Add IRQs for IOMMU
The IOMMU needs IRQs assigned. So add those.
Change-Id: Ic9f02e28aac593cddf7d222a8abb780a10572d32
Signed-off-by: Rudolf Marek <r.marek(a)assembler.cz>
Reviewed-on: http://review.coreboot.org/3318
Tested-by: build bot (Jenkins)
Reviewed-by: David Hubbard <david.c.hubbard+coreboot(a)gmail.com>
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-by: Ronald G. Minnich <rminnich(a)gmail.com>
See http://review.coreboot.org/3318 for details.
-gerrit
the following patch was just integrated into master:
commit 5ce0506618c653c663251f94447e23f8c3f39fb7
Author: Rudolf Marek <r.marek(a)assembler.cz>
Date: Mon May 27 16:09:44 2013 +0200
AMD Fam15tn: Add support for AGESA runtime allocation in CBMEM
The IOMMU AGESA needs a reserved scratch space and it wants
to allocate the stuff for runtime. So provide a simple
allocator for 4 KB CBMEM page.
Change-Id: I53bdfcd2cd69f84fbfbc6edea53a051f516c05cc
Signed-off-by: Rudolf Marek <r.marek(a)assembler.cz>
Reviewed-on: http://review.coreboot.org/3315
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-by: Ronald G. Minnich <rminnich(a)gmail.com>
See http://review.coreboot.org/3315 for details.
-gerrit
the following patch was just integrated into master:
commit 88ebbeb7e2a914330c869147bacb190b4270532f
Author: Rudolf Marek <r.marek(a)assembler.cz>
Date: Mon May 27 16:06:43 2013 +0200
AMD Fam15tn: Add IOMMU BAR allocation to northbridge
For IOMMU we need to allocate a 512 KB BAR in a non-standard
location. Use the standard allocator for that and limit the BAR
to 32-bits to be compatible with older systems.
Change-Id: I44414ce6b264b7f1c086a9b1c7ea275a0830205e
Signed-off-by: Rudolf Marek <r.marek(a)assembler.cz>
Signed-off-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-on: http://review.coreboot.org/3314
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich(a)gmail.com>
See http://review.coreboot.org/3314 for details.
-gerrit
the following patch was just integrated into master:
commit 81d3d7d00173eafff0ef134bdf1ee5e632f3868a
Author: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Date: Sat Jun 15 12:30:13 2013 +0300
lynxpoint: Fix early EHCI BAR programming
LynxPoint LP has only EHCI controller #1.
Change EHCI #2 to different BAR from EHCI #1.
Even if the ECHI controllers are not to be addressed, it is bad idea
to set two different devices to claim the same PCI memory cycles.
Change-Id: I95c59fb9d5f09afd152872e9bc0418dc67e4aeb2
Signed-off-by: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Reviewed-on: http://review.coreboot.org/3472
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
Reviewed-by: Aaron Durbin <adurbin(a)google.com>
See http://review.coreboot.org/3472 for details.
-gerrit
the following patch was just integrated into master:
commit dbc6fcd021759280c71b0e246c0ede34f4879bac
Author: Stefan Tauner <stefan.tauner(a)gmx.at>
Date: Thu Jun 20 18:05:06 2013 +0200
inteltool: add initial support for Nehalem
Also, add pretty printing of Westmere's DMI registers (tested on my t410s
by staring at non-zero output values :)
Apparently Nehalem does not have a MEMBAR? But there are some
documented memory controller control registers in PCI configuration
space... left out for now.
The PCIEXBAR is not documented publicly AFAICT, but there is
a similar register on a device on bus 0xFF. phcoder might know more...
Change-Id: I5faadb6e4f701728f5290276c02809b4993bd86d
Signed-off-by: Stefan Tauner <stefan.tauner(a)gmx.at>
Reviewed-on: http://review.coreboot.org/3505
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich(a)gmail.com>
See http://review.coreboot.org/3505 for details.
-gerrit