[PATCH 02/45] disk: Drop debug messages in part_efi
Heinrich Schuchardt
xypron.glpk at gmx.de
Mon Sep 26 08:11:29 CEST 2022
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 at 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 {
More information about the U-Boot
mailing list