All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@in.ibm.com>
To: Roland Dreier <rdreier@cisco.com>
Cc: linux-kernel@vger.kernel.org,
	"Natalie.Protasevich@unisys.com" <Natalie.Protasevich@unisys.com>,
	akpm@linux-foundation.org
Subject: Re: CONFIG_X86_ES7000=y, CONFIG_X86_GENERICARCH=n, CONFIG_ACPI=y build broken
Date: Wed, 13 Jun 2007 23:07:41 +0530	[thread overview]
Message-ID: <20070613173741.GA23618@in.ibm.com> (raw)
In-Reply-To: <adad5017zpt.fsf@cisco.com>

On Tue, Jun 12, 2007 at 12:13:50PM -0700, Roland Dreier wrote:
> (sending to Vivek since he seems to be one of the last people to touch
> this code)
> 
> For some strange reason I found myself compiling a kernel with
> CONFIG_X86_ES7000 and CONFIG_ACPI set and CONFIG_X86_GENERICARCH not
> set.  It died with
> 
>     arch/i386/kernel/built-in.o: In function `acpi_parse_madt':
>     boot.c:(.init.text+0x68b7): undefined reference to `acpi_madt_oem_check'
>     arch/i386/kernel/built-in.o: In function `get_smp_config':
>     (.init.text+0x9f98): undefined reference to `mps_oem_check'
>     arch/i386/kernel/built-in.o: In function `connect_bsp_APIC':
>     (.init.text+0xa340): undefined reference to `enable_apic_mode'
>     arch/i386/kernel/built-in.o: In function `connect_bsp_APIC':
>     (.init.text+0xa370): undefined reference to `enable_apic_mode'
> 
> this seems to be because eg acpi_madt_oem_check() and mps_oem_check()
> are defined in arch/i386/mach-generic/es7000.c, but arch/i386/Makefile
> only goes into mach-generic if CONFIG_X86_GENERICARCH is set.
> I didn't track down why enable_apic_mode is broken yet.
>

Hi Roland,

Can you please try the attached patch? I have compiled it with CONFIG_ES7000=y
and CONFIG_X86_GENERICARCH=n. But don't have any ES7000 machine to test it.

I have compiled and booted the kernel on my machine with CONFIG_X86_GENERICARCH=y.

Subarch build procedure is not straightforward and this patch adds to the
misery. Please suggest if there is a better way of handling things.

 

o Commit 1833d6bc72893265f22addd79cf52e6987496e0f broke the build if
  compiled with CONFIG_ES7000=y and CONFIG_X86_GENERICARCH=n

o Fix the build issue. Provided the definitions of missing functions.


Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
---

 linux-2.6.22-rc4-git4-vivek/arch/i386/mach-es7000/es7000plat.c          |   48 ++++++++++
 linux-2.6.22-rc4-git4-vivek/include/asm-i386/mach-es7000/mach_apic.h    |    4 
 linux-2.6.22-rc4-git4-vivek/include/asm-i386/mach-es7000/mach_mpparse.h |    6 +
 3 files changed, 58 insertions(+)

diff -puN arch/i386/mach-es7000/es7000plat.c~i386-es7000-build-breakage-fix arch/i386/mach-es7000/es7000plat.c
--- linux-2.6.22-rc4-git4/arch/i386/mach-es7000/es7000plat.c~i386-es7000-build-breakage-fix	2007-06-13 22:52:14.000000000 +0530
+++ linux-2.6.22-rc4-git4-vivek/arch/i386/mach-es7000/es7000plat.c	2007-06-13 22:53:03.000000000 +0530
@@ -40,6 +40,7 @@
 #include <asm/smp.h>
 #include <asm/apicdef.h>
 #include "es7000.h"
+#include <mach_mpparse.h>
 
 /*
  * ES7000 Globals
@@ -174,6 +175,53 @@ find_unisys_acpi_oem_table(unsigned long
 }
 #endif
 
+/*
+ * This file also gets compiled if CONFIG_X86_GENERICARCH is set. Generic
+ * arch already has got following function definitions (asm-generic/es7000.c)
+ * hence no need to define these for that case.
+ */
+#ifndef CONFIG_X86_GENERICARCH
+void es7000_sw_apic(void);
+void __init enable_apic_mode(void)
+{
+	es7000_sw_apic();
+	return;
+}
+
+__init int mps_oem_check(struct mp_config_table *mpc, char *oem,
+		char *productid)
+{
+	if (mpc->mpc_oemptr) {
+		struct mp_config_oemtable *oem_table =
+			(struct mp_config_oemtable *)mpc->mpc_oemptr;
+		if (!strncmp(oem, "UNISYS", 6))
+			return parse_unisys_oem((char *)oem_table);
+	}
+	return 0;
+}
+#ifdef CONFIG_ACPI
+/* Hook from generic ACPI tables.c */
+int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+{
+	unsigned long oem_addr;
+	if (!find_unisys_acpi_oem_table(&oem_addr)) {
+		if (es7000_check_dsdt())
+			return parse_unisys_oem((char *)oem_addr);
+		else {
+			setup_unisys();
+			return 1;
+		}
+	}
+	return 0;
+}
+#else
+int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+{
+	return 0;
+}
+#endif
+#endif /* COFIG_X86_GENERICARCH */
+
 static void
 es7000_spin(int n)
 {
diff -puN include/asm-i386/mach-es7000/mach_apic.h~i386-es7000-build-breakage-fix include/asm-i386/mach-es7000/mach_apic.h
--- linux-2.6.22-rc4-git4/include/asm-i386/mach-es7000/mach_apic.h~i386-es7000-build-breakage-fix	2007-06-13 22:52:14.000000000 +0530
+++ linux-2.6.22-rc4-git4-vivek/include/asm-i386/mach-es7000/mach_apic.h	2007-06-13 22:52:14.000000000 +0530
@@ -73,6 +73,10 @@ static inline void init_apic_ldr(void)
 	apic_write_around(APIC_LDR, val);
 }
 
+#ifndef CONFIG_X86_GENERICARCH
+extern void enable_apic_mode(void);
+#endif
+
 extern int apic_version [MAX_APICS];
 static inline void setup_apic_routing(void)
 {
diff -puN include/asm-i386/mach-es7000/mach_mpparse.h~i386-es7000-build-breakage-fix include/asm-i386/mach-es7000/mach_mpparse.h
--- linux-2.6.22-rc4-git4/include/asm-i386/mach-es7000/mach_mpparse.h~i386-es7000-build-breakage-fix	2007-06-13 22:52:14.000000000 +0530
+++ linux-2.6.22-rc4-git4-vivek/include/asm-i386/mach-es7000/mach_mpparse.h	2007-06-13 22:52:14.000000000 +0530
@@ -18,6 +18,12 @@ extern int parse_unisys_oem (char *oempt
 extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
 extern void setup_unisys(void);
 
+#ifndef CONFIG_X86_GENERICARCH
+extern int acpi_madt_oem_check(char *oem_id, char *oem_table_id);
+extern int mps_oem_check(struct mp_config_table *mpc, char *oem,
+				char *productid);
+#endif
+
 #ifdef CONFIG_ACPI
 
 static inline int es7000_check_dsdt(void)
_

  reply	other threads:[~2007-06-13 17:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-12 19:13 CONFIG_X86_ES7000=y, CONFIG_X86_GENERICARCH=n, CONFIG_ACPI=y build broken Roland Dreier
2007-06-13 17:37 ` Vivek Goyal [this message]
2007-06-13 20:39   ` Roland Dreier
2007-06-15 15:57     ` Vivek Goyal
     [not found] <19D0D50E9B1D0A40A9F0323DBFA04ACC023B0EB8@USRV-EXCH4.na.uis.unisys.com>
     [not found] ` <32209efe0706131107w157fd59bk22f1fe62e4d1c733@mail.gmail.com>
2007-06-13 18:53   ` Natalie Protasevich
     [not found] <19D0D50E9B1D0A40A9F0323DBFA04ACC023B0EB9@USRV-EXCH4.na.uis.unisys.com>
2007-06-13 22:22 ` Natalie Protasevich
2007-06-15 15:29   ` Vivek Goyal
2007-06-15 17:27     ` Natalie Protasevich
     [not found] <19D0D50E9B1D0A40A9F0323DBFA04ACC023B0EBD@USRV-EXCH4.na.uis.unisys.com>
2007-06-17 14:34 ` Natalie Protasevich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070613173741.GA23618@in.ibm.com \
    --to=vgoyal@in.ibm.com \
    --cc=Natalie.Protasevich@unisys.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdreier@cisco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.