Hi, On Thu, Dec 17, 2009 at 1:41 AM, Josh Stone <jist...@redhat.com> wrote: > On 12/15/2009 07:53 PM, jiey...@mail.ustc.edu.cn wrote: >> Hi,Stephane. >> >> I have been tracing your work in perfmon2/3,and doing some similar work in >> my thesis. >> >> I extended the task_struct with pmu-related context and added support to >> save/restore it in __switch_to,all under linux 2.6.30. >> Then I encounter a problem, when the following code is running with counting >> disabled. >> ... >> { >> wrmsrl(pmu_reg->counter_addr,pmu_reg->counter); >> rdmsrl(pmu_reg->counter_addr,co); >> } >> so far what really confusing is that quite often values of pmu_reg->counter >> and co > are not equal,and the later one would suddenly become really > large(e.g. the high 8 bits of counter register are ff),i.e. the value > written into counter register is wrong > > Are you aware of the sign-extension on PMC writes? Here's a quote from > the Intel manual, volume 3B section 30.2.1.1: > > "The bit width of an IA32_PMCx MSR is reported using the > CPUID.0AH:EAX[23:16]. Bits beyond the width of the programmable > counter are undefined, and are ignored when written to. On write > operations, the lower-order 32 bits of each MSR may be written with > any value, and the high-order bits are sign-extended according to the > value of bit 31. The bit width for read operations is reported using > CPUID." >
Josh is right. sign-extension is your problem. n, I modified the code to the following version, like >> { >> again: >> wrmsrl(pmu_reg->counter_addr,pmu_reg->counter & PMUC_MASK); >> rdmsrl(pmu_reg->counter_addr,co); >> if(pmu_reg->counter!=co) >> goto again; >> } >> >> This time, the system runs into a state of unhalted busy with no reaction >> and no oops printing. >> And why? I know you shoule be familiar with these issues, so could any help? > > There's no oops because nothing really failed -- it's an infinite loop. > > This could work if PMUC_MASK is 0x7fffffff, but you also need to use the > mask in the comparison. > > > Josh > > ------------------------------------------------------------------------------ > This SF.Net email is sponsored by the Verizon Developer Community > Take advantage of Verizon's best-in-class app development support > A streamlined, 14 day to market process makes app distribution fast and easy > Join now and get one step closer to millions of Verizon customers > http://p.sf.net/sfu/verizon-dev2dev > _______________________________________________ > perfmon2-devel mailing list > perfmon2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel