Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/806971/?format=api
{ "id": 806971, "url": "http://patchwork.ozlabs.org/api/patches/806971/?format=api", "web_url": "http://patchwork.ozlabs.org/project/skiboot/patch/20170829062506.8317-3-cyril.bur@au1.ibm.com/", "project": { "id": 44, "url": "http://patchwork.ozlabs.org/api/projects/44/?format=api", "name": "skiboot firmware development", "link_name": "skiboot", "list_id": "skiboot.lists.ozlabs.org", "list_email": "skiboot@lists.ozlabs.org", "web_url": "http://github.com/open-power/skiboot", "scm_url": "http://github.com/open-power/skiboot", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20170829062506.8317-3-cyril.bur@au1.ibm.com>", "list_archive_url": null, "date": "2017-08-29T06:24:55", "name": "[RFC,02/13] libflash/libffs: Add helpers for the treatment of partition flags", "commit_ref": null, "pull_url": null, "state": "rfc", "archived": false, "hash": "23bf5b4626fa88389665159040f3f76e717522dd", "submitter": { "id": 64738, "url": "http://patchwork.ozlabs.org/api/people/64738/?format=api", "name": "Cyril Bur", "email": "cyril.bur@au1.ibm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/skiboot/patch/20170829062506.8317-3-cyril.bur@au1.ibm.com/mbox/", "series": [ { "id": 313, "url": "http://patchwork.ozlabs.org/api/series/313/?format=api", "web_url": "http://patchwork.ozlabs.org/project/skiboot/list/?series=313", "date": "2017-08-29T06:24:53", "name": "Rework flash TOC generation", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/313/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/806971/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/806971/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "skiboot@lists.ozlabs.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "skiboot@lists.ozlabs.org" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhJwg75llz9ryr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 16:42:43 +1000 (AEST)", "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xhJwg6FwVzDrLC\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 29 Aug 2017 16:42:43 +1000 (AEST)", "from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com\n\t[148.163.156.1])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xhJY71989zDqfg\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 16:25:46 +1000 (AEST)", "from pps.filterd (m0098393.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv7T6OEMH001439\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 02:25:41 -0400", "from e23smtp03.au.ibm.com (e23smtp03.au.ibm.com [202.81.31.145])\n\tby mx0a-001b2d01.pphosted.com with ESMTP id 2cmyn1webd-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 02:25:41 -0400", "from localhost\n\tby e23smtp03.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <skiboot@lists.ozlabs.org> from <cyril.bur@au1.ibm.com>;\n\tTue, 29 Aug 2017 16:25:38 +1000", "from d23relay09.au.ibm.com (202.81.31.228)\n\tby e23smtp03.au.ibm.com (202.81.31.209) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tTue, 29 Aug 2017 16:25:36 +1000", "from d23av05.au.ibm.com (d23av05.au.ibm.com [9.190.234.119])\n\tby d23relay09.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n\tv7T6PaZj38404258\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 16:25:36 +1000", "from d23av05.au.ibm.com (localhost [127.0.0.1])\n\tby d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id\n\tv7T6PZVp017737\n\tfor <skiboot@lists.ozlabs.org>; Tue, 29 Aug 2017 16:25:35 +1000", "from ozlabs.au.ibm.com (ozlabs.au.ibm.com [9.192.253.14])\n\tby d23av05.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id\n\tv7T6PZNT017727; Tue, 29 Aug 2017 16:25:35 +1000", "from camb691.ozlabs.ibm.com (haven.au.ibm.com [9.192.254.114])\n\t(using TLSv1.2 with cipher DHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby ozlabs.au.ibm.com (Postfix) with ESMTPSA id 1AABDA0258;\n\tTue, 29 Aug 2017 16:25:35 +1000 (AEST)" ], "From": "Cyril Bur <cyril.bur@au1.ibm.com>", "To": "skiboot@lists.ozlabs.org, stewart@linux.vnet.ibm.com", "Date": "Tue, 29 Aug 2017 16:24:55 +1000", "X-Mailer": "git-send-email 2.14.1", "In-Reply-To": "<20170829062506.8317-1-cyril.bur@au1.ibm.com>", "References": "<20170829062506.8317-1-cyril.bur@au1.ibm.com>", "X-TM-AS-MML": "disable", "x-cbid": "17082906-0008-0000-0000-00000154A485", "X-IBM-AV-DETECTION": "SAVI=unused REMOTE=unused XFE=unused", "x-cbparentid": "17082906-0009-0000-0000-00000987A78D", "Message-Id": "<20170829062506.8317-3-cyril.bur@au1.ibm.com>", "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-08-29_01:, , signatures=0", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1708290096", "Subject": "[Skiboot] [RFC PATCH 02/13] libflash/libffs: Add helpers for the\n\ttreatment of partition flags", "X-BeenThere": "skiboot@lists.ozlabs.org", "X-Mailman-Version": "2.1.23", "Precedence": "list", "List-Id": "Mailing list for skiboot development <skiboot.lists.ozlabs.org>", "List-Unsubscribe": "<https://lists.ozlabs.org/options/skiboot>,\n\t<mailto:skiboot-request@lists.ozlabs.org?subject=unsubscribe>", "List-Archive": "<http://lists.ozlabs.org/pipermail/skiboot/>", "List-Post": "<mailto:skiboot@lists.ozlabs.org>", "List-Help": "<mailto:skiboot-request@lists.ozlabs.org?subject=help>", "List-Subscribe": "<https://lists.ozlabs.org/listinfo/skiboot>,\n\t<mailto:skiboot-request@lists.ozlabs.org?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org", "Sender": "\"Skiboot\"\n\t<skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>" }, "content": "There is an increasing number of programs wanting to print partition\nflags as strings or wanting to parse strings back into a binary\nstructure.\n\nThis patch introduces a to_string() function and its complement so that\nthere can be one place where the code exists.\n\nSigned-off-by: Cyril Bur <cyril.bur@au1.ibm.com>\n---\n libflash/ffs.h | 1 +\n libflash/libffs.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n libflash/libffs.h | 7 +++++\n 3 files changed, 101 insertions(+), 1 deletion(-)", "diff": "diff --git a/libflash/ffs.h b/libflash/ffs.h\nindex 18722538..81818fdf 100644\n--- a/libflash/ffs.h\n+++ b/libflash/ffs.h\n@@ -76,6 +76,7 @@ enum ffs_type {\n #define FFS_MISCFLAGS_READONLY 0x40\n #define FFS_MISCFLAGS_BACKUP 0x20\n #define FFS_MISCFLAGS_REPROVISION 0x10\n+#define FFS_MISCFLAGS_GOLDEN 0x01\n \n /**\n * struct __ffs_entry_user - On flash user data entries\ndiff --git a/libflash/libffs.c b/libflash/libffs.c\nindex 038f5942..66b1d3f2 100644\n--- a/libflash/libffs.c\n+++ b/libflash/libffs.c\n@@ -188,6 +188,88 @@ static int ffs_entry_to_cpu(struct ffs_hdr *hdr,\n \treturn rc;\n }\n \n+char *ffs_entry_user_to_string(struct ffs_entry_user *user)\n+{\n+\tchar *ret;\n+\n+\tif (!user)\n+\t\treturn NULL;\n+\n+\tret = strdup(\"-------\");\n+\tif (!ret)\n+\t\treturn NULL;\n+\n+\tif (user->datainteg & FFS_ENRY_INTEG_ECC)\n+\t\tret[0] = 'E';\n+\n+\tif (user->vercheck & FFS_VERCHECK_SHA512V)\n+\t\tret[1] = 'V';\n+\n+\tif (user->vercheck & FFS_VERCHECK_SHA512EC)\n+\t\tret[2] = 'I';\n+\n+\tif (user->miscflags & FFS_MISCFLAGS_PRESERVED)\n+\t\tret[3] = 'P';\n+\n+\tif (user->miscflags & FFS_MISCFLAGS_READONLY)\n+\t\tret[4] = 'R';\n+\n+\tif (user->miscflags & FFS_MISCFLAGS_BACKUP)\n+\t\tret[5] = 'B';\n+\n+\tif (user->miscflags & FFS_MISCFLAGS_REPROVISION)\n+\t\tret[6] = 'F';\n+\n+\tif (user->miscflags & FFS_MISCFLAGS_GOLDEN)\n+\t\tret[7] = 'G';\n+\n+\treturn ret;\n+}\n+\n+int ffs_string_to_entry_user(const char *flags, int nflags,\n+\t\tstruct ffs_entry_user *user)\n+{\n+\tint i;\n+\n+\tif (!user || !flags)\n+\t\treturn FLASH_ERR_PARM_ERROR;\n+\n+\tmemset(user, 0, sizeof(struct ffs_entry_user));\n+\tfor (i = 0; i < nflags; i++) {\n+\t\tswitch (flags[i]) {\n+\t\tcase 'E':\n+\t\t\tuser->datainteg |= FFS_ENRY_INTEG_ECC;\n+\t\t\tbreak;\n+\t\tcase 'V':\n+\t\t\tuser->vercheck |= FFS_VERCHECK_SHA512V;\n+\t\t\tbreak;\n+\t\tcase 'I':\n+\t\t\tuser->vercheck |= FFS_VERCHECK_SHA512EC;\n+\t\t\tbreak;\n+\t\tcase 'P':\n+\t\t\tuser->miscflags |= FFS_MISCFLAGS_PRESERVED;\n+\t\t\tbreak;\n+\t\tcase 'R':\n+\t\t\tuser->miscflags |= FFS_MISCFLAGS_READONLY;\n+\t\t\tbreak;\n+\t\tcase 'B':\n+\t\t\tuser->miscflags |= FFS_MISCFLAGS_BACKUP;\n+\t\t\tbreak;\n+\t\tcase 'F':\n+\t\t\tuser->miscflags |= FFS_MISCFLAGS_REPROVISION;\n+\t\t\tbreak;\n+\t\tcase 'G':\n+\t\t\tuser->miscflags |= FFS_MISCFLAGS_GOLDEN;\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tFL_DBG(\"Unknown flag '%c'\\n\", flags[i]);\n+\t\t\treturn FLASH_ERR_PARM_ERROR;\n+\t\t}\n+\t}\n+\n+\treturn 0;\n+}\n+\n bool has_flag(struct ffs_entry *ent, uint16_t flag)\n {\n \treturn ((ent->user.miscflags & flag) != 0);\n@@ -723,13 +805,23 @@ int ffs_entry_user_set(struct ffs_entry *ent, struct ffs_entry_user *user)\n \tif (user->vercheck & ~(FFS_VERCHECK_SHA512V | FFS_VERCHECK_SHA512EC))\n \t\treturn -1;\n \tif (user->miscflags & ~(FFS_MISCFLAGS_PRESERVED | FFS_MISCFLAGS_BACKUP |\n-\t\t\t\tFFS_MISCFLAGS_READONLY | FFS_MISCFLAGS_REPROVISION))\n+\t\t\t\tFFS_MISCFLAGS_READONLY | FFS_MISCFLAGS_REPROVISION | FFS_MISCFLAGS_GOLDEN))\n \t\treturn -1;\n \n \tmemcpy(&ent->user, user, sizeof(*user));\n \treturn 0;\n }\n \n+struct ffs_entry_user ffs_entry_user_get(struct ffs_entry *ent)\n+{\n+\tstruct ffs_entry_user user = { 0 };\n+\n+\tif (ent)\n+\t\tmemcpy(&user, &ent->user, sizeof(user));\n+\n+\treturn user;\n+}\n+\n int ffs_entry_new(const char *name, uint32_t base, uint32_t size, struct ffs_entry **r)\n {\n \tstruct ffs_entry *ret;\ndiff --git a/libflash/libffs.h b/libflash/libffs.h\nindex a0f65a05..6f8e34e3 100644\n--- a/libflash/libffs.h\n+++ b/libflash/libffs.h\n@@ -88,8 +88,13 @@ struct ffs_entry_user {\n #define FFS_MISCFLAGS_READONLY 0x40\n #define FFS_MISCFLAGS_BACKUP 0x20\n #define FFS_MISCFLAGS_REPROVISION 0x10\n+#define FFS_MISCFLAGS_GOLDEN 0x01\n \n \n+int ffs_string_to_entry_user(const char *flags, int nflags,\n+\t\tstruct ffs_entry_user *user);\n+char *ffs_entry_user_to_string(struct ffs_entry_user *user);\n+\n bool has_ecc(struct ffs_entry *ent);\n \n bool has_flag(struct ffs_entry *ent, uint16_t flag);\n@@ -144,6 +149,8 @@ int ffs_entry_user_set(struct ffs_entry *ent, struct ffs_entry_user *user);\n \n int ffs_entry_add(struct ffs_hdr *hdr, struct ffs_entry *entry, unsigned int side);\n \n+struct ffs_entry_user ffs_entry_user_get(struct ffs_entry *ent);\n+\n int ffs_hdr_create_backup(struct ffs_hdr *hdr);\n \n int ffs_hdr_finalise(struct blocklevel_device *bl, struct ffs_hdr *hdr);\n", "prefixes": [ "RFC", "02/13" ] }