Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/807405/?format=api
{ "id": 807405, "url": "http://patchwork.ozlabs.org/api/patches/807405/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1504066360-30128-14-git-send-email-paulus@ozlabs.org/", "project": { "id": 2, "url": "http://patchwork.ozlabs.org/api/projects/2/?format=api", "name": "Linux PPC development", "link_name": "linuxppc-dev", "list_id": "linuxppc-dev.lists.ozlabs.org", "list_email": "linuxppc-dev@lists.ozlabs.org", "web_url": "https://github.com/linuxppc/wiki/wiki", "scm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git", "webscm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/", "list_archive_url_format": "https://lore.kernel.org/linuxppc-dev/{}/", "commit_url_format": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}" }, "msgid": "<1504066360-30128-14-git-send-email-paulus@ozlabs.org>", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/1504066360-30128-14-git-send-email-paulus@ozlabs.org/", "date": "2017-08-30T04:12:36", "name": "[v3,13/17] powerpc: Emulate the dcbz instruction", "commit_ref": "b2543f7b20bb2a551ed340447d7303f0ce4644f1", "pull_url": null, "state": "accepted", "archived": false, "hash": "a351d2a7a28dad754625acd35625541b7be38bdd", "submitter": { "id": 67079, "url": "http://patchwork.ozlabs.org/api/people/67079/?format=api", "name": "Paul Mackerras", "email": "paulus@ozlabs.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1504066360-30128-14-git-send-email-paulus@ozlabs.org/mbox/", "series": [ { "id": 522, "url": "http://patchwork.ozlabs.org/api/series/522/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=522", "date": "2017-08-30T04:12:25", "name": "powerpc: Do alignment fixups using analyse_instr etc.", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/522/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/807405/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/807405/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "patchwork-incoming@ozlabs.org", "linuxppc-dev@lists.ozlabs.org" ], "Delivered-To": [ "patchwork-incoming@ozlabs.org", "linuxppc-dev@lists.ozlabs.org", "linuxppc-dev@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 3xht7g4SFsz9sN7\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 30 Aug 2017 14:39:11 +1000 (AEST)", "from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xht7g2wxpzDqH0\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed, 30 Aug 2017 14:39:11 +1000 (AEST)", "from ozlabs.org (ozlabs.org [IPv6:2401:3900:2:1::2])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xhsYK18W3zDqGV\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tWed, 30 Aug 2017 14:12:53 +1000 (AEST)", "by ozlabs.org (Postfix)\n\tid 3xhsYJ5pXXz9sQl; Wed, 30 Aug 2017 14:12:52 +1000 (AEST)", "from authenticated.ozlabs.org (localhost [127.0.0.1])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPSA id 3xhsYJ3mY8z9sP5\n\tfor <linuxppc-dev@ozlabs.org>; Wed, 30 Aug 2017 14:12:52 +1000 (AEST)" ], "Authentication-Results": [ "ozlabs.org; dkim=pass (2048-bit key;\n\tsecure) header.d=ozlabs.org header.i=@ozlabs.org header.b=\"XGARE2Tu\";\n\tdkim-atps=neutral", "lists.ozlabs.org; dkim=pass (2048-bit key;\n\tsecure) header.d=ozlabs.org header.i=@ozlabs.org header.b=\"XGARE2Tu\";\n\tdkim-atps=neutral", "lists.ozlabs.org; dkim=pass (2048-bit key;\n\tsecure) header.d=ozlabs.org header.i=@ozlabs.org header.b=\"XGARE2Tu\"; \n\tdkim-atps=neutral" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; \n\tt=1504066372; bh=9wTidoZS5Ycefq7gG5kpIx1H1Iajs+j6ZLcyAB8LwfQ=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=XGARE2TuSrZidUAKu7LNE4o8l5vS+4xmRHhsW6DQy0KxbUWPPbqi4goKw9/24FZip\n\tSJH/BClqsHXJ5O+PGyBAbWL/hpQNM8GbwwR+aovehk6O0WORC+Zzy+LiPSpT34F21e\n\t8hoRqUJo678LFEk5rGqyZatqQ36AsfLNlK8vz6OjaewDEc6RObxIhARKjSEMe27Yvy\n\tq3AZGxyUKIgK7z084dUIsXuVkrxcy/GKbeSHgQ7XNawM0xktX7DXpD7rsoPfKHctJV\n\tmEhxO890o0S1xh83sWXGLYaqY1VbYFdBaXiEkKBmjk2dwgIMac6ugqrT1oHzvSoSBY\n\tmqnWsr7K6yc1A==", "From": "Paul Mackerras <paulus@ozlabs.org>", "To": "linuxppc-dev@ozlabs.org", "Subject": "[PATCH v3 13/17] powerpc: Emulate the dcbz instruction", "Date": "Wed, 30 Aug 2017 14:12:36 +1000", "Message-Id": "<1504066360-30128-14-git-send-email-paulus@ozlabs.org>", "X-Mailer": "git-send-email 2.7.4", "In-Reply-To": "<1504066360-30128-1-git-send-email-paulus@ozlabs.org>", "References": "<1504066360-30128-1-git-send-email-paulus@ozlabs.org>", "X-BeenThere": "linuxppc-dev@lists.ozlabs.org", "X-Mailman-Version": "2.1.23", "Precedence": "list", "List-Id": "Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>", "List-Unsubscribe": "<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>", "List-Archive": "<http://lists.ozlabs.org/pipermail/linuxppc-dev/>", "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>", "List-Help": "<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>", "List-Subscribe": "<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>", "Errors-To": "linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org", "Sender": "\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>" }, "content": "This adds code to analyse_instr() and emulate_step() to understand the\ndcbz (data cache block zero) instruction. The emulate_dcbz() function\nis made public so it can be used by the alignment handler in future.\n(The apparently unnecessary cropping of the address to 32 bits is\nthere because it will be needed in that situation.)\n\nSigned-off-by: Paul Mackerras <paulus@ozlabs.org>\n---\n arch/powerpc/include/asm/sstep.h | 2 ++\n arch/powerpc/lib/sstep.c | 32 ++++++++++++++++++++++++++++++++\n 2 files changed, 34 insertions(+)", "diff": "diff --git a/arch/powerpc/include/asm/sstep.h b/arch/powerpc/include/asm/sstep.h\nindex 474a992..793639a 100644\n--- a/arch/powerpc/include/asm/sstep.h\n+++ b/arch/powerpc/include/asm/sstep.h\n@@ -84,6 +84,7 @@ enum instruction_type {\n #define DCBTST\t\t0x200\n #define DCBT\t\t0x300\n #define ICBI\t\t0x400\n+#define DCBZ\t\t0x500\n \n /* VSX flags values */\n #define VSX_FPCONV\t1\t/* do floating point SP/DP conversion */\n@@ -155,3 +156,4 @@ extern void emulate_vsx_load(struct instruction_op *op, union vsx_reg *reg,\n \t\t\t const void *mem);\n extern void emulate_vsx_store(struct instruction_op *op, const union vsx_reg *reg,\n \t\t\t void *mem);\n+extern int emulate_dcbz(unsigned long ea, struct pt_regs *regs);\ndiff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c\nindex 817cdc9..fa20f3a 100644\n--- a/arch/powerpc/lib/sstep.c\n+++ b/arch/powerpc/lib/sstep.c\n@@ -780,6 +780,30 @@ static nokprobe_inline int do_vsx_store(struct instruction_op *op,\n }\n #endif /* CONFIG_VSX */\n \n+int emulate_dcbz(unsigned long ea, struct pt_regs *regs)\n+{\n+\tint err;\n+\tunsigned long i, size;\n+\n+#ifdef __powerpc64__\n+\tsize = ppc64_caches.l1d.block_size;\n+\tif (!(regs->msr & MSR_64BIT))\n+\t\tea &= 0xffffffffUL;\n+#else\n+\tsize = L1_CACHE_BYTES;\n+#endif\n+\tea &= ~(size - 1);\n+\tif (!address_ok(regs, ea, size))\n+\t\treturn -EFAULT;\n+\tfor (i = 0; i < size; i += sizeof(long)) {\n+\t\terr = __put_user(0, (unsigned long __user *) (ea + i));\n+\t\tif (err)\n+\t\t\treturn err;\n+\t}\n+\treturn 0;\n+}\n+NOKPROBE_SYMBOL(emulate_dcbz);\n+\n #define __put_user_asmx(x, addr, err, op, cr)\t\t\\\n \t__asm__ __volatile__(\t\t\t\t\\\n \t\t\"1:\t\" op \" %2,0,%3\\n\"\t\t\\\n@@ -1748,6 +1772,11 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,\n \t\t\top->type = MKOP(CACHEOP, ICBI, 0);\n \t\t\top->ea = xform_ea(instr, regs);\n \t\t\treturn 0;\n+\n+\t\tcase 1014:\t/* dcbz */\n+\t\t\top->type = MKOP(CACHEOP, DCBZ, 0);\n+\t\t\top->ea = xform_ea(instr, regs);\n+\t\t\treturn 0;\n \t\t}\n \t\tbreak;\n \t}\n@@ -2607,6 +2636,9 @@ int emulate_step(struct pt_regs *regs, unsigned int instr)\n \t\tcase ICBI:\n \t\t\t__cacheop_user_asmx(ea, err, \"icbi\");\n \t\t\tbreak;\n+\t\tcase DCBZ:\n+\t\t\terr = emulate_dcbz(ea, regs);\n+\t\t\tbreak;\n \t\t}\n \t\tif (err)\n \t\t\treturn 0;\n", "prefixes": [ "v3", "13/17" ] }