{"id":226,"url":"http://patchwork.ozlabs.org/api/1.0/patches/226/?format=json","project":{"id":2,"url":"http://patchwork.ozlabs.org/api/1.0/projects/2/?format=json","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/"},"msgid":"<1221005058.23271.16.camel@localhost.localdomain>","date":"2008-09-10T00:04:18","name":"fix compile failure with non modular builds","commit_ref":"2d291e902791e1c8d72bc223b6f063bbb27a1280","pull_url":null,"state":"accepted","archived":true,"hash":"33fc00645eda2ff6da423e974190019121d977b5","submitter":{"id":96,"url":"http://patchwork.ozlabs.org/api/1.0/people/96/?format=json","name":"James Bottomley","email":"James.Bottomley@HansenPartnership.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1221005058.23271.16.camel@localhost.localdomain/mbox/","series":[],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/226/checks/","tags":{},"headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork=ozlabs.org@ozlabs.org>","X-Original-To":["patchwork@ozlabs.org","linuxppc-dev@ozlabs.org"],"Delivered-To":["patchwork@ozlabs.org","linuxppc-dev@ozlabs.org"],"Received":["from ozlabs.org (localhost [127.0.0.1])\n\tby ozlabs.org (Postfix) with ESMTP id 5E833DE1A0\n\tfor <patchwork@ozlabs.org>; Wed, 10 Sep 2008 10:04:47 +1000 (EST)","from accolon.hansenpartnership.com (accolon.hansenpartnership.com\n\t[76.243.235.52]) by ozlabs.org (Postfix) with ESMTP id DD80DDDE3A\n\tfor <linuxppc-dev@ozlabs.org>;\n\tWed, 10 Sep 2008 10:04:19 +1000 (EST)","from localhost (localhost [127.0.0.1])\n\tby accolon.hansenpartnership.com (Postfix) with ESMTP id 5089A8399;\n\tTue,  9 Sep 2008 19:04:17 -0500 (CDT)","from accolon.hansenpartnership.com ([127.0.0.1])\n\tby localhost (redscar.int.hansenpartnership.com [127.0.0.1])\n\t(amavisd-new, port 10024)\n\twith ESMTP id QLGg-c7OMPB8; Tue,  9 Sep 2008 19:04:16 -0500 (CDT)","from [153.66.150.222] (mulgrave-w.int.hansenpartnership.com\n\t[153.66.150.222])\n\tby accolon.hansenpartnership.com (Postfix) with ESMTP id D67F67F61;\n\tTue,  9 Sep 2008 19:04:15 -0500 (CDT)"],"Subject":"[PATCH] fix compile failure with non modular builds","From":"James Bottomley <James.Bottomley@HansenPartnership.com>","To":"Benjamin Herrenschmidt <benh@kernel.crashing.org>","Date":"Tue, 09 Sep 2008 19:04:18 -0500","Message-Id":"<1221005058.23271.16.camel@localhost.localdomain>","Mime-Version":"1.0","X-Mailer":"Evolution 2.22.3.1 (2.22.3.1-1.fc9) ","Cc":"linuxppc-dev@ozlabs.org","X-BeenThere":"linuxppc-dev@ozlabs.org","X-Mailman-Version":"2.1.11","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List <linuxppc-dev.ozlabs.org>","List-Unsubscribe":"<https://ozlabs.org/mailman/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@ozlabs.org?subject=unsubscribe>","List-Archive":"<http://ozlabs.org/pipermail/linuxppc-dev>","List-Post":"<mailto:linuxppc-dev@ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@ozlabs.org?subject=help>","List-Subscribe":"<https://ozlabs.org/mailman/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@ozlabs.org?subject=subscribe>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"linuxppc-dev-bounces+patchwork=ozlabs.org@ozlabs.org","Errors-To":"linuxppc-dev-bounces+patchwork=ozlabs.org@ozlabs.org"},"content":"commit deac93df26b20cf8438339b5935b5f5643bc30c9\nAuthor: James Bottomley <James.Bottomley@HansenPartnership.com>\nDate:   Wed Sep 3 20:43:36 2008 -0500\n\n    lib: Correct printk %pF to work on all architectures\n\nBroke the non modular builds by moving an essential function into\nmodules.c.  Fix this by moving it out again and into asm/sections.h as\nan inline.  To do this, the definition of struct ppc64_opd_entry has\nbeen lifted out of modules.c and put in asm/elf.h where it belongs.\n\nSigned-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>","diff":"diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h\nindex 80d1f39..64c6ee2 100644\n--- a/arch/powerpc/include/asm/elf.h\n+++ b/arch/powerpc/include/asm/elf.h\n@@ -409,6 +409,13 @@ do {\t\t\t\t\t\t\t\t\t\\\n /* Keep this the last entry.  */\n #define R_PPC64_NUM\t\t107\n \n+/* There's actually a third entry here, but it's unused */\n+struct ppc64_opd_entry\n+{\n+\tunsigned long funcaddr;\n+\tunsigned long r2;\n+};\n+\n #ifdef  __KERNEL__\n \n #ifdef CONFIG_SPU_BASE\ndiff --git a/arch/powerpc/include/asm/sections.h b/arch/powerpc/include/asm/sections.h\nindex 7710e9e..07956f3 100644\n--- a/arch/powerpc/include/asm/sections.h\n+++ b/arch/powerpc/include/asm/sections.h\n@@ -2,6 +2,8 @@\n #define _ASM_POWERPC_SECTIONS_H\n #ifdef __KERNEL__\n \n+#include <linux/elf.h>\n+#include <linux/uaccess.h>\n #include <asm-generic/sections.h>\n \n #ifdef __powerpc64__\n@@ -17,7 +19,15 @@ static inline int in_kernel_text(unsigned long addr)\n }\n \n #undef dereference_function_descriptor\n-void *dereference_function_descriptor(void *);\n+static inline void *dereference_function_descriptor(void *ptr)\n+{\n+\tstruct ppc64_opd_entry *desc = ptr;\n+\tvoid *p;\n+\n+\tif (!probe_kernel_address(&desc->funcaddr, p))\n+\t\tptr = p;\n+\treturn ptr;\n+}\n \n #endif\n \ndiff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c\nindex ad79de2..1af2377 100644\n--- a/arch/powerpc/kernel/module_64.c\n+++ b/arch/powerpc/kernel/module_64.c\n@@ -21,9 +21,7 @@\n #include <linux/err.h>\n #include <linux/vmalloc.h>\n #include <linux/bug.h>\n-#include <linux/uaccess.h>\n #include <asm/module.h>\n-#include <asm/sections.h>\n #include <asm/firmware.h>\n #include <asm/code-patching.h>\n #include <linux/sort.h>\n@@ -43,13 +41,6 @@\n #define DEBUGP(fmt , ...)\n #endif\n \n-/* There's actually a third entry here, but it's unused */\n-struct ppc64_opd_entry\n-{\n-\tunsigned long funcaddr;\n-\tunsigned long r2;\n-};\n-\n /* Like PPC32, we need little trampolines to do > 24-bit jumps (into\n    the kernel itself).  But on PPC64, these need to be used for every\n    jump, actually, to reset r2 (TOC+0x8000). */\n@@ -452,13 +443,3 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,\n \n \treturn 0;\n }\n-\n-void *dereference_function_descriptor(void *ptr)\n-{\n-\tstruct ppc64_opd_entry *desc = ptr;\n-\tvoid *p;\n-\n-\tif (!probe_kernel_address(&desc->funcaddr, p))\n-\t\tptr = p;\n-\treturn ptr;\n-}\n","prefixes":[]}