Frans Hendriks has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/29662 )
Change subject: {drivers,soc/intel/braswell}: Add C_ENVIRONMENT_BOOTBLOCK support
......................................................................
Patch Set 15:
The latest patches do not build. Jenskins report 'Cache as RAM area is too full' On Goolge Cyan and Intel Strago.
In latest patch set I have increased DCACHE_RAM_SIZE to 0x6000, and was able to build local.
Is there there a way to retrieve the .config file Jenkins used for building?
Any other hint/advice how to correct this build error?
--
To view, visit https://review.coreboot.org/c/coreboot/+/29662
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Iab48ad72f1514c93f20d70db5ef4fd8fa2383e8c
Gerrit-Change-Number: 29662
Gerrit-PatchSet: 15
Gerrit-Owner: Frans Hendriks <fhendriks(a)eltan.com>
Gerrit-Reviewer: Arthur Heymans <arthur(a)aheymans.xyz>
Gerrit-Reviewer: Frans Hendriks <fhendriks(a)eltan.com>
Gerrit-Reviewer: Hannah Williams <hannah.williams(a)intel.com>
Gerrit-Reviewer: Huang Jin <huang.jin(a)intel.com>
Gerrit-Reviewer: Lee Leahy <leroy.p.leahy(a)intel.com>
Gerrit-Reviewer: Martin Roth <martinroth(a)google.com>
Gerrit-Reviewer: Matt DeVillier <matt.devillier(a)gmail.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi(a)google.com>
Gerrit-Reviewer: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-Reviewer: York Yang <yyang024(a)gmail.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-CC: Angel Pons <th3fanbus(a)gmail.com>
Gerrit-CC: Michał Żygowski <michal.zygowski(a)3mdeb.com>
Gerrit-CC: Paul Menzel <paulepanter(a)users.sourceforge.net>
Gerrit-Comment-Date: Fri, 03 May 2019 09:23:47 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Frans Hendriks has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/29284 )
Change subject: soc/intel/braswell/chip.c: Configure LPSS devices in correct mode
......................................................................
Patch Set 11:
> Patch Set 10:
>
> > > > We noticed that PCI devices were not visible on the PCI bus, since 'lpss_mode' was set to ACPI. Can not describe details of testing, since PCI/ACPI modes has been corrected in devicetree.cb.
> > >
> > > I'm starting to understand. I guess the coreboot code
> > > simply doesn't allow anything but a 0 or 1 setting of the
> > > `PcdEnable*` devicetree options and expects that only
> > > `lpss_acpi_mode` is used to enable ACPI mode.
> > >
> > > If you have `lpss_acpi_mode` set to 0 and any `PcdEnable*`
> > > to 2, I would expect that coreboot won't generate the neces-
> > > sary ACPI entries.
> > >
> > > If you have `lpss_acpi_mode` set to 1, all LPSS devices
> > > should be in ACPI mode, no matter what the `PcdEnable*`
> > > options say.
> > >
> > > Such problems arise, when we allow direct copies of FSP
> > > UPD options in the devicetree, and try to make sense of
> > > them for both worlds, coreboot and FSP.
> > >
> > > I'm still interested in detailed test results for this
> > > patch with `lpss_acpi_mode = 1`. Either it works, then your
> > > patch could be merged (with a comment that the FSP documen-
> > > tation is incomplete). Or it doesn't work, then we should
> > > leave a comment, that the `PcdEnable*` options shouldn't
> > > be set to 2 (and probably normalize values to 0/1).
> >
> > I tested 'lpss_acpi_mode' to 1 and set some PchEnable* to '1':
> > For devices set to 1:
> > PCI: Static device PCI: 00:xx.x not found, disabling it.
>
> This is what I expected and from your reaction I guess this
> probably means we are talking past each other. If I'm not
> mistaken, the code in `lpss.c` won't be run in this case. But
> this code is vital for proper resource allocation and repor-
> ting in ACPI.
>
> To ask more specifically: Does
>
> TEST=Intel Cherry Hill
>
> involve booting to an OS and testing if any of these devices
> in ACPI mode are still usable?
Have update comment.
--
To view, visit https://review.coreboot.org/c/coreboot/+/29284
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ie271d8cb9f30f0c0ba538f1530cfb82f1306fea8
Gerrit-Change-Number: 29284
Gerrit-PatchSet: 11
Gerrit-Owner: Frans Hendriks <fhendriks(a)eltan.com>
Gerrit-Reviewer: Aaron Durbin <adurbin(a)chromium.org>
Gerrit-Reviewer: Frans Hendriks <fhendriks(a)eltan.com>
Gerrit-Reviewer: Hannah Williams <hannah.williams(a)intel.com>
Gerrit-Reviewer: Michał Żygowski <michal.zygowski(a)3mdeb.com>
Gerrit-Reviewer: Nico Huber <nico.h(a)gmx.de>
Gerrit-Reviewer: Patrick Georgi <pgeorgi(a)google.com>
Gerrit-Reviewer: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-Reviewer: Paul Menzel <paulepanter(a)users.sourceforge.net>
Gerrit-Reviewer: Piotr Król <piotr.krol(a)3mdeb.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-CC: Matt DeVillier <matt.devillier(a)gmail.com>
Gerrit-Comment-Date: Fri, 03 May 2019 09:19:00 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Hello Patrick Rudolph, Aaron Durbin, Piotr Król, Paul Menzel, build bot (Jenkins), Hannah Williams, Nico Huber, Michał Żygowski, Patrick Georgi,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/29284
to look at the new patch set (#11).
Change subject: soc/intel/braswell/chip.c: Configure LPSS devices in correct mode
......................................................................
soc/intel/braswell/chip.c: Configure LPSS devices in correct mode
LPSS (SIO 0/24/0 and 0/30/0) are configured to ACPI mode if 'lpss_acpi_mode' = '1' or
PcdEnableDma0/PcdEnableDma1 is configured in ACPI mode. When function 0 is configured in
ACPI mode, functions > 1 are not available on the PCI bus, even pcdEnableXXXXX is set to
PCI mode.
For SIO DMA0:
- HSUARTS ports not visible on PCI bus.
For SIO DMA1:
- I2C ports not visible on PCI bus.
Force 'function > 1' devices in ACPI mode when function 0 is configured in ACPI
mode.
Intel FSP documentation does not mention that PcdEnable* devices in LPSS supports ACPI
Mode (value 0x2). For these devices value '0x1' is used for PCI Mode.
BUG=N/A
TEST=Booting embedded Linux at Portwell PQ7-M107, LPSS device are configured in ACPI mode
when 'lpss_acpi_mode' = '1'. Could not verify using these devices, because no
devices/connections are available.
Change-Id: Ie271d8cb9f30f0c0ba538f1530cfb82f1306fea8
Signed-off-by: Frans Hendriks <fhendriks(a)eltan.com>
---
M src/soc/intel/braswell/chip.c
1 file changed, 23 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/84/29284/11
--
To view, visit https://review.coreboot.org/c/coreboot/+/29284
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ie271d8cb9f30f0c0ba538f1530cfb82f1306fea8
Gerrit-Change-Number: 29284
Gerrit-PatchSet: 11
Gerrit-Owner: Frans Hendriks <fhendriks(a)eltan.com>
Gerrit-Reviewer: Aaron Durbin <adurbin(a)chromium.org>
Gerrit-Reviewer: Frans Hendriks <fhendriks(a)eltan.com>
Gerrit-Reviewer: Hannah Williams <hannah.williams(a)intel.com>
Gerrit-Reviewer: Michał Żygowski <michal.zygowski(a)3mdeb.com>
Gerrit-Reviewer: Nico Huber <nico.h(a)gmx.de>
Gerrit-Reviewer: Patrick Georgi <pgeorgi(a)google.com>
Gerrit-Reviewer: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-Reviewer: Paul Menzel <paulepanter(a)users.sourceforge.net>
Gerrit-Reviewer: Piotr Król <piotr.krol(a)3mdeb.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-CC: Matt DeVillier <matt.devillier(a)gmail.com>
Gerrit-MessageType: newpatchset
Krystian Hebel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/30118 )
Change subject: arch/x86/boot: Call payload in protected mode
......................................................................
Patch Set 14:
(1 comment)
https://review.coreboot.org/#/c/30118/14/src/arch/x86/c_start.S
File src/arch/x86/c_start.S:
https://review.coreboot.org/#/c/30118/14/src/arch/x86/c_start.S@a220
PS14, Line 220:
> assuming this comment is wrong, can I replace the whole SetCodeSelector64 with the new implementatio […]
I don't see why not, they should be identical now.
--
To view, visit https://review.coreboot.org/c/coreboot/+/30118
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I6552ac30f1b6205e08e16d251328e01ce3fbfd14
Gerrit-Change-Number: 30118
Gerrit-PatchSet: 14
Gerrit-Owner: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-Reviewer: Krystian Hebel <krystian.hebel(a)3mdeb.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph(a)9elements.com>
Gerrit-Reviewer: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-CC: HAOUAS Elyes <ehaouas(a)noos.fr>
Gerrit-CC: Paul Menzel <paulepanter(a)users.sourceforge.net>
Gerrit-Comment-Date: Fri, 03 May 2019 08:45:05 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-MessageType: comment
Hello T Michael Turney,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/32288
to review the following change.
Change subject: qualcomm: Add QCLib interface support to common/
......................................................................
qualcomm: Add QCLib interface support to common/
Change-Id: I38d086c379a3c2f54d1603a2fed5b33860f7f4d7
Signed-off-by: T Michael Turney <mturney(a)codeaurora.org>
---
A src/soc/qualcomm/common/Kconfig
A src/soc/qualcomm/common/include/soc/mmu_common.h
A src/soc/qualcomm/common/include/soc/qclib_common.h
A src/soc/qualcomm/common/include/soc/symbols_common.h
A src/soc/qualcomm/common/mmu.c
A src/soc/qualcomm/common/qclib.c
6 files changed, 402 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/88/32288/1
diff --git a/src/soc/qualcomm/common/Kconfig b/src/soc/qualcomm/common/Kconfig
new file mode 100644
index 0000000..f3d1262
--- /dev/null
+++ b/src/soc/qualcomm/common/Kconfig
@@ -0,0 +1,5 @@
+
+config QC_SDI_ENABLE
+ bool
+ default n
+ prompt "Debug Build: enable SDI"
diff --git a/src/soc/qualcomm/common/include/soc/mmu_common.h b/src/soc/qualcomm/common/include/soc/mmu_common.h
new file mode 100644
index 0000000..803c4f3
--- /dev/null
+++ b/src/soc/qualcomm/common/include/soc/mmu_common.h
@@ -0,0 +1,31 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2018, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#ifndef _SOC_QUALCOMM_MMU_COMMON_H_
+#define _SOC_QUALCOMM_MMU_COMMON_H_
+
+#include <commonlib/region.h>
+#include <soc/symbols_common.h>
+
+#define CACHED_RAM (MA_MEM | MA_S | MA_RW)
+#define UNCACHED_RAM (MA_MEM | MA_S | MA_RW | MA_MEM_NC)
+#define DEV_MEM (MA_DEV | MA_S | MA_RW)
+
+static struct region * const ddr_region = (struct region *)_ddr_information;
+
+void soc_mmu_dram_config_post_dram_init(void);
+void qc_mmu_dram_config_post_dram_init(void *ddr_base, size_t ddr_size);
+
+#endif // _SOC_QUALCOMM_MMU_COMMON_H_
diff --git a/src/soc/qualcomm/common/include/soc/qclib_common.h b/src/soc/qualcomm/common/include/soc/qclib_common.h
new file mode 100644
index 0000000..08f9d4a
--- /dev/null
+++ b/src/soc/qualcomm/common/include/soc/qclib_common.h
@@ -0,0 +1,81 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2018, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#ifndef _SOC_QUALCOMM_QCLIB_COMMON_H__
+#define _SOC_QUALCOMM_QCLIB_COMMON_H__
+
+#include <fmap.h>
+
+/* coreboot & QCLib I/F definitions */
+
+/* string field lengths */
+#define QCLIB_MAGIC_NUMBER_LENGTH 8
+#define QCLIB_FMAP_NAME_LENGTH 24
+#define QCLIB_TE_NAME_LENGTH 24
+
+/* FMAP_REGION names */
+#define QCLIB_FR_DDR_TRAINING_DATA "RO_DDR_TRAINING"
+#define QCLIB_FR_LIMITS_CFG_DATA "RO_LIMITS_CFG"
+
+/* TE_NAME (table entry name) */
+#define QCLIB_TE_DDR_INFORMATION "ddr_information"
+#define QCLIB_TE_QCLIB_LOG_BUFFER "qclib_log_buffer"
+#define QCLIB_TE_DCB_SETTINGS "dcb_settings"
+#define QCLIB_TE_CDT_SETTINGS "cdt_settings"
+#define QCLIB_TE_PMIC_SETTINGS "pmic_settings"
+#define QCLIB_TE_DDR_TRAINING_DATA "ddr_training_data"
+#define QCLIB_TE_LIMITS_CFG_DATA "limits_cfg_data"
+#define QCLIB_TE_QCSDI "qcsdi"
+
+/* BA_BMASK_VALUES (blob_attributes bit mask values) */
+#define QCLIB_BA_SAVE_TO_STORAGE 0x00000001
+
+struct qclib_cb_if_table_entry {
+ char name[QCLIB_TE_NAME_LENGTH]; /* 0x00 TE_NAME */
+ uint64_t blob_address; /* 0x18 blob addr in SRAM */
+ uint32_t size; /* 0x20 blob size in SRAM */
+ uint32_t blob_attributes; /* 0x24 BA_BMASK_VALUES */
+};
+
+/* GA_BMASK_VALUES (global_attributes bit mask values) */
+#define QCLIB_GA_ENABLE_UART_LOGGING 0x00000001
+
+#define QCLIB_INTERFACE_VERSION 0x00000001
+#define QCLIB_MAX_NUMBER_OF_ENTRIES 16
+
+#define QCLIB_MAGIC_NUMBER "QCLIB_CB"
+
+struct qclib_cb_if_table {
+ char magic[8]; /* 0x00 */
+ uint32_t version; /* 0x08 */
+ uint32_t num_entries; /* 0x0C */
+ uint32_t max_entries; /* 0x10 */
+ uint32_t global_attributes; /* 0x14 */
+ uint64_t reserved; /* 0x18 */
+ struct qclib_cb_if_table_entry
+ te[QCLIB_MAX_NUMBER_OF_ENTRIES]; /* 0x20 */
+};
+
+extern struct qclib_cb_if_table qclib_cb_if_table;
+
+void add_if_table_entry(const char *, void *, uint32_t, uint32_t);
+void write_ddr_information(struct qclib_cb_if_table_entry *);
+void write_qclib_log_to_cbmemc(struct qclib_cb_if_table_entry *);
+void write_table_entry(struct qclib_cb_if_table_entry *);
+void dump_te_table(void);
+void qclib_load_and_run(void);
+void soc_blob_load(void);
+
+#endif // _SOC_QUALCOMM_QCLIB_COMMON_H_
diff --git a/src/soc/qualcomm/common/include/soc/symbols_common.h b/src/soc/qualcomm/common/include/soc/symbols_common.h
new file mode 100644
index 0000000..ffa535c
--- /dev/null
+++ b/src/soc/qualcomm/common/include/soc/symbols_common.h
@@ -0,0 +1,25 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2018, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#ifndef _SOC_QUALCOMM_SYMBOLS_COMMON_H_
+#define _SOC_QUALCOMM_SYMBOLS_COMMON_H_
+
+#include <symbols.h>
+
+DECLARE_REGION(ddr_training);
+DECLARE_REGION(qclib_serial_log);
+DECLARE_REGION(ddr_information);
+
+#endif // _SOC_QUALCOMM_SYMBOLS_COMMON_H_
diff --git a/src/soc/qualcomm/common/mmu.c b/src/soc/qualcomm/common/mmu.c
new file mode 100644
index 0000000..79d2eb7
--- /dev/null
+++ b/src/soc/qualcomm/common/mmu.c
@@ -0,0 +1,26 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2018, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#include <arch/mmu.h>
+#include <soc/mmu.h>
+#include <soc/mmu_common.h>
+
+__weak void soc_mmu_dram_config_post_dram_init(void) { /* no-op */ }
+
+void qc_mmu_dram_config_post_dram_init(void *ddr_base, size_t ddr_size)
+{
+ mmu_config_range((void *)ddr_base, ddr_size, CACHED_RAM);
+ soc_mmu_dram_config_post_dram_init();
+}
diff --git a/src/soc/qualcomm/common/qclib.c b/src/soc/qualcomm/common/qclib.c
new file mode 100644
index 0000000..9feca05
--- /dev/null
+++ b/src/soc/qualcomm/common/qclib.c
@@ -0,0 +1,234 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2018, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#include <console/cbmem_console.h>
+#include <cbmem.h>
+#include <boardid.h>
+#include <fmap.h>
+#include <assert.h>
+#include <arch/mmu.h>
+#include <cbfs.h>
+#include <console/console.h>
+#include <soc/mmu.h>
+#include <soc/mmu_common.h>
+#include <soc/qclib_common.h>
+#include <soc/symbols_common.h>
+
+#define QCLIB_NAME "/qclib"
+#define QCSDI_NAME "/qcsdi"
+
+struct qclib_cb_if_table qclib_cb_if_table = {
+ .magic = QCLIB_MAGIC_NUMBER,
+ .version = QCLIB_INTERFACE_VERSION,
+ .num_entries = 0,
+ .max_entries = QCLIB_MAX_NUMBER_OF_ENTRIES,
+ .global_attributes = 0,
+ .reserved = 0,
+};
+
+void add_if_table_entry(const char *name, void *base,
+ uint32_t size, uint32_t attrs)
+{
+ struct qclib_cb_if_table_entry *te =
+ &qclib_cb_if_table.te[qclib_cb_if_table.num_entries++];
+ assert(qclib_cb_if_table.num_entries <= qclib_cb_if_table.max_entries);
+ strncpy(te->name, name, sizeof(te->name));
+ te->blob_address = (uintptr_t)base;
+ te->size = size;
+ te->blob_attributes = attrs;
+}
+
+void write_ddr_information(struct qclib_cb_if_table_entry *te)
+{
+ uint64_t ddr_size;
+
+ /* Save DDR info in SRAM region to share with ramstage */
+ ddr_region->offset = te->blob_address;
+ ddr_size = te->size;
+ ddr_region->size = ddr_size * MiB;
+
+ /* Use DDR info to configure MMU */
+ qc_mmu_dram_config_post_dram_init((void *)ddr_region->offset,
+ (size_t)ddr_region->size);
+}
+
+void write_qclib_log_to_cbmemc(struct qclib_cb_if_table_entry *te)
+{
+ int i;
+ char *ptr = (char *)te->blob_address;
+
+ for (i = 0; i < te->size; i++)
+ cbmemc_tx_byte(*ptr++);
+}
+
+void write_table_entry(struct qclib_cb_if_table_entry *te)
+{
+ printk(BIOS_INFO, "[%s]:[%s]\n", __func__, te->name);
+
+ if (!strncmp(QCLIB_TE_DDR_INFORMATION, te->name,
+ sizeof(te->name))) {
+
+ write_ddr_information(te);
+
+ } else if (!strncmp(QCLIB_TE_DDR_TRAINING_DATA, te->name,
+ sizeof(te->name))) {
+
+ assert(fmap_overwrite_area(QCLIB_FR_DDR_TRAINING_DATA,
+ (const void *)te->blob_address, te->size));
+
+ } else if (!strncmp(QCLIB_TE_LIMITS_CFG_DATA, te->name,
+ sizeof(te->name))) {
+
+ assert(fmap_overwrite_area(QCLIB_FR_LIMITS_CFG_DATA,
+ (const void *)te->blob_address, te->size));
+
+ } else if (!strncmp(QCLIB_TE_QCLIB_LOG_BUFFER, te->name,
+ sizeof(te->name))) {
+
+ write_qclib_log_to_cbmemc(te);
+
+ } else {
+
+ printk(BIOS_INFO, " not implemented\n");
+ printk(BIOS_INFO, " blob_address[%llx]..size[%x]\n",
+ te->blob_address, te->size);
+
+ }
+}
+
+void dump_te_table(void)
+{
+ struct qclib_cb_if_table_entry *te;
+ int i;
+
+ for (i = 0; i < qclib_cb_if_table.num_entries; i++) {
+ te = &qclib_cb_if_table.te[i];
+ printk(BIOS_INFO, "[%s][%llx][%x][%x]\n",
+ te->name, te->blob_address,
+ te->size, te->blob_attributes);
+ }
+}
+
+__weak void soc_blob_load(void) { /* no-op */ }
+
+void qclib_load_and_run(void)
+{
+ int (*doit)(void *param1, void *param2);
+ void *arg;
+ int i, ret_code;
+ size_t size;
+ struct mmu_context pre_qclib_mmu_context;
+
+ /* print board Rev */
+ printk(BIOS_INFO, "Board Rev(0x%x)\n", board_id());
+
+ /* zero ddr_information SRAM region, needs new data each boot */
+ memset(ddr_region, 0, sizeof(struct region));
+
+ /* output area, QCLib copies console log buffer out */
+ if (IS_ENABLED(CONFIG_CONSOLE_CBMEM))
+ add_if_table_entry(QCLIB_TE_QCLIB_LOG_BUFFER, _qclib_serial_log,
+ REGION_SIZE(qclib_serial_log), 0);
+
+ /* output area, QCLib fills in DDR details */
+ add_if_table_entry(QCLIB_TE_DDR_INFORMATION, 0, 0, 0);
+
+ /* Attempt to load DDR Training Blob */
+ size = fmap_read_area(QCLIB_FR_DDR_TRAINING_DATA, _ddr_training,
+ REGION_SIZE(ddr_training));
+ if (size < 0)
+ goto fail;
+ add_if_table_entry(QCLIB_TE_DDR_TRAINING_DATA, _ddr_training, size, 0);
+
+ /* hook for SoC specific binary blob loads */
+ soc_blob_load();
+
+ /* Enable QCLib serial output, based on Kconfig */
+ if (IS_ENABLED(CONFIG_CONSOLE_SERIAL))
+ qclib_cb_if_table.global_attributes =
+ QCLIB_GA_ENABLE_UART_LOGGING;
+
+ if (IS_ENABLED(CONFIG_QC_SDI_ENABLE)) {
+ struct prog qcsdi =
+ PROG_INIT(PROG_REFCODE, CONFIG_CBFS_PREFIX QCSDI_NAME);
+
+ /* Attempt to load QCSDI elf */
+ if (prog_locate(&qcsdi))
+ goto fail;
+
+ if (cbfs_prog_stage_load(&qcsdi))
+ goto fail;
+
+ add_if_table_entry(QCLIB_TE_QCSDI, qcsdi.entry,
+ prog_size(&qcsdi), 0);
+ printk(BIOS_INFO, "qcsdi.entry[%llx]\n", (uint64_t)qcsdi.entry);
+ }
+
+ dump_te_table();
+
+ /* Attempt to load QCLib elf */
+ struct prog qclib =
+ PROG_INIT(PROG_REFCODE, CONFIG_CBFS_PREFIX QCLIB_NAME);
+
+ if (prog_locate(&qclib))
+ goto fail;
+
+ if (cbfs_prog_stage_load(&qclib))
+ goto fail;
+
+ prog_set_entry(&qclib, qclib.entry, NULL);
+
+ printk(BIOS_DEBUG, "\n\n\nQCLib is about to Initialize Private IP\n");
+ printk(BIOS_DEBUG, "Global Attributes[%x]..Table Entries Count[%d]\n",
+ qclib_cb_if_table.global_attributes,
+ qclib_cb_if_table.num_entries);
+ printk(BIOS_DEBUG, "Jumping to QCLib code at %p(%p)\n",
+ prog_entry(&qclib), prog_entry_arg(&qclib));
+
+ doit = prog_entry(&qclib);
+ arg = prog_entry_arg(&qclib);
+
+ /* back-up mmu context before disabling mmu and executing qclib */
+ mmu_save_context(&pre_qclib_mmu_context);
+ /* disable mmu before jumping to qclib. mmu_disable also
+ flushes and invalidates caches before disabling mmu. */
+ mmu_disable();
+
+ ret_code = doit(&qclib_cb_if_table, NULL);
+
+ /* Before returning, QCLib flushes cache and disables mmu.
+ Explicitly disable mmu (flush, invalidate and disable mmu)
+ before re-enabling mmu with backed-up mmu context */
+ mmu_disable();
+ mmu_restore_context(&pre_qclib_mmu_context);
+ mmu_enable();
+
+ printk(BIOS_DEBUG, "QCLib completed\n\n\n");
+
+ /* step through I/F table, handling return values */
+ for (i = 0; i < qclib_cb_if_table.num_entries; i++)
+ if (qclib_cb_if_table.te[i].blob_attributes &
+ QCLIB_BA_SAVE_TO_STORAGE)
+ write_table_entry(&qclib_cb_if_table.te[i]);
+
+ /* confirm that we received valid ddr information from QCLib */
+ assert((uintptr_t)_dram == region_offset(ddr_region) &&
+ region_sz(ddr_region) >= (u8 *)cbmem_top() - _dram);
+
+ return;
+
+fail:
+ die("Couldn't run QCLib.\n");
+}
--
To view, visit https://review.coreboot.org/c/coreboot/+/32288
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I38d086c379a3c2f54d1603a2fed5b33860f7f4d7
Gerrit-Change-Number: 32288
Gerrit-PatchSet: 1
Gerrit-Owner: T.Michael Turney <tturne(a)codeaurora.org>
Gerrit-Reviewer: T Michael Turney <mturney(a)codeaurora.org>
Gerrit-MessageType: newchange
Hello T Michael Turney,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/32449
to review the following change.
Change subject: sdm845: Select VBOOT_MIGRATE_WORKING_DATA, now required
......................................................................
sdm845: Select VBOOT_MIGRATE_WORKING_DATA, now required
Change-Id: Idebbbd89de05d949e6f953aa49d8662d64383d1a
Signed-off-by: T Michael Turney <mturney(a)codeaurora.org>
---
M src/soc/qualcomm/sdm845/Kconfig
1 file changed, 1 insertion(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/49/32449/1
diff --git a/src/soc/qualcomm/sdm845/Kconfig b/src/soc/qualcomm/sdm845/Kconfig
index c0e3294..975c049 100644
--- a/src/soc/qualcomm/sdm845/Kconfig
+++ b/src/soc/qualcomm/sdm845/Kconfig
@@ -18,6 +18,7 @@
select VBOOT_RETURN_FROM_VERSTAGE
select VBOOT_OPROM_MATTERS
select VBOOT_STARTS_IN_BOOTBLOCK
+ select VBOOT_MIGRATE_WORKING_DATA
config SDM845_QSPI
bool
--
To view, visit https://review.coreboot.org/c/coreboot/+/32449
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Idebbbd89de05d949e6f953aa49d8662d64383d1a
Gerrit-Change-Number: 32449
Gerrit-PatchSet: 1
Gerrit-Owner: T.Michael Turney <tturne(a)codeaurora.org>
Gerrit-Reviewer: T Michael Turney <mturney(a)codeaurora.org>
Gerrit-MessageType: newchange
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/25207 )
Change subject: sdm845: Combine BB with QC-Sec for ROM boot
......................................................................
Patch Set 76: Code-Review+2
(1 comment)
https://review.coreboot.org/#/c/25207/76//COMMIT_MSG
Commit Message:
https://review.coreboot.org/#/c/25207/76//COMMIT_MSG@7
PS76, Line 7: sdm845: Combine BB with QC-Sec for ROM boot
nit: It's really just adding the tools now, the actual combining is part of the stuff you had to defer.
--
To view, visit https://review.coreboot.org/c/coreboot/+/25207
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I222a56f1c9b74856a1e1ff8132bab5e041672c5d
Gerrit-Change-Number: 25207
Gerrit-PatchSet: 76
Gerrit-Owner: T.Michael Turney <tturne(a)codeaurora.org>
Gerrit-Reviewer: Julius Werner <jwerner(a)chromium.org>
Gerrit-Reviewer: Martin Roth <martinroth(a)google.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi(a)google.com>
Gerrit-Reviewer: Paul Menzel <paulepanter(a)users.sourceforge.net>
Gerrit-Reviewer: T.Michael Turney <tturne(a)codeaurora.org>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-Reviewer: mturney mturney <mturney(a)codeaurora.org>
Gerrit-CC: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Gerrit-Comment-Date: Thu, 02 May 2019 22:53:08 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/29186 )
Change subject: mediatek/mt8183: Add soc ARM Trusted Firmware support
......................................................................
Patch Set 5: Code-Review+2
This change is ready for review.
--
To view, visit https://review.coreboot.org/c/coreboot/+/29186
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ia988d2b4ed646027c04c7c6ff0e50ed7a0b14da3
Gerrit-Change-Number: 29186
Gerrit-PatchSet: 5
Gerrit-Owner: Tristan Hsieh <tristan.shieh(a)mediatek.com>
Gerrit-Reviewer: Erin Lo <erin.lo(a)mediatek.com>
Gerrit-Reviewer: Hung-Te Lin <hungte(a)chromium.org>
Gerrit-Reviewer: Joel Kitching <kitching(a)google.com>
Gerrit-Reviewer: Julius Werner <jwerner(a)chromium.org>
Gerrit-Reviewer: Tristan Hsieh <tristan.shieh(a)mediatek.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-Comment-Date: Thu, 02 May 2019 22:50:23 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment