Re: [PATCH 1/4] x86: cleanup early per cpu variables/accesses v3-folded

From: Mike Travis
Date: Tue Apr 22 2008 - 12:24:23 EST


Ingo Molnar wrote:
> * Mike Travis <travis@xxxxxxx> wrote:
>
>> * Introduce a new PER_CPU macro called "EARLY_PER_CPU". This is
>> used by some per_cpu variables that are initialized and accessed
>> before there are per_cpu areas allocated.
>
> build fails with:
>
> arch/x86/kernel/built-in.o: In function `flat_apic_id_registered':
> genapic_flat_64.c:(.text+0x13e1d): undefined reference to `phys_cpu_present_map'
> genapic_flat_64.c:(.text+0x13e24): undefined reference to `phys_cpu_present_map'
> arch/x86/kernel/built-in.o: In function `APIC_init_uniprocessor':
> : undefined reference to `phys_cpu_present_map'
> [...]
>
> with this config:
>
> http://redhat.com/~mingo/misc/config-Tue_Apr_22_15_40_10_CEST_2008.bad
>
> Ingo

Hi Ingo,

Which tree are you using? I don't get that error at all. I'm on sched-latest:

#> cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "linus"]
url = git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
fetch = +refs/heads/*:refs/remotes/linus/*
[remote "sched-devel"]
url = git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched-devel.git
fetch = +refs/heads/*:refs/remotes/sched-devel/*
[branch "sched-latest"]
remote = sched-devel
merge = refs/heads/latest


Here's the change I made to arch/x86/kernel/setup.c.

From:

physid_mask_t phys_cpu_present_map;

DEFINE_PER_CPU(u16, x86_cpu_to_apicid) = BAD_APICID;
EXPORT_PER_CPU_SYMBOL(x86_cpu_to_apicid);

/* Bitmask of physically existing CPUs */
physid_mask_t phys_cpu_present_map;

To:

/* Bitmask of physically existing CPUs */
physid_mask_t phys_cpu_present_map;


(Actually, I don't understand why it didn't generate a multiple
define error before?)

Here's the symbol in Bss space:

#> nm -Bo arch/x86/kernel/built-in.o | grep phys_cpu_present_map
arch/x86/kernel/built-in.o:00000000000009a0 B phys_cpu_present_map

#> grep phys_cpu_present_map System.map
ffffffff809792c0 B phys_cpu_present_map


Building using your config file I do get this error (with or without
my patches):

CC [M] net/netfilter/nf_conntrack_sip.o
.../linux-2.6.sched/net/netfilter/nf_conntrack_sip.c: In function 'set_expected_rtp_rtcp':
.../linux-2.6.sched/net/netfilter/nf_conntrack_sip.c:786: error: 'struct nf_conntrack_expect' has no member named 'saved_ip'
.../linux-2.6.sched/net/netfilter/nf_conntrack_sip.c:787: error: 'struct nf_conntrack_expect' has no member named 'saved_proto'
.../linux-2.6.sched/net/netfilter/nf_conntrack_sip.c:789: error: 'struct nf_conntrack_expect' has no member named 'saved_ip'
.../linux-2.6.sched/net/netfilter/nf_conntrack_sip.c:790: error: 'struct nf_conntrack_expect' has no member named 'saved_ip'
.../linux-2.6.sched/net/netfilter/nf_conntrack_sip.c:791: error: 'struct nf_conntrack_expect' has no member named 'saved_proto'

Turning off CONFIG_NF_CONNTRACK_SIP gets around the error and it builds ok.

Should I try x86/latest or the merge of sched/latest + x86/latest?

Or...?

Thanks,
Mike

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/