[BUG sparc64] 2.6.16-git6 broke X11 on Ultra5 with ATI Mach64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In 2.6.17 sparc64 kernels, X11 runs _extremely_ slowly with
frequent lock-up like behaviour on my Ultra5 (ATI Mach64).

I finally managed to trace the cause to this change in 2.6.16-git6:

diff --git a/arch/sparc64/mm/generic.c b/arch/sparc64/mm/generic.c
index 580b63d..8cb0620 100644
--- a/arch/sparc64/mm/generic.c
+++ b/arch/sparc64/mm/generic.c
@@ -144,7 +140,6 @@ int io_remap_pfn_range(struct vm_area_st
 	vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
 	vma->vm_pgoff = phys_base >> PAGE_SHIFT;
 
-	prot = __pgprot(pg_iobits);
 	offset -= from;
 	dir = pgd_offset(mm, from);
 	flush_cache_range(vma, beg, end);

Reverting this patch fixes my X11 problems.

Adding a debug printk and a dump_stack there, plus a hack to
sys_mmap() to store away its parameters, shows:

io_remap_pfn_range: prot 0x8000000000000788, pg_iobits 0x8000000000000f8a, mmap() in 1961(X), prot 0x3, flags 0x1
Call Trace:
 [00000000004eb9a0] proc_bus_pci_mmap+0x38/0x54
 [000000000047122c] do_mmap_pgoff+0x474/0x674
 [000000000041f02c] sys_mmap+0x178/0x1b0
 [00000000004069d4] linux_sparc_syscall32+0x34/0x40
 [0000000000072b78] 0x72b78

I.e., X did a simple PROT_READ|PROT_WRITE MAP_SHARED mmap() of
something PCI-related, presumably the ATI card. The protection
bits passed into io_remap_pfn_range() are 0x80...0788, while
pg_iobits are 0x80...0f8a. Current kernels obey the prot bits,
which, if I read things correctly, means that _PAGE_W_4U and
_PAGE_MODIFIED_4U don't get set any more.

I guess something else in the kernel should have set those
bits before they got to io_remap_pfn_range()?

/Mikael
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux