<HTML><BODY>Hi all (here).<br><br><br>No, we won't need more of this non-coming "help".<br><br>I made some progress with finding out how the essential offsets are handled, with data structures of so called cookies (no, Nuland and other mass-slaughterers and war-criminals are not invited).<br><br><br>Here only a quick grep:<br><br><br>i915/src/i915_dma.c:1184:static unsigned int i915_vga_set_decode(void *cookie, bool state)<br>i915/src/i915_dma.c:1186:       struct drm_device *dev = cookie;<br>i915/src/i915_gem_gtt.c:138:    ddi_dma_cookie_t cookie;<br>i915/src/i915_gem_gtt.c:139:    uint_t cookie_cnt;<br>i915/src/i915_gem_gtt.c:141:    uint32_t paddr, cookie_end;<br>i915/src/i915_gem_gtt.c:161:        DDI_DMA_DONTWAIT, NULL, &cookie, &cookie_cnt)<br>i915/src/i915_gem_gtt.c:177:            for (paddr = cookie.dmac_address,<br>i915/src/i915_gem_gtt.c:178:                cookie_end = cookie.dmac_address + cookie.dmac_size;<br>i915/src/i915_gem_gtt.c:179:                paddr < cookie_end;<br>i915/src/i915_gem_gtt.c:185:            if (i >= cookie_cnt)<br>i915/src/i915_gem_gtt.c:187:            ddi_dma_nextcookie(ppgtt->dma_hdl, &cookie);<br>i915/src/i915_gem.c:1110:       struct ddi_umem_cookie *umem_cookie = obj->base.maplist.map->umem_cookie;<br>i915/src/i915_gem.c:1121:       umem_cookie->cvaddr = obj->base.gtt_map_kaddr;<br>i915/src/i915_gem.c:2455: * This function walks the fence regs looking for a free one for @obj,<br>i915/src/i915_gem.c__ORIG:1109: struct ddi_umem_cookie *umem_cookie = obj->base.maplist.map->umem_cookie;<br>i915/src/i915_gem.c__ORIG:1120: umem_cookie->cvaddr = obj->base.gtt_map_kaddr;<br>i915/src/i915_gem.c__ORIG:2429: * This function walks the fence regs looking for a free one for @obj,<br>i915/src/i915_irq.c:2964:       /* We detect FlipDone by looking for the change in PendingFlip from '1'<br>i915/src/i915_irq.c:3139:       /* We detect FlipDone by looking for the change in PendingFlip from '1'<br>i915/src/intel_bios.c:55:       /* walk the sections looking for section_id */<br>i915/src/intel_bios.c:710:      /* Scour memory looking for the VBT signature */<br>i915/src/intel_dp.c:109: * Thus the strange-looking division by 10 in intel_dp_link_required, to<br>Binary file mdb/modules/i915.so matches<br>sys/drm/drm_sun_pci.h:53:       ddi_iblock_cookie_t intr_block;<br>sys/drm/drm_sunmod.h:109:static int drm_sun_devmap(dev_t, devmap_cookie_t,<br>sys/drm/drmP.h:551:     ddi_umem_cookie_t umem_cookie;   /**< For SAREA alloc and free */<br>sys/drm/drmP.h:585:     devmap_cookie_t dhp;<br>sys/drm/drmP.h:647:     struct gfxp_pmem_cookie mempool_cookie;<br>sys/drm/drmP.h:729:     ddi_dma_cookie_t cookie;<br>sys/drm/drmP.h:730:     uint_t cookie_num;<br>sys/drm/drmP.h:742:     ddi_umem_cookie_t *umem_cookie;<br>sys/drm/drmP.h:1076: * the interrupt priority. Interrupt cookie in drm_device<br><br><br><br>That's a key aspect of getting it to work.<br>And I noted that even on old snv_147 aka Illumos's gfx_private we do already have:<br><br> nm /platform/i86xpv/kernel/misc/amd64/gfx_private|grep ookie<br>00000000000009c0 T gfxp_umem_cookie_destroy<br>0000000000000970 T gfxp_umem_cookie_init<br><br><br>So, at least once step ahead.<br><br><br><br>%martin<br><br><br><br></BODY></HTML>