[RTEMS Project] #4875: Power-down workaround

RTEMS trac trac at rtems.org
Thu Mar 9 12:42:53 UTC 2023


#4875: Power-down workaround
----------------------------+--------------------
  Reporter:  Daniel Páscoa  |      Owner:  (none)
      Type:  defect         |     Status:  new
  Priority:  normal         |  Milestone:
 Component:  admin          |    Version:
  Severity:  normal         |   Keywords:
Blocked By:                 |   Blocking:
----------------------------+--------------------
 Within bsps\sparc\leon3\start\bspidle.S there is the attached code
 snapshot, on which line 26  seems to contradict GR712RC board User Manual
 section 1.7.8 (Errata # 8 - LEON3FT Cache Controller: Incorrect Bus Access
 After Power-Down):

 “1.7.8 LEON3FT Cache Controller: Incorrect Bus Access After Power-Down

 A LEON with support for clock gating has one clock that is kept running
 and one clock that is gated off in power-down mode. Due to a design error,
 the gated clock was used for logic that keeps track of the state of the
 AMBA bus. Due to this error, the first instruction or data (whichever is
 first) access to the bus after leaving power-down might be performed
 incorrectly.

 …

 Note that the stack pointer or other cachable memory should never be used
 as the source operand, even if using ASI 1, since this may lead to faulty
 data being loaded into the data cache.“

 One has asked Gaisler’s opinion and this has been the response:
 ''“The errata is perhaps a bit too strongly worded. There is a risk that
 the load instruction used in the workaround will lead to fetching in
 incorrect data that gets cached if the address is in a cacheable area but
 that in itself is not a problem. In order for that to propagate into a
 real problem there has to be a subsequent load from that address that hits
 in the Dcache and uses the invalid data before that cache line is either
 flushed or the data is overwritten by stores. If you know that the address
 (and the same cache line) will not be loaded from this does not happen. In
 this case it is reading from the stack of the idle task which is never
 read from once the idle task is running. So I do not see that this can
 create a real issue.”''

 Either way, we wanted the RTEMS community to double-check that indeed
 there is not a real problem and eventually place additional comments on
 the code to better contextualize it w.r.t. the GR712RC User Manual errata
 # 8.

 **(Image attached)**

 **Additional Notes:**

 This ticket was raised as an outcome of the Independent SW Verification
 and Validation (ISVV) for ESA-promoted RTEMS SMP Qualification Data Packs
 (https://rtems-qual.io.esa.int). The original ISVV reference for this
 issue is RTEMS-SMP-CODE-VER-073.

--
Ticket URL: <http://devel.rtems.org/ticket/4875>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list