Hi Tom,
On 8/10/26 6:02 PM, Tom Rini wrote:
On Mon, Aug 10, 2026 at 03:34:48PM +0200, Quentin Schulz wrote:
Hi Albin,
On 8/10/26 1:43 PM, Raj, Albin via U-Boot wrote:
Hello,
While testing GPT partitions on USB media, I noticed that partition identifiers
passed on the command line appear to be parsed as hexadecimal values.
Example:
=> part list usb 0
Partition Map for USB device 0 -- Partition Type: EFI
Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
1 0x00000800 0x008007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 5d33e1b1-c3ae-4e58-8677-13a295ce7b41
2 0x00800800 0x010007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 277f159b-1239-4be1-bc1e-54c718331584
3 0x01000800 0x018007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 470b684e-6d99-4a26-866f-14663b13dcbf
4 0x01800800 0x020007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 1f598bf7-5d31-47bf-9a1d-75c2c6b74dd4
5 0x02000800 0x028007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 30491f52-e2d7-4f15-8925-92c00ca6e8fb
6 0x02800800 0x030007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: aef06b97-9320-494b-bff9-3f2cb472ba7f
7 0x03000800 0x038007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 74143690-f5ab-4437-949e-b098199435c3
8 0x03800800 0x040007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: fca32ea9-8165-404a-8eac-b22b80a15c8a
9 0x04000800 0x048007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: fd4d818b-205e-43ef-9de5-7be6bf8550c8
10 0x04800800 0x050007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: a4b21c4c-f0cf-4fb7-b70a-0f191b9fd874
11 0x05000800 0x058007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 243ae3ce-4fd5-4230-ba83-137d8655ea8c
12 0x05800800 0x060007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 671bdeba-dd6a-43e0-a99c-e880ebab991b
13 0x06000800 0x068007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: b5fd6923-e40b-4018-9808-541c91ec81f5
14 0x06800800 0x070007ff ""
attrs: 0x0000000000000000
type: 0fc63daf-8483-4772-8e79-3d69d8477de4
guid: 29634671-56d8-45f7-8a22-f2b7c33520a5
Partition 9 can be accessed successfully:
=> part uuid usb 0:9
fd4d818b-205e-43ef-9de5-7be6bf8550c8
However:
=> part uuid usb 0:10
** Invalid partition 16 **
=> part uuid usb 0:11
** Invalid partition 17 **
Looking at blk_get_device_part_str() the partition number is parsed with:
part = (int)hextoul(part_str, &ep);
which converts:
10 -> 16
11 -> 17
Since "part list" displays partition identifiers in decimal, users reasonably expect
"0:10" to refer to partition 10 rather than partition 16.
Is this behavior intentional for backward compatibility, or would decimal
parsing be preferred?
We will not change the parsing of numbers for existing commands, as you
guessed, for backward compatibility. However, we certainly could document it
explicitly in https://docs.u-boot-project.org/en/latest/usage/cmd/part.html
(which you can change in our source tree in doc/usage/cmd/part.rst).
It should be clear in the general documentation as all inputs (with a
few rare exceptions such as "sleep") take hexadecimal.
Being pedantic here:
https://docs.u-boot-project.org/en/latest/usage/index.html#shell-commands
says "For all commands in U-Boot there are some General rules that apply.".
https://docs.u-boot-project.org/en/latest/usage/cmdline.html#general-rules
doesn't mention anything about the base for numbers in commands.
However,
https://docs.u-boot-project.org/en/latest/usage/cmdline.html#representing-numbers
does, but it's at the same level as
https://docs.u-boot-project.org/en/latest/usage/cmdline.html#general-rules
so while the user may read what's after General Rules, it's visually a
different and unrelated topic.
Cheers,
Quentin