svn commit: r245399 - projects/altix2/sys/geom/part
Nathan Whitehorn
nwhitehorn at freebsd.org
Sun Jan 13 23:58:41 UTC 2013
Why not make this a GEOM flag?
-Nathan
On 01/13/13 15:36, Marcel Moolenaar wrote:
> Author: marcel
> Date: Sun Jan 13 23:36:21 2013
> New Revision: 245399
> URL: http://svnweb.freebsd.org/changeset/base/245399
>
> Log:
> Marking the PMBR as active may be needed for some BIOSes to boot from the
> disk, but also has some EFI implementations reject the GPT altogether.
> Make the behaviour controllable by a sysctll and have it default to 1
> on i386 and amd64 and 0 otherwise. This means that we mark the PMBR as
> active on i386 and amd64 by default, but remain compliant most of the
> time.
>
> Modified:
> projects/altix2/sys/geom/part/g_part_gpt.c
>
> Modified: projects/altix2/sys/geom/part/g_part_gpt.c
> ==============================================================================
> --- projects/altix2/sys/geom/part/g_part_gpt.c Sun Jan 13 23:00:40 2013 (r245398)
> +++ projects/altix2/sys/geom/part/g_part_gpt.c Sun Jan 13 23:36:21 2013 (r245399)
> @@ -50,6 +50,20 @@ __FBSDID("$FreeBSD$");
>
> FEATURE(geom_part_gpt, "GEOM partitioning class for GPT partitions support");
>
> +SYSCTL_DECL(_kern_geom_part);
> +static SYSCTL_NODE(_kern_geom_part, OID_AUTO, gpt, CTLFLAG_RW, 0,
> + "gpart GPT controls");
> +
> +#if defined(__i386__) || defined(__amd64__)
> +#define PMBR_ACTIVE 1
> +#else
> +#define PMBR_ACTIVE 0
> +#endif
> +
> +static u_int gpt_mark_pmbr_active = PMBR_ACTIVE;
> +SYSCTL_UINT(_kern_geom_part_gpt, OID_AUTO, mark_pmbr_active, CTLFLAG_RW,
> + &gpt_mark_pmbr_active, 0, "Mark the PMBR active on creation");
> +
> CTASSERT(offsetof(struct gpt_hdr, padding) == 92);
> CTASSERT(sizeof(struct gpt_ent) == 128);
>
> @@ -1040,7 +1054,8 @@ g_part_gpt_write(struct g_part_table *ba
> gpt_write_mbr_entry(table->mbr, 0, 0xee, 1,
> MIN(pp->mediasize / pp->sectorsize - 1, UINT32_MAX));
> /* Mark the PMBR active since some BIOS require it. */
> - table->mbr[DOSPARTOFF] = 0x80;
> + if (gpt_mark_pmbr_active)
> + table->mbr[DOSPARTOFF] = 0x80;
> }
> le16enc(table->mbr + DOSMAGICOFFSET, DOSMAGIC);
>
>
More information about the svn-src-projects
mailing list