Package: parted
Version: 2.3
Severity: normal
Tags: patch
User: debian-powe...@lists.debian.org
Usertags: ppc64el


Dear Maintainer,

here is a patch from Daniel Battaiola Kreling that is needed so that parted can 
deal with PReP
partitions which are used in the ppc64el debian install process.


F.


-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: ppc64el (ppc64le)

Kernel: Linux 3.14-1-powerpc64le (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL 
set to en_US.UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru parted-2.3/debian/patches/gpt-prep.patch parted-2.3/debian/patches/gpt-prep.patch
--- parted-2.3/debian/patches/gpt-prep.patch	1970-01-01 00:00:00.000000000 +0000
+++ parted-2.3/debian/patches/gpt-prep.patch	2014-05-20 14:48:05.000000000 +0000
@@ -0,0 +1,197 @@
+From 7d1b73fd4ef6ebd0aae480d342480d4d06119419 Mon Sep 17 00:00:00 2001
+From: Daniel Battaiola Kreling <dbkrel...@br.ibm.com>
+Date: Mon, 7 Oct 2013 11:51:50 +0530
+Subject: GPT: add support for PReP GUID
+
+PReP (PowerPC Reference Platform) boot partition is the first partition used in
+PowerPC platform for containing the bootable kernel or bootloader. The firmware
+searches for this partition and jumps to it for booting. So far no GUID was
+specified for this partition type and hence booting from GPT disk was not
+supported on this platform. A new GUID 9e1a2d38-c612-4316-aa26-8b49521e5a8b for
+PReP partition is proposed to be included in GPT.
+
+Origin: backport, http://git.savannah.gnu.org/cgit/parted.git/commit/?id=d151cc20af79c89383ffacc89c1f646f831fc3e6
+Last-Update: 2014-01-31
+
+Patch-Name: gpt-prep.patch
+---
+ doc/parted.texi        |  2 +-
+ libparted/labels/gpt.c | 38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+), 1 deletion(-)
+
+diff --git a/doc/parted.texi b/doc/parted.texi
+index fe8338a..906076a 100644
+--- a/doc/parted.texi
++++ b/doc/parted.texi
+@@ -1104,7 +1104,7 @@ physical volume.
+ by the Linux/PA-RISC boot loader, palo.
+ 
+ @item PREP
+-(MS-DOS) - this flag can be enabled so that the partition can be used
++(MS-DOS, GPT) - this flag can be enabled so that the partition can be used
+ as a PReP boot partition on PowerPC PReP or IBM RS6K/CHRP hardware.
+ 
+ @item DIAG
+diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
+index 168a6eb..267d49e 100644
+--- a/libparted/labels/gpt.c
++++ b/libparted/labels/gpt.c
+@@ -154,6 +154,10 @@ typedef struct
+     ((efi_guid_t) { PED_CPU_TO_LE32 (0x516e7cb6), PED_CPU_TO_LE16 (0x6ecf), \
+                     PED_CPU_TO_LE16 (0x11d6), 0x8f, 0xf8, \
+                     { 0x00, 0x02, 0x2d, 0x09, 0x71, 0x2b }})
++#define PARTITION_PREP_GUID \
++    ((efi_guid_t) { PED_CPU_TO_LE32 (0x9e1a2d38), PED_CPU_TO_LE16 (0xc612), \
++                    PED_CPU_TO_LE16 (0x4316), 0xaa, 0x26, \
++                    { 0x8b, 0x49, 0x52, 0x1e, 0x5a, 0x8b }})
+ 
+ struct __attribute__ ((packed)) _GuidPartitionTableHeader_t
+ {
+@@ -295,6 +299,7 @@ typedef struct _GPTPartitionData
+   int atvrecv;
+   int msftrecv;
+   int legacy_boot;
++  int prep;
+ } GPTPartitionData;
+ 
+ static PedDiskType gpt_disk_type;
+@@ -1056,6 +1061,7 @@ _parse_part_entry (PedDisk *disk, GuidPartitionEntry_t *pte)
+     = gpt_part_data->msftdata
+     = gpt_part_data->msftrecv
+     = gpt_part_data->legacy_boot
++    = gpt_part_data->prep
+     = gpt_part_data->bios_grub = gpt_part_data->atvrecv = 0;
+ 
+   if (pte->Attributes.RequiredToFunction & 0x1)
+@@ -1081,6 +1087,8 @@ _parse_part_entry (PedDisk *disk, GuidPartitionEntry_t *pte)
+     gpt_part_data->msftrecv = 1;
+   else if (!guid_cmp (gpt_part_data->type, PARTITION_APPLE_TV_RECOVERY_GUID))
+     gpt_part_data->atvrecv = 1;
++  else if (!guid_cmp (gpt_part_data->type, PARTITION_PREP_GUID))
++    gpt_part_data->prep = 1;
+ 
+   return part;
+ }
+@@ -1719,6 +1727,7 @@ gpt_partition_new (const PedDisk *disk,
+   gpt_part_data->msftrecv = 0;
+   gpt_part_data->atvrecv = 0;
+   gpt_part_data->legacy_boot = 0;
++  gpt_part_data->prep = 0;
+   uuid_generate ((unsigned char *) &gpt_part_data->uuid);
+   swap_uuid_and_efi_guid ((unsigned char *) (&gpt_part_data->uuid));
+   memset (gpt_part_data->name, 0, sizeof gpt_part_data->name);
+@@ -1792,6 +1801,11 @@ gpt_partition_set_system (PedPartition *part,
+       gpt_part_data->type = PARTITION_RAID_GUID;
+       return 1;
+     }
++  if (gpt_part_data->prep)
++    {
++      gpt_part_data->type = PARTITION_PREP_GUID;
++      return 1;
++    }
+   if (gpt_part_data->boot)
+     {
+       gpt_part_data->type = PARTITION_SYSTEM_GUID;
+@@ -1933,6 +1947,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->msftres
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftrecv
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_BIOS_GRUB:
+@@ -1945,6 +1960,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->msftres
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftrecv
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_RAID:
+@@ -1957,6 +1973,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->msftres
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftrecv
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_LVM:
+@@ -1969,6 +1986,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->msftres
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftrecv
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_HPSERVICE:
+@@ -1981,6 +1999,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->msftres
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftrecv
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_MSFT_RESERVED:
+@@ -1993,6 +2012,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->hp_service
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftrecv
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_MSFT_DATA:
+@@ -2006,6 +2026,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->msftres
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftrecv
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+         gpt_part_data->msftdata = 1;
+       } else {
+@@ -2022,6 +2043,7 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->hp_service
+           = gpt_part_data->msftdata
+           = gpt_part_data->msftres
++          = gpt_part_data->prep
+           = gpt_part_data->atvrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_APPLE_TV_RECOVERY:
+@@ -2034,8 +2056,21 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
+           = gpt_part_data->hp_service
+           = gpt_part_data->msftres
+           = gpt_part_data->msftdata
++          = gpt_part_data->prep
+           = gpt_part_data->msftrecv = 0;
+       return gpt_partition_set_system (part, part->fs_type);
++    case PED_PARTITION_PREP:
++      gpt_part_data->prep = state;
++      if (state)
++        gpt_part_data->boot
++          = gpt_part_data->raid
++          = gpt_part_data->lvm
++          = gpt_part_data->bios_grub
++          = gpt_part_data->hp_service
++          = gpt_part_data->msftres
++          = gpt_part_data->msftrecv
++          = gpt_part_data->atvrecv = 0;
++      return gpt_partition_set_system (part, part->fs_type);
+     case PED_PARTITION_HIDDEN:
+       gpt_part_data->hidden = state;
+       return 1;
+@@ -2082,6 +2117,8 @@ gpt_partition_get_flag (const PedPartition *part, PedPartitionFlag flag)
+       return gpt_part_data->hidden;
+     case PED_PARTITION_LEGACY_BOOT:
+       return gpt_part_data->legacy_boot;
++    case PED_PARTITION_PREP:
++      return gpt_part_data->prep;
+     case PED_PARTITION_SWAP:
+     case PED_PARTITION_LBA:
+     case PED_PARTITION_ROOT:
+@@ -2108,6 +2145,7 @@ gpt_partition_is_flag_available (const PedPartition *part,
+     case PED_PARTITION_APPLE_TV_RECOVERY:
+     case PED_PARTITION_HIDDEN:
+     case PED_PARTITION_LEGACY_BOOT:
++    case PED_PARTITION_PREP:
+       return 1;
+     case PED_PARTITION_SWAP:
+     case PED_PARTITION_ROOT:
diff -Nru parted-2.3/debian/patches/series parted-2.3/debian/patches/series
--- parted-2.3/debian/patches/series	2014-05-20 14:48:04.000000000 +0000
+++ parted-2.3/debian/patches/series	2014-05-20 14:48:05.000000000 +0000
@@ -50,4 +50,4 @@
 
 # Symbols for this ABI (amd64 as reference)
 update-abi-symbols.patch
-
+gpt-prep.patch

Reply via email to