diff options
author | Eric Anholt <anholt@freebsd.org> | 2005-11-08 20:25:00 +0000 |
---|---|---|
committer | Eric Anholt <anholt@freebsd.org> | 2005-11-08 20:25:00 +0000 |
commit | a10d8178e32528e0fd8a7afa24e71a35b1c0582d (patch) | |
tree | fdf902a22d38ed246b7f0bdc9943359e33e9ca8a /shared-core | |
parent | 2c6308fe54c10075379cb00506d5519e0ced1076 (diff) |
Initial port of savage to FreeBSD for the AGP and !ShadowStatus case. Adds
drm_mtrr_{add,del} for handling the MTRR setup. Still has a LOR issue
with DRM_VERIFYAREA_READ/DRM_COPY_FROM_USER_UNCHECKED in savage_bci.c
-- this won't work with the fine-grained locking in use, and just doing
a single copyin to a temporary will probably work fine. Also note that
the module leaks approximately 4 kb on unload.
Diffstat (limited to 'shared-core')
-rw-r--r-- | shared-core/savage_bci.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/shared-core/savage_bci.c b/shared-core/savage_bci.c index 28ef38bb..3bc67151 100644 --- a/shared-core/savage_bci.c +++ b/shared-core/savage_bci.c @@ -585,19 +585,19 @@ int savage_driver_firstopen(drm_device_t *dev) * MTRRs. */ dev_priv->mtrr[0].base = fb_base; dev_priv->mtrr[0].size = 0x01000000; - dev_priv->mtrr[0].handle = mtrr_add( + dev_priv->mtrr[0].handle = drm_mtrr_add( dev_priv->mtrr[0].base, dev_priv->mtrr[0].size, - MTRR_TYPE_WRCOMB, 1); + DRM_MTRR_WC); dev_priv->mtrr[1].base = fb_base+0x02000000; dev_priv->mtrr[1].size = 0x02000000; - dev_priv->mtrr[1].handle = mtrr_add( + dev_priv->mtrr[1].handle = drm_mtrr_add( dev_priv->mtrr[1].base, dev_priv->mtrr[1].size, - MTRR_TYPE_WRCOMB, 1); + DRM_MTRR_WC); dev_priv->mtrr[2].base = fb_base+0x04000000; dev_priv->mtrr[2].size = 0x04000000; - dev_priv->mtrr[2].handle = mtrr_add( + dev_priv->mtrr[2].handle = drm_mtrr_add( dev_priv->mtrr[2].base, dev_priv->mtrr[2].size, - MTRR_TYPE_WRCOMB, 1); + DRM_MTRR_WC); } else { DRM_ERROR("strange pci_resource_len %08lx\n", drm_get_resource_len(dev, 0)); @@ -616,9 +616,9 @@ int savage_driver_firstopen(drm_device_t *dev) * aperture. */ dev_priv->mtrr[0].base = fb_base; dev_priv->mtrr[0].size = 0x08000000; - dev_priv->mtrr[0].handle = mtrr_add( + dev_priv->mtrr[0].handle = drm_mtrr_add( dev_priv->mtrr[0].base, dev_priv->mtrr[0].size, - MTRR_TYPE_WRCOMB, 1); + DRM_MTRR_WC); } else { DRM_ERROR("strange pci_resource_len %08lx\n", drm_get_resource_len(dev, 1)); @@ -662,9 +662,10 @@ void savage_driver_lastclose(drm_device_t *dev) for (i = 0; i < 3; ++i) if (dev_priv->mtrr[i].handle >= 0) - mtrr_del(dev_priv->mtrr[i].handle, - dev_priv->mtrr[i].base, - dev_priv->mtrr[i].size); + drm_mtrr_del(dev_priv->mtrr[i].handle, + dev_priv->mtrr[i].base, + dev_priv->mtrr[i].size, + DRM_MTRR_WC); } int savage_driver_unload(drm_device_t *dev) @@ -961,8 +962,8 @@ static int savage_bci_event_emit(DRM_IOCTL_ARGS) event.count = savage_bci_emit_event(dev_priv, event.flags); event.count |= dev_priv->event_wrap << 16; - DRM_COPY_TO_USER_IOCTL(&((drm_savage_event_emit_t __user *)data)->count, - event.count, sizeof(event.count)); + DRM_COPY_TO_USER_IOCTL((drm_savage_event_emit_t __user *)data, + event, sizeof(event)); return 0; } |