In the OS-A platform spec I see the following requirement:
• dcsr.stopcount and dcsr.stoptime must be supported and the reset value of each must be 1
◦ Rationale: The architecture has strict requirements on minstret which may be perturbed by an external debugger in a way that’s visible to software. The default should allow code that’s sensitive to these requirements to be debugged.
The rationale justifies the requirement for stopcount=1, but I don't see any rationale for stoptime=1.
The debug spec refers to stoptime=1 stopping "timers", which I interpret to mean the mtime counter. This timer is expected to by synchronized across harts in a system ("The real-time clocks of all harts in a single user application should be synchronized to within one tick of the real-time clock.") In a system with multiple harts, where a subset of harts may be halted at a given time, this stoptime=1 requirement risks violating this ISA requirement and confusing software by causing wall-clock time to get out of sync.
Can we remove "and dcsr.stoptime" from this platform requirement?