Angel Pons has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/47813 )
Change subject: Doc/releases/checklist.md: Clarify tag push command
......................................................................
Doc/releases/checklist.md: Clarify tag push command
Change-Id: I0a6d1ed014c6454c4bde390283351c19fe097201
Signed-off-by: Angel Pons <th3fanbus(a)gmail.com>
---
M Documentation/releases/checklist.md
1 file changed, 2 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/13/47813/1
diff --git a/Documentation/releases/checklist.md b/Documentation/releases/checklist.md
index d777f0e..e4fb5e9 100644
--- a/Documentation/releases/checklist.md
+++ b/Documentation/releases/checklist.md
@@ -178,7 +178,8 @@
````
When you used the script to generate the release, a tag was generated in the tree that was downloaded.
-From the coreboot-X.Y tree, just run: `git push -f origin <TAG (X.Y)>`
+From the coreboot-X.Y tree, just run: `git push origin X.Y`. Force-pushing may sometimes be
+necessary to push the new tag.
You will need write access for tags to the coreboot git repo to do this.
--
To view, visit https://review.coreboot.org/c/coreboot/+/47813
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I0a6d1ed014c6454c4bde390283351c19fe097201
Gerrit-Change-Number: 47813
Gerrit-PatchSet: 1
Gerrit-Owner: Angel Pons <th3fanbus(a)gmail.com>
Gerrit-MessageType: newchange
Angel Pons has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/46250 )
Change subject: soc/intel/cannonlake: Improve memcfg comments
......................................................................
soc/intel/cannonlake: Improve memcfg comments
Instead of repeating what the FSP-M UPDs say, explain how to correctly
configure these settings. DQ and DQS byte maps differ between actual
Cannon Lake and Coffee Lake et alia, so skip these comments for now.
Change-Id: I1142ab500fd18176b174a5080f78c5c566c9ce25
Signed-off-by: Angel Pons <th3fanbus(a)gmail.com>
---
M src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
1 file changed, 29 insertions(+), 20 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/50/46250/1
diff --git a/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h b/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
index 28af731..2e4dfcf 100644
--- a/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
+++ b/src/soc/intel/cannonlake/include/soc/cnl_memcfg_init.h
@@ -32,7 +32,7 @@
enum mem_info_read_type {
NOT_EXISTING, /* No memory in this slot */
- READ_SMBUS, /* Read on-module spd by SMBUS. */
+ READ_SMBUS, /* Read on-module spd by SMBUS */
READ_SPD_CBFS, /* Find spd file in CBFS. */
READ_SPD_MEMPTR /* Find spd data from pointer. */
};
@@ -40,20 +40,23 @@
struct spd_info {
enum mem_info_read_type read_type;
union spd_data_by {
- /* To read on-module spd when read_type is READ_SMBUS. */
+ /* To read on-module spd when read_type is READ_SMBUS */
uint8_t spd_smbus_address;
- /* To identify spd file when read_type is READ_SPD_CBFS. */
+ /* To identify spd file when read_type is READ_SPD_CBFS */
int spd_index;
- /* To find spd data when read_type is READ_SPD_MEMPTR. */
+ /* To find spd data when read_type is READ_SPD_MEMPTR */
struct spd_by_pointer spd_data_ptr_info;
} spd_spec;
};
-/* Board-specific memory dq mapping information */
+/* Board-specific memory parameters */
struct cnl_mb_cfg {
- /* Parameters required to access SPD for CH0D0/CH0D1/CH1D0/CH1D1. */
+ /*
+ * Specify where to find the memory parameters for each slot, or the
+ * memory-down equivalent of a slot. Leave unpopulated slots blank.
+ */
struct spd_info spd[NUM_DIMM_SLOT];
/*
@@ -83,39 +86,45 @@
uint8_t dqs_map[DDR_NUM_CHANNELS][DQ_BITS_PER_DQS];
/*
- * Rcomp resistor values. These values represent the resistance in
- * ohms of the three rcomp resistors attached to the DDR_COMP_0,
- * DDR_COMP_1, and DDR_COMP_2 pins on the DRAM.
+ * Rcomp resistor values in ohms. For socketed platforms, they are
+ * located on the CPU package itself and their values are always
+ * the same. For soldered CPUs, the resistors are on the mainboard,
+ * connected to the DDR_RCOMP_[2:0] pins of the processor. The PDG
+ * can provide the RCOMP resistor values for each memory topology.
+ *
+ * For socketed CPUs, the resistor values are: { 121, 75, 100 };
+ * For soldered-down CPUs, check schematics or use the PDG values.
*/
uint16_t rcomp_resistor[3];
/*
- * Rcomp target values. These will typically be the following
- * values for Cannon Lake : { 80, 40, 40, 40, 30 }
+ * Rcomp target values. These depend on the platform topology and
+ * can be determined using Intel document #573387 or left blank.
*/
uint16_t rcomp_targets[5];
/*
- * Indicates whether memory is interleaved.
- * Set to 1 for an interleaved design,
- * set to 0 for non-interleaved design.
+ * Indicates whether memory is interleaved. Refer to volume 1 of
+ * the datasheet for pictures of interleaved and non-interleaved
+ * configurations. Memory will never work with the wrong value.
*/
uint8_t dq_pins_interleaved;
/*
- * VREF_CA configuration.
- * Set to 0 VREF_CA goes to both CH_A and CH_B,
- * set to 1 VREF_CA goes to CH_A and VREF_DQ_A goes to CH_B,
- * set to 2 VREF_CA goes to CH_A and VREF_DQ_B goes to CH_B.
+ * VREF_CA configuration. For DDR3 and LPDDR, choose config 0.
+ * Config 1 is not meant to be used. For DDR4, use config 2.
*/
uint8_t vref_ca_config;
- /* Early Command Training Enabled */
+ /*
+ * Early Command Training is a no-op for DDR4, and is necessary
+ * for LPDDR. If unsure, set to 1. MRC will skip ECT on DDR4.
+ */
uint8_t ect;
};
/*
- * Initialize default memory configurations for CannonLake.
+ * Write memory settings into the corresponding FSP-M UPDs.
*/
void cannonlake_memcfg_init(FSP_M_CONFIG *mem_cfg,
const struct cnl_mb_cfg *cnl_cfg);
--
To view, visit https://review.coreboot.org/c/coreboot/+/46250
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I1142ab500fd18176b174a5080f78c5c566c9ce25
Gerrit-Change-Number: 46250
Gerrit-PatchSet: 1
Gerrit-Owner: Angel Pons <th3fanbus(a)gmail.com>
Gerrit-MessageType: newchange
Hello Kyösti Mälkki, Patrick Rudolph, Michael Niewöhner,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/35516
to review the following change.
Change subject: device/pci: Ensure full 16-bit VGA port i/o decoding
......................................................................
device/pci: Ensure full 16-bit VGA port i/o decoding
So, the PCI to PCI bridge specification had a pitfall for us:
Originally, when decoding i/o ports for legacy VGA cycles, bridges
should only consider the 10 least significant bits of the port address.
This means all VGA registers were aliased every 1024 ports!
e.g. 0x3b0 was also decoded as 0x7b0, 0xbb0 etc.
However, it seems, we never reserved the aliased ports, resulting in
random conflicts. We neither use much external VGA nor many i/o ports
these days, so nobody noticed.
To avoid this mess, a bridge control bit (VGA16) was introduced in
2003 to enable decoding of 16-bit port addresses. As we don't want
to clutter our i/o port space, we'll now simply fail for VGA behind
bridges that don't support it. Famous last words: I assume there
can't be many bridges left that don't support this bit ;)
Change-Id: Id7a07f069dd54331df79f605c6bcda37882a602d
Signed-off-by: Nico Huber <nico.h(a)gmx.de>
---
M src/device/device.c
M src/device/pci_device.c
M src/include/device/device.h
M src/include/device/pci_def.h
4 files changed, 48 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/16/35516/1
diff --git a/src/device/device.c b/src/device/device.c
index 44d1f95..523bd1c 100644
--- a/src/device/device.c
+++ b/src/device/device.c
@@ -757,6 +757,12 @@
while ((dev = dev_find_class(PCI_CLASS_DISPLAY_VGA << 8, dev))) {
if (!dev->enabled)
continue;
+ if (dev->bus->no_vga) {
+ printk(BIOS_WARNING, "Ignoring VGA at %s"
+ ", a bridge on the path isn't supported",
+ dev_path(dev));
+ continue;
+ }
printk(BIOS_DEBUG, "found VGA at %s\n", dev_path(dev));
@@ -797,7 +803,7 @@
while (bus) {
printk(BIOS_DEBUG, "Setting PCI_BRIDGE_CTL_VGA for bridge %s\n",
dev_path(bus->dev));
- bus->bridge_ctrl |= PCI_BRIDGE_CTL_VGA;
+ bus->bridge_ctrl |= PCI_BRIDGE_CTL_VGA | PCI_BRIDGE_CTL_VGA16;
bus = (bus == bus->dev->bus) ? 0 : bus->dev->bus;
}
}
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index 7ecb652..2fadb55 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -788,6 +788,43 @@
};
/**
+ * Check for compatibility to route legacy VGA cycles through a bridge.
+ *
+ * Originally, when decoding i/o ports for legacy VGA cycles, bridges
+ * should only consider the 10 least significant bits of the port address.
+ * This means all VGA registers were aliased every 1024 ports!
+ * e.g. 0x3b0 was also decoded as 0x7b0, 0xbb0 etc.
+ *
+ * To avoid this mess, a bridge control bit (VGA16) was introduced in
+ * 2003 to enable decoding of 16-bit port addresses. As we don't want
+ * to clutter our i/o port space, we simply fail for VGA behind bridges
+ * that don't support it (set .no_vga = 1).
+ */
+static void pci_bridge_vga_compat(struct bus *const bus)
+{
+ uint16_t bridge_ctrl;
+
+ bridge_ctrl = pci_read_config16(bus->dev, PCI_BRIDGE_CONTROL);
+
+ /* Ensure VGA decoding is disabled during probing (it should
+ be by default, but we run blobs nowadays) */
+ bridge_ctrl &= ~PCI_BRIDGE_CTL_VGA;
+ pci_write_config16(bus->dev, PCI_BRIDGE_CONTROL, bridge_ctrl);
+
+ /* If the upstream bridge doesn't support VGA, we don't have to check */
+ bus->no_vga |= bus->dev->bus->no_vga;
+ if (bus->no_vga)
+ return;
+
+ /* Test if we can enable 16-bit decoding */
+ bridge_ctrl |= PCI_BRIDGE_CTL_VGA16;
+ pci_write_config16(bus->dev, PCI_BRIDGE_CONTROL, bridge_ctrl);
+ bridge_ctrl = pci_read_config16(bus->dev, PCI_BRIDGE_CONTROL);
+
+ bus->no_vga = !(bridge_ctrl & PCI_BRIDGE_CTL_VGA16);
+}
+
+/**
* Detect the type of downstream bridge.
*
* This function is a heuristic to detect which type of bus is downstream
@@ -1288,6 +1325,8 @@
bus = dev->link_list;
+ pci_bridge_vga_compat(bus);
+
pci_bridge_route(bus, PCI_ROUTE_SCAN);
do_scan_bus(bus, 0x00, 0xff);
diff --git a/src/include/device/device.h b/src/include/device/device.h
index b2221cc..78e234e 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -94,6 +94,7 @@
unsigned int reset_needed : 1;
unsigned int disable_relaxed_ordering : 1;
unsigned int ht_link_up : 1;
+ unsigned int no_vga : 1; /* We can't support VGA behind this bridge */
};
/*
diff --git a/src/include/device/pci_def.h b/src/include/device/pci_def.h
index bc5bc79..c8b86d5 100644
--- a/src/include/device/pci_def.h
+++ b/src/include/device/pci_def.h
@@ -138,6 +138,7 @@
#define PCI_BRIDGE_CTL_SERR 0x02 /* The same for SERR forwarding */
#define PCI_BRIDGE_CTL_NO_ISA 0x04 /* Disable bridging of ISA ports */
#define PCI_BRIDGE_CTL_VGA 0x08 /* Forward VGA addresses */
+#define PCI_BRIDGE_CTL_VGA16 0x10 /* Enable 16-bit i/o port decoding */
#define PCI_BRIDGE_CTL_MASTER_ABORT 0x20 /* Report master aborts */
#define PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */
/* Fast Back2Back enabled on secondary interface */
--
To view, visit https://review.coreboot.org/c/coreboot/+/35516
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Id7a07f069dd54331df79f605c6bcda37882a602d
Gerrit-Change-Number: 35516
Gerrit-PatchSet: 1
Gerrit-Owner: Nico Huber <nico.h(a)gmx.de>
Gerrit-Reviewer: Kyösti Mälkki <kyosti.malkki(a)gmail.com>
Gerrit-Reviewer: Michael Niewöhner
Gerrit-Reviewer: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-MessageType: newchange
Raul Rangel has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/42886 )
Change subject: soc/amd/picasso: Move EARLY_RESERVED_DRAM_BASE to 0x100000
......................................................................
soc/amd/picasso: Move EARLY_RESERVED_DRAM_BASE to 0x100000
This places EARLY_RESERVED_DRAM_BASE right after the Option ROM. This
closes the ~31 MiB gap between the Option ROM and Early RAM.
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000000fff] type 16
[ 0.000000] BIOS-e820: [mem 0x0000000000001000-0x000000000009ffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000003bcfff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000003bd000-0x00000000cc51bfff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000cc51c000-0x00000000cd7fffff] type 16
[ 0.000000] BIOS-e820: [mem 0x00000000cd800000-0x00000000cfffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000042f33ffff] usable
[ 0.000000] BIOS-e820: [mem 0x000000042f340000-0x000000042fffffff] reserved
BUG=b:159081993
TEST=Boot picasso trembyle and run suspend_stress_test a few times.
Signed-off-by: Raul E Rangel <rrangel(a)chromium.org>
Change-Id: I5944abce19f17458ea3017d04f6dfdfe8e8050bf
---
M src/soc/amd/picasso/Kconfig
M src/soc/amd/picasso/root_complex.c
2 files changed, 9 insertions(+), 9 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/86/42886/1
diff --git a/src/soc/amd/picasso/Kconfig b/src/soc/amd/picasso/Kconfig
index 9630ad3..0d87c1f 100644
--- a/src/soc/amd/picasso/Kconfig
+++ b/src/soc/amd/picasso/Kconfig
@@ -63,7 +63,7 @@
config EARLY_RESERVED_DRAM_BASE
hex
- default 0x2000000
+ default 0x100000
help
This variable defines the base address of the DRAM which is reserved
for usage by coreboot in early stages (i.e. before ramstage is up).
@@ -77,14 +77,14 @@
config PSP_APOB_DRAM_ADDRESS
hex
- default 0x2001000
+ default 0x101000
help
Location in DRAM where the PSP will copy the AGESA PSP Output
Block.
config PSP_SHAREDMEM_BASE
hex
- default 0x2011000 if VBOOT
+ default 0x111000 if VBOOT
default 0x0
help
This variable defines the base address in DRAM memory where PSP copies
@@ -111,7 +111,7 @@
config BOOTBLOCK_ADDR
hex
- default 0x2030000
+ default 0x120000
help
Sets the address in DRAM where bootblock should be loaded.
@@ -126,7 +126,7 @@
config X86_RESET_VECTOR
hex
depends on ARCH_X86
- default 0x203fff0
+ default 0x12fff0
help
Sets the reset vector within bootblock where x86 starts execution.
Reset vector is supposed to live at offset -0x10 from end of
@@ -134,7 +134,7 @@
config ROMSTAGE_ADDR
hex
- default 0x2040000
+ default 0x130000
help
Sets the address in DRAM where romstage should be loaded.
@@ -146,7 +146,7 @@
config FSP_M_ADDR
hex
- default 0x20C0000
+ default 0x1B0000
help
Sets the address in DRAM where FSP-M should be loaded. cbfstool
performs relocation of FSP-M to this address.
@@ -160,7 +160,7 @@
config VERSTAGE_ADDR
hex
depends on VBOOT_SEPARATE_VERSTAGE
- default 0x2140000
+ default 0x230000
help
Sets the address in DRAM where verstage should be loaded if running
as a separate stage on x86.
diff --git a/src/soc/amd/picasso/root_complex.c b/src/soc/amd/picasso/root_complex.c
index 4930a0e..e94c3ba 100644
--- a/src/soc/amd/picasso/root_complex.c
+++ b/src/soc/amd/picasso/root_complex.c
@@ -39,7 +39,7 @@
* | (C_ENV_BOOTBLOCK_SIZE) |
* +--------------------------------+ BOOTBLOCK_ADDR
* | Unused hole |
- * | (86KiB) |
+ * | (21KiB) |
* +--------------------------------+
* | FMAP cache (FMAP_SIZE) |
* +--------------------------------+ PSP_SHAREDMEM_BASE + PSP_SHAREDMEM_SIZE + PRERAM_CBMEM_CONSOLE_SIZE + 0x200
--
To view, visit https://review.coreboot.org/c/coreboot/+/42886
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I5944abce19f17458ea3017d04f6dfdfe8e8050bf
Gerrit-Change-Number: 42886
Gerrit-PatchSet: 1
Gerrit-Owner: Raul Rangel <rrangel(a)chromium.org>
Gerrit-MessageType: newchange