<?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 Re: T4240 CoreNet partitioning in T-Series</title>
    <link>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789355#M2647</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have followed the T4240 reference manual where it says to:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Clear all bits of CPCPARn (this prevents any new transactions from allocating into&lt;BR /&gt;the CPC) using write operation. - Doing this hangs the CPU and CodeWarrior&lt;BR /&gt;2. Flush the CPC using one of the two following methods:&lt;BR /&gt;• Harware flush: Set CPCCSR0[CPCFL] and wait for hardware to clear&lt;BR /&gt;CPCCSR0[CPCFL] by polling - I have implemented this stage.&lt;BR /&gt;• Software flush: perform a dcbf operation to each coherency granule mapped to&lt;BR /&gt;the memory target (that is, one dcbf for each 64 bytes).&lt;BR /&gt;3. Clear all lock bits by setting CPCCSR0[CPCLFC].&lt;BR /&gt;4. Wait for hardware to clear CPCCSR0[CPCLFC] using a polling loop.&lt;BR /&gt;5. Disable the CPC by clearing CPCCSR0[CPCE].&lt;BR /&gt;6. Reconfigure CPC as desired.&lt;BR /&gt;7. Enable CPC by setting CPCCSR0[CPCE].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, doing anything with the PAR register hangs both CodeWarrior and also the processor.&amp;nbsp; Removing that step the registers update correctly.&amp;nbsp; The issue I then have is that when the kernel commences to load the CPU hangs in the decompression stage.&amp;nbsp; If I do the above using some UBoot scripting it works.&amp;nbsp; Do not understand.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The biggest concern I have though is over the content of the PIR register.&amp;nbsp; It just is not behaving properly.&lt;/P&gt;&lt;P&gt;The other issue is understanding what is used by the system to coordinate the CPCPIRn registers.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 17 Aug 2018 07:34:41 GMT</pubDate>
    <dc:creator>bobperry</dc:creator>
    <dc:date>2018-08-17T07:34:41Z</dc:date>
    <item>
      <title>T4240 CoreNet partitioning</title>
      <link>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789354#M2646</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to establish partitioning of the L3 cache to isolate certain cores owing to over usage of the cache by other cores.&amp;nbsp; Looking at the EREF the level 2 cache is controlled by the PIR register but the T4240 reference manual says the L3 is controlled by the PID register.&amp;nbsp; Should this not be the PIR register.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, the PIR register does not appear to be setup in accordance with the reference manual.&amp;nbsp; All the thread 1's have correct values in the PIR register but thread 0 is incorrect ie.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;core 17 PIR=0x41&lt;/P&gt;&lt;P&gt;core 18 PIR=0x12&lt;/P&gt;&lt;P&gt;core 19 PIR=0x49&lt;/P&gt;&lt;P&gt;core 20 PIR=0x20&lt;/P&gt;&lt;P&gt;core 21 PIR=0x51&lt;/P&gt;&lt;P&gt;....&lt;/P&gt;&lt;P&gt;Does anyone have code showing how to partition both L2 and L3 cache?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Aug 2018 08:04:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789354#M2646</guid>
      <dc:creator>bobperry</dc:creator>
      <dc:date>2018-08-15T08:04:14Z</dc:date>
    </item>
    <item>
      <title>Re: T4240 CoreNet partitioning</title>
      <link>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789355#M2647</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have followed the T4240 reference manual where it says to:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Clear all bits of CPCPARn (this prevents any new transactions from allocating into&lt;BR /&gt;the CPC) using write operation. - Doing this hangs the CPU and CodeWarrior&lt;BR /&gt;2. Flush the CPC using one of the two following methods:&lt;BR /&gt;• Harware flush: Set CPCCSR0[CPCFL] and wait for hardware to clear&lt;BR /&gt;CPCCSR0[CPCFL] by polling - I have implemented this stage.&lt;BR /&gt;• Software flush: perform a dcbf operation to each coherency granule mapped to&lt;BR /&gt;the memory target (that is, one dcbf for each 64 bytes).&lt;BR /&gt;3. Clear all lock bits by setting CPCCSR0[CPCLFC].&lt;BR /&gt;4. Wait for hardware to clear CPCCSR0[CPCLFC] using a polling loop.&lt;BR /&gt;5. Disable the CPC by clearing CPCCSR0[CPCE].&lt;BR /&gt;6. Reconfigure CPC as desired.&lt;BR /&gt;7. Enable CPC by setting CPCCSR0[CPCE].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, doing anything with the PAR register hangs both CodeWarrior and also the processor.&amp;nbsp; Removing that step the registers update correctly.&amp;nbsp; The issue I then have is that when the kernel commences to load the CPU hangs in the decompression stage.&amp;nbsp; If I do the above using some UBoot scripting it works.&amp;nbsp; Do not understand.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The biggest concern I have though is over the content of the PIR register.&amp;nbsp; It just is not behaving properly.&lt;/P&gt;&lt;P&gt;The other issue is understanding what is used by the system to coordinate the CPCPIRn registers.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Aug 2018 07:34:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789355#M2647</guid>
      <dc:creator>bobperry</dc:creator>
      <dc:date>2018-08-17T07:34:41Z</dc:date>
    </item>
    <item>
      <title>Re: T4240 CoreNet partitioning</title>
      <link>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789356#M2648</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is it controlled by the device tree entry of :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;fsl,portid-mapping&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Aug 2018 09:47:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789356#M2648</guid>
      <dc:creator>bobperry</dc:creator>
      <dc:date>2018-08-17T09:47:46Z</dc:date>
    </item>
    <item>
      <title>Re: T4240 CoreNet partitioning</title>
      <link>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789357#M2649</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="272116" data-username="bobperry" href="https://community.nxp.com/people/bobperry"&gt;Bob Perry,&lt;/A&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;For L2 Cache partitioning, please refer to sections "5.8.4.5 L2 cache partitioning" and "&lt;/SPAN&gt;&lt;/SPAN&gt;2.12.4 L2 cache partitioning registers" in &lt;A class="link-titled" href="https://www.nxp.com/docs/en/reference-manual/E6500RM.pdf" title="https://www.nxp.com/docs/en/reference-manual/E6500RM.pdf"&gt;https://www.nxp.com/docs/en/reference-manual/E6500RM.pdf&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CPC(L3 cache) cannot be programmed to be partitioned by way of cores/CPU(sources). You can only partition the CPC by way of transactions based on addresses usually using hypervisor.&lt;/P&gt;&lt;P style="margin: 3.75pt 0cm 7.5pt 0cm;"&gt;&lt;SPAN style="color: #646464;"&gt;A key aspect of partitioning a system is to partition the system's physical memory. To do this physical memory is divided into physical memory areas (or PMAs). PMAs are statically defined by the system architect and cannot be changed dynamically in a running system. The hypervisor itself is also assigned a PMA for its internal use.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 3.75pt 0cm 7.5pt 0cm;"&gt;&lt;SPAN style="color: #646464;"&gt;A PMA is defined with the following properties:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #646464;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; True physical address (must be size aligned)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size &lt;SPAN style="color: #646464;"&gt;(must be a power of 2)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #646464; font-size: 10.5pt;"&gt;CPC partitioning—specifies one or more ways of the Corenet platform cache (CPC) to be allocated and dedicated to this PMA.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 3.75pt 0cm 7.5pt 0cm;"&gt;&lt;SPAN style="color: #646464;"&gt;Each PMA corresponds to a CoreNet coherence domain (CSDID). Coherence is implied—if a PMA is only referenced by one partition, the PMA is private to that partition and only CPUs within that partition are snooped to maintain cache coherency. For shared PMAs, all partitions that reference the PMA will have their CPUs listed in the CSDID for the PMA.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Aug 2018 09:08:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789357#M2649</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2018-08-27T09:08:41Z</dc:date>
    </item>
    <item>
      <title>Re: T4240 CoreNet partitioning</title>
      <link>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789358#M2650</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Yiping Wang,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks for your reply.&amp;nbsp; I have been reading this same very subject on the PMA.&lt;/P&gt;&lt;P&gt;I am running baremetal so no hypervisor not that this should make the setup any more difficult.&lt;/P&gt;&lt;P&gt;How are the PMA's statically defined?&amp;nbsp; I can see them in Codewarrior (1 thru 16) and as they are memory addressable I assume that they can be changed?&lt;/P&gt;&lt;P&gt;How do CPUs belong to a partition?&lt;/P&gt;&lt;P&gt;You mention CPC partitioning too.&amp;nbsp; Are there other documents that clarify this in more detail and how to establish L3 cache separation between cores?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks&lt;/P&gt;&lt;P&gt;Bob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Aug 2018 07:25:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/T4240-CoreNet-partitioning/m-p/789358#M2650</guid>
      <dc:creator>bobperry</dc:creator>
      <dc:date>2018-08-28T07:25:08Z</dc:date>
    </item>
  </channel>
</rss>

