diff for duplicates of <20180417081109.GA5804@ulmo> diff --git a/a/1.txt b/N1/1.txt index c14e445..d5500bd 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -13,10 +13,10 @@ On Mon, Apr 16, 2018 at 08:21:09PM +0200, Stefan Agner wrote: > >>>>>> > >>>>>> Furthermore with clang using parameters in Extended asm in a > >>>>>> naked function is not supported: -> >>>>>> ?? arch/arm/firmware/trusted_foundations.c:47:10: error: parameter -> >>>>>> ?????????? references not allowed in naked functions -> >>>>>> ???????????????? : "r" (type), "r" (arg1), "r" (arg2) -> >>>>>> ??????????????????????? ^ +> >>>>>> arch/arm/firmware/trusted_foundations.c:47:10: error: parameter +> >>>>>> references not allowed in naked functions +> >>>>>> : "r" (type), "r" (arg1), "r" (arg2) +> >>>>>> ^ > >>>>>> > >>>>>> Use a regular function to be more portable. This aligns also with > >>>>>> the other smc call implementations e.g. in qcom_scm-32.c and @@ -30,8 +30,8 @@ On Mon, Apr 16, 2018 at 08:21:09PM +0200, Stefan Agner wrote: > >>>>>> Changes in v2: > >>>>>> - Keep stmfd/ldmfd to avoid potential ABI issues > >>>>>> -> >>>>>> ? arch/arm/firmware/trusted_foundations.c | 14 +++++++++----- -> >>>>>> ? 1 file changed, 9 insertions(+), 5 deletions(-) +> >>>>>> arch/arm/firmware/trusted_foundations.c | 14 +++++++++----- +> >>>>>> 1 file changed, 9 insertions(+), 5 deletions(-) > >>>>>> > >>>>>> diff --git a/arch/arm/firmware/trusted_foundations.c > >>>>>> b/arch/arm/firmware/trusted_foundations.c @@ -39,31 +39,31 @@ On Mon, Apr 16, 2018 at 08:21:09PM +0200, Stefan Agner wrote: > >>>>>> --- a/arch/arm/firmware/trusted_foundations.c > >>>>>> +++ b/arch/arm/firmware/trusted_foundations.c > >>>>>> @@ -31,21 +31,25 @@ -> >>>>>> ? ? static unsigned long cpu_boot_addr; -> >>>>>> ? -static void __naked tf_generic_smc(u32 type, u32 arg1, u32 arg2) +> >>>>>> static unsigned long cpu_boot_addr; +> >>>>>> -static void __naked tf_generic_smc(u32 type, u32 arg1, u32 arg2) > >>>>>> +static void tf_generic_smc(u32 type, u32 arg1, u32 arg2) -> >>>>>> ? { -> >>>>>> +??? register u32 r0 asm("r0") = type; -> >>>>>> +??? register u32 r1 asm("r1") = arg1; -> >>>>>> +??? register u32 r2 asm("r2") = arg2; +> >>>>>> { +> >>>>>> + register u32 r0 asm("r0") = type; +> >>>>>> + register u32 r1 asm("r1") = arg1; +> >>>>>> + register u32 r2 asm("r2") = arg2; > >>>>>> + -> >>>>>> ????? asm volatile( -> >>>>>> ????????? ".arch_extension??? sec\n\t" -> >>>>>> -??????? "stmfd??? sp!, {r4 - r11, lr}\n\t" -> >>>>>> +??????? "stmfd??? sp!, {r4 - r11}\n\t" -> >>>>>> ????????? __asmeq("%0", "r0") -> >>>>>> ????????? __asmeq("%1", "r1") -> >>>>>> ????????? __asmeq("%2", "r2") -> >>>>>> ????????? "mov??? r3, #0\n\t" -> >>>>>> ????????? "mov??? r4, #0\n\t" -> >>>>>> ????????? "smc??? #0\n\t" -> >>>>>> -??????? "ldmfd??? sp!, {r4 - r11, pc}" -> >>>>>> +??????? "ldmfd??? sp!, {r4 - r11}\n\t" -> >>>>>> ????????? : -> >>>>>> -??????? : "r" (type), "r" (arg1), "r" (arg2) -> >>>>>> -??????? : "memory"); -> >>>>>> +??????? : "r" (r0), "r" (r1), "r" (r2) -> >>>>>> +??????? : "memory", "r3", "r12", "lr"); +> >>>>>> asm volatile( +> >>>>>> ".arch_extension sec\n\t" +> >>>>>> - "stmfd sp!, {r4 - r11, lr}\n\t" +> >>>>>> + "stmfd sp!, {r4 - r11}\n\t" +> >>>>>> __asmeq("%0", "r0") +> >>>>>> __asmeq("%1", "r1") +> >>>>>> __asmeq("%2", "r2") +> >>>>>> "mov r3, #0\n\t" +> >>>>>> "mov r4, #0\n\t" +> >>>>>> "smc #0\n\t" +> >>>>>> - "ldmfd sp!, {r4 - r11, pc}" +> >>>>>> + "ldmfd sp!, {r4 - r11}\n\t" +> >>>>>> : +> >>>>>> - : "r" (type), "r" (arg1), "r" (arg2) +> >>>>>> - : "memory"); +> >>>>>> + : "r" (r0), "r" (r1), "r" (r2) +> >>>>>> + : "memory", "r3", "r12", "lr"); > >>>>> > >>>>> Although seems "lr" won't be affected by SMC invocation because it should be > >>>>> banked and hence could be omitted entirely from the code. Maybe somebody could @@ -103,10 +103,3 @@ drivers/firmware? Thanks, Thierry --------------- next part -------------- -A non-text attachment was scrubbed... -Name: signature.asc -Type: application/pgp-signature -Size: 833 bytes -Desc: not available -URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180417/ea443804/attachment.sig> diff --git a/N1/2.bin b/N1/2.bin new file mode 100644 index 0000000..7fd8b82 --- /dev/null +++ b/N1/2.bin @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAlrVrBoACgkQ3SOs138+ +s6GbOQ//WP3A9NdZ7/dzBjl9WgJQHUequIACSLiTFS9VkDydpaOvvneRYS/9Di1/ +hCax1zl/AjFRbXVTOkVBiZbU3bWtBplKuhw/mZ0PNYpV7DBzqIQiU52TzMwEBi5G +sGal0lUaSGdIluOU5RTuINmUqO+DmthvbfVx6WC75bEuzSoS30n5ubOpmtkTnMWT +5RC/6VopAt98UrW7VIjC3xLK4KG/Ec52BBSt38uIHDw5ivx4eI/2Tq1iKpxAI39f +he34A2AS8tpZHFGxaVIH63FL0F4c8kaVH009NG9F54S2xIDULWMH/eYTQCs6fNY9 +BAv9VUlGXdwWbyR7ZsF8T5QTPc+Lx2Z+XWRSRWL8wDLZSyJCFw1ixJcGOybShRiI +JW//Ba2OFvuGCPrOJ9jg0HQqC2n105MxAsbiPhQ/oiv8P+vAF5+NMS3y59uK29e4 +9EKLq8CefaFa7P6Rc9oo8uD14U2Rd3RThPngdQ4rzeNS1O/oyL7RVPv6gFHMhqSE +GP6PFvsvFfeQwo79VU3VK4PUgL8k5SWPFS/pmvEe4rpNNfluXBEZpr5IuzoTVGnU +nV/i3cUQvhfNazzHYTmBBHd8Shm15A076O0j1R0BXl5gS3Sh3R8qz1n2elxQovI+ +UJhYopby04REO8N0NLFNtSp2R3pmAWgnbpWHcNvCStwttOsKVjE= +=RTR/ +-----END PGP SIGNATURE----- diff --git a/N1/2.hdr b/N1/2.hdr new file mode 100644 index 0000000..5e5352c --- /dev/null +++ b/N1/2.hdr @@ -0,0 +1 @@ +Content-Type: application/pgp-signature; name="signature.asc" diff --git a/a/content_digest b/N1/content_digest index 338cb0f..2d819ae 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -6,11 +6,27 @@ "ref\0cf9b916103c0dba1e67682efc69f5bae@agner.ch\0" "ref\0498de826-6e6c-63d8-00d6-f394b2725a34@wwwdotorg.org\0" "ref\0507a66ab9ab530a6d71db7a74f11ddfb@agner.ch\0" - "From\0treding@nvidia.com (Thierry Reding)\0" - "Subject\0[PATCH v2 3/6] ARM: trusted_foundations: do not use naked function\0" + "From\0Thierry Reding <treding@nvidia.com>\0" + "Subject\0Re: [PATCH v2 3/6] ARM: trusted_foundations: do not use naked function\0" "Date\0Tue, 17 Apr 2018 10:11:10 +0200\0" - "To\0linux-arm-kernel@lists.infradead.org\0" - "\00:1\0" + "To\0Stefan Agner <stefan@agner.ch>" + " Russell King <linux@armlinux.org.uk>\0" + "Cc\0Stephen Warren <swarren@wwwdotorg.org>" + <linux@armlinux.org.uk> + Stephen Warren <swarren@nvidia.com> + Robin Murphy <robin.murphy@arm.com> + <ard.biesheuvel@linaro.org> + <arnd@arndb.de> + <nicolas.pitre@linaro.org> + <marc.zyngier@arm.com> + <behanw@converseincode.com> + <keescook@chromium.org> + <Bernhard.Rosenkranzer@linaro.org> + <mka@chromium.org> + <linux-arm-kernel@lists.infradead.org> + <linux-kernel@vger.kernel.org> + " Dmitry Osipenko <digetx@gmail.com>\0" + "\01:1\0" "b\0" "On Mon, Apr 16, 2018 at 08:21:09PM +0200, Stefan Agner wrote:\n" "> On 16.04.2018 18:08, Stephen Warren wrote:\n" @@ -27,10 +43,10 @@ "> >>>>>>\n" "> >>>>>> Furthermore with clang using parameters in Extended asm in a\n" "> >>>>>> naked function is not supported:\n" - "> >>>>>> ?? arch/arm/firmware/trusted_foundations.c:47:10: error: parameter\n" - "> >>>>>> ?????????? references not allowed in naked functions\n" - "> >>>>>> ???????????????? : \"r\" (type), \"r\" (arg1), \"r\" (arg2)\n" - "> >>>>>> ??????????????????????? ^\n" + "> >>>>>> \302\240\302\240 arch/arm/firmware/trusted_foundations.c:47:10: error: parameter\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 references not allowed in naked functions\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 : \"r\" (type), \"r\" (arg1), \"r\" (arg2)\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 ^\n" "> >>>>>>\n" "> >>>>>> Use a regular function to be more portable. This aligns also with\n" "> >>>>>> the other smc call implementations e.g. in qcom_scm-32.c and\n" @@ -44,8 +60,8 @@ "> >>>>>> Changes in v2:\n" "> >>>>>> - Keep stmfd/ldmfd to avoid potential ABI issues\n" "> >>>>>>\n" - "> >>>>>> ? arch/arm/firmware/trusted_foundations.c | 14 +++++++++-----\n" - "> >>>>>> ? 1 file changed, 9 insertions(+), 5 deletions(-)\n" + "> >>>>>> \302\240 arch/arm/firmware/trusted_foundations.c | 14 +++++++++-----\n" + "> >>>>>> \302\240 1 file changed, 9 insertions(+), 5 deletions(-)\n" "> >>>>>>\n" "> >>>>>> diff --git a/arch/arm/firmware/trusted_foundations.c\n" "> >>>>>> b/arch/arm/firmware/trusted_foundations.c\n" @@ -53,31 +69,31 @@ "> >>>>>> --- a/arch/arm/firmware/trusted_foundations.c\n" "> >>>>>> +++ b/arch/arm/firmware/trusted_foundations.c\n" "> >>>>>> @@ -31,21 +31,25 @@\n" - "> >>>>>> ? ? static unsigned long cpu_boot_addr;\n" - "> >>>>>> ? -static void __naked tf_generic_smc(u32 type, u32 arg1, u32 arg2)\n" + "> >>>>>> \302\240 \302\240 static unsigned long cpu_boot_addr;\n" + "> >>>>>> \302\240 -static void __naked tf_generic_smc(u32 type, u32 arg1, u32 arg2)\n" "> >>>>>> +static void tf_generic_smc(u32 type, u32 arg1, u32 arg2)\n" - "> >>>>>> ? {\n" - "> >>>>>> +??? register u32 r0 asm(\"r0\") = type;\n" - "> >>>>>> +??? register u32 r1 asm(\"r1\") = arg1;\n" - "> >>>>>> +??? register u32 r2 asm(\"r2\") = arg2;\n" + "> >>>>>> \302\240 {\n" + "> >>>>>> +\302\240\302\240\302\240 register u32 r0 asm(\"r0\") = type;\n" + "> >>>>>> +\302\240\302\240\302\240 register u32 r1 asm(\"r1\") = arg1;\n" + "> >>>>>> +\302\240\302\240\302\240 register u32 r2 asm(\"r2\") = arg2;\n" "> >>>>>> +\n" - "> >>>>>> ????? asm volatile(\n" - "> >>>>>> ????????? \".arch_extension??? sec\\n\\t\"\n" - "> >>>>>> -??????? \"stmfd??? sp!, {r4 - r11, lr}\\n\\t\"\n" - "> >>>>>> +??????? \"stmfd??? sp!, {r4 - r11}\\n\\t\"\n" - "> >>>>>> ????????? __asmeq(\"%0\", \"r0\")\n" - "> >>>>>> ????????? __asmeq(\"%1\", \"r1\")\n" - "> >>>>>> ????????? __asmeq(\"%2\", \"r2\")\n" - "> >>>>>> ????????? \"mov??? r3, #0\\n\\t\"\n" - "> >>>>>> ????????? \"mov??? r4, #0\\n\\t\"\n" - "> >>>>>> ????????? \"smc??? #0\\n\\t\"\n" - "> >>>>>> -??????? \"ldmfd??? sp!, {r4 - r11, pc}\"\n" - "> >>>>>> +??????? \"ldmfd??? sp!, {r4 - r11}\\n\\t\"\n" - "> >>>>>> ????????? :\n" - "> >>>>>> -??????? : \"r\" (type), \"r\" (arg1), \"r\" (arg2)\n" - "> >>>>>> -??????? : \"memory\");\n" - "> >>>>>> +??????? : \"r\" (r0), \"r\" (r1), \"r\" (r2)\n" - "> >>>>>> +??????? : \"memory\", \"r3\", \"r12\", \"lr\");\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240 asm volatile(\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \".arch_extension\302\240\302\240\302\240 sec\\n\\t\"\n" + "> >>>>>> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \"stmfd\302\240\302\240\302\240 sp!, {r4 - r11, lr}\\n\\t\"\n" + "> >>>>>> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \"stmfd\302\240\302\240\302\240 sp!, {r4 - r11}\\n\\t\"\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 __asmeq(\"%0\", \"r0\")\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 __asmeq(\"%1\", \"r1\")\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 __asmeq(\"%2\", \"r2\")\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \"mov\302\240\302\240\302\240 r3, #0\\n\\t\"\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \"mov\302\240\302\240\302\240 r4, #0\\n\\t\"\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \"smc\302\240\302\240\302\240 #0\\n\\t\"\n" + "> >>>>>> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \"ldmfd\302\240\302\240\302\240 sp!, {r4 - r11, pc}\"\n" + "> >>>>>> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 \"ldmfd\302\240\302\240\302\240 sp!, {r4 - r11}\\n\\t\"\n" + "> >>>>>> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240 :\n" + "> >>>>>> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240 : \"r\" (type), \"r\" (arg1), \"r\" (arg2)\n" + "> >>>>>> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240 : \"memory\");\n" + "> >>>>>> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 : \"r\" (r0), \"r\" (r1), \"r\" (r2)\n" + "> >>>>>> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240 : \"memory\", \"r3\", \"r12\", \"lr\");\n" "> >>>>>\n" "> >>>>> Although seems \"lr\" won't be affected by SMC invocation because it should be\n" "> >>>>> banked and hence could be omitted entirely from the code. Maybe somebody could\n" @@ -116,13 +132,25 @@ "drivers/firmware?\n" "\n" "Thanks,\n" - "Thierry\n" - "-------------- next part --------------\n" - "A non-text attachment was scrubbed...\n" - "Name: signature.asc\n" - "Type: application/pgp-signature\n" - "Size: 833 bytes\n" - "Desc: not available\n" - URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180417/ea443804/attachment.sig> + Thierry + "\01:2\0" + "fn\0signature.asc\0" + "b\0" + "-----BEGIN PGP SIGNATURE-----\n" + "\n" + "iQIzBAABCAAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAlrVrBoACgkQ3SOs138+\n" + "s6GbOQ//WP3A9NdZ7/dzBjl9WgJQHUequIACSLiTFS9VkDydpaOvvneRYS/9Di1/\n" + "hCax1zl/AjFRbXVTOkVBiZbU3bWtBplKuhw/mZ0PNYpV7DBzqIQiU52TzMwEBi5G\n" + "sGal0lUaSGdIluOU5RTuINmUqO+DmthvbfVx6WC75bEuzSoS30n5ubOpmtkTnMWT\n" + "5RC/6VopAt98UrW7VIjC3xLK4KG/Ec52BBSt38uIHDw5ivx4eI/2Tq1iKpxAI39f\n" + "he34A2AS8tpZHFGxaVIH63FL0F4c8kaVH009NG9F54S2xIDULWMH/eYTQCs6fNY9\n" + "BAv9VUlGXdwWbyR7ZsF8T5QTPc+Lx2Z+XWRSRWL8wDLZSyJCFw1ixJcGOybShRiI\n" + "JW//Ba2OFvuGCPrOJ9jg0HQqC2n105MxAsbiPhQ/oiv8P+vAF5+NMS3y59uK29e4\n" + "9EKLq8CefaFa7P6Rc9oo8uD14U2Rd3RThPngdQ4rzeNS1O/oyL7RVPv6gFHMhqSE\n" + "GP6PFvsvFfeQwo79VU3VK4PUgL8k5SWPFS/pmvEe4rpNNfluXBEZpr5IuzoTVGnU\n" + "nV/i3cUQvhfNazzHYTmBBHd8Shm15A076O0j1R0BXl5gS3Sh3R8qz1n2elxQovI+\n" + "UJhYopby04REO8N0NLFNtSp2R3pmAWgnbpWHcNvCStwttOsKVjE=\n" + "=RTR/\n" + "-----END PGP SIGNATURE-----\n" -fecbd41b88a5873d1e98c9a4512fbed332bc40c0189c7a354c8054d55ddfa28c +fe8d97caa873fd0d8670b94c12806fade6e7d1d8a5864cb2a36e2baac0e07c9d
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.