Ticket #5391 (closed defect: fixed)
Q2D05/6 bricks machines with bad RTC data
| Reported by: | wmb@… | Owned by: | wmb@… |
|---|---|---|---|
| Priority: | blocker | Milestone: | Ship.2 |
| Component: | ofw - open firmware | Version: | 1.0-firmware-Q2D05 |
| Keywords: | Cc: | ||
| Action Needed: | Verified: | no | |
| Deployments affected: | Blocked By: | ||
| Blocking: |
Description
Install Q2D05 or Q2D06 firmware. Remove all power including the RTC battery. Wait a couple of minutes for the RTC to discarge. Reinstall the RTC battery and reconnect power. Turn on the machine. Congratulations, you have a brick. The screen won't even come on.
If you have a serial console, you can recover as follows:
The last line on the serial console is Page Fault
Do this:
ok probe-pci probe-usb
Now you can reload the firmware from one of the usual sources with the "flash" command.
The root cause of this problem is a deficiency in the "factory-mode" code added by svn 736. If the month value in the RTC is 0 (which is not in the valid range 1..12), the routine that converts the date to the "seconds since 1970" format accesses outside the valid range of the days per month table and faults.
The fix is to force that value to be within the range 1-12 before accessing the table.
This is a very bad bug and I will issue a new version with a fix immediately.


