(self, queue_type, ring, gart, rptr, wptr, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0,
xcc_id=0, idx=0)
| 330 | 'gfx_target_version': {90403: 90402}.get(gfxver, gfxver)} |
| 331 | |
| 332 | def create_queue(self, queue_type, ring, gart, rptr, wptr, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0, |
| 333 | xcc_id=0, idx=0): |
| 334 | assert cwsr_buffer is None, "no cwsr buffer for am" |
| 335 | |
| 336 | rcvr_params: tuple |
| 337 | if queue_type == kfd.KFD_IOC_QUEUE_TYPE_SDMA: |
| 338 | doorbell_index = self.dev_impl.sdma.setup_ring(*(rcvr_params:=(ring.va_addr, ring.size, gart.va_addr+rptr, gart.va_addr+wptr, idx))) |
| 339 | else: |
| 340 | doorbell_index = self.dev_impl.gfx.setup_ring(*(rcvr_params:=(ring.va_addr, ring.size, gart.va_addr+rptr, gart.va_addr+wptr, |
| 341 | eop_buffer.va_addr, eop_buffer.size, is_aql:=(queue_type==kfd.KFD_IOC_QUEUE_TYPE_COMPUTE_AQL), is_aql))) |
| 342 | |
| 343 | ext = lambda addr,n,dt: Buffer("CPU", n, dt, options=BufferSpec(external_ptr=addr), preallocate=True) |
| 344 | (put_value := Buffer("CPU", 1, dtypes.uint64, preallocate=True))._buf.view.view(fmt='Q')[0] = 0 |
| 345 | return AMDQueueDesc(ring=ext(ring.va_addr, ring.size//4, dtypes.uint32), |
| 346 | doorbell=ext(self.dev_impl.doorbell64.addr + doorbell_index*8, 1, dtypes.uint64), |
| 347 | read_ptr=ext(gart.va_addr+rptr, 1, dtypes.uint64), write_ptr=ext(gart.va_addr+wptr, 1, dtypes.uint64), |
| 348 | put_value=put_value, params=rcvr_params) |
| 349 | |
| 350 | def _collect_interrupts(self, reset=False, drain_only=False): |
| 351 | d = self.dev |
no test coverage detected