)]}'
{
  "commit": "fc5fb2da41cbb6e32814c0e438bb2d76465dbee6",
  "tree": "50942264dea80c7b59b9928347a159db4a65e194",
  "parents": [
    "b4d815468b338ea6daa03374331edd228b8a3e31"
  ],
  "author": {
    "name": "Michael Munday",
    "email": "mike.munday@lowrisc.org",
    "time": "Tue Jun 08 12:59:01 2021 +0100"
  },
  "committer": {
    "name": "Michael Munday",
    "email": "mike.munday@lowrisc.org",
    "time": "Wed Jun 30 15:38:45 2021 +0100"
  },
  "message": "[mask_rom] Add mask ROM ePMP functional test\n\nAdds a test ROM that shares the same ePMP configuration as the mask\nROM. It takes about 30-60s to execute in verilator on my laptop.\n\nThe test attempts to execute code in RAM, eFlash and the read-only\npart of the ROM to check that instruction access faults are\ngenerated correctly. It also tests that the region unlocked by\na call to `mask_rom_epmp_unlock_rom_ext_rx` is correct.\n\nBlocking unwanted execution is the primary purpose of the ePMP module.\nFor now the test does not check other types of access are allowed\nor blocked. It may be desirable to add other tests for these\naccesses (e.g. a stack overflow test for the stack guard) later.\n\nThe test is unusual in that it executes from ROM and does not\ncommunicate any status information until the test is over (because\nthe address space used by DV is blocked by the ePMP configuration\nthat is being tested).\n\nDisabling the ePMP setup code results in the following output:\n\n```\nI00000 mask_rom_epmp_test.c:358] Starting MaskROM ePMP functional test.\nE00001 mask_rom_epmp_test.c:363] CHECK-fail: epmp_state_check(\u0026epmp) \u003d\u003d kErrorOk\nE00002 mask_rom_epmp_test.c:251] CHECK-fail: execute(illegal_ins_ro, kExceptionInstructionAccessFault)\nE00003 mask_rom_epmp_test.c:263] CHECK-fail: execute(illegal_ins_rw, kExceptionInstructionAccessFault)\nE00004 mask_rom_epmp_test.c:275] CHECK-fail: execute(\u0026eflash[0], kExceptionInstructionAccessFault)\nE00005 mask_rom_epmp_test.c:276] CHECK-fail: execute(\u0026eflash[eflash_len - 1], kExceptionInstructionAccessFault)\nE00006 mask_rom_epmp_test.c:283] eflash execution not blocked @ 0x20000418\nE00007 mask_rom_epmp_test.c:331] CHECK-fail: epmp_state_check(epmp) \u003d\u003d kErrorOk\nE00008 mask_rom_epmp_test.c:342] CHECK-fail: execute(\u0026image[-1], kExceptionInstructionAccessFault)\nE00009 mask_rom_epmp_test.c:343] CHECK-fail: execute(\u0026image[image_len], kExceptionInstructionAccessFault)\nE00010 mask_rom_epmp_test.c:378] CHECK-fail: epmp_unlock_test_status(\u0026epmp)\nI00011 test_status.c:34] FAIL!\n```\n\nSigned-off-by: Michael Munday \u003cmike.munday@lowrisc.org\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "084f4da50c075ed92ca3bd706a4c6e2ebf10a7ea",
      "new_mode": 33188,
      "new_path": "sw/device/silicon_creator/mask_rom/mask_rom_epmp_test.c"
    },
    {
      "type": "modify",
      "old_id": "9894c6c60473104fdcbcc871fd74b83d143354ee",
      "old_mode": 33188,
      "old_path": "sw/device/silicon_creator/mask_rom/meson.build",
      "new_id": "f5961bd1b51734b82956832b596eed5de5d8015d",
      "new_mode": 33188,
      "new_path": "sw/device/silicon_creator/mask_rom/meson.build"
    },
    {
      "type": "modify",
      "old_id": "44b5f7ad6d7e79b750dc5b7b33046e5002ed7958",
      "old_mode": 33188,
      "old_path": "test/systemtest/earlgrey/test_sim_verilator.py",
      "new_id": "c4c40ff03bc591c45b2f01bab7f4ffc8836fb0e0",
      "new_mode": 33188,
      "new_path": "test/systemtest/earlgrey/test_sim_verilator.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "61cc55a303b4f3406ba793141e4bc6c7b539706c",
      "new_mode": 33188,
      "new_path": "test/systemtest/roms_config.py"
    }
  ]
}
