@@ -17,67 +17,44 @@ namespace ur_sanitizer_layer {
1717
1818namespace cpu {
1919
20- // Based on "compiler-rt/lib/asan/asan_mapping.h"
21- // Typical shadow mapping on Linux/x86_64 with SHADOW_OFFSET == 0x00007fff8000:
22- constexpr uptr LOW_SHADOW_BEGIN = 0x00007fff8000ULL ;
23- constexpr uptr LOW_SHADOW_END = 0x00008fff6fffULL ;
24- constexpr uptr SHADOW_GAP_BEGIN = 0x00008fff7000ULL ;
25- constexpr uptr SHADOW_GAP_END = 0x02008fff6fffULL ;
26- constexpr uptr HIGH_SHADOW_BEGIN = 0x02008fff7000ULL ;
27- constexpr uptr HIGH_SHADOW_END = 0x10007fff7fffULL ;
28- constexpr uptr LOW_SHADOW_SIZE = LOW_SHADOW_END - LOW_SHADOW_BEGIN;
29- constexpr uptr SHADOW_GAP_SIZE = SHADOW_GAP_END - SHADOW_GAP_BEGIN;
30- constexpr uptr HIGH_SHADOW_SIZE = HIGH_SHADOW_END - HIGH_SHADOW_BEGIN;
31-
32- bool IsShadowMemInited;
20+ constexpr size_t SHADOW_SIZE = 0x80000000000ULL ;
21+ uptr SHADOW_BEGIN;
22+ uptr SHADOW_END;
23+
24+ bool IsShadowMemInited = false ;
3325
3426ur_result_t SetupShadowMemory (uptr &ShadowBegin, uptr &ShadowEnd) {
3527 static ur_result_t Result = []() {
36- if (!MmapFixedNoReserve (LOW_SHADOW_BEGIN, LOW_SHADOW_SIZE)) {
37- return UR_RESULT_ERROR_OUT_OF_HOST_MEMORY;
38- }
39- if (!MmapFixedNoReserve (HIGH_SHADOW_BEGIN, HIGH_SHADOW_SIZE)) {
40- return UR_RESULT_ERROR_OUT_OF_HOST_MEMORY;
41- }
42- if (!MmapFixedNoAccess (SHADOW_GAP_BEGIN, SHADOW_GAP_SIZE)) {
28+ SHADOW_BEGIN = MmapNoReserve (0 , SHADOW_SIZE);
29+ if (SHADOW_BEGIN == 0 ) {
4330 return UR_RESULT_ERROR_OUT_OF_HOST_MEMORY;
4431 }
32+ SHADOW_END = SHADOW_BEGIN + SHADOW_SIZE;
4533 IsShadowMemInited = true ;
4634 return UR_RESULT_SUCCESS;
4735 }();
48- ShadowBegin = LOW_SHADOW_BEGIN ;
49- ShadowEnd = HIGH_SHADOW_END ;
36+ ShadowBegin = SHADOW_BEGIN ;
37+ ShadowEnd = SHADOW_END ;
5038 return Result;
5139}
5240
5341ur_result_t DestroyShadowMemory () {
54- static ur_result_t Result = []() {
55- if (!IsShadowMemInited) {
56- return UR_RESULT_SUCCESS;
57- }
58- if (!Munmap (LOW_SHADOW_BEGIN, LOW_SHADOW_SIZE)) {
59- return UR_RESULT_ERROR_UNKNOWN;
60- }
61- if (!Munmap (HIGH_SHADOW_BEGIN, HIGH_SHADOW_SIZE)) {
62- return UR_RESULT_ERROR_UNKNOWN;
63- }
64- if (!Munmap (SHADOW_GAP_BEGIN, SHADOW_GAP_SIZE)) {
65- return UR_RESULT_ERROR_UNKNOWN;
66- }
42+ if (!IsShadowMemInited) {
6743 return UR_RESULT_SUCCESS;
68- }();
69- return Result;
44+ }
45+ if (!Munmap (SHADOW_BEGIN, SHADOW_SIZE)) {
46+ return UR_RESULT_ERROR_UNKNOWN;
47+ }
48+ return UR_RESULT_SUCCESS;
7049}
7150
7251} // namespace cpu
7352
7453namespace pvc {
7554
76- // / SHADOW MEMORY MAPPING (PVC, with CPU 47bit)
77- // / Host/Shared USM : 0x0 ~ 0x0fff_ffff_ffff
78- // / ? : 0x1000_0000_0000 ~ 0x1fff_ffff_ffff
79- // / Device USM : 0x2000_0000_0000 ~ 0x3fff_ffff_ffff
80- constexpr size_t SHADOW_SIZE = 1ULL << 46 ;
55+ // / Host/Shared USM : 0x0 ~ 0x07ff_ffff_ffff
56+ // / Device USM : 0x0800_0000_0000 ~ 0x17ff_ffff_ffff
57+ constexpr size_t SHADOW_SIZE = 0x180000000000ULL ;
8158
8259uptr LOW_SHADOW_BEGIN;
8360uptr HIGH_SHADOW_END;
0 commit comments