Bug 91503 - [r600g] regression: SB-related NI/Turks crash on 'gsraytrace'
Summary: [r600g] regression: SB-related NI/Turks crash on 'gsraytrace'
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Gallium/r600 (show other bugs)
Version: git
Hardware: x86-64 (AMD64) Linux (All)
: medium critical
Assignee: Default DRI bug account
QA Contact: Default DRI bug account
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-07-30 02:33 UTC by Dieter Nützel
Modified: 2015-09-02 13:45 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
gsraytrace.png (353.31 KB, image/png)
2015-07-30 02:33 UTC, Dieter Nützel
Details
gsraytrace_22964_00000000 (27.55 KB, text/plain)
2015-08-28 23:46 UTC, Dieter Nützel
Details
fsraytrace.png (171.81 KB, image/png)
2015-08-28 23:48 UTC, Dieter Nützel
Details
gsraytrace.png (331.76 KB, image/png)
2015-08-28 23:49 UTC, Dieter Nützel
Details
vsraytrace.png (107.82 KB, image/png)
2015-08-28 23:49 UTC, Dieter Nützel
Details

Description Dieter Nützel 2015-07-30 02:33:56 UTC
Created attachment 117455 [details]
gsraytrace.png

Linux 4.1.3
Mesa 10.7.0-devel (git-c73a13e)
LLVM version 3.8.0svn
Turks XT | [Radeon HD 6670] | (ChipID = 0x6758)

With R600_DEBUG=nosb it works, but image corruption (see gsraytrace.png)

With R600_DEBUG=nollvm I got this one time:
*** Error in `./gsraytrace': corrupted double-linked list: 0x000000000231ce00 ***

It worked (with little image corruption) some weeks ago.
So it is mostly a regression, sorry not bisected, yet.

/home/dieter> ./gsraytrace
GL_RENDERER = Gallium 0.4 on AMD TURKS                                                              
                                                                                                    
ESC                 = exit demo                                                                     
left mouse + drag   = rotate camera                                                                 
                                                                                                    
Segmentation fault (core dumped)

[ 6997.080787] gsraytrace[6277]: segfault at 218 ip 00007f1ac3df5062 sp 00007fffd07d7980 error 4 in r600_dri.so[7f1ac39e8000+5d3000]

Core was generated by `./gsraytrace'.                                                               
Program terminated with signal SIGSEGV, Segmentation fault.                                         
#0  r600_sb::bc_parser::prepare_ir (this=this@entry=0x7ffd0c763950) at sb/sb_bc_parser.cpp:649      
649                             depart_node *dep = sh->create_depart(loop_stack.top());             
Missing separate debuginfos, use: zypper install glibc-debuginfo-2.19-16.15.1.x86_64 libGLEW1_10-debuginfo-1.10.0-2.3.1.x86_64 libelf1-debuginfo-0.158-4.5.1.x86_64 libexpat1-debuginfo-2.1.0-14.1.2.x86_64 libgcc_s1-debuginfo-4.8.3+r212056-2.2.4.x86_64 libglut3-debuginfo-2.8.1-4.2.1.x86_64 libncurses5-debuginfo-5.9-52.2.3.x86_64 libopenssl1_0_0-debuginfo-1.0.1k-2.24.1.x86_64 libstdc++6-debuginfo-4.8.3+r212056-2.2.4.x86_64 libtxc_dxtn-debuginfo-1.0.1-5.1.x86_64 libudev1-debuginfo-210-25.16.1.x86_64 libz1-debuginfo-1.2.8-5.1.2.x86_64                                                                 

(gdb) list
644                                     rep->move(c->parent->first, c);                             
645                             c->replace_with(rep);                                               
646                             sh->simplify_dep_rep(rep);                                          
647                     } else if (c->bc.op == CF_OP_LOOP_BREAK) {                                  
648                             assert(!loop_stack.empty());                                        
649                             depart_node *dep = sh->create_depart(loop_stack.top());             
650                             if (c->parent->first != c)                                          
651                                     dep->move(c->parent->first, c);
652                             c->replace_with(dep);
653                             sh->simplify_dep_rep(dep);

(gdb) bt full
#0  r600_sb::bc_parser::prepare_ir (this=this@entry=0x7ffd0c763950) at sb/sb_bc_parser.cpp:649
        dep = <optimized out>
        c = 0x11c8a30
        flags = 64
        I = 
        E = <optimized out>
#1  0x00007f853df86389 in r600_sb::bc_parser::prepare (this=this@entry=0x7ffd0c763950)
    at sb/sb_bc_parser.cpp:107
        r = <optimized out>
#2  0x00007f853df879a1 in r600_sb_bytecode_process (rctx=rctx@entry=0xb4f680, 
    bc=bc@entry=0x119fcf0, pshader=pshader@entry=0x119fce8, dump_bytecode=dump_bytecode@entry=0, 
    optimize=<optimized out>) at sb/sb_core.cpp:153
        shader_id = 15
        ctx = <optimized out>
        time_start = <optimized out>
        builder = {sh = @0xcdbb60, ctx = @0x110b860, bb = {hw_class_bit = r600_sb::HB_EG, 
            bc = std::vector of length 368, capacity 512 = {<error reading variable>, 
          error = 18395744}
        r = <optimized out>
        parser = {ctx = @0x110b860, dec = 0x113db20, bc = 0x119fcf0, pshader = 0x119fce8, 
          dw = 0x11a81e0, bc_ndw = 512, max_cf = 59, sh = 0x11a8e10, error = 0, slots = {{
              0x11c8498, 0x0, 0x0, 0x0, 0x0}, {0x11c7b28, 0x11c7bc0, 0x11c7c58, 0x11c7cf0, 0x0}}, 
          cgroup = 0, cf_map = std::vector of length 61, capacity 64 = {0x11bae38, 0x11bb0e0, 
            0x11bb2e8, 0x11bb6f8, 0x11bb900, 0x11bbd10, 0x11bbf18, 0x11bc7f8, 0x11bc938, 
            0x11bcb40, 0x11bd2e0, 0x11bd4e8, 0x11bd958, 0x11bdb60, 0x11bdfd0, 0x11be1d8, 
            0x11be648, 0x11be788, 0x11be8c8, 0x11bea08, 0x11beb48, 0x11bedf0, 0x11bef30, 
            0x11bf070, 0x11bf7e8, 0x11bf928, 0x11bfd38, 0x11bff40, 0x11c0518, 0x11c0720, 
            0x11c09c8, 0x11c0d60, 0x11c1a30, 0x11c1dc8, 0x11c4450, 0x11c4658, 0x11c4ac8, 
            0x11c4c08, 0x11c4d48, 0x11c4e88, 0x11c4fc8, 0x11c5270, 0x11c53b0, 0x11c54f0, 
            0x11c5960, 0x11c5b68, 0x11c6508, 0x11c6710, 0x11c7710, 0x11c7918, 0x11c7d88, 
            0x11c7ec8, 0x11c8008, 0x11c8148, 0x11c8288, 0x11c8530, 0x11c8670, 0x11c87b0, 
            0x11c88f0, 0x11c8a30, 0x11c8b70}, 
          loop_stack = std::stack wrapping: std::deque with 0 elements, gpr_reladdr = false}
#3  0x00007f853df6c6ca in r600_pipe_shader_create (ctx=ctx@entry=0xb4f680, 
    shader=shader@entry=0x119fcd0, key=...) at r600_shader.c:186
        rctx = 0xb4f680
        sel = 0x11872b0
        r = 0
        dump = false
        use_sb = 1
        sb_disasm = 1
        export_shader = 0
        __func__ = "r600_pipe_shader_create"
#4  0x00007f853df75c7a in r600_shader_select (ctx=ctx@entry=0xb4f680, sel=0x11872b0, 
    dirty=dirty@entry=0x7ffd0c764618) at r600_state_common.c:763
        key = {color_two_side = 0, alpha_to_one = 0, nr_cbufs = 0, vs_as_es = 0, vs_as_gs_a = 0, 
          vs_prim_id_out = 0}
        shader = 0x119fcd0
        r = <optimized out>
        __func__ = "r600_shader_select"
#5  0x00007f853df78b3a in r600_update_derived_state (rctx=0xb4f680) at r600_state_common.c:1189
        ctx = 0xb4f680
        ps_dirty = true
        vs_dirty = false
        need_buf_const = <optimized out>
        gs_dirty = false
        blend_disable = <optimized out>
#6  r600_draw_vbo (ctx=0xb4f680, dinfo=<optimized out>) at r600_state_common.c:1377
        rctx = 0xb4f680
        info = {indexed = 0 '\000', mode = 0, start = 0, count = 65536, start_instance = 0, 
          instance_count = 1, vertices_per_patch = <optimized out>, index_bias = 0, 
          min_index = <optimized out>, max_index = <optimized out>, 
          primitive_restart = <optimized out>, restart_index = <optimized out>, 
          count_from_stream_output = <optimized out>, indirect = <optimized out>, 
          indirect_offset = <optimized out>}
        ib = {index_size = 0, offset = 0, buffer = 0x0, user_buffer = 0x0}
        i = <optimized out>
        cs = 0xc47260
#7  0x00007f853ded6877 in u_vbuf_draw_vbo (mgr=0xcbfa30, info=0x7ffd0c7648b0) at util/u_vbuf.c:1159
        pipe = 0xb4f680
        start_vertex = <optimized out>
        min_index = <optimized out>
        num_vertices = <optimized out>
        unroll_indices = 0 '\000'
        used_vb_mask = <optimized out>
        user_vb_mask = 0
        incompatible_vb_mask = 0
        new_info = {indexed = 128 '\200', mode = 0, start = 18184896, count = 0, 
          start_instance = 18468848, instance_count = 0, vertices_per_patch = 16, 
          index_bias = 32645, min_index = 8, max_index = 0, primitive_restart = 160 '\240', 
          restart_index = 0, count_from_stream_output = 0xca8518, indirect = 0xca7690, 
          indirect_offset = 18229808}
#8  0x00007f853dd50b6f in st_draw_vbo (ctx=0xc68460, prims=<optimized out>, 
    nr_prims=<optimized out>, ib=0x0, index_bounds_valid=<optimized out>, min_index=0, 
    max_index=65535, tfb_vertcount=0x0, indirect=0x0) at state_tracker/st_draw.c:288
        ibuffer = {index_size = 0, offset = 0, buffer = 0x0, user_buffer = 0x0}
        info = {indexed = 0 '\000', mode = 0, start = 0, count = 65536, start_instance = 0, 
          instance_count = 1, vertices_per_patch = 3, index_bias = 0, min_index = 0, 
          max_index = 65535, primitive_restart = 0 '\000', restart_index = 0, 
          count_from_stream_output = 0x0, indirect = 0x0, indirect_offset = 0}
        arrays = <optimized out>
        i = <optimized out>
#9  0x00007f853dd208d7 in vbo_draw_arrays (ctx=0xc68460, mode=0, start=0, count=65536, 
    numInstances=1, baseInstance=0) at vbo/vbo_exec_array.c:645
        exec = 0xca98c8
        prim = {{mode = 0, indexed = 0, begin = 1, end = 1, weak = 0, no_current_update = 0, 
            is_indirect = 0, pad = 0, start = 0, count = 65536, basevertex = 0, num_instances = 1, 
            base_instance = 0, indirect_offset = 0}, {mode = 0, indexed = 0, begin = 0, end = 0, 
            weak = 0, no_current_update = 0, is_indirect = 0, pad = 0, start = 0, count = 0, 
            basevertex = 0, num_instances = 0, base_instance = 0, indirect_offset = 0}}
#10 0x0000000000403421 in Draw() ()
No symbol table info available.
#11 0x00007f8542518154 in ?? () from /usr/lib64/libglut.so.3
No symbol table info available.
#12 0x00007f854251b9b9 in fgEnumWindows () from /usr/lib64/libglut.so.3
No symbol table info available.
#13 0x00007f854251870d in glutMainLoopEvent () from /usr/lib64/libglut.so.3
No symbol table info available.
#14 0x00007f8542518f0d in glutMainLoop () from /usr/lib64/libglut.so.3
No symbol table info available.
#15 0x0000000000402ff0 in main ()
No symbol table info available.

(gdb) info registers all
rax            0x220    544
rbx            0x11c8a30        18647600
rcx            0x0      0
rdx            0x1169be8        18258920
rsi            0x0      0
rdi            0x0      0
rbp            0x0      0x0
rsp            0x7ffd0c763490   0x7ffd0c763490
r8             0x114c4a8        18138280
r9             0x11af930        18544944
r10            0x11af930        18544944
r11            0x11af940        18544960
r12            0x38     56
r13            0x7ffd0c763950   140724812527952
r14            0x11af2d8        18543320
r15            0x3      3
rip            0x7f853df86062   0x7f853df86062 <r600_sb::bc_parser::prepare_ir()+1938>
eflags         0x10202  [ IF RF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
st0            0        (raw 0x00000000000000000000)
st1            0        (raw 0x00000000000000000000)
st2            0        (raw 0x00000000000000000000)
st3            0        (raw 0x00000000000000000000)
st4            0        (raw 0x00000000000000000000)
st5            0        (raw 0x00000000000000000000)
st6            0        (raw 0x00000000000000000000)
st7            0        (raw 0x00000000000000000000)
fctrl          0x37f    895
fstat          0x0      0
ftag           0xffff   65535
fiseg          0x0      0
fioff          0x0      0
foseg          0x0      0
fooff          0x0      0
fop            0x0      0
xmm0           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x90, 0xce, 
    0x1c, 0x1, 0x0 <repeats 12 times>}, v8_int16 = {0xce90, 0x11c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 
  v4_int32 = {0x11cce90, 0x0, 0x0, 0x0}, v2_int64 = {0x11cce90, 0x0}, 
  uint128 = 0x000000000000000000000000011cce90}
xmm1           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x40, 0xba, 
    0x1b, 0x1, 0x0, 0x0, 0x0, 0x0, 0x10, 0xbb, 0x1b, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xba40, 
    0x11b, 0x0, 0x0, 0xbb10, 0x11b, 0x0, 0x0}, v4_int32 = {0x11bba40, 0x0, 0x11bbb10, 0x0}, 
  v2_int64 = {0x11bba40, 0x11bbb10}, uint128 = 0x00000000011bbb1000000000011bba40}
xmm2           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x38, 0xb8, 
    0x1b, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb9, 0x1b, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xb838, 
    0x11b, 0x0, 0x0, 0xb900, 0x11b, 0x0, 0x0}, v4_int32 = {0x11bb838, 0x0, 0x11bb900, 0x0}, 
  v2_int64 = {0x11bb838, 0x11bb900}, uint128 = 0x00000000011bb90000000000011bb838}
xmm3           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x60, 0xb6, 
    0x1b, 0x1, 0x0, 0x0, 0x0, 0x0, 0xf8, 0xb6, 0x1b, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xb660, 
    0x11b, 0x0, 0x0, 0xb6f8, 0x11b, 0x0, 0x0}, v4_int32 = {0x11bb660, 0x0, 0x11bb6f8, 0x0}, 
  v2_int64 = {0x11bb660, 0x11bb6f8}, uint128 = 0x00000000011bb6f800000000011bb660}
xmm4           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0xf8, 0xb4, 
    0x1b, 0x1, 0x0, 0x0, 0x0, 0x0, 0x90, 0xb5, 0x1b, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xb4f8, 
    0x11b, 0x0, 0x0, 0xb590, 0x11b, 0x0, 0x0}, v4_int32 = {0x11bb4f8, 0x0, 0x11bb590, 0x0}, 
  v2_int64 = {0x11bb4f8, 0x11bb590}, uint128 = 0x00000000011bb59000000000011bb4f8}
xmm5           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x80, 0xad, 
    0x1b, 0x1, 0x0, 0x0, 0x0, 0x0, 0x38, 0xae, 0x1b, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0xad80, 
    0x11b, 0x0, 0x0, 0xae38, 0x11b, 0x0, 0x0}, v4_int32 = {0x11bad80, 0x0, 0x11bae38, 0x0}, 
  v2_int64 = {0x11bad80, 0x11bae38}, uint128 = 0x00000000011bae3800000000011bad80}
xmm6           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0xa0, 0x42, 
    0x21, 0x1, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x42, 0x21, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x42a0, 
    0x121, 0x0, 0x0, 0x42d0, 0x121, 0x0, 0x0}, v4_int32 = {0x12142a0, 0x0, 0x12142d0, 0x0}, 
  v2_int64 = {0x12142a0, 0x12142d0}, uint128 = 0x00000000012142d000000000012142a0}
xmm7           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x43, 
    0x21, 0x1, 0x0, 0x0, 0x0, 0x0, 0x30, 0x43, 0x21, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x4300, 
    0x121, 0x0, 0x0, 0x4330, 0x121, 0x0, 0x0}, v4_int32 = {0x1214300, 0x0, 0x1214330, 0x0}, 
  v2_int64 = {0x1214300, 0x1214330}, uint128 = 0x00000000012143300000000001214300}
xmm8           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {
    0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 
    0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm9           {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0xd0, 0x3c, 
    0x21, 0x1, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x3e, 0x21, 0x1, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x3cd0, 
    0x121, 0x0, 0x0, 0x3ee0, 0x121, 0x0, 0x0}, v4_int32 = {0x1213cd0, 0x0, 0x1213ee0, 0x0}, 
  v2_int64 = {0x1213cd0, 0x1213ee0}, uint128 = 0x0000000001213ee00000000001213cd0}
xmm10          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {
    0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 
    0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm11          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {
    0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 
    0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm12          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 
    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 
    0x0, 0x0, 0x0, 0xff, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0xff0000, 0x0}, v2_int64 = {0x0, 
    0xff0000}, uint128 = 0x0000000000ff00000000000000000000}
xmm13          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {
    0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 
    0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm14          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {
    0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 
    0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm15          {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {
    0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 
    0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
mxcsr          0x1fa0   [ PE IM DM ZM OM UM PM ]
Comment 1 Dieter Nützel 2015-08-28 23:44:46 UTC
Crash was FIXED by one of this:

36f1999a87258603b6720d55e6020d5d24c215c9
a830225adbb77073272961df409885cca6b861ee
a830225adbb77073272961df409885cca6b861ee

Now GPU hang on 'gsraytrace'.
See attached GALLIUM_DDEBUG dump log (gsraytrace_22964_00000000).

After reboot I found this in kernel log (dmesg):
[    3.521069] [drm:btc_dpm_set_power_state [radeon]] *ERROR* rv770_restrict_performance_levels_before_switch failed

R600_DEBUG=nosb
image corruption still there
see (new)
fsraytrace.png
gsraytrace.png
vsraytrace.png
Comment 2 Dieter Nützel 2015-08-28 23:46:23 UTC
Created attachment 117973 [details]
gsraytrace_22964_00000000
Comment 3 Dieter Nützel 2015-08-28 23:48:23 UTC
Created attachment 117974 [details]
fsraytrace.png
Comment 4 Dieter Nützel 2015-08-28 23:49:14 UTC
Created attachment 117975 [details]
gsraytrace.png
Comment 5 Dieter Nützel 2015-08-28 23:49:43 UTC
Created attachment 117976 [details]
vsraytrace.png
Comment 6 Dieter Nützel 2015-09-02 13:45:12 UTC
FIXED by one of this:

36f1999a87258603b6720d55e6020d5d24c215c9
a830225adbb77073272961df409885cca6b861ee
a830225adbb77073272961df409885cca6b861ee


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.