I think it does, but I would appreciate any comments on this before I will waste some developer's time
Here's a link to the specification:
http://www.intel.com/content/dam/www/public/us/en/zip/efi-110.zip
Currently in the FreeBSD's PMBR the end CHS address of the partition is always set to FFFFFF (it means the 256th head, first two bytes are head's address, and heads are counted from 0, so 0 would be the 1st head, FF = 255 is the 256th head), while disks due to historical reasons in most cases can have at most 255 heads, and FE address). From specification:
"Each MBR partition record must be checked to make sure that the partition that it defines physically resides on the disk" and little later: "If any of these checks fail, the MBR is not considered valid". Because of the above, the partition FreeBSD defines doesn't reside entirely on the disk, since there can be no 256th head on it, and the PMBR is not valid.
There is a defined case in the specification to set this value to FFFFFF:
But since it is possible to represent the starting LBA, and PMBR does this currently, this condition is not met.
There is another part where setting of all F's is mentioned:
Since EFI doesn't use CHS values at all, this can only apply to LBA's values. Legacy MBR can represent up to 2 TiB of storage. As a confirmation we can read in table 11-7 in "Size in LBA" record:
Indeed, FFFFFFFF*512 bytes equals 2 TiB (-512B). There is no other mention of all F's in the PMBR specification, so from all of the above, head address should be set at most to FE for all disks smaller than 2TiB, and now it isn't.
Am I missing or don't understand something here?
http://www.intel.com/content/dam/www/public/us/en/zip/efi-110.zip
Currently in the FreeBSD's PMBR the end CHS address of the partition is always set to FFFFFF (it means the 256th head, first two bytes are head's address, and heads are counted from 0, so 0 would be the 1st head, FF = 255 is the 256th head), while disks due to historical reasons in most cases can have at most 255 heads, and FE address). From specification:
"Each MBR partition record must be checked to make sure that the partition that it defines physically resides on the disk" and little later: "If any of these checks fail, the MBR is not considered valid". Because of the above, the partition FreeBSD defines doesn't reside entirely on the disk, since there can be no 256th head on it, and the PMBR is not valid.
There is a defined case in the specification to set this value to FFFFFF:
Code:
Set to match the Ending LBA of the EFI Partition structure.
Must be set to 0xFFFFFF [file]if it is not possible to represent the starting
LBA[/file]
There is another part where setting of all F's is mentioned:
Code:
(PMBR) reserves the entire space used on the disk by the GPT partitions,
including all headers. [...] If the GPT partition is [file]larger than a partition that can
be represented by a legacy MBR[/file], values of all Fs must be used
Code:
Length of EFI Partition Head, 0xFFFFFFFF if this value overflows.
Am I missing or don't understand something here?