From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/6] gpt: Support for GPT (GUID Partition Table) restoration
Date: Wed, 05 Sep 2012 14:19:49 -0600 [thread overview]
Message-ID: <5047B3E5.70609@wwwdotorg.org> (raw)
In-Reply-To: <1345795995-24656-5-git-send-email-l.majewski@samsung.com>
On 08/24/2012 02:13 AM, Lukasz Majewski wrote:
> The restoration of GPT table (both primary and secondary) is now possible.
> Simple GUID generation is supported.
> +/**
> + * guid_gen(): Generate UUID
> + *
> + * @param dev_desc - block device descriptor
> + *
> + * @return - generated UUID table
> + *
> + * NOTE: The entrophy of this function is small
> + */
> +static u8 *guid_gen(block_dev_desc_t * dev_desc)
> +{
> + int k = 0;
> + static int i = 1;
> + static u8 __aligned(CONFIG_SYS_CACHELINE_SIZE) guid[16];
Hmmm. Wouldn't it be better to take a pointer to the GUID as a parameter
rather than returning a pointer to the same static over and over again.
That way, the caller won't cause problems if they call this function 4
times, and cache the pointer each time.
> + static u8 __aligned(CONFIG_SYS_CACHELINE_SIZE) ent_pool[512];
> + u32 *ptr = (u32 *) guid;
> +
> + /* Entrophy initialization - read random content of one SD sector */
> + if (i == 1) {
> + debug("Init entropy:%x\n", (u32)(dev_desc->lba >> 14));
> +
> + if (dev_desc->block_read(dev_desc->dev, (dev_desc->lba >> 14),
> + 1, (u32 *) ent_pool) != 1) {
I imagine you might get more entropy out of just reading sector 0, or 1
(or both) than some random sector in the middle of the disk, which quite
possibly won't ever have been written to.
Is there any particular reason why ">> 14" rather than any other shift?
> + printf("** Can't read from device %d **\n",
> + dev_desc->dev);
> + }
> + }
> +
> + for (k = 0; k < 4; k++) {
> + *(ptr + k) = efi_crc32((const void *) ent_pool,
> + sizeof(ent_pool));
> + ent_pool[511 - k] = *(ptr + k);
> + }
> +
> + ent_pool[0] = ((u8) i) & 0xff;
That doesn't quite implement a fully compliant UUID. According to:
http://en.wikipedia.org/wiki/Universally_unique_identifier
the "variant" (UUID) and "version" (4; random) should be encoded into a
few specific bits of the final UUID value.
> + debug("GUID: ");
> + for (k = 0; k < sizeof(guid); k++)
> + debug(" %x ", guid[k]);
I think inventing (stealing from Linux) a proper UUID formatting
function would be useful; that way it could be shared by
print_part_efi() if that function was ever enhanced to print the
partition UUID and partition type UUID.
> + debug(" i:%d,\n", i);
> +
> + i++;
> + return guid;
> +}
next prev parent reply other threads:[~2012-09-05 20:19 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-24 8:13 [U-Boot] [PATCH 0/6] gpt: GUID Partition Table (GPT) restoration Lukasz Majewski
2012-08-24 8:13 ` [U-Boot] [PATCH 1/6] gpt:doc: GPT (GUID Partition Table) documentation Lukasz Majewski
2012-09-05 19:31 ` Stephen Warren
2012-09-06 9:22 ` Lukasz Majewski
2012-08-24 8:13 ` [U-Boot] [PATCH 2/6] gpt: Replace the leXX_to_int() calls with ones defined at <compiler.h> Lukasz Majewski
2012-09-05 19:35 ` Stephen Warren
2012-09-06 10:20 ` Lukasz Majewski
2012-09-06 18:53 ` Stephen Warren
[not found] ` <SNT002-W181FE3CE14BE68990CDF80CCB920@phx.gbl>
2012-09-12 14:42 ` Lukasz Majewski
2012-09-05 19:45 ` Stephen Warren
2012-09-06 10:15 ` Lukasz Majewski
2012-08-24 8:13 ` [U-Boot] [PATCH 3/6] gpt: Replacement of GPT structures members with ones indicating endianness and size Lukasz Majewski
2012-09-05 19:41 ` Stephen Warren
2012-09-06 10:24 ` Lukasz Majewski
2012-08-24 8:13 ` [U-Boot] [PATCH 4/6] gpt: Support for GPT (GUID Partition Table) restoration Lukasz Majewski
2012-09-05 19:49 ` Stephen Warren
2012-09-06 11:19 ` Lukasz Majewski
2012-09-06 18:55 ` Stephen Warren
2012-09-05 20:19 ` Stephen Warren [this message]
2012-10-03 23:00 ` [U-Boot] [U-Boot, " Tom Rini
2012-10-04 7:18 ` [U-Boot] [u-boot] Adding missing CONFIG_SYS_CACHELINE_SIZE to boards definitions Lukasz Majewski
2012-10-04 8:28 ` esw
2012-10-18 18:48 ` Albert ARIBAUD
2012-10-04 9:02 ` Helmut Raiger
2012-08-24 8:13 ` [U-Boot] [PATCH 5/6] gpt: Support for new "gpt" command Lukasz Majewski
2012-09-05 20:08 ` Stephen Warren
2012-09-06 14:01 ` Lukasz Majewski
2012-08-24 8:13 ` [U-Boot] [PATCH 6/6] gpt: Enable support for GPT partition table restoration at Samsung's Trats Lukasz Majewski
2012-08-24 8:48 ` [U-Boot] gpt: GUID/UUID - GPT restoration - open questions Lukasz Majewski
2012-09-05 20:21 ` Stephen Warren
2012-09-06 11:27 ` Lukasz Majewski
2012-09-06 12:27 ` Rob Herring
2012-09-06 14:14 ` Lukasz Majewski
2012-09-06 18:57 ` Stephen Warren
2012-09-07 6:45 ` Lukasz Majewski
2012-09-03 9:28 ` [U-Boot] gpt: GUID/UUID - GPT restoration - open questions - RESEND Lukasz Majewski
2012-10-02 13:46 ` Simon Glass
2012-10-02 16:39 ` Lukasz Majewski
2012-09-03 9:30 ` [U-Boot] [PATCH 0/6] gpt: GUID Partition Table (GPT) restoration Lukasz Majewski
2012-09-12 14:50 ` [U-Boot] [PATCH v2 0/7] " Lukasz Majewski
2012-09-12 14:50 ` [U-Boot] [PATCH v2 1/7] vsprintf:fix: Change type returned by ustrtoul Lukasz Majewski
2012-09-12 14:50 ` [U-Boot] [PATCH v2 2/7] part:efi: Move part_efi.h file to ./include Lukasz Majewski
2012-09-12 14:50 ` [U-Boot] [PATCH v2 3/7] gpt:doc: GPT (GUID Partition Table) documentation Lukasz Majewski
2012-09-12 14:50 ` [U-Boot] [PATCH v2 4/7] gpt: The leXX_to_int() calls replaced with ones defined at <compiler.h> Lukasz Majewski
2012-09-12 14:50 ` [U-Boot] [PATCH v2 5/7] gpt: Support for GPT (GUID Partition Table) restoration Lukasz Majewski
2012-09-12 17:22 ` Tom Rini
2012-09-12 14:50 ` [U-Boot] [PATCH v2 6/7] gpt: Support for new "gpt" command Lukasz Majewski
2012-09-12 17:21 ` Tom Rini
2012-09-12 14:50 ` [U-Boot] [PATCH v2 7/7] gpt: Enable support for GPT partition table restoration at Samsung's Trats Lukasz Majewski
2012-09-12 17:23 ` [U-Boot] [PATCH v2 0/7] gpt: GUID Partition Table (GPT) restoration Tom Rini
2012-09-13 6:20 ` Lukasz Majewski
2012-09-13 17:39 ` Tom Rini
2012-09-13 8:09 ` [U-Boot] [PATCH v3 " Lukasz Majewski
2012-09-13 8:09 ` [U-Boot] [PATCH v3 1/7] vsprintf:fix: Change type returned by ustrtoul Lukasz Majewski
2012-09-13 8:10 ` [U-Boot] [PATCH v3 2/7] part:efi: Move part_efi.h file to ./include Lukasz Majewski
2012-09-13 18:54 ` Kim Phillips
2012-09-13 8:10 ` [U-Boot] [PATCH v3 3/7] gpt:doc: GPT (GUID Partition Table) documentation Lukasz Majewski
2012-09-17 17:58 ` Stephen Warren
2012-10-05 10:35 ` Lukasz Majewski
2012-10-05 15:19 ` Lukasz Majewski
2012-10-05 16:05 ` Stephen Warren
2012-09-13 8:10 ` [U-Boot] [PATCH v3 4/7] gpt: The leXX_to_int() calls replaced with ones defined at <compiler.h> Lukasz Majewski
2012-09-13 8:10 ` [U-Boot] [PATCH v3 5/7] gpt: Support for GPT (GUID Partition Table) restoration Lukasz Majewski
2012-09-17 18:07 ` Stephen Warren
2012-10-05 10:50 ` Lukasz Majewski
2012-09-13 8:10 ` [U-Boot] [PATCH v3 6/7] gpt: Support for new "gpt" command Lukasz Majewski
2012-09-13 8:10 ` [U-Boot] [PATCH v3 7/7] gpt: Enable support for GPT partition table restoration at Samsung's Trats Lukasz Majewski
2012-11-09 9:22 ` [U-Boot] [PATCH v4 0/7] gpt: GUID Partition Table (GPT) restoration Piotr Wilczek
2012-11-09 9:22 ` [U-Boot] [PATCH v4 1/7] vsprintf:fix: Change type returned by ustrtoul Piotr Wilczek
2012-11-19 19:19 ` Stephen Warren
2012-11-09 9:22 ` [U-Boot] [PATCH v4 2/7] part:efi: Move part_efi.h file to ./include Piotr Wilczek
2012-11-19 19:30 ` Stephen Warren
2012-11-19 20:41 ` Tom Rini
2012-11-20 17:46 ` Lukasz Majewski
2012-11-09 9:22 ` [U-Boot] [PATCH v4 3/7] gpt:doc: GPT (GUID Partition Table) documentation Piotr Wilczek
2012-11-19 19:28 ` Stephen Warren
2012-11-09 10:48 ` [U-Boot] [PATCH v4 4/7] gpt: The leXX_to_int() calls replaced with ones defined at <compiler.h> Piotr Wilczek
2012-11-09 10:48 ` [U-Boot] [PATCH v4 5/7] gpt: Support for GPT (GUID Partition Table) restoration Piotr Wilczek
2012-11-19 20:16 ` Stephen Warren
2012-11-21 13:18 ` Piotr Wilczek
2012-11-22 12:16 ` Lukasz Majewski
2012-11-26 23:46 ` Stephen Warren
2012-11-24 18:05 ` Stephen Warren
2012-11-26 13:08 ` Piotr Wilczek
2012-11-09 10:48 ` [U-Boot] [PATCH v4 6/7] gpt: Support for new "gpt" command Piotr Wilczek
2012-11-19 21:34 ` Stephen Warren
2012-11-21 11:22 ` Piotr Wilczek
2012-11-24 18:00 ` Stephen Warren
2012-11-26 13:08 ` Piotr Wilczek
2012-11-26 23:49 ` Stephen Warren
2012-11-09 10:48 ` [U-Boot] [PATCH v4 7/7] gpt: Enable support for GPT partition table restoration at Samsung's Trats Piotr Wilczek
2012-11-19 19:39 ` [U-Boot] [PATCH v4 4/7] gpt: The leXX_to_int() calls replaced with ones defined at <compiler.h> Stephen Warren
2012-11-19 20:43 ` [U-Boot] [PATCH v4 0/7] gpt: GUID Partition Table (GPT) restoration Tom Rini
2012-12-06 20:40 ` Tom Rini
2012-12-07 9:03 ` Piotr Wilczek
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=5047B3E5.70609@wwwdotorg.org \
--to=swarren@wwwdotorg.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox