That didn't worked correctly any more and opened up a security problem.
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
 
        trace_radeon_vm_set_page(pe, addr, count, incr, flags);
 
-       /* XXX: How to distinguish between GART and other system memory pages? */
-       if (flags & R600_PTE_SYSTEM) {
+       if ((flags & R600_PTE_GART_MASK) == R600_PTE_GART_MASK) {
                uint64_t src = rdev->gart.table_addr + (addr >> 12) * 8;
                while (count) {
                        unsigned bytes = count * 8;
 
 #define R600_PTE_FRAG_64KB     (4 << 7)
 #define R600_PTE_FRAG_256KB    (6 << 7)
 
-/* flags used for GART page table entries on R600+ */
-#define R600_PTE_GART  ( R600_PTE_VALID | R600_PTE_SYSTEM | R600_PTE_SNOOPED \
-                       | R600_PTE_READABLE | R600_PTE_WRITEABLE)
+/* flags needed to be set so we can copy directly from the GART table */
+#define R600_PTE_GART_MASK     ( R600_PTE_READABLE | R600_PTE_WRITEABLE | \
+                                 R600_PTE_SYSTEM | R600_PTE_VALID )
 
 struct radeon_vm_pt {
        struct radeon_bo                *bo;
 
 
        trace_radeon_vm_set_page(pe, addr, count, incr, flags);
 
-       /* XXX: How to distinguish between GART and other system memory pages? */
-       if (flags & R600_PTE_SYSTEM) {
+       if ((flags & R600_PTE_GART_MASK) == R600_PTE_GART_MASK) {
                uint64_t src = rdev->gart.table_addr + (addr >> 12) * 8;
                while (count) {
                        unsigned bytes = count * 8;