"Das U-Boot" Source Tree
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

lib/uuid.c: restore support of system partition type for ESP

Add support of optional shortname for parameter 'type' of gpt
command (limited by UUID_STR_LEN) and a separate 'description'
for UID format "%pUs" used in 'part list' output.

When 'description' is absent in list_guid[], the optional
shortname is used as fallback.

Many partition types for EFI have no shortcut yet, but only
description as they are only used to display information.

This patch also restores the "system" as short name for EFI
System Partition (ESP).

Fixes: d54e1004b8b1 ("lib/uuid.c: use unique name for PARTITION_SYSTEM_GUID")
Tested-by: Patrice Chotard <patrice.chotard@foss.st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>

authored by

Patrick Delaunay and committed by
Tom Rini
73d5a68f c5afa1fe

+90 -75
+89 -73
lib/uuid.c
··· 62 62 return 1; 63 63 } 64 64 65 + /* 66 + * Array of string (short and long) for known GUID of GPT partition type 67 + * at least one string must be present, @type or @description 68 + * 69 + * @type : short name for the parameter 'type' of gpt command (max size UUID_STR_LEN = 36, 70 + * no space), also used as fallback description when the next field is absent 71 + * @description : long description associated to type GUID, used for %pUs 72 + * @guid : known type GUID value 73 + */ 65 74 static const struct { 66 - const char *string; 75 + const char *type; 76 + const char *description; 67 77 efi_guid_t guid; 68 78 } list_guid[] = { 69 79 #ifndef USE_HOSTCC 70 - #if defined(CONFIG_PARTITION_TYPE_GUID) || defined(CONFIG_CMD_EFIDEBUG) || \ 71 - defined(CONFIG_EFI) 72 - {"EFI System Partition", PARTITION_SYSTEM_GUID}, 73 - #endif 74 - #ifdef CONFIG_PARTITION_TYPE_GUID 75 - {"mbr", LEGACY_MBR_PARTITION_GUID}, 76 - {"msft", PARTITION_MSFT_RESERVED_GUID}, 77 - {"data", PARTITION_BASIC_DATA_GUID}, 78 - {"linux", PARTITION_LINUX_FILE_SYSTEM_DATA_GUID}, 79 - {"raid", PARTITION_LINUX_RAID_GUID}, 80 - {"swap", PARTITION_LINUX_SWAP_GUID}, 81 - {"lvm", PARTITION_LINUX_LVM_GUID}, 82 - {"u-boot-env", PARTITION_U_BOOT_ENVIRONMENT}, 83 - {"cros-kern", PARTITION_CROS_KERNEL}, 84 - {"cros-root", PARTITION_CROS_ROOT}, 85 - {"cros-fw", PARTITION_CROS_FIRMWARE}, 86 - {"cros-rsrv", PARTITION_CROS_RESERVED}, 87 - #endif 80 + #if CONFIG_IS_ENABLED(EFI_PARTITION) 81 + {"mbr", NULL, LEGACY_MBR_PARTITION_GUID}, 82 + {"msft", NULL, PARTITION_MSFT_RESERVED_GUID}, 83 + {"data", NULL, PARTITION_BASIC_DATA_GUID}, 84 + {"linux", NULL, PARTITION_LINUX_FILE_SYSTEM_DATA_GUID}, 85 + {"raid", NULL, PARTITION_LINUX_RAID_GUID}, 86 + {"swap", NULL, PARTITION_LINUX_SWAP_GUID}, 87 + {"lvm", NULL, PARTITION_LINUX_LVM_GUID}, 88 + {"u-boot-env", NULL, PARTITION_U_BOOT_ENVIRONMENT}, 89 + {"cros-kern", NULL, PARTITION_CROS_KERNEL}, 90 + {"cros-root", NULL, PARTITION_CROS_ROOT}, 91 + {"cros-fw", NULL, PARTITION_CROS_FIRMWARE}, 92 + {"cros-rsrv", NULL, PARTITION_CROS_RESERVED}, 93 + { 94 + "system", "EFI System Partition", 95 + PARTITION_SYSTEM_GUID, 96 + }, 88 97 #if defined(CONFIG_CMD_EFIDEBUG) || defined(CONFIG_EFI) 89 98 { 90 - "Device Path", 99 + NULL, "Device Path", 100 + PARTITION_SYSTEM_GUID, 101 + }, 102 + { 103 + NULL, "Device Path", 91 104 EFI_DEVICE_PATH_PROTOCOL_GUID, 92 105 }, 93 106 { 94 - "Device Path To Text", 107 + NULL, "Device Path To Text", 95 108 EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID, 96 109 }, 97 110 { 98 - "Device Path Utilities", 111 + NULL, "Device Path Utilities", 99 112 EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID, 100 113 }, 101 114 { 102 - "Unicode Collation 2", 115 + NULL, "Unicode Collation 2", 103 116 EFI_UNICODE_COLLATION_PROTOCOL2_GUID, 104 117 }, 105 118 { 106 - "Driver Binding", 119 + NULL, "Driver Binding", 107 120 EFI_DRIVER_BINDING_PROTOCOL_GUID, 108 121 }, 109 122 { 110 - "Simple Text Input", 123 + NULL, "Simple Text Input", 111 124 EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID, 112 125 }, 113 126 { 114 - "Simple Text Input Ex", 127 + NULL, "Simple Text Input Ex", 115 128 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID, 116 129 }, 117 130 { 118 - "Simple Text Output", 131 + NULL, "Simple Text Output", 119 132 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID, 120 133 }, 121 134 { 122 - "Block IO", 135 + NULL, "Block IO", 123 136 EFI_BLOCK_IO_PROTOCOL_GUID, 124 137 }, 125 138 { 126 - "Disk IO", 139 + NULL, "Disk IO", 127 140 EFI_DISK_IO_PROTOCOL_GUID, 128 141 }, 129 142 { 130 - "Simple File System", 143 + NULL, "Simple File System", 131 144 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID, 132 145 }, 133 146 { 134 - "Loaded Image", 147 + NULL, "Loaded Image", 135 148 EFI_LOADED_IMAGE_PROTOCOL_GUID, 136 149 }, 137 150 { 138 - "Loaded Image Device Path", 151 + NULL, "Loaded Image Device Path", 139 152 EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID, 140 153 }, 141 154 { 142 - "Graphics Output", 155 + NULL, "Graphics Output", 143 156 EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID, 144 157 }, 145 158 { 146 - "HII String", 159 + NULL, "HII String", 147 160 EFI_HII_STRING_PROTOCOL_GUID, 148 161 }, 149 162 { 150 - "HII Database", 163 + NULL, "HII Database", 151 164 EFI_HII_DATABASE_PROTOCOL_GUID, 152 165 }, 153 166 { 154 - "HII Config Access", 167 + NULL, "HII Config Access", 155 168 EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID, 156 169 }, 157 170 { 158 - "HII Config Routing", 171 + NULL, "HII Config Routing", 159 172 EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID, 160 173 }, 161 174 { 162 - "Load File", 175 + NULL, "Load File", 163 176 EFI_LOAD_FILE_PROTOCOL_GUID, 164 177 }, 165 178 { 166 - "Load File2", 179 + NULL, "Load File2", 167 180 EFI_LOAD_FILE2_PROTOCOL_GUID, 168 181 }, 169 182 { 170 - "Random Number Generator", 183 + NULL, "Random Number Generator", 171 184 EFI_RNG_PROTOCOL_GUID, 172 185 }, 173 186 { 174 - "Simple Network", 187 + NULL, "Simple Network", 175 188 EFI_SIMPLE_NETWORK_PROTOCOL_GUID, 176 189 }, 177 190 { 178 - "PXE Base Code", 191 + NULL, "PXE Base Code", 179 192 EFI_PXE_BASE_CODE_PROTOCOL_GUID, 180 193 }, 181 194 { 182 - "Device-Tree Fixup", 195 + NULL, "Device-Tree Fixup", 183 196 EFI_DT_FIXUP_PROTOCOL_GUID, 184 197 }, 185 198 { 186 - "TCG2", 199 + NULL, "TCG2", 187 200 EFI_TCG2_PROTOCOL_GUID, 188 201 }, 189 202 { 190 - "Firmware Management", 203 + NULL, "Firmware Management", 191 204 EFI_FIRMWARE_MANAGEMENT_PROTOCOL_GUID 192 205 }, 193 206 #if IS_ENABLED(CONFIG_EFI_HTTP_PROTOCOL) 194 207 { 195 - "HTTP", 208 + NULL, "HTTP", 196 209 EFI_HTTP_PROTOCOL_GUID, 197 210 }, 198 211 { 199 - "HTTP Service Binding", 212 + NULL, "HTTP Service Binding", 200 213 EFI_HTTP_SERVICE_BINDING_PROTOCOL_GUID, 201 214 }, 202 215 { 203 - "IPv4 Config2", 216 + NULL, "IPv4 Config2", 204 217 EFI_IP4_CONFIG2_PROTOCOL_GUID, 205 218 }, 206 219 #endif 207 220 /* Configuration table GUIDs */ 208 221 { 209 - "ACPI table", 222 + NULL, "ACPI table", 210 223 EFI_ACPI_TABLE_GUID, 211 224 }, 212 225 { 213 - "EFI System Resource Table", 226 + NULL, "EFI System Resource Table", 214 227 EFI_SYSTEM_RESOURCE_TABLE_GUID, 215 228 }, 216 229 { 217 - "device tree", 230 + NULL, "device tree", 218 231 EFI_FDT_GUID, 219 232 }, 220 233 { 221 - "SMBIOS table", 234 + NULL, "SMBIOS table", 222 235 SMBIOS_TABLE_GUID, 223 236 }, 224 237 { 225 - "SMBIOS3 table", 238 + NULL, "SMBIOS3 table", 226 239 SMBIOS3_TABLE_GUID, 227 240 }, 228 241 { 229 - "Runtime properties", 242 + NULL, "Runtime properties", 230 243 EFI_RT_PROPERTIES_TABLE_GUID, 231 244 }, 232 245 { 233 - "TCG2 Final Events Table", 246 + NULL, "TCG2 Final Events Table", 234 247 EFI_TCG2_FINAL_EVENTS_TABLE_GUID, 235 248 }, 236 249 { 237 - "EFI Conformance Profiles Table", 250 + NULL, "EFI Conformance Profiles Table", 238 251 EFI_CONFORMANCE_PROFILES_TABLE_GUID, 239 252 }, 240 253 #ifdef CONFIG_EFI_RISCV_BOOT_PROTOCOL 241 254 { 242 - "RISC-V Boot", 255 + NULL, "RISC-V Boot", 243 256 RISCV_EFI_BOOT_PROTOCOL_GUID, 244 257 }, 245 258 #endif ··· 247 260 #ifdef CONFIG_CMD_NVEDIT_EFI 248 261 /* signature database */ 249 262 { 250 - "EFI_GLOBAL_VARIABLE_GUID", 263 + "EFI_GLOBAL_VARIABLE_GUID", NULL, 251 264 EFI_GLOBAL_VARIABLE_GUID, 252 265 }, 253 266 { 254 - "EFI_IMAGE_SECURITY_DATABASE_GUID", 267 + "EFI_IMAGE_SECURITY_DATABASE_GUID", NULL, 255 268 EFI_IMAGE_SECURITY_DATABASE_GUID, 256 269 }, 257 270 /* certificate types */ 258 271 { 259 - "EFI_CERT_SHA256_GUID", 272 + "EFI_CERT_SHA256_GUID", NULL, 260 273 EFI_CERT_SHA256_GUID, 261 274 }, 262 275 { 263 - "EFI_CERT_X509_GUID", 276 + "EFI_CERT_X509_GUID", NULL, 264 277 EFI_CERT_X509_GUID, 265 278 }, 266 279 { 267 - "EFI_CERT_TYPE_PKCS7_GUID", 280 + "EFI_CERT_TYPE_PKCS7_GUID", NULL, 268 281 EFI_CERT_TYPE_PKCS7_GUID, 269 282 }, 270 283 #endif 271 284 #if defined(CONFIG_CMD_EFIDEBUG) || defined(CONFIG_EFI) 272 - { "EFI_LZMA_COMPRESSED", EFI_LZMA_COMPRESSED }, 273 - { "EFI_DXE_SERVICES", EFI_DXE_SERVICES }, 274 - { "EFI_HOB_LIST", EFI_HOB_LIST }, 275 - { "EFI_MEMORY_TYPE", EFI_MEMORY_TYPE }, 276 - { "EFI_MEM_STATUS_CODE_REC", EFI_MEM_STATUS_CODE_REC }, 277 - { "EFI_GUID_EFI_ACPI1", EFI_GUID_EFI_ACPI1 }, 285 + { "EFI_LZMA_COMPRESSED", NULL, EFI_LZMA_COMPRESSED }, 286 + { "EFI_DXE_SERVICES", NULL, EFI_DXE_SERVICES }, 287 + { "EFI_HOB_LIST", NULL, EFI_HOB_LIST }, 288 + { "EFI_MEMORY_TYPE", NULL, EFI_MEMORY_TYPE }, 289 + { "EFI_MEM_STATUS_CODE_REC", NULL, EFI_MEM_STATUS_CODE_REC }, 290 + { "EFI_GUID_EFI_ACPI1", NULL, EFI_GUID_EFI_ACPI1 }, 278 291 #endif 292 + #endif /* EFI_PARTITION */ 279 293 #endif /* !USE_HOSTCC */ 280 294 }; 281 295 ··· 284 298 int i; 285 299 286 300 for (i = 0; i < ARRAY_SIZE(list_guid); i++) { 287 - if (!strcmp(list_guid[i].string, guid_str)) { 301 + if (list_guid[i].type && 302 + !strcmp(list_guid[i].type, guid_str)) { 288 303 memcpy(guid_bin, &list_guid[i].guid, 16); 289 304 return 0; 290 305 } ··· 298 313 299 314 for (i = 0; i < ARRAY_SIZE(list_guid); i++) { 300 315 if (!memcmp(list_guid[i].guid.b, guid_bin, 16)) { 301 - return list_guid[i].string; 316 + if (list_guid[i].description) 317 + return list_guid[i].description; 318 + return list_guid[i].type; 302 319 } 303 320 } 304 321 return NULL; ··· 312 329 uint64_t tmp64; 313 330 314 331 if (!uuid_str_valid(uuid_str)) { 315 - #ifdef CONFIG_PARTITION_TYPE_GUID 316 - if (!uuid_guid_get_bin(uuid_str, uuid_bin)) 332 + if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID) && 333 + !uuid_guid_get_bin(uuid_str, uuid_bin)) 317 334 return 0; 318 - #endif 319 335 return -EINVAL; 320 336 } 321 337
+1 -2
test/common/print.c
··· 45 45 sprintf(str, "%pUL", guid); 46 46 ut_asserteq_str("04030201-0605-0807-090A-0B0C0D0E0F10", str); 47 47 sprintf(str, "%pUs", guid_esp); 48 - if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID) || 49 - IS_ENABLED(CONFIG_CMD_EFIDEBUG) || IS_ENABLED(CONFIG_EFI)) 48 + if (IS_ENABLED(CONFIG_EFI_PARTITION)) 50 49 ut_asserteq_str("EFI System Partition", str); 51 50 else 52 51 ut_asserteq_str("c12a7328-f81f-11d2-ba4b-00a0c93ec93b", str);