Lines Matching refs:inmw
507 tool_mw_read_fn(struct sysctl_req *req, struct tool_mw *inmw, char *read_addr, in tool_mw_read_fn() argument
537 sbuf_printf(sb, "\nConfigured MW size\t: %zu\n", inmw->size); in tool_mw_read_fn()
540 inmw->size); in tool_mw_read_fn()
575 struct tool_mw *inmw, char *ubuf, caddr_t write_buf, int *cmd_op, in tool_mw_write_fn() argument
593 device_printf(inmw->tc->dev, "Wrong Command \"%c\" provided\n", in tool_mw_write_fn()
599 if ((*buf_offset + *buf_size) > inmw->size) { in tool_mw_write_fn()
600 device_printf(inmw->tc->dev, "%s: configured mw size :%zi and " in tool_mw_write_fn()
601 "requested size :%zi.\n", __func__, inmw->size, in tool_mw_write_fn()
784 struct tool_mw *inmw = (struct tool_mw *)arg1; in sysctl_mw_handle() local
789 return tool_mw_read_fn(req, inmw, (char *)inmw->mm_base, in sysctl_mw_handle()
790 &inmw->mw_cmd_rw, inmw->mw_buf_offset, inmw->mw_buf_size, in sysctl_mw_handle()
795 return tool_mw_write_fn(oidp, req, inmw, buf, inmw->mm_base, in sysctl_mw_handle()
796 &inmw->mw_cmd_rw, &inmw->mw_buf_offset, &inmw->mw_buf_size); in sysctl_mw_handle()
805 struct tool_mw *inmw = &tc->peers[pidx].inmws[widx]; in tool_setup_mw() local
810 inmw->size = roundup(inmw->phys_size, inmw->xlat_align_size); in tool_setup_mw()
812 inmw->size = roundup(req_size, inmw->xlat_align_size); in tool_setup_mw()
815 inmw->phys_size, req_size, inmw->size); in tool_setup_mw()
817 if (bus_dma_tag_create(bus_get_dma_tag(tc->dev), inmw->xlat_align, 0, in tool_setup_mw()
818 inmw->addr_limit, BUS_SPACE_MAXADDR, NULL, NULL, inmw->size, 1, in tool_setup_mw()
819 inmw->size, 0, NULL, NULL, &inmw->dma_tag)) { in tool_setup_mw()
821 "%zu/%zu\n", inmw->phys_size, inmw->size); in tool_setup_mw()
826 if (bus_dmamem_alloc(inmw->dma_tag, (void **)&inmw->virt_addr, in tool_setup_mw()
827 BUS_DMA_WAITOK | BUS_DMA_ZERO, &inmw->dma_map)) { in tool_setup_mw()
829 "%zu/%zu\n", inmw->phys_size, inmw->size); in tool_setup_mw()
834 if (bus_dmamap_load(inmw->dma_tag, inmw->dma_map, inmw->virt_addr, in tool_setup_mw()
835 inmw->size, ntb_tool_load_cb, &cba, BUS_DMA_NOWAIT) || cba.error) { in tool_setup_mw()
837 "%zu/%zu\n", inmw->phys_size, inmw->size); in tool_setup_mw()
841 inmw->dma_base = cba.addr; in tool_setup_mw()
843 rc = ntb_mw_set_trans(tc->dev, widx, inmw->dma_base, inmw->size); in tool_setup_mw()
850 bus_dmamap_unload(inmw->dma_tag, inmw->dma_map); in tool_setup_mw()
853 bus_dmamem_free(inmw->dma_tag, inmw->virt_addr, inmw->dma_map); in tool_setup_mw()
856 bus_dma_tag_destroy(inmw->dma_tag); in tool_setup_mw()
859 inmw->size = 0; in tool_setup_mw()
860 inmw->virt_addr = 0; in tool_setup_mw()
861 inmw->dma_base = 0; in tool_setup_mw()
862 inmw->dma_tag = 0; in tool_setup_mw()
863 inmw->dma_map = 0; in tool_setup_mw()
871 struct tool_mw *inmw = &tc->peers[pidx].inmws[widx]; in tool_free_mw() local
873 if (inmw->dma_base) in tool_free_mw()
876 if (inmw->virt_addr && inmw->dma_tag) { in tool_free_mw()
877 bus_dmamap_unload(inmw->dma_tag, inmw->dma_map); in tool_free_mw()
878 bus_dmamem_free(inmw->dma_tag, inmw->virt_addr, inmw->dma_map); in tool_free_mw()
879 bus_dma_tag_destroy(inmw->dma_tag); in tool_free_mw()
882 inmw->virt_addr = 0; in tool_free_mw()
883 inmw->dma_base = 0; in tool_free_mw()
884 inmw->dma_tag = 0; in tool_free_mw()
885 inmw->dma_map = 0; in tool_free_mw()
886 inmw->mm_base = 0; in tool_free_mw()
887 inmw->size = 0; in tool_free_mw()
891 tool_mw_trans_read(struct tool_mw *inmw, struct sysctl_req *req) in tool_mw_trans_read() argument
903 sbuf_printf(sb, "\nInbound MW \t%d\n", inmw->widx); in tool_mw_trans_read()
905 ntb_peer_port_number(inmw->tc->dev, inmw->pidx), inmw->pidx); in tool_mw_trans_read()
906 sbuf_printf(sb, "Window Address \t%p\n", inmw->mm_base); in tool_mw_trans_read()
907 sbuf_printf(sb, "DMA Address \t0x%016llx\n", (long long)inmw->dma_base); in tool_mw_trans_read()
908 sbuf_printf(sb, "Window Size \t0x%016zx[p]\n", inmw->size); in tool_mw_trans_read()
909 sbuf_printf(sb, "Alignment \t0x%016zx[p]\n", inmw->xlat_align); in tool_mw_trans_read()
911 inmw->xlat_align_size); in tool_mw_trans_read()
912 sbuf_printf(sb, "Size Max \t0x%016zx[p]\n", inmw->phys_size); in tool_mw_trans_read()
922 struct tool_mw *inmw, size_t wsize) in tool_mw_trans_write() argument
924 struct tool_ctx *tc = inmw->tc; in tool_mw_trans_write()
931 if (inmw->size == wsize) in tool_mw_trans_write()
935 if (inmw->size) in tool_mw_trans_write()
936 tool_free_mw(tc, inmw->pidx, inmw->widx); in tool_mw_trans_write()
938 rc = tool_setup_mw(tc, inmw->pidx, inmw->widx, wsize); in tool_mw_trans_write()
946 struct tool_mw *inmw = (struct tool_mw *)arg1; in sysctl_mw_trans_handler() local
952 return tool_mw_trans_read(inmw, req); in sysctl_mw_trans_handler()
957 return tool_mw_trans_write(oidp, req, inmw, wsize); in sysctl_mw_trans_handler()
966 struct tool_mw *inmw = (struct tool_mw *)arg1; in sysctl_peer_mw_handle() local
971 return tool_mw_read_fn(req, inmw, (char *)inmw->virt_addr, in sysctl_peer_mw_handle()
972 &inmw->mw_peer_cmd_rw, inmw->mw_peer_buf_offset, in sysctl_peer_mw_handle()
973 inmw->mw_peer_buf_size, "mw"); in sysctl_peer_mw_handle()
977 return tool_mw_write_fn(oidp, req, inmw, buf, inmw->virt_addr, in sysctl_peer_mw_handle()
978 &inmw->mw_peer_cmd_rw, &inmw->mw_peer_buf_offset, in sysctl_peer_mw_handle()
979 &inmw->mw_peer_buf_size); in sysctl_peer_mw_handle()