Skip to content

Commit 7887e6b

Browse files
committed
merge fix
1 parent 267521a commit 7887e6b

File tree

4 files changed

+29
-1359
lines changed

4 files changed

+29
-1359
lines changed

runtime/opae/vortex.cpp

Lines changed: 13 additions & 313 deletions
Original file line numberDiff line numberDiff line change
@@ -514,318 +514,18 @@ class vx_device {
514514
return 0;
515515
}
516516

517-
opae_drv_api_t api_;
518-
fpga_handle fpga_;
519-
MemoryAllocator global_mem_;
520-
DeviceConfig dcrs_;
521-
uint64_t dev_caps_;
522-
uint64_t isa_caps_;
523-
uint64_t global_mem_size_;
524-
uint64_t staging_wsid_;
525-
uint64_t staging_ioaddr_;
526-
uint8_t* staging_ptr_;
527-
uint64_t staging_size_;
528-
std::unordered_map<uint32_t, std::array<uint64_t, 32>> mpm_cache_;
529-
int profiling_id_;
517+
opae_drv_api_t api_;
518+
fpga_handle fpga_;
519+
MemoryAllocator global_mem_;
520+
DeviceConfig dcrs_;
521+
uint64_t dev_caps_;
522+
uint64_t isa_caps_;
523+
uint64_t global_mem_size_;
524+
uint64_t staging_wsid_;
525+
uint64_t staging_ioaddr_;
526+
uint8_t *staging_ptr_;
527+
uint64_t staging_size_;
528+
std::unordered_map<uint32_t, std::array<uint64_t, 32>> mpm_cache_;
530529
};
531530

532-
struct vx_buffer {
533-
vx_device* device;
534-
uint64_t addr;
535-
uint64_t size;
536-
};
537-
538-
///////////////////////////////////////////////////////////////////////////////
539-
540-
extern int vx_dev_open(vx_device_h* hdevice) {
541-
if (nullptr == hdevice)
542-
return -1;
543-
544-
opae_drv_api_t api;
545-
memset(&api, 0, sizeof(opae_drv_api_t));
546-
if (drv_init(&api) !=0) {
547-
return -1;
548-
}
549-
550-
// allocate device object
551-
auto device = new vx_device(api);
552-
if (nullptr == device) {
553-
return -1;
554-
}
555-
556-
// initialize device
557-
CHECK_ERR(device->init(), {
558-
return err;
559-
});
560-
561-
DBGPRINT("DEV_OPEN: hdevice=%p\n", (void*)device);
562-
563-
*hdevice = device;
564-
565-
return 0;
566-
}
567-
568-
extern int vx_dev_close(vx_device_h hdevice) {
569-
if (nullptr == hdevice)
570-
return -1;
571-
572-
DBGPRINT("DEV_CLOSE: hdevice=%p\n", hdevice);
573-
574-
auto device = ((vx_device*)hdevice);
575-
576-
#ifdef SCOPE
577-
vx_scope_stop(hdevice);
578-
#endif
579-
580-
delete device;
581-
582-
drv_close();
583-
584-
return 0;
585-
}
586-
587-
extern int vx_dev_caps(vx_device_h hdevice, uint32_t caps_id, uint64_t *value) {
588-
if (nullptr == hdevice)
589-
return -1;
590-
591-
vx_device *device = ((vx_device*)hdevice);
592-
593-
uint64_t _value;
594-
595-
CHECK_ERR(device->get_caps(caps_id, &_value), {
596-
return err;
597-
});
598-
599-
DBGPRINT("DEV_CAPS: hdevice=%p, caps_id=%d, value=%ld\n", hdevice, caps_id, _value);
600-
601-
*value = _value;
602-
603-
return 0;
604-
}
605-
606-
extern int vx_mem_alloc(vx_device_h hdevice, uint64_t size, int flags, vx_buffer_h* hbuffer) {
607-
if (nullptr == hdevice
608-
|| nullptr == hbuffer
609-
|| 0 == size)
610-
return -1;
611-
612-
DBGPRINT("MEM_ALLOC: size=%ld, flags=0x%d\n", size, flags);
613-
614-
auto device = ((vx_device*)hdevice);
615-
616-
uint64_t dev_addr;
617-
CHECK_ERR(device->mem_alloc(size, flags, &dev_addr), {
618-
return err;
619-
});
620-
621-
auto buffer = new vx_buffer{device, dev_addr, size};
622-
if (nullptr == buffer) {
623-
device->mem_free(dev_addr);
624-
return -1;
625-
}
626-
627-
DBGPRINT("MEM_ALLOC: hdevice=%p, size=%ld, flags=0x%d, hbuffer=%p\n", hdevice, size, flags, (void*)buffer);
628-
629-
*hbuffer = buffer;
630-
631-
return 0;
632-
}
633-
634-
extern int vx_mem_reserve(vx_device_h hdevice, uint64_t address, uint64_t size, int flags, vx_buffer_h* hbuffer) {
635-
if (nullptr == hdevice
636-
|| nullptr == hbuffer
637-
|| 0 == size)
638-
return -1;
639-
640-
auto device = ((vx_device*)hdevice);
641-
642-
CHECK_ERR(device->mem_reserve(address, size, flags), {
643-
return err;
644-
});
645-
646-
auto buffer = new vx_buffer{device, address, size};
647-
if (nullptr == buffer) {
648-
device->mem_free(address);
649-
return -1;
650-
}
651-
652-
DBGPRINT("MEM_RESERVE: hdevice=%p, address=0x%lx, size=%ld, flags=0x%d, hbuffer=%p\n", hdevice, address, size, flags, (void*)buffer);
653-
654-
*hbuffer = buffer;
655-
656-
return 0;
657-
}
658-
659-
extern int vx_mem_free(vx_buffer_h hbuffer) {
660-
if (nullptr == hbuffer)
661-
return 0;
662-
663-
DBGPRINT("MEM_FREE: hbuffer=%p\n", hbuffer);
664-
665-
auto buffer = ((vx_buffer*)hbuffer);
666-
auto device = ((vx_device*)buffer->device);
667-
668-
vx_mem_access(hbuffer, 0, buffer->size, 0);
669-
670-
int err = device->mem_free(buffer->addr);
671-
672-
delete buffer;
673-
674-
return err;
675-
}
676-
677-
extern int vx_mem_access(vx_buffer_h hbuffer, uint64_t offset, uint64_t size, int flags) {
678-
if (nullptr == hbuffer)
679-
return -1;
680-
681-
auto buffer = ((vx_buffer*)hbuffer);
682-
auto device = ((vx_device*)buffer->device);
683-
684-
if ((offset + size) > buffer->size)
685-
return -1;
686-
687-
DBGPRINT("MEM_ACCESS: hbuffer=%p, offset=%ld, size=%ld, flags=%d\n", hbuffer, offset, size, flags);
688-
689-
return device->mem_access(buffer->addr + offset, size, flags);
690-
}
691-
692-
extern int vx_mem_address(vx_buffer_h hbuffer, uint64_t* address) {
693-
if (nullptr == hbuffer)
694-
return -1;
695-
696-
auto buffer = ((vx_buffer*)hbuffer);
697-
698-
DBGPRINT("MEM_ADDRESS: hbuffer=%p, address=0x%lx\n", hbuffer, buffer->addr);
699-
700-
*address = buffer->addr;
701-
702-
return 0;
703-
}
704-
705-
extern int vx_mem_info(vx_device_h hdevice, uint64_t* mem_free, uint64_t* mem_used) {
706-
if (nullptr == hdevice)
707-
return -1;
708-
709-
auto device = ((vx_device*)hdevice);
710-
711-
uint64_t _mem_free, _mem_used;
712-
713-
CHECK_ERR(device->mem_info(&_mem_free, &_mem_used), {
714-
return err;
715-
});
716-
717-
DBGPRINT("MEM_INFO: hdevice=%p, mem_free=%ld, mem_used=%ld\n", hdevice, _mem_free, _mem_used);
718-
719-
if (mem_free) {
720-
*mem_free = _mem_free;
721-
}
722-
723-
if (mem_used) {
724-
*mem_used = _mem_used;
725-
}
726-
727-
return 0;
728-
}
729-
730-
extern int vx_copy_to_dev(vx_buffer_h hbuffer, const void* host_ptr, uint64_t dst_offset, uint64_t size) {
731-
if (nullptr == hbuffer || nullptr == host_ptr)
732-
return -1;
733-
734-
auto buffer = ((vx_buffer*)hbuffer);
735-
auto device = ((vx_device*)buffer->device);
736-
737-
if ((dst_offset + size) > buffer->size)
738-
return -1;
739-
740-
DBGPRINT("COPY_TO_DEV: hbuffer=%p, host_addr=%p, dst_offset=%ld, size=%ld\n", hbuffer, host_ptr, dst_offset, size);
741-
742-
return device->upload(buffer->addr + dst_offset, host_ptr, size);
743-
}
744-
745-
extern int vx_copy_from_dev(void* host_ptr, vx_buffer_h hbuffer, uint64_t src_offset, uint64_t size) {
746-
if (nullptr == hbuffer || nullptr == host_ptr)
747-
return -1;
748-
749-
auto buffer = ((vx_buffer*)hbuffer);
750-
auto device = ((vx_device*)buffer->device);
751-
752-
if ((src_offset + size) > buffer->size)
753-
return -1;
754-
755-
DBGPRINT("COPY_FROM_DEV: hbuffer=%p, host_addr=%p, src_offset=%ld, size=%ld\n", hbuffer, host_ptr, src_offset, size);
756-
757-
return device->download(host_ptr, buffer->addr + src_offset, size);
758-
}
759-
760-
extern int vx_start(vx_device_h hdevice, vx_buffer_h hkernel, vx_buffer_h harguments) {
761-
if (nullptr == hdevice || nullptr == hkernel || nullptr == harguments)
762-
return -1;
763-
764-
DBGPRINT("START: hdevice=%p, hkernel=%p, harguments=%p\n", hdevice, hkernel, harguments);
765-
766-
auto device = ((vx_device*)hdevice);
767-
auto kernel = ((vx_buffer*)hkernel);
768-
auto arguments = ((vx_buffer*)harguments);
769-
770-
return device->start(kernel->addr, arguments->addr);
771-
}
772-
773-
extern int vx_ready_wait(vx_device_h hdevice, uint64_t timeout) {
774-
if (nullptr == hdevice)
775-
return -1;
776-
777-
DBGPRINT("READY_WAIT: hdevice=%p, timeout=%ld\n", hdevice, timeout);
778-
779-
auto device = ((vx_device*)hdevice);
780-
781-
return device->ready_wait(timeout);
782-
}
783-
784-
extern int vx_dcr_read(vx_device_h hdevice, uint32_t addr, uint32_t* value) {
785-
if (nullptr == hdevice)
786-
return -1;
787-
788-
auto device = (vx_device*)hdevice;
789-
790-
uint32_t _value;
791-
792-
CHECK_ERR(device->dcr_read(addr, &_value), {
793-
return err;
794-
});
795-
796-
DBGPRINT("DCR_READ: hdevice=%p, addr=0x%x, value=0x%x\n", hdevice, addr, _value);
797-
798-
*value = _value;
799-
800-
return 0;
801-
}
802-
803-
extern int vx_dcr_write(vx_device_h hdevice, uint32_t addr, uint32_t value) {
804-
if (nullptr == hdevice)
805-
return -1;
806-
807-
DBGPRINT("DCR_WRITE: hdevice=%p, addr=0x%x, value=0x%x\n", hdevice, addr, value);
808-
809-
auto device = ((vx_device*)hdevice);
810-
811-
return device->dcr_write(addr, value);
812-
}
813-
814-
extern int vx_mpm_query(vx_device_h hdevice, uint32_t addr, uint32_t core_id, uint64_t* value) {
815-
if (nullptr == hdevice)
816-
return -1;
817-
818-
auto device = ((vx_device*)hdevice);
819-
820-
uint64_t _value;
821-
822-
CHECK_ERR(device->mpm_query(addr, core_id, &_value), {
823-
return err;
824-
});
825-
826-
DBGPRINT("MPM_QUERY: hdevice=%p, addr=0x%x, core_id=%d, value=0x%lx\n", hdevice, addr, core_id, _value);
827-
828-
*value = _value;
829-
830-
return 0;
831-
}
531+
#include <callbacks.inc>

0 commit comments

Comments
 (0)