OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.74/] [doc/] [ECO-027-trap_mmu.txt] - Blame information for rev 38

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 wfjm
$Id: ECO-027-trap_mmu.txt 708 2015-08-03 06:41:43Z mueller $
2
 
3
Scope:
4
  Introduced in release w11a_V0.71
5
  Affects: all w11a systems
6
 
7
Symptom summary:
8
  A mmu trap could be lost or vectored through 014 (bpt) rather 250 (mmu).
9
 
10
Background:
11
  The PDP-11/70 and 11/45 MMU offers a 'mmu trap' feature, which can cause
12
  a trap when a memory location is read or written. This can be enabled with
13
  special ACF values in the page descriptor registers for each segment end
14
  globally enabled with an enable bit in SSR0.
15
 
16
  Since only 11/70 and 11/45 offer this (and J11 does not) this feature is
17
  in general not used by operations systems.
18
 
19
Summary of issues:
20
  When an instruction does more than one memory access and the mmu trap
21
  condition occurs not on the last access
22
    - an mmu trap could be missed
23
    - an mmu trap might be vectored through 014 (the bpt vector)
24
  The later happens for all read-modify-write accesses.
25
 
26
Analysis:
27
  The VM_STAT.trap_mmu flag was copied into the R_STATUS.trap_mmu state bit
28
  in do_memcheck, which is called for each memory wait. In case of a
29
  read-modify-write the initial read will signal trap_mmu, while the
30
  rmw completion will not (the mmu doesn't check on rmw completions).
31
  This leads to
32
    - lost mmu traps  (e.g. when mmu trap comes on 1st of 2 access)
33
    - mmu traps vectored through 014 (the bpt vector)
34
  The later happens due to the logic of state s_opg_gen_rmw_w:
35
    - do_memcheck can clear R_STATUS.trap_mmu
36
    - do_fork_next still branches to s_trap_disp because R_STATUS.trap_mmu='1'
37
    - s_trap_disp sees R_STATUS.trap_mmu='0' and miscalculates the vector
38
 
39
Fixes:
40
  pdp11_sequencer was modified to ensure that R_STATUS.trap_mmu is only set
41
  in do_memcheck. Same for trap_ysv (which had the same potential bug)
42
 
43
Provisos:
44
  The issue was found by systematic testing of mmu fault and trap behavior.
45
  Because known OS don't use mmu traps the issue should not have any impact
46
  on practical usage with OS like rsx or 211bsd.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.