On Wed, Mar 04, 2015 at 02:12:09PM -0800, Jason Adams wrote:
> On 03/04/2015 04:34 AM, Jonathan Gray wrote:
> > On Tue, Mar 03, 2015 at 05:39:51PM -0800, Jason Adams wrote:
> >> Somewhere along the road of moving from 5.5 to 5.6 (i386) my performance 
> >> in X has really taken a hit
> >> when dragging windows around.  The window trails the pointer by several 
> >> inches.  X performance used
> >> to be surprisingly good on 5.5.
> >>
> >> I note the following lines in Xorg.0.log:
> >>
> >>> [    56.517] (--) RADEON(0): Chipset: "ATI Radeon Mobility 7000 IGP 4437" 
> >>> (ChipID = 0x4437)
> >>> [    56.519] (II) RADEON(0): GPU accel disabled or not working, using 
> >>> shadowfb for KMS
> >> fw_update reports no updates, (it does list a couple radeon entries as it 
> >> checks for firmware).
> >>
> >> Any clues as to what may be the issue here?  Is this fixable?
> > A full dmesg and Xorg.0.log would be helpful.  If you could try a snapshot
> > there are some changes in -current that may be relevant.
> >
> 
> The dmesg is as follows, and i suspect the Xorg log would be redundant, as 
> there seems to lines
> in the dmesg seem to suggest the problem happens fairly early.
> 
> Search for the line: drm: initializing kernel modesetting (RS200 
> 0x1002:0x4437 0x1179:0xFF10)
> It all goes gunnysack after that. 
> Thing is, I don't know what to do about that. 

There is no AGP driver for RS100/RS200/RS300 in the tree.

The commit to align the gart may help still:

diff --git sys/dev/pci/drm/radeon/radeon_gart.c 
sys/dev/pci/drm/radeon/radeon_gart.c
index 9de93f0..d17b676 100644
--- sys/dev/pci/drm/radeon/radeon_gart.c
+++ sys/dev/pci/drm/radeon/radeon_gart.c
@@ -75,8 +75,8 @@ int radeon_gart_table_ram_alloc(struct radeon_device *rdev)
                flags |= BUS_DMA_NOCACHE;
        }
 #endif
-       dmah = drm_dmamem_alloc(rdev->dmat, rdev->gart.table_size, 0,
-                               1, rdev->gart.table_size, flags, 0);
+       dmah = drm_dmamem_alloc(rdev->dmat, rdev->gart.table_size,
+           rdev->gart.table_size, 1, rdev->gart.table_size, flags, 0);
        if (dmah == NULL) {
                return -ENOMEM;
        }
diff --git sys/dev/pci/drm/radeon/rs400.c sys/dev/pci/drm/radeon/rs400.c
index ea320eb..45172b1 100644
--- sys/dev/pci/drm/radeon/rs400.c
+++ sys/dev/pci/drm/radeon/rs400.c
@@ -220,7 +220,7 @@ int rs400_gart_set_page(struct radeon_device *rdev, int i, 
uint64_t addr)
                return -EINVAL;
        }
 
-       entry = (lower_32_bits(addr) & PAGE_MASK) |
+       entry = (lower_32_bits(addr) & ~PAGE_MASK) |
                ((upper_32_bits(addr) & 0xff) << 4) |
                RS400_PTE_WRITEABLE | RS400_PTE_READABLE;
        entry = cpu_to_le32(entry);

Reply via email to