DF-5084 / fix.diff
--- a/sys/dev/drm/radeon/radeon_agp.c +++ b/sys/dev/drm/radeon/radeon_agp.c @@ -149,14 +149,17 @@ int radeon_agp_init(struct radeon_device *rdev) ret = drm_agp_info(rdev->ddev, &info); if (ret) { drm_agp_release(rdev->ddev); DRM_ERROR("Unable to get AGP info: %d\n", ret); return ret; } - if (rdev->ddev->agp->agp_info.ai_aperture_size < 32) { + /* DragonFly's agp_info.ai_aperture_size is in BYTES + * (sys/dev/agp/agp.c: agp_get_info() -> rman_get_size()), not MB as in + * the old Linux agp_kern_info this file was ported from. */ + if (rdev->ddev->agp->agp_info.ai_aperture_size < (32U << 20)) { drm_agp_release(rdev->ddev); dev_warn(rdev->dev, "AGP aperture too small (%juM) " "need at least 32M, disabling AGP\n", - rdev->ddev->agp->agp_info.ai_aperture_size); + (uintmax_t)(rdev->ddev->agp->agp_info.ai_aperture_size >> 20)); return -EINVAL; } @@ -242,7 +245,7 @@ int radeon_agp_init(struct radeon_device *rdev) } rdev->mc.agp_base = rdev->ddev->agp->agp_info.ai_aperture_base; - rdev->mc.gtt_size = rdev->ddev->agp->agp_info.ai_aperture_size << 20; + rdev->mc.gtt_size = rdev->ddev->agp->agp_info.ai_aperture_size; rdev->mc.gtt_start = rdev->mc.agp_base; rdev->mc.gtt_end = rdev->mc.gtt_start + rdev->mc.gtt_size - 1; dev_info(rdev->dev, "GTT: %juM 0x%08jX - 0x%08jX\n", |