From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32440 invoked by alias); 18 Oct 2006 04:09:55 -0000 Received: (qmail 32432 invoked by uid 22791); 18 Oct 2006 04:09:54 -0000 X-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from mga02.intel.com (HELO mga02.intel.com) (134.134.136.20) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 18 Oct 2006 04:09:49 +0000 Received: from orsmga001.jf.intel.com ([10.7.209.18]) by mga02.intel.com with ESMTP; 17 Oct 2006 21:09:48 -0700 Received: from bmao-mobl.ccr.corp.intel.com (HELO [10.239.20.25]) ([10.239.20.25]) by orsmga001.jf.intel.com with ESMTP; 17 Oct 2006 21:09:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: i="4.09,322,1157353200"; d="scan'208"; a="146694389:sNHT29199513" Message-ID: <4535A909.1000005@intel.com> Date: Wed, 18 Oct 2006 04:09:00 -0000 From: "bibo,mao" User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: "Keshavamurthy, Anil S" CC: systemtap@sourceware.org Subject: Re: [PATCH]_stp_free_percpu function definition responding to _stp_alloc_percpu References: <8A3E977AB3C24845947ADAAE0526E395CB8D28@orsmsx419.amr.corp.intel.com> In-Reply-To: <8A3E977AB3C24845947ADAAE0526E395CB8D28@orsmsx419.amr.corp.intel.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact systemtap-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: systemtap-owner@sourceware.org X-SW-Source: 2006-q4/txt/msg00154.txt.bz2 ooooh, this patch will break the older kernels, for_each_possible_cpu macro is not defined before 2.6.16 version, but modification about _stp_free_percpu does not break the older kernels. I verified it on 2.6.9 smp kernel version. thanks bibo,mao Keshavamurthy, Anil S wrote: > Will this not break the older kernels? > > How can systemtap makes sure that it is > backward compatible while supporting newer kernels? > > > -Anil Keshavamurthy > Open Source Technology Center/SSG > Intel Corp. > > -----Original Message----- > From: systemtap-owner@sourceware.org > [mailto:systemtap-owner@sourceware.org] On Behalf Of bibo,mao > Sent: Monday, October 16, 2006 4:08 AM > To: systemtap@sourceware.org > Subject: [PATCH]_stp_free_percpu function definition responding to > _stp_alloc_percpu > > Hi, > On the newest 2.6.19-rc2 smp machines, stap fails to run. It > is because _stp_free_percpu is defined as free_percpu macro and > one function at the same time. This patch modifies this, and > replaces for_each_cpu with for_each_possible_cpu macro. > > thanks > bibo,mao > > --- src.org/runtime/alloc.c 2006-01-25 18:08:47.000000000 +0800 > +++ src/runtime/alloc.c 2006-10-16 18:17:40.000000000 +0800 > @@ -18,14 +18,9 @@ > #define kmalloc_node(size,flags,node) kmalloc(size,flags) > #endif /* LINUX_VERSION_CODE */ > > -#ifdef CONFIG_SMP > -#define _stp_free_percpu(ptr) free_percpu(ptr) > -#else > -#define _stp_free_percpu(ptr) kfree(ptr) > -#endif > - > #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15) > #define _stp_alloc_percpu(size) __alloc_percpu(size, 8) > +#define _stp_free_percpu(ptr) free_percpu(ptr) > #else > #ifdef CONFIG_SMP > /* This is like alloc_percpu() except it simply takes a size, instead > of a type. */ > @@ -37,7 +32,7 @@ void *_stp_alloc_percpu(size_t size) > if (!pdata) > return NULL; > > - for_each_cpu(i) { > + for_each_possible_cpu(i) { > int node = cpu_to_node(i); > > if (node_online(node)) > @@ -68,7 +63,7 @@ void _stp_free_percpu(const void *objp) > int i; > struct percpu_data *p = (struct percpu_data *) (~(unsigned long) > objp); > > - for_each_cpu(i) > + for_each_possible_cpu(i) > kfree(p->ptrs[i]); > kfree(p); > } > @@ -80,6 +75,7 @@ void *_stp_alloc_percpu(size_t size) > memset(ret, 0, size); > return ret; > } > +#define _stp_free_percpu(ptr) kfree(ptr) > #endif /* CONFIG_SMP */ > #endif /* LINUX_VERSION_CODE */ > #endif /* _ALLOC_C_ */