<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic The system may have a non in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/RTM-abort-due-to-RTM-RETIRED-ABORTED-MISC5/m-p/936215#M5024</link>
    <description>&lt;P&gt;The system may have a non-mask able interrupt.&lt;/P&gt;

&lt;P&gt;What varies between runs of the protected region?&lt;/P&gt;

&lt;P&gt;How much data is protected?&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
    <pubDate>Fri, 13 Dec 2013 16:09:16 GMT</pubDate>
    <dc:creator>jimdempseyatthecove</dc:creator>
    <dc:date>2013-12-13T16:09:16Z</dc:date>
    <item>
      <title>RTM abort due to RTM_RETIRED.ABORTED_MISC5</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/RTM-abort-due-to-RTM-RETIRED-ABORTED-MISC5/m-p/936214#M5023</link>
      <description>&lt;P&gt;Hi there,&lt;/P&gt;

&lt;P&gt;I drop a piece of CPU-bounded code into the Linux Kernel with local interrupt disabled. The code is surrounded by RTM instructions. On average, the code commits successfully within around 100 tries. On abortion, the reason reported by PMU&amp;nbsp;is&amp;nbsp;RTM_RETIRED.ABORTED_MISC5 &amp;nbsp;I&amp;nbsp;wonder what would be the reason provided that the&amp;nbsp;local interrupt has been&amp;nbsp;disabled?&lt;/P&gt;

&lt;P&gt;PS. The description&amp;nbsp;of&amp;nbsp;RTM_RETIRED.ABORTED_MISC5: none&amp;nbsp;of the previous 4 categories (e.g. interrupt).&lt;/P&gt;

&lt;P&gt;Thanks in advance.&lt;/P&gt;

&lt;P&gt;BR,&lt;/P&gt;

&lt;P&gt;Le Guan&lt;/P&gt;</description>
      <pubDate>Thu, 12 Dec 2013 03:39:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/RTM-abort-due-to-RTM-RETIRED-ABORTED-MISC5/m-p/936214#M5023</guid>
      <dc:creator>le_g_1</dc:creator>
      <dc:date>2013-12-12T03:39:35Z</dc:date>
    </item>
    <item>
      <title>The system may have a non</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/RTM-abort-due-to-RTM-RETIRED-ABORTED-MISC5/m-p/936215#M5024</link>
      <description>&lt;P&gt;The system may have a non-mask able interrupt.&lt;/P&gt;

&lt;P&gt;What varies between runs of the protected region?&lt;/P&gt;

&lt;P&gt;How much data is protected?&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Fri, 13 Dec 2013 16:09:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/RTM-abort-due-to-RTM-RETIRED-ABORTED-MISC5/m-p/936215#M5024</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2013-12-13T16:09:16Z</dc:date>
    </item>
    <item>
      <title>Hi Mrs. Jim Dempsey,</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/RTM-abort-due-to-RTM-RETIRED-ABORTED-MISC5/m-p/936216#M5025</link>
      <description>&lt;P&gt;Hi Mrs. Jim Dempsey,&lt;/P&gt;

&lt;P&gt;Thanks for your reply.&amp;nbsp;In the critical region, the code simply calls the following mass function.&lt;/P&gt;

&lt;P&gt;static int mass(int a,int b,int c){&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int i,j,k,t = 2;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0;i&amp;lt;0xFFF;++i){&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t+=34;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t*=34;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t/=a;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for(j=0;j&amp;lt;0xFFF;++j){&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t*=b;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t/=c;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t += (i+a);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return t;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;As you can see, only dozens of bytes on stack is accessed. However, the function spends quite a lot of time, this is the reason why I disabled local interrupt before&amp;nbsp;calling.This function is also&amp;nbsp;deterministic. Moreover, I have checked NMI through /proc/interrupts interface, and there is not much NMIs.&amp;nbsp;The following lists the calling kernel c&lt;/P&gt;

&lt;P&gt;//////////////enter atomic///////////////////&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get_cpu();&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; local_irq_save(flags);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = 0;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while(1){&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned status;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ++nretries;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status = _xbegin();&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (status == _XBEGIN_STARTED)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P_DEBUG("DEBUG: Transaction aborted %d times with status %d\n",nretries,status);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(nretries == 1000)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; goto out;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = mass(0xffff,112312,2432);&lt;BR /&gt;
	out:&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(_xtest())&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _xend();&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; local_irq_restore(flags);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; put_cpu();&lt;BR /&gt;
	//////////////exit atomic///////////////////&lt;/P&gt;

&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;P_DEBUG("result:%d\n",result);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;jimdempseyatthecove wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;The system may have a non-mask able interrupt.&lt;/P&gt;

&lt;P&gt;What varies between runs of the protected region?&lt;/P&gt;

&lt;P&gt;How much data is protected?&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 16 Dec 2013 01:18:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/RTM-abort-due-to-RTM-RETIRED-ABORTED-MISC5/m-p/936216#M5025</guid>
      <dc:creator>le_g_1</dc:creator>
      <dc:date>2013-12-16T01:18:24Z</dc:date>
    </item>
  </channel>
</rss>

