On Mon, Jul 08, 2019 at 10:04:00PM -0700, Steve Kargl wrote:
> On Mon, Jul 08, 2019 at 09:43:36PM -0700, Steve Kargl wrote:
> > On Mon, Jul 08, 2019 at 09:35:05PM -0700, Steve Kargl wrote:
> > > On Mon, Jul 08, 2019 at 09:31:12PM -0700, Steve Kargl wrote:
> > > > It seems the recent flurry of vm commits has
> > > > broken the graphics/drm-legacy-kmod port.
> > > > vm_page_hold() no longer exists.  How do I
> > > > fix the port?
> > > > 
> > > 
> > > Whoops.  The missing function is vm_page_unhold().
> > > Anywhoo, how do I fix this?
> > > 
> > The code in question is 
> > 
> >         for (i = 0; i < vsg->num_pages; i++) {
> >                 m = vsg->pages[i];
> >                 vm_page_lock(m);
> >                 vm_page_wire(m);
> >                 vm_page_unhold(m);
> >                 vm_page_unlock(m);
> >         }
> 
> This was broken by r349846 committed by markj.

Please try this patch.  If it works for you I will submit a pull request
to the drm-legacy repo.

diff --git a/src/dev/drm/via_dmablit.c b/src/dev/drm/via_dmablit.c
index e8096f2..aa57944 100644
--- a/src/dev/drm/via_dmablit.c
+++ b/src/dev/drm/via_dmablit.c
@@ -222,8 +222,10 @@ static int
 via_lock_all_dma_pages(drm_via_sg_info_t *vsg,  drm_via_dmablit_t *xfer)
 {
        unsigned long first_pfn = VIA_PFN(xfer->mem_addr);
+#if __FreeBSD_version < 1300035
        vm_page_t m;
        int i;
+#endif
 
        vsg->num_pages = VIA_PFN(xfer->mem_addr +
            (xfer->num_lines * xfer->mem_stride -1)) - first_pfn + 1;
@@ -239,6 +241,7 @@ via_lock_all_dma_pages(drm_via_sg_info_t *vsg,  
drm_via_dmablit_t *xfer)
            VM_PROT_READ | VM_PROT_WRITE, vsg->pages, vsg->num_pages) < 0)
                return -EACCES;
 
+#if __FreeBSD_version < 1300035
        for (i = 0; i < vsg->num_pages; i++) {
                m = vsg->pages[i];
                vm_page_lock(m);
@@ -246,6 +249,7 @@ via_lock_all_dma_pages(drm_via_sg_info_t *vsg,  
drm_via_dmablit_t *xfer)
                vm_page_unhold(m);
                vm_page_unlock(m);
        }
+#endif
        vsg->state = dr_via_pages_locked;
 
        DRM_DEBUG("DMA pages locked\n");
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to