All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 085/126] x86: Update mrccache to support multiple caches
Date: Wed, 25 Sep 2019 08:57:09 -0600	[thread overview]
Message-ID: <20190925145750.200592-86-sjg@chromium.org> (raw)
In-Reply-To: <20190925145750.200592-1-sjg@chromium.org>

With apollolake we need to support a normal cache, which almost never
changes and a much smaller 'variable' cache which changes every time.

Update the code to add a cache type, use an array for the caches and use a
for loop to iterate over the caches.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/x86/cpu/broadwell/sdram.c     |  8 ++-
 arch/x86/cpu/ivybridge/sdram.c     |  8 ++-
 arch/x86/cpu/quark/dram.c          |  8 ++-
 arch/x86/include/asm/global_data.h | 21 +++++--
 arch/x86/include/asm/mrccache.h    | 11 +++-
 arch/x86/lib/fsp/fsp_common.c      |  2 +-
 arch/x86/lib/fsp1/fsp_dram.c       |  8 ++-
 arch/x86/lib/mrccache.c            | 93 ++++++++++++++++++++----------
 8 files changed, 109 insertions(+), 50 deletions(-)

diff --git a/arch/x86/cpu/broadwell/sdram.c b/arch/x86/cpu/broadwell/sdram.c
index b31d78c092a..107c04691b0 100644
--- a/arch/x86/cpu/broadwell/sdram.c
+++ b/arch/x86/cpu/broadwell/sdram.c
@@ -82,7 +82,7 @@ static int prepare_mrc_cache(struct pei_data *pei_data)
 	struct mrc_region entry;
 	int ret;
 
-	ret = mrccache_get_region(NULL, &entry);
+	ret = mrccache_get_region(MRC_TYPE_NORMAL, NULL, &entry);
 	if (ret)
 		return ret;
 	mrc_cache = mrccache_find_current(&entry);
@@ -168,12 +168,14 @@ int dram_init(void)
 	      pei_data->data_to_save);
 	/* S3 resume: don't save scrambler seed or MRC data */
 	if (pei_data->boot_mode != SLEEP_STATE_S3) {
+		struct mrc_output *mrc = &gd->arch.mrc[MRC_TYPE_NORMAL];
+
 		/*
 		 * This will be copied to SDRAM in reserve_arch(), then written
 		 * to SPI flash in mrccache_save()
 		 */
-		gd->arch.mrc_output = (char *)pei_data->data_to_save;
-		gd->arch.mrc_output_len = pei_data->data_to_save_size;
+		mrc->buf = (char *)pei_data->data_to_save;
+		mrc->len = pei_data->data_to_save_size;
 	}
 	gd->arch.pei_meminfo = pei_data->meminfo;
 
diff --git a/arch/x86/cpu/ivybridge/sdram.c b/arch/x86/cpu/ivybridge/sdram.c
index 8a58d0383d5..8b03406666e 100644
--- a/arch/x86/cpu/ivybridge/sdram.c
+++ b/arch/x86/cpu/ivybridge/sdram.c
@@ -115,7 +115,7 @@ static int prepare_mrc_cache(struct pei_data *pei_data)
 	ret = read_seed_from_cmos(pei_data);
 	if (ret)
 		return ret;
-	ret = mrccache_get_region(NULL, &entry);
+	ret = mrccache_get_region(MRC_TYPE_NORMAL, NULL, &entry);
 	if (ret)
 		return ret;
 	mrc_cache = mrccache_find_current(&entry);
@@ -537,12 +537,14 @@ int dram_init(void)
 
 	/* S3 resume: don't save scrambler seed or MRC data */
 	if (pei_data->boot_mode != PEI_BOOT_RESUME) {
+		struct mrc_output *mrc = &gd->arch.mrc[MRC_TYPE_NORMAL];
+
 		/*
 		 * This will be copied to SDRAM in reserve_arch(), then written
 		 * to SPI flash in mrccache_save()
 		 */
-		gd->arch.mrc_output = (char *)pei_data->mrc_output;
-		gd->arch.mrc_output_len = pei_data->mrc_output_len;
+		mrc->buf = (char *)pei_data->mrc_output;
+		mrc->len = pei_data->mrc_output_len;
 		ret = write_seeds_to_cmos(pei_data);
 		if (ret)
 			debug("Failed to write seeds to CMOS: %d\n", ret);
diff --git a/arch/x86/cpu/quark/dram.c b/arch/x86/cpu/quark/dram.c
index 51f9659ab15..3994355112b 100644
--- a/arch/x86/cpu/quark/dram.c
+++ b/arch/x86/cpu/quark/dram.c
@@ -22,7 +22,7 @@ static __maybe_unused int prepare_mrc_cache(struct mrc_params *mrc_params)
 	struct mrc_region entry;
 	int ret;
 
-	ret = mrccache_get_region(NULL, &entry);
+	ret = mrccache_get_region(MRC_TYPE_NORMAL, NULL, &entry);
 	if (ret)
 		return ret;
 
@@ -152,9 +152,11 @@ int dram_init(void)
 #ifdef CONFIG_ENABLE_MRC_CACHE
 	cache = malloc(sizeof(struct mrc_timings));
 	if (cache) {
+		struct mrc_output *mrc = &gd->arch.mrc[MRC_TYPE_NORMAL];
+
 		memcpy(cache, &mrc_params.timings, sizeof(struct mrc_timings));
-		gd->arch.mrc_output = cache;
-		gd->arch.mrc_output_len = sizeof(struct mrc_timings);
+		mrc->buf = cache;
+		mrc->len = sizeof(struct mrc_timings);
 	}
 #endif
 
diff --git a/arch/x86/include/asm/global_data.h b/arch/x86/include/asm/global_data.h
index c5faac5c901..2475b3427e1 100644
--- a/arch/x86/include/asm/global_data.h
+++ b/arch/x86/include/asm/global_data.h
@@ -67,6 +67,21 @@ struct mtrr_request {
 	uint64_t size;
 };
 
+/**
+ * struct mrc_output - holds the MRC data
+ *
+ * @buf: MRC training data to save for the next boot. This is set to point to
+ *	the raw data after SDRAM init is complete. Then mrccache_setup()
+ *	turns it into a proper cache record with a checksum
+ * @len: Length of @buf
+ * @cache: Resulting cache record
+ */
+struct mrc_output {
+	char *buf;
+	uint len;
+	struct mrc_data_container *cache;
+};
+
 /* Architecture-specific global data */
 struct arch_global_data {
 	u64 gdt[X86_GDT_NUM_ENTRIES] __aligned(16);
@@ -90,10 +105,8 @@ struct arch_global_data {
 	struct mtrr_request mtrr_req[MAX_MTRR_REQUESTS];
 	int mtrr_req_count;
 	int has_mtrr;
-	/* MRC training data to save for the next boot */
-	char *mrc_output;
-	unsigned int mrc_output_len;
-	struct mrc_data_container *mrc_cache;
+	/* MRC training data */
+	struct mrc_output mrc[MRC_TYPE_COUNT];
 	ulong table;			/* Table pointer from previous loader */
 	int turbo_state;		/* Current turbo state */
 	struct irq_routing_table *pirq_routing_table;
diff --git a/arch/x86/include/asm/mrccache.h b/arch/x86/include/asm/mrccache.h
index abf58182237..b81e2b2fb6a 100644
--- a/arch/x86/include/asm/mrccache.h
+++ b/arch/x86/include/asm/mrccache.h
@@ -27,6 +27,13 @@ struct mrc_region {
 	u32	length;
 };
 
+/* Types of MRC data */
+enum mrc_type_t {
+	MRC_TYPE_NORMAL,
+
+	MRC_TYPE_COUNT,
+};
+
 struct udevice;
 
 /**
@@ -84,6 +91,7 @@ int mrccache_reserve(void);
  *   triggers PCI bus enumeration during which insufficient memory issue
  *   might be exposed and it causes subsequent SPI flash probe fails).
  *
+ * @type:	Type of MRC data to use
  * @devp:	Returns pointer to the SPI flash device
  * @entry:	Position and size of MRC cache in SPI flash
  * @return 0 if success, -ENOENT if SPI flash node does not exist in the
@@ -91,7 +99,8 @@ int mrccache_reserve(void);
  * tree, -EINVAL if MRC region properties format is incorrect, other error
  * if SPI flash probe failed.
  */
-int mrccache_get_region(struct udevice **devp, struct mrc_region *entry);
+int mrccache_get_region(enum mrc_type_t type, struct udevice **devp,
+			struct mrc_region *entry);
 
 /**
  * mrccache_save() - save MRC data to the SPI flash
diff --git a/arch/x86/lib/fsp/fsp_common.c b/arch/x86/lib/fsp/fsp_common.c
index 40ba866d77c..c1c30ce0eb6 100644
--- a/arch/x86/lib/fsp/fsp_common.c
+++ b/arch/x86/lib/fsp/fsp_common.c
@@ -63,7 +63,7 @@ void *fsp_prepare_mrc_cache(void)
 	struct mrc_region entry;
 	int ret;
 
-	ret = mrccache_get_region(NULL, &entry);
+	ret = mrccache_get_region(MRC_TYPE_NORMAL, NULL, &entry);
 	if (ret)
 		return NULL;
 
diff --git a/arch/x86/lib/fsp1/fsp_dram.c b/arch/x86/lib/fsp1/fsp_dram.c
index 6a3349b42af..5ef89744b94 100644
--- a/arch/x86/lib/fsp1/fsp_dram.c
+++ b/arch/x86/lib/fsp1/fsp_dram.c
@@ -15,9 +15,11 @@ int dram_init(void)
 	if (ret)
 		return ret;
 
-	if (IS_ENABLED(CONFIG_ENABLE_MRC_CACHE))
-		gd->arch.mrc_output = fsp_get_nvs_data(gd->arch.hob_list,
-					       &gd->arch.mrc_output_len);
+	if (IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)) {
+		struct mrc_output *mrc = &gd->arch.mrc[MRC_TYPE_NORMAL];
+
+		mrc->buf = fsp_get_nvs_data(gd->arch.hob_list, &mrc->len);
+	}
 
 	return 0;
 }
diff --git a/arch/x86/lib/mrccache.c b/arch/x86/lib/mrccache.c
index 0208696c834..8de7dc48f44 100644
--- a/arch/x86/lib/mrccache.c
+++ b/arch/x86/lib/mrccache.c
@@ -159,44 +159,51 @@ int mrccache_update(struct udevice *sf, struct mrc_region *entry,
 				 cur);
 	if (ret) {
 		debug("Failed to write to SPI flash\n");
-		return ret;
+		return log_msg_ret("Cannot update mrccache", ret);
 	}
 
 	return 0;
 }
 
-static void mrccache_setup(void *data)
+static void mrccache_setup(struct mrc_output *mrc, void *data)
 {
 	struct mrc_data_container *cache = data;
 	u16 checksum;
 
 	cache->signature = MRC_DATA_SIGNATURE;
-	cache->data_size = gd->arch.mrc_output_len;
-	checksum = compute_ip_checksum(gd->arch.mrc_output, cache->data_size);
+	cache->data_size = mrc->len;
+	checksum = compute_ip_checksum(mrc->buf, cache->data_size);
 	debug("Saving %d bytes for MRC output data, checksum %04x\n",
 	      cache->data_size, checksum);
 	cache->checksum = checksum;
 	cache->reserved = 0;
-	memcpy(cache->data, gd->arch.mrc_output, cache->data_size);
+	memcpy(cache->data, mrc->buf, cache->data_size);
 
-	gd->arch.mrc_cache = cache;
+	mrc->cache = cache;
 }
 
 int mrccache_reserve(void)
 {
-	if (!gd->arch.mrc_output_len)
-		return 0;
+	int i;
+
+	for (i = 0; i < MRC_TYPE_COUNT; i++) {
+		struct mrc_output *mrc = &gd->arch.mrc[i];
 
-	/* adjust stack pointer to store pure cache data plus the header */
-	gd->start_addr_sp -= (gd->arch.mrc_output_len + MRC_DATA_HEADER_SIZE);
-	mrccache_setup((void *)gd->start_addr_sp);
+		if (!mrc->len)
+			continue;
 
-	gd->start_addr_sp &= ~0xf;
+		/* adjust stack pointer to store pure cache data plus header */
+		gd->start_addr_sp -= (mrc->len + MRC_DATA_HEADER_SIZE);
+		mrccache_setup(mrc, (void *)gd->start_addr_sp);
+
+		gd->start_addr_sp &= ~0xf;
+	}
 
 	return 0;
 }
 
-int mrccache_get_region(struct udevice **devp, struct mrc_region *entry)
+int mrccache_get_region(enum mrc_type_t type, struct udevice **devp,
+			struct mrc_region *entry)
 {
 	struct udevice *dev;
 	ofnode mrc_node;
@@ -221,7 +228,8 @@ int mrccache_get_region(struct udevice **devp, struct mrc_region *entry)
 	}
 
 	/* Find the place where we put the MRC cache */
-	mrc_node = dev_read_subnode(dev, "rw-mrc-cache");
+	mrc_node = dev_read_subnode(dev, type == MRC_TYPE_NORMAL ?
+				    "rw-mrc-cache" : "rw-var-mrc-cache");
 	if (!ofnode_valid(mrc_node))
 		return log_msg_ret("Cannot find node", -EPERM);
 
@@ -233,31 +241,33 @@ int mrccache_get_region(struct udevice **devp, struct mrc_region *entry)
 
 	if (devp)
 		*devp = dev;
-	debug("MRC cache in '%s', offset %x, len %x, base %x\n",
-	      dev->name, entry->offset, entry->length, entry->base);
+	debug("MRC cache type %d in '%s', offset %x, len %x, base %x\n",
+	      type, dev->name, entry->offset, entry->length, entry->base);
 
 	return 0;
 }
 
-int mrccache_save(void)
+static int mrccache_save_type(enum mrc_type_t type)
 {
 	struct mrc_data_container *cache;
+	struct mrc_output *mrc;
 	struct mrc_region entry;
 	struct udevice *sf;
 	int ret;
 
-	if (!gd->arch.mrc_output_len)
+	mrc = &gd->arch.mrc[type];
+	if (!mrc->len)
 		return 0;
-	debug("Saving %#x bytes of MRC output data to SPI flash\n",
-	      gd->arch.mrc_output_len);
-
-	ret = mrccache_get_region(&sf, &entry);
+	log_debug("Saving %#x bytes of MRC output data type %d to SPI flash\n",
+		  mrc->len, type);
+	ret = mrccache_get_region(type, &sf, &entry);
 	if (ret)
 		return log_msg_ret("Cannot get region", ret);
 	ret = device_probe(sf);
 	if (ret)
 		return log_msg_ret("Cannot probe device", ret);
-	cache = gd->arch.mrc_cache;
+	cache = mrc->cache;
+
 	ret = mrccache_update(sf, &entry, cache);
 	if (!ret)
 		debug("Saved MRC data with checksum %04x\n", cache->checksum);
@@ -267,17 +277,36 @@ int mrccache_save(void)
 	return 0;
 }
 
+int mrccache_save(void)
+{
+	int i;
+
+	for (i = 0; i < MRC_TYPE_COUNT; i++) {
+		int ret;
+
+		ret = mrccache_save_type(i);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+
 int mrccache_spl_save(void)
 {
-	void *data;
-	int size;
-
-	size = gd->arch.mrc_output_len + MRC_DATA_HEADER_SIZE;
-	data = malloc(size);
-	if (!data)
-		return log_msg_ret("Allocate MRC cache block", -ENOMEM);
-	mrccache_setup(data);
-	gd->arch.mrc_output = data;
+	int i;
+
+	for (i = 0; i < MRC_TYPE_COUNT; i++) {
+		struct mrc_output *mrc = &gd->arch.mrc[i];
+		void *data;
+		int size;
+
+		size = mrc->len + MRC_DATA_HEADER_SIZE;
+		data = malloc(size);
+		if (!data)
+			return log_msg_ret("Allocate MRC cache block", -ENOMEM);
+		mrccache_setup(mrc, data);
+	}
 
 	return mrccache_save();
 }
-- 
2.23.0.444.g18eeb5a265-goog

  parent reply	other threads:[~2019-09-25 14:57 UTC|newest]

Thread overview: 311+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-25 14:55 [U-Boot] [PATCH 000/126] x86: Add initial support for apollolake Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 001/126] dm: core: Use U-Boot logging instead of pr_debug() Simon Glass
2019-10-03 12:47   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 002/126] dm: core: Correct low cell in ofnode_read_pci_addr() Simon Glass
2019-09-25 16:12   ` Stephen Warren
2019-10-03 12:47   ` Bin Meng
2019-10-03 13:13     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 003/126] dm: core: Drop a few early returns Simon Glass
2019-10-03 12:47   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 004/126] dm: core: Add documentation on how to debug driver model Simon Glass
2019-10-03 12:47   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 005/126] dm: core: Don't include ofnode functions with of-platdata Simon Glass
2019-10-03 12:48   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-10-07  1:40       ` Bin Meng
2019-10-13 18:24         ` Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 006/126] dm: core: Correct bad cast in ofnode_get_addr_size_index() Simon Glass
2019-10-03 12:48   ` Bin Meng
2019-10-03 13:14     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 007/126] dm: test: Fix running of multiple test from command line Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 008/126] dm: test: Don't fail when tests are skipped due to build Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 009/126] dm: core: Call ofdata_to_platdata() with of-platdata Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 010/126] dm: doc: Correct of-platdata CONFIG_IS_ENABLED() condition Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-13 15:03     ` Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 011/126] dm: core: Correct the return value for uclass_find_first_device() Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 012/126] dm: core: Add device_foreach_child() Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 013/126] dm: test: Correct a stray backslash in dm_test_destroy() Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 014/126] fdt: Show the preprocessed .dts file on error Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-13 15:03     ` Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 015/126] sandbox: spmi: Add ranges property for address translation Simon Glass
2019-10-05  1:58   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 016/126] sandbox: mmc: Fix up MMC emulator for valgrind Simon Glass
2019-10-05  1:58   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 017/126] sandbox: Rename PCI ID for swap_case to be more specific Simon Glass
2019-10-05  1:58   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 018/126] sandbox: Add support for clrsetio_32() and friends Simon Glass
2019-10-05  2:01   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 019/126] sandbox: swap_case: Use statics where possible Simon Glass
2019-10-05  2:01   ` Bin Meng
2019-10-06  9:28     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 020/126] sandbox: pci: Drop the get_devfn() method Simon Glass
2019-10-05  2:01   ` Bin Meng
2019-10-06  9:28     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 021/126] sandbox: net: Suppress the MAC-address warnings Simon Glass
2019-10-05  2:10   ` Bin Meng
2019-10-05  2:16   ` Bin Meng
2019-10-05  2:26     ` Bin Meng
2019-10-06  1:05       ` Joe Hershberger
2019-10-06  2:12         ` Bin Meng
2019-10-06  2:41           ` Joe Hershberger
2019-10-14 20:02             ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 022/126] sandbox: pci: Move pci_offset_to_barnum() to pci.h Simon Glass
2019-10-05  2:17   ` Bin Meng
2019-10-06 10:03     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 023/126] sandbox: Add a -T flag to use the test device tree Simon Glass
2019-10-05  3:13   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 024/126] sandbox: pci: Increase the memory space Simon Glass
2019-10-05  3:14   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 025/126] sandbox: Allow use of real I/O with readl(), etc Simon Glass
2019-10-05  3:30   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-10-07  1:40       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 026/126] pci: sandbox: Move the emulators into their own node Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 027/126] pci: sandbox: Probe PCI emulation devices when used Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 028/126] pci: Show the result of binding a device Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 029/126] pci: Disable autoconfig in SPL Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 030/126] pci: Correct 'specifified' and 'Plese' typos Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 031/126] pci: Add more debug detail when resources are exhausted Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-10-07  1:40       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 032/126] pci: Show a message if PCI autoconfig fails Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 033/126] dm: pci: Add a function to read a PCI BAR Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 034/126] serial: ns16550: Add a PCI device/function field Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 035/126] binman: Allow verbose output with all commands Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 036/126] binman: Add a base implementation of Entry.ReadChildData() Simon Glass
2019-10-05 14:41   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 037/126] binman: Handle reading data for end-at-4gb sections Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 038/126] binman: Take account of skip-at-start with image-header Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 039/126] log: Add log_nop() to avoid unused-variable warnings Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 040/126] cros_ec: Add MEC_EMI_BASE and size to the header file Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 041/126] iod: Enhance to support display of multiple values Simon Glass
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 042/126] arm: mxs: Correct CONFIG_SPL_NO_CPU_SUPPORT option Simon Glass
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 043/126] spl: Allow tiny printf() to be controlled in SPL and TPL Simon Glass
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 044/126] spl: Convert CONFIG_SPL_LIMIT to hex Simon Glass
2019-09-26 12:26   ` Simon Goldschmidt
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 045/126] spl: Add a size check for TPL Simon Glass
2019-09-26 12:22   ` Simon Goldschmidt
2019-10-11 23:47     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 046/126] spl: Allow distinguishing between two phases in U-Boot Simon Glass
2019-10-05 15:30   ` Bin Meng
2019-10-07  1:55     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 047/126] spl: Allow SPL/TPL to use of-platdata without libfdt Simon Glass
2019-10-05 15:30   ` Bin Meng
2019-10-07  1:55     ` Bin Meng
2019-10-08  5:46       ` Bin Meng
2019-10-13 18:30         ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 048/126] x86: Move acpi_s3.h to a common location Simon Glass
2019-10-05 15:33   ` Bin Meng
2019-10-07  1:55     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 049/126] x86: pci: Drop the first parameter in pci_x86_r/w_config() Simon Glass
2019-10-07 12:24   ` Bin Meng
2019-10-07 12:26     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 050/126] x86: timer: Reduce timer code size in TPL on Intel CPUs Simon Glass
2019-10-05 15:36   ` Bin Meng
2019-10-10 17:06     ` Simon Glass
2019-10-11 13:19       ` Bin Meng
2019-10-12  3:37         ` Simon Glass
2019-10-12  5:18           ` Bin Meng
2019-10-12 17:55             ` Simon Glass
2019-10-14  2:00               ` Bin Meng
2019-10-16  3:40                 ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 051/126] x86: Use a common definition of MSR_IA32_PERF_CTL Simon Glass
2019-10-06 16:08   ` Bin Meng
2019-10-07 12:52     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 052/126] x86: Add a common function to set CPU thermal target Simon Glass
2019-10-06 16:08   ` Bin Meng
2019-10-07 12:52     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 053/126] x86: Use a common bus clock for Intel CPUs Simon Glass
2019-10-06 16:09   ` Bin Meng
2019-10-07 12:52     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 054/126] x86: Add common functions for TDP and perf control Simon Glass
2019-10-06 16:09   ` Bin Meng
2019-10-06 16:15     ` Bin Meng
2019-10-07 12:52       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 055/126] x86: Tidy up some duplicate MSR defines Simon Glass
2019-10-06 16:09   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 056/126] x86: Add new common CPU functions for turbo/burst mode Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 057/126] dm: core: Drop fdtdec_get_pci_addr() Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 058/126] sandbox: pci: Create a new sandbox_pci_read_bar() function Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 059/126] x86: Allow the PCH and LPC uclasses to work with of-platdata Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 060/126] x86: timer: Set up the timer in timer_early_get_count() Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 061/126] x86: Refactor mtrr_commit() to allow for shared code Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:08     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 062/126] x86: Add a function to set variable MTRRs Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:09     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 063/126] x86: pci: Add a function to decode a PCI BDF Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-13 15:03     ` Simon Glass
2019-10-14  1:53       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 064/126] x86: cpu: Don't include the cpu driver in TPL Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:09     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 065/126] x86: Use mtrr_commit() with FSP2 Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:09     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 066/126] x86: spl: Support init of a PUNIT Simon Glass
2019-10-09 14:01   ` Bin Meng
2019-10-14 20:02     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 067/126] x86: Panic when SPL or TPL fail Simon Glass
2019-10-09 14:02   ` Bin Meng
2019-10-11  3:33     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 068/126] x86: tpl: Add a fake PCI bus Simon Glass
2019-10-09 14:20   ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 069/126] sandbox: pci: Remember the device being emulated Simon Glass
2019-10-09 14:27   ` Bin Meng
2019-10-11  8:26     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 070/126] x86: power: Add a PMC uclass Simon Glass
2019-10-10  3:10   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 071/126] x86: sandbox: Add a PMC emulator and test Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 072/126] x86: power: Add a 'pmc' command Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 073/126] trace: Remove the const from write functions Simon Glass
2019-10-10  3:20   ` Bin Meng
2019-10-11  8:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 074/126] pci: Add support for p2sb uclass Simon Glass
2019-10-10  4:57   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-10-12 20:57       ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 075/126] sandbox: Add PCI driver and test for p2sb Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 076/126] x86: Add a uclass for ITSS Simon Glass
2019-10-10  2:27   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 077/126] sandbox: Add a test " Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 078/126] x86: Define the SPL image start Simon Glass
2019-10-10  7:09   ` Bin Meng
2019-10-10 17:06     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 079/126] x86: Reduce mrccache record alignment size Simon Glass
2019-10-10  5:09   ` Bin Meng
2019-10-10 17:06     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 080/126] x86: Add a function to find the size of an mrccache record Simon Glass
2019-10-10  5:09   ` Bin Meng
2019-10-11  8:28     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 081/126] x86: Correct mrccache find_next_mrc_cache() calculation Simon Glass
2019-10-10  6:23   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-10-12  4:44       ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 082/126] x86: Adjust mrccache_get_region() to use livetree Simon Glass
2019-10-10  6:45   ` Bin Meng
2019-10-16  3:40     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 083/126] x86: Add a new global_data member for the cache record Simon Glass
2019-10-10  7:00   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 084/126] x86: Tidy up error handling in mrccache_save() Simon Glass
2019-10-10  7:07   ` Bin Meng
2019-09-25 14:57 ` Simon Glass [this message]
2019-10-10  7:39   ` [U-Boot] [PATCH 085/126] x86: Update mrccache to support multiple caches Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 086/126] x86: Add mrccache support for a 'variable' cache Simon Glass
2019-10-10  7:40   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 087/126] x86: Move fsp_prepare_mrc_cache() to fsp1 directory Simon Glass
2019-10-10  7:43   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 088/126] x86: Set the DRAM banks to reflect real location Simon Glass
2019-10-10  9:03   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 089/126] x86: Set up the MTRR for SDRAM Simon Glass
2019-10-10  9:18   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 090/126] x86: Update Kconfig options for FSP1 Simon Glass
2019-10-10  9:19   ` Bin Meng
2019-10-11  8:34     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 091/126] x86: Don't imply TPL_OF_LIBFDT Simon Glass
2019-10-10  9:23   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 092/126] x86: Allow removal of standard PCH drivers Simon Glass
2019-10-10  9:25   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 093/126] x86: Allow interrupt to happen once Simon Glass
2019-10-10  9:26   ` Bin Meng
2019-10-11  8:35     ` Bin Meng
2019-10-11  9:06       ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 094/126] x86: Add FSP2 base support Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 095/126] x86: Don't include the BIOS emulator in TPL Simon Glass
2019-10-10  9:36   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 096/126] x86: Add an option to include a FIT Simon Glass
2019-10-10  9:39   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 097/126] x86: Add support for newer CAR schemes Simon Glass
2019-10-10  9:50   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-10-12  4:47       ` Bin Meng
2019-10-12 17:53         ` Simon Glass
2019-10-14  1:58           ` Bin Meng
2019-10-14 20:51             ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 098/126] x86: Drop RESET_BASE Simon Glass
2019-10-10  9:56   ` Bin Meng
2019-10-11  8:36     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 099/126] x86: Drop RESET_SEG_SIZE Simon Glass
2019-10-10  9:57   ` Bin Meng
2019-10-11  8:37     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 100/126] x86: Disable microcode section for FSP2 Simon Glass
2019-10-10  9:59   ` Bin Meng
2019-10-02  2:15 ` [U-Boot] [PATCH 000/126] x86: Add initial support for apollolake Simon Glass
2019-10-02 12:34   ` Bin Meng
2019-10-07 14:30     ` Bin Meng
2019-10-10 17:06       ` Simon Glass
2019-10-16  3:43         ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190925145750.200592-86-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.