u-boot.lists.denx.de archive mirror
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>,
	Philippe Reynes <philippe.reynes@softathome.com>,
	U-Boot Mailing List <u-boot@lists.denx.de>
Subject: Re: [PATCH 02/45] disk: Drop debug messages in part_efi
Date: Mon, 26 Sep 2022 08:11:29 +0200	[thread overview]
Message-ID: <a3d1759f-a0ed-90d3-3a96-9e489f470426@gmx.de> (raw)
In-Reply-To: <20220925150248.2524421-3-sjg@chromium.org>

On 9/25/22 17:02, Simon Glass wrote:
> This is monstrously verbose when something goes wrong. It should work by
> recording the problem and reporting it (once) at the command level. At
> present it sometimes outputs hundreds of lines of CRC mismatches.
>
> For now, just silence it all.
>
>    GUID Partition Table Entry Array CRC is wrong: 0xaebfebf2 != 0xc916f712
>    find_valid_gpt: *** ERROR: Invalid GPT ***
>    find_valid_gpt: ***        Using Backup GPT ***
>    GUID Partition Table Entry Array CRC is wrong: 0xaebfebf2 != 0xc916f712
>    find_valid_gpt: *** ERROR: Invalid GPT ***
>    find_valid_gpt: ***        Using Backup GPT ***
>    ...
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
>   disk/part_efi.c | 148 +++++++++++++++++++++++-------------------------
>   1 file changed, 71 insertions(+), 77 deletions(-)
>
> diff --git a/disk/part_efi.c b/disk/part_efi.c
> index 26738a57d5d..1a359066ae9 100644
> --- a/disk/part_efi.c
> +++ b/disk/part_efi.c
> @@ -94,10 +94,10 @@ static int validate_gpt_header(gpt_header *gpt_h, lbaint_t lba,
>
>   	/* Check the GPT header signature */
>   	if (le64_to_cpu(gpt_h->signature) != GPT_HEADER_SIGNATURE_UBOOT) {
> -		printf("%s signature is wrong: 0x%llX != 0x%llX\n",
> -		       "GUID Partition Table Header",
> -		       le64_to_cpu(gpt_h->signature),
> -		       GPT_HEADER_SIGNATURE_UBOOT);
> +		log_debug("%s signature is wrong: %#llX != %#llX\n",
> +			  "GUID Partition Table Header",
> +			  le64_to_cpu(gpt_h->signature),
> +			  GPT_HEADER_SIGNATURE_UBOOT);
>   		return -1;
>   	}
>
> @@ -111,9 +111,9 @@ static int validate_gpt_header(gpt_header *gpt_h, lbaint_t lba,
>   	memcpy(&gpt_h->header_crc32, &crc32_backup, sizeof(crc32_backup));
>
>   	if (calc_crc32 != le32_to_cpu(crc32_backup)) {
> -		printf("%s CRC is wrong: 0x%x != 0x%x\n",
> -		       "GUID Partition Table Header",
> -		       le32_to_cpu(crc32_backup), calc_crc32);
> +		log_debug("%s: CRC is wrong: %#x != %#x\n",
> +			  "GUID Partition Table Header",
> +			  le32_to_cpu(crc32_backup), calc_crc32);
>   		return -1;
>   	}
>
> @@ -121,9 +121,8 @@ static int validate_gpt_header(gpt_header *gpt_h, lbaint_t lba,
>   	 * Check that the my_lba entry points to the LBA that contains the GPT
>   	 */
>   	if (le64_to_cpu(gpt_h->my_lba) != lba) {
> -		printf("GPT: my_lba incorrect: %llX != " LBAF "\n",
> -		       le64_to_cpu(gpt_h->my_lba),
> -		       lba);
> +		log_debug("GPT: my_lba incorrect: %llX != " LBAF "\n",
> +			  le64_to_cpu(gpt_h->my_lba), lba);
>   		return -1;
>   	}
>
> @@ -132,13 +131,13 @@ static int validate_gpt_header(gpt_header *gpt_h, lbaint_t lba,
>   	 * within the disk.
>   	 */
>   	if (le64_to_cpu(gpt_h->first_usable_lba) > lastlba) {
> -		printf("GPT: first_usable_lba incorrect: %llX > " LBAF "\n",
> -		       le64_to_cpu(gpt_h->first_usable_lba), lastlba);
> +		log_debug("GPT: first_usable_lba incorrect: %llX > " LBAF "\n",
> +			  le64_to_cpu(gpt_h->first_usable_lba), lastlba);
>   		return -1;
>   	}
>   	if (le64_to_cpu(gpt_h->last_usable_lba) > lastlba) {
> -		printf("GPT: last_usable_lba incorrect: %llX > " LBAF "\n",
> -		       le64_to_cpu(gpt_h->last_usable_lba), lastlba);
> +		log_debug("GPT: last_usable_lba incorrect: %llX > " LBAF "\n",
> +			  le64_to_cpu(gpt_h->last_usable_lba), lastlba);
>   		return -1;
>   	}
>
> @@ -159,10 +158,10 @@ static int validate_gpt_entries(gpt_header *gpt_h, gpt_entry *gpt_e)
>   		le32_to_cpu(gpt_h->sizeof_partition_entry));
>
>   	if (calc_crc32 != le32_to_cpu(gpt_h->partition_entry_array_crc32)) {
> -		printf("%s: 0x%x != 0x%x\n",
> -		       "GUID Partition Table Entry Array CRC is wrong",
> -		       le32_to_cpu(gpt_h->partition_entry_array_crc32),
> -		       calc_crc32);
> +		log_debug("%s: %#x != %#x\n",
> +			  "GUID Partition Table Entry Array CRC is wrong",
> +			  le32_to_cpu(gpt_h->partition_entry_array_crc32),
> +			  calc_crc32);
>   		return -1;
>   	}
>
> @@ -330,14 +329,15 @@ static int set_protective_mbr(struct blk_desc *dev_desc)
>   	/* Setup the Protective MBR */
>   	ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, p_mbr, 1, dev_desc->blksz);
>   	if (p_mbr == NULL) {
> -		printf("%s: calloc failed!\n", __func__);
> -		return -1;
> +		log_debug("calloc failed!\n");
> +		return -ENOMEM;
>   	}
>
>   	/* Read MBR to backup boot code if it exists */
>   	if (blk_dread(dev_desc, 0, 1, p_mbr) != 1) {
> -		pr_err("** Can't read from device %d **\n", dev_desc->devnum);
> -		return -1;
> +		log_debug("** Can't read from device %d **\n",
> +			  dev_desc->devnum);
> +		return -EIO;
>   	}
>
>   	/* Clear all data in MBR except of backed up boot code */
> @@ -352,9 +352,8 @@ static int set_protective_mbr(struct blk_desc *dev_desc)
>
>   	/* Write MBR sector to the MMC device */
>   	if (blk_dwrite(dev_desc, 0, 1, p_mbr) != 1) {
> -		printf("** Can't write to device %d **\n",
> -			dev_desc->devnum);
> -		return -1;
> +		log_debug("** Can't write to device %d **\n", dev_desc->devnum);
> +		return -EIO;
>   	}
>
>   	return 0;
> @@ -404,8 +403,8 @@ int write_gpt_table(struct blk_desc *dev_desc,
>   	return 0;
>
>    err:
> -	printf("** Can't write to device %d **\n", dev_desc->devnum);
> -	return -1;
> +	log_debug("** Can't write to device %d **\n", dev_desc->devnum);
> +	return -EIO;
>   }
>
>   int gpt_fill_pte(struct blk_desc *dev_desc,
> @@ -451,15 +450,15 @@ int gpt_fill_pte(struct blk_desc *dev_desc,
>   		 */
>   		if (((start < hdr_end && hdr_start < (start + size)) ||
>   		     (start < pte_end && pte_start < (start + size)))) {
> -			printf("Partition overlap\n");
> -			return -1;
> +			log_debug("Partition overlap\n");
> +			return -ENOSPC;
>   		}
>
>   		gpt_e[i].starting_lba = cpu_to_le64(start);
>
>   		if (offset > (last_usable_lba + 1)) {
> -			printf("Partitions layout exceds disk size\n");
> -			return -1;
> +			log_debug("Partitions layout exceeds disk size\n");
> +			return -E2BIG;
>   		}
>   		/* partition ending lba */
>   		if ((i == parts - 1) && (size == 0))
> @@ -474,9 +473,9 @@ int gpt_fill_pte(struct blk_desc *dev_desc,
>   		if (strlen(str_type_guid)) {
>   			if (uuid_str_to_bin(str_type_guid, bin_type_guid,
>   					    UUID_STR_FORMAT_GUID)) {
> -				printf("Partition no. %d: invalid type guid: %s\n",
> -				       i, str_type_guid);
> -				return -1;
> +				log_debug("Partition no. %d: invalid type guid: %s\n",
> +					  i, str_type_guid);
> +				return -EINVAL;
>   			}
>   		} else {
>   			/* default partition type GUID */
> @@ -494,9 +493,9 @@ int gpt_fill_pte(struct blk_desc *dev_desc,
>   		bin_uuid = gpt_e[i].unique_partition_guid.b;
>
>   		if (uuid_str_to_bin(str_uuid, bin_uuid, UUID_STR_FORMAT_GUID)) {
> -			printf("Partition no. %d: invalid guid: %s\n",
> -				i, str_uuid);
> -			return -1;
> +			log_debug("Partition no. %d: invalid guid: %s\n",
> +				  i, str_uuid);
> +			return -EINVAL;
>   		}
>   #endif
>
> @@ -608,8 +607,8 @@ int gpt_restore(struct blk_desc *dev_desc, char *str_disk_guid,
>   	size = PAD_TO_BLOCKSIZE(sizeof(gpt_header), dev_desc);
>   	gpt_h = malloc_cache_aligned(size);
>   	if (gpt_h == NULL) {
> -		printf("%s: calloc failed!\n", __func__);
> -		return -1;
> +		log_debug("calloc failed!\n");
> +		return -ENOMEM;
>   	}
>   	memset(gpt_h, 0, size);
>
> @@ -617,9 +616,9 @@ int gpt_restore(struct blk_desc *dev_desc, char *str_disk_guid,
>   				dev_desc);
>   	gpt_e = malloc_cache_aligned(size);
>   	if (gpt_e == NULL) {
> -		printf("%s: calloc failed!\n", __func__);
> +		log_debug("calloc failed!\n");
>   		free(gpt_h);
> -		return -1;
> +		return -ENOMEM;
>   	}
>   	memset(gpt_e, 0, size);
>
> @@ -675,8 +674,7 @@ int gpt_verify_headers(struct blk_desc *dev_desc, gpt_header *gpt_head,
>   	if (is_gpt_valid(dev_desc,
>   			 GPT_PRIMARY_PARTITION_TABLE_LBA,
>   			 gpt_head, gpt_pte) != 1) {
> -		printf("%s: *** ERROR: Invalid GPT ***\n",
> -		       __func__);
> +		log_debug("*** ERROR: Invalid GPT ***\n");

Silencing the messages during partition probing looks ok to me.

Can we get rid of all these '*** ERROR: '? The message texts already
indicate that an unexpected situation occurred.

Best regards

Heinrich

>   		return -1;
>   	}
>
> @@ -687,15 +685,13 @@ int gpt_verify_headers(struct blk_desc *dev_desc, gpt_header *gpt_head,
>   	 * Check that the alternate_lba entry points to the last LBA
>   	 */
>   	if (le64_to_cpu(gpt_head->alternate_lba) != (dev_desc->lba - 1)) {
> -		printf("%s: *** ERROR: Misplaced Backup GPT ***\n",
> -		       __func__);
> +		log_debug("*** ERROR: Misplaced Backup GPT ***\n");
>   		return -1;
>   	}
>
>   	if (is_gpt_valid(dev_desc, (dev_desc->lba - 1),
>   			 gpt_head, gpt_pte) != 1) {
> -		printf("%s: *** ERROR: Invalid Backup GPT ***\n",
> -		       __func__);
> +		log_debug("*** ERROR: Invalid Backup GPT ***\n");
>   		return -1;
>   	}
>
> @@ -913,8 +909,8 @@ int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf)
>   	lba = 0;	/* MBR is always at 0 */
>   	cnt = 1;	/* MBR (1 block) */
>   	if (blk_dwrite(dev_desc, lba, cnt, buf) != cnt) {
> -		printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
> -		       __func__, "MBR", cnt, lba);
> +		log_debug("failed writing '%s' (%d blks at 0x" LBAF ")\n",
> +			  "MBR", cnt, lba);
>   		return 1;
>   	}
>
> @@ -922,16 +918,16 @@ int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf)
>   	lba = GPT_PRIMARY_PARTITION_TABLE_LBA;
>   	cnt = 1;	/* GPT Header (1 block) */
>   	if (blk_dwrite(dev_desc, lba, cnt, gpt_h) != cnt) {
> -		printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
> -		       __func__, "Primary GPT Header", cnt, lba);
> +		log_debug("failed writing '%s' (%d blks at 0x" LBAF ")\n",
> +			  "Primary GPT Header", cnt, lba);
>   		return 1;
>   	}
>
>   	lba = le64_to_cpu(gpt_h->partition_entry_lba);
>   	cnt = gpt_e_blk_cnt;
>   	if (blk_dwrite(dev_desc, lba, cnt, gpt_e) != cnt) {
> -		printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
> -		       __func__, "Primary GPT Entries", cnt, lba);
> +		log_debug("failed writing '%s' (%d blks at 0x" LBAF ")\n",
> +			  "Primary GPT Entries", cnt, lba);
>   		return 1;
>   	}
>
> @@ -941,16 +937,16 @@ int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf)
>   	lba = le64_to_cpu(gpt_h->partition_entry_lba);
>   	cnt = gpt_e_blk_cnt;
>   	if (blk_dwrite(dev_desc, lba, cnt, gpt_e) != cnt) {
> -		printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
> -		       __func__, "Backup GPT Entries", cnt, lba);
> +		log_debug("failed writing '%s' (%d blks at 0x" LBAF ")\n",
> +			  "Backup GPT Entries", cnt, lba);
>   		return 1;
>   	}
>
>   	lba = le64_to_cpu(gpt_h->my_lba);
>   	cnt = 1;	/* GPT Header (1 block) */
>   	if (blk_dwrite(dev_desc, lba, cnt, gpt_h) != cnt) {
> -		printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
> -		       __func__, "Backup GPT Header", cnt, lba);
> +		log_debug("failed writing '%s' (%d blks at 0x" LBAF ")\n",
> +			  "Backup GPT Header", cnt, lba);
>   		return 1;
>   	}
>
> @@ -1017,7 +1013,7 @@ static int is_gpt_valid(struct blk_desc *dev_desc, u64 lba,
>   {
>   	/* Confirm valid arguments prior to allocation. */
>   	if (!dev_desc || !pgpt_head) {
> -		printf("%s: Invalid Argument(s)\n", __func__);
> +		log_debug("Invalid Argument(s)\n");
>   		return 0;
>   	}
>
> @@ -1025,19 +1021,19 @@ static int is_gpt_valid(struct blk_desc *dev_desc, u64 lba,
>
>   	/* Read MBR Header from device */
>   	if (blk_dread(dev_desc, 0, 1, (ulong *)mbr) != 1) {
> -		printf("*** ERROR: Can't read MBR header ***\n");
> +		log_debug("*** ERROR: Can't read MBR header ***\n");
>   		return 0;
>   	}
>
>   	/* Read GPT Header from device */
>   	if (blk_dread(dev_desc, (lbaint_t)lba, 1, pgpt_head) != 1) {
> -		printf("*** ERROR: Can't read GPT header ***\n");
> +		log_debug("*** ERROR: Can't read GPT header ***\n");
>   		return 0;
>   	}
>
>   	/* Invalid but nothing to yell about. */
>   	if (le64_to_cpu(pgpt_head->signature) == GPT_HEADER_CHROMEOS_IGNORE) {
> -		debug("ChromeOS 'IGNOREME' GPT header found and ignored\n");
> +		log_debug("ChromeOS 'IGNOREME' GPT header found and ignored\n");
>   		return 2;
>   	}
>
> @@ -1089,17 +1085,15 @@ static int find_valid_gpt(struct blk_desc *dev_desc, gpt_header *gpt_head,
>
>   	if (r != 1) {
>   		if (r != 2)
> -			printf("%s: *** ERROR: Invalid GPT ***\n", __func__);
> +			log_debug("*** ERROR: Invalid GPT ***\n");
>
>   		if (is_gpt_valid(dev_desc, (dev_desc->lba - 1), gpt_head,
>   				 pgpt_pte) != 1) {
> -			printf("%s: *** ERROR: Invalid Backup GPT ***\n",
> -			       __func__);
> +			log_debug("*** ERROR: Invalid Backup GPT ***\n");
>   			return 0;
>   		}
>   		if (r != 2)
> -			printf("%s: ***        Using Backup GPT ***\n",
> -			       __func__);
> +			log_debug("***        Using Backup GPT ***\n");
>   	}
>   	return 1;
>   }
> @@ -1121,17 +1115,17 @@ static gpt_entry *alloc_read_gpt_entries(struct blk_desc *dev_desc,
>   	gpt_entry *pte = NULL;
>
>   	if (!dev_desc || !pgpt_head) {
> -		printf("%s: Invalid Argument(s)\n", __func__);
> +		log_debug("Invalid Argument(s)\n");
>   		return NULL;
>   	}
>
>   	count = le32_to_cpu(pgpt_head->num_partition_entries) *
>   		le32_to_cpu(pgpt_head->sizeof_partition_entry);
>
> -	debug("%s: count = %u * %u = %lu\n", __func__,
> -	      (u32) le32_to_cpu(pgpt_head->num_partition_entries),
> -	      (u32) le32_to_cpu(pgpt_head->sizeof_partition_entry),
> -	      (ulong)count);
> +	log_debug("count = %u * %u = %lu\n",
> +		  (u32)le32_to_cpu(pgpt_head->num_partition_entries),
> +		  (u32)le32_to_cpu(pgpt_head->sizeof_partition_entry),
> +		  (ulong)count);
>
>   	/* Allocate memory for PTE, remember to FREE */
>   	if (count != 0) {
> @@ -1140,8 +1134,8 @@ static gpt_entry *alloc_read_gpt_entries(struct blk_desc *dev_desc,
>   	}
>
>   	if (count == 0 || pte == NULL) {
> -		printf("%s: ERROR: Can't allocate %#lX bytes for GPT Entries\n",
> -		       __func__, (ulong)count);
> +		log_debug("ERROR: Can't allocate %#lX bytes for GPT Entries\n",
> +			  (ulong)count);
>   		return NULL;
>   	}
>
> @@ -1149,7 +1143,7 @@ static gpt_entry *alloc_read_gpt_entries(struct blk_desc *dev_desc,
>   	blk = le64_to_cpu(pgpt_head->partition_entry_lba);
>   	blk_cnt = BLOCK_CNT(count, dev_desc);
>   	if (blk_dread(dev_desc, blk, (lbaint_t)blk_cnt, pte) != blk_cnt) {
> -		printf("*** ERROR: Can't read GPT Entries ***\n");
> +		log_debug("*** ERROR: Can't read GPT Entries ***\n");
>   		free(pte);
>   		return NULL;
>   	}
> @@ -1167,7 +1161,7 @@ static int is_pte_valid(gpt_entry * pte)
>   	efi_guid_t unused_guid;
>
>   	if (!pte) {
> -		printf("%s: Invalid Argument(s)\n", __func__);
> +		log_debug("Invalid Argument(s)\n");
>   		return 0;
>   	}
>
> @@ -1179,8 +1173,8 @@ static int is_pte_valid(gpt_entry * pte)
>   	if (memcmp(pte->partition_type_guid.b, unused_guid.b,
>   		sizeof(unused_guid.b)) == 0) {
>
> -		debug("%s: Found an unused PTE GUID at 0x%08X\n", __func__,
> -		      (unsigned int)(uintptr_t)pte);
> +		log_debug("Found an unused PTE GUID at 0x%08X\n",
> +			  (unsigned int)(uintptr_t)pte);
>
>   		return 0;
>   	} else {


  reply	other threads:[~2022-09-26  6:11 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-25 15:02 [PATCH 00/45] vbe: Implement the full firmware flow Simon Glass
2022-09-25 15:02 ` [PATCH 01/45] Rename CONFIG_SYS_TEXT_BASE to CONFIG_TEXT_BASE Simon Glass
2022-09-25 15:02 ` [PATCH 02/45] disk: Drop debug messages in part_efi Simon Glass
2022-09-26  6:11   ` Heinrich Schuchardt [this message]
2022-09-25 15:02 ` [PATCH 03/45] bloblist: Drop debugging Simon Glass
2022-09-25 15:02 ` [PATCH 04/45] rsa: Avoid warning in padding_pss_verify() Simon Glass
2022-09-26  6:23   ` Heinrich Schuchardt
2022-09-25 15:02 ` [PATCH 05/45] spl: Use binman suffix allow symbols of any SPL etype Simon Glass
2022-09-25 15:02 ` [PATCH 06/45] spl: Split up the board_init_r() function Simon Glass
2022-09-25 15:02 ` [PATCH 07/45] spl: Refactor controls for console output Simon Glass
2022-09-29 15:16   ` Tom Rini
2022-09-25 15:02 ` [PATCH 08/45] spl: Add a separate silence option for SPL Simon Glass
2022-09-25 15:02 ` [PATCH 09/45] CI: Install pyelftools for builds Simon Glass
2022-09-26  6:29   ` Heinrich Schuchardt
2022-09-28 10:20     ` Simon Glass
2022-09-29 15:05       ` Tom Rini
2022-09-29 23:55         ` Simon Glass
2022-09-30 12:56           ` Tom Rini
2022-09-30 13:28             ` Simon Glass
2022-09-25 15:02 ` [PATCH 10/45] binman: Allow obtaining a symbol value Simon Glass
2022-09-25 15:02 ` [PATCH 11/45] binman: Split out looking up a symbol into a function Simon Glass
2022-09-25 15:02 ` [PATCH 12/45] binman: Handle writing ELF symbols in the Entry class Simon Glass
2022-09-25 15:02 ` [PATCH 13/45] binman: Support writing symbols into ELF files Simon Glass
2022-09-25 15:02 ` [PATCH 14/45] dm: blk: Add udevice functions Simon Glass
2022-09-26  0:17   ` AKASHI Takahiro
2022-09-28 10:20     ` Simon Glass
2022-09-29  0:51       ` AKASHI Takahiro
2022-09-29  2:35         ` Simon Glass
2022-09-30  1:54           ` AKASHI Takahiro
2022-09-25 15:02 ` [PATCH 15/45] dm: usb: Update the test to cover reading and writing Simon Glass
2022-09-25 15:02 ` [PATCH 16/45] dm: blk: mmc: Tidy up some Makefile rules for SPL Simon Glass
2022-09-25 15:02 ` [PATCH 17/45] dm: mmc: Allow sandbox emulator to build without writes Simon Glass
2022-09-25 15:02 ` [PATCH 18/45] sandbox: Drop message about writing sandbox state Simon Glass
2022-09-26  6:31   ` Heinrich Schuchardt
2022-09-25 15:02 ` [PATCH 19/45] sandbox: Generalise SPL booting Simon Glass
2022-09-25 15:02 ` [PATCH 20/45] sandbox: Add a way to specify the sandbox executable Simon Glass
2022-09-26  6:49   ` Heinrich Schuchardt
2022-11-07 23:35     ` Simon Glass
2022-09-25 15:02 ` [PATCH 21/45] bootstd: Add a way to set up a bootflow Simon Glass
2022-09-25 15:02 ` [PATCH 22/45] image: Move comment for fit_conf_find_compat() Simon Glass
2022-09-26  6:54   ` Heinrich Schuchardt
2022-09-25 15:02 ` [PATCH 23/45] test: Report skippped tests Simon Glass
2022-09-25 15:02 ` [PATCH 24/45] test: Update tests to use the skip feature Simon Glass
2022-09-25 15:02 ` [PATCH 25/45] test: Support tests which can only be run manually Simon Glass
2022-09-26  6:56   ` Heinrich Schuchardt
2022-09-28 10:20     ` Simon Glass
2022-09-25 15:02 ` [PATCH 26/45] image: Add the concept of a phase to FIT Simon Glass
2022-09-25 15:02 ` [PATCH 27/45] image: Allow loading a FIT config for a particular phase Simon Glass
2022-09-25 15:02 ` [PATCH 28/45] image: Correct strncpy() warning with image_set_name() Simon Glass
2022-09-25 15:02 ` [PATCH 29/45] vbe: Rename vbe_fixup to vbe_request Simon Glass
2022-09-25 15:02 ` [PATCH 30/45] vbe: Use a warning for a failed requests Simon Glass
2022-09-25 15:02 ` [PATCH 31/45] spl: Allow multiple loaders of the same type Simon Glass
2022-09-30 16:28   ` Tom Rini
2022-09-30 16:37     ` Simon Glass
2022-09-30 16:39       ` Tom Rini
2022-09-30 16:45         ` Simon Glass
2022-09-30 16:50           ` Tom Rini
2022-09-30 16:55             ` Simon Glass
2022-09-25 15:02 ` [PATCH 32/45] sandbox: Support obtaining the next phase from an image Simon Glass
2022-09-25 15:02 ` [PATCH 33/45] vbe: Support selecting operations by SPL phase Simon Glass
2022-09-25 15:02 ` [PATCH 34/45] vbe: Support reading the next SPL phase via VBE Simon Glass
2022-09-25 15:02 ` [PATCH 35/45] vbe: Move OS implementation into a separate file Simon Glass
2022-09-25 15:02 ` [PATCH 36/45] vbe: Drop the U-Boot prefix from the version Simon Glass
2022-09-25 15:02 ` [PATCH 37/45] vbe: Add Kconfig options for VPL Simon Glass
2022-09-25 15:02 ` [PATCH 38/45] vbe: Add info about the VBE device to the fwupd node Simon Glass
2022-09-25 15:02 ` [PATCH 39/45] sandbox: Add a binman image for VPL Simon Glass
2022-09-25 15:02 ` [PATCH 40/45] vbe: Correct pylint warnings in test_vbe Simon Glass
2022-09-25 15:02 ` [PATCH 41/45] vbe: Use a manual test Simon Glass
2022-09-25 15:02 ` [PATCH 42/45] vbe: Record which phases loaded using VBE Simon Glass
2022-09-25 15:02 ` [PATCH 43/45] vbe: Add docs and a test for the VBE command Simon Glass
2022-09-25 15:02 ` [PATCH 44/45] vbe: Add a subcommand to show the VBE state Simon Glass
2022-09-25 15:02 ` [PATCH 45/45] vbe: Add a test for the VBE flow into U-Boot proper 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=a3d1759f-a0ed-90d3-3a96-9e489f470426@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=philippe.reynes@softathome.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).