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;  } | 
