From: Randy Dunlap on
Stephen Rothwell wrote:
> Hi all,
>
> Changes since 20100726:
>
>
> The xen tree lost its build problems but gained a conflict against Linus'
> tree.

when X86_32=y, SMP=n, X86_LOCAL_APIC=n:

drivers/built-in.o: In function `xen_callback_vector':
(.text+0x41238): undefined reference to `first_system_vector'

alloc_intr_gate() calls alloc_system_vector(), which uses first_system_vector.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Stefano Stabellini on
On Tue, 27 Jul 2010, Randy Dunlap wrote:
> Stephen Rothwell wrote:
> > Hi all,
> >
> > Changes since 20100726:
> >
> >
> > The xen tree lost its build problems but gained a conflict against Linus'
> > tree.
>
> when X86_32=y, SMP=n, X86_LOCAL_APIC=n:
>
> drivers/built-in.o: In function `xen_callback_vector':
> (.text+0x41238): undefined reference to `first_system_vector'
>
> alloc_intr_gate() calls alloc_system_vector(), which uses first_system_vector.

this patch should solve the issue:

---

alloc_system_vector: access first_system_vector when X86_LOCAL_APIC=y

Currently alloc_system_vector reads and writes first_system_vector
unconditionally while first_system_vector is only defined when
CONFIG_X86_LOCAL_APIC=y.
This patch makes sure first_system_vector is accessed only in that case.

Signed-off-by: Stefano Stabellini <stefano.stabellini(a)eu.citrix.com>

diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
index 617bd56..f83e055 100644
--- a/arch/x86/include/asm/desc.h
+++ b/arch/x86/include/asm/desc.h
@@ -341,8 +341,10 @@ static inline void alloc_system_vector(int vector)
{
if (!test_bit(vector, used_vectors)) {
set_bit(vector, used_vectors);
+#if defined(CONFIG_X86_LOCAL_APIC)
if (first_system_vector > vector)
first_system_vector = vector;
+#endif
} else
BUG();
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Jeremy Fitzhardinge on
On 07/28/2010 06:11 AM, Stefano Stabellini wrote:
> On Tue, 27 Jul 2010, Randy Dunlap wrote:
>> Stephen Rothwell wrote:
>>> Hi all,
>>>
>>> Changes since 20100726:
>>>
>>>
>>> The xen tree lost its build problems but gained a conflict against Linus'
>>> tree.
>> when X86_32=y, SMP=n, X86_LOCAL_APIC=n:
>>
>> drivers/built-in.o: In function `xen_callback_vector':
>> (.text+0x41238): undefined reference to `first_system_vector'
>>
>> alloc_intr_gate() calls alloc_system_vector(), which uses first_system_vector.
> this patch should solve the issue:

So this is a generic x86 build problem?

J

> ---
>
> alloc_system_vector: access first_system_vector when X86_LOCAL_APIC=y
>
> Currently alloc_system_vector reads and writes first_system_vector
> unconditionally while first_system_vector is only defined when
> CONFIG_X86_LOCAL_APIC=y.
> This patch makes sure first_system_vector is accessed only in that case.
>
> Signed-off-by: Stefano Stabellini<stefano.stabellini(a)eu.citrix.com>
>
> diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
> index 617bd56..f83e055 100644
> --- a/arch/x86/include/asm/desc.h
> +++ b/arch/x86/include/asm/desc.h
> @@ -341,8 +341,10 @@ static inline void alloc_system_vector(int vector)
> {
> if (!test_bit(vector, used_vectors)) {
> set_bit(vector, used_vectors);
> +#if defined(CONFIG_X86_LOCAL_APIC)
> if (first_system_vector> vector)
> first_system_vector = vector;
> +#endif
> } else
> BUG();
> }
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Stefano Stabellini on
On Wed, 28 Jul 2010, Jeremy Fitzhardinge wrote:
> On 07/28/2010 06:11 AM, Stefano Stabellini wrote:
> > On Tue, 27 Jul 2010, Randy Dunlap wrote:
> >> Stephen Rothwell wrote:
> >>> Hi all,
> >>>
> >>> Changes since 20100726:
> >>>
> >>>
> >>> The xen tree lost its build problems but gained a conflict against Linus'
> >>> tree.
> >> when X86_32=y, SMP=n, X86_LOCAL_APIC=n:
> >>
> >> drivers/built-in.o: In function `xen_callback_vector':
> >> (.text+0x41238): undefined reference to `first_system_vector'
> >>
> >> alloc_intr_gate() calls alloc_system_vector(), which uses first_system_vector.
> > this patch should solve the issue:
>
> So this is a generic x86 build problem?
>

It is, but nobody else is calling alloc_intr_gate with X86_LOCAL_APIC=n;
being a static inline function it didn't cause any problems.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Randy Dunlap on
On 07/28/10 06:11, Stefano Stabellini wrote:
> On Tue, 27 Jul 2010, Randy Dunlap wrote:
>> Stephen Rothwell wrote:
>>> Hi all,
>>>
>>> Changes since 20100726:
>>>
>>>
>>> The xen tree lost its build problems but gained a conflict against Linus'
>>> tree.
>>
>> when X86_32=y, SMP=n, X86_LOCAL_APIC=n:
>>
>> drivers/built-in.o: In function `xen_callback_vector':
>> (.text+0x41238): undefined reference to `first_system_vector'
>>
>> alloc_intr_gate() calls alloc_system_vector(), which uses first_system_vector.
>
> this patch should solve the issue:

Acked-by: Randy Dunlap <randy.dunlap(a)oracle.com>

Thanks.

> ---
>
> alloc_system_vector: access first_system_vector when X86_LOCAL_APIC=y
>
> Currently alloc_system_vector reads and writes first_system_vector
> unconditionally while first_system_vector is only defined when
> CONFIG_X86_LOCAL_APIC=y.
> This patch makes sure first_system_vector is accessed only in that case.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini(a)eu.citrix.com>
>
> diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
> index 617bd56..f83e055 100644
> --- a/arch/x86/include/asm/desc.h
> +++ b/arch/x86/include/asm/desc.h
> @@ -341,8 +341,10 @@ static inline void alloc_system_vector(int vector)
> {
> if (!test_bit(vector, used_vectors)) {
> set_bit(vector, used_vectors);
> +#if defined(CONFIG_X86_LOCAL_APIC)
> if (first_system_vector > vector)
> first_system_vector = vector;
> +#endif
> } else
> BUG();
> }


--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/