[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] per_cpu problem


  • To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Juergen Gross <juergen.gross@xxxxxxxxxxxxxx>
  • Date: Tue, 29 Dec 2009 13:45:55 +0100
  • Delivery-date: Tue, 29 Dec 2009 04:46:23 -0800
  • Domainkey-signature: s=s1536a; d=ts.fujitsu.com; c=nofws; q=dns; h=X-SBRSScore:X-IronPort-AV:Received:X-IronPort-AV: Received:Received:Message-ID:Date:From:Organization: User-Agent:MIME-Version:To:Subject:X-Enigmail-Version: Content-Type:Content-Transfer-Encoding; b=uiN+rsvPkkuqwVl1t6XTY6BBUvJhG2svv2b2+jXkiEPuoPVWTNwPmvv1 1UK2tgiPDstZiIyNwvwzRYRv6U1A4HaEkxODJo7em8L8Ti2mCdnbqxyYu GvBTxBFLLZ5X4tsRqbtSRXoEfZLjuaM1qmLXmn933WJEv1IxuB6lypvBz ZzxLBwLHfCGWUb7A4otVbTopftWEY0sAfEdAyqoT3oG+ohc58C5XpjyTr Sw9svnsUvEFXf9PQYPzGxgX9Ry08H;
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Hi,

I've been playing a little bit with cpu-bound tasklets. For this purpose I
defined a per_cpu list:

static DEFINE_PER_CPU(struct list_head, tasklet_list_pcpu);

The initialization is done in softirq_init:

void __init softirq_init(void)
{
    int i;

    for_each_possible_cpu ( i )
    {
        INIT_LIST_HEAD(&per_cpu(tasklet_list_pcpu, i));
    }
    tasklet_pcpu_inited = 1;
    open_softirq(TASKLET_SOFTIRQ, tasklet_action);
}

As soon as a cpu other than cpu 0 is accessing its tasklet_list_pcpu it is
seeing a non-empty list (I've put a printk in tasklet_action):

printk("tasklet_list_pcpu(%d) at %p not empty: %p\n", smp_processor_id(),
       &this_cpu(tasklet_list_pcpu), this_cpu(tasklet_list_pcpu).next);

Prints out:
(XEN) tasklet_list_pcpu(1) at ffff82c48026a100 not empty: ffff82c480268100

Somehow INIT_LIST_HEAD seems to put always the address of the list for cpu 0
in the list header. Could this be a compiler bug? Is this an artefact of the
per_cpu macro? Am I missing something?


Juergen

-- 
Juergen Gross                 Principal Developer Operating Systems
TSP ES&S SWE OS6                       Telephone: +49 (0) 89 3222 2967
Fujitsu Technolgy Solutions               e-mail: juergen.gross@xxxxxxxxxxxxxx
Domagkstr. 28                           Internet: ts.fujitsu.com
D-80807 Muenchen                 Company details: ts.fujitsu.com/imprint.html

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.