On Fri, 2005-02-04 at 22:06 -0800, David S. Miller wrote:
> On Fri, 04 Feb 2005 16:40:27 -0600
> "Tom 'spot' Callaway" <[EMAIL PROTECTED]> wrote:
>
> > My SS20 with a CG6 (TGX+) works fine in 2.4. When I attempt to run Xorg
> > in 2.6 (specifically, 2.6.11-rc2-bk3), the Xorg.0.log claims that it is
> > running, but the kernel has actually oopsed:
>
> > Removing the if (srmmu_device_memory(pte_val(pte))) check stops the
> > oops, but it doesn't make X work. The screen goes blank, but the X
> > session never appears.
>
> Remove the BUG() instead, and let it return ~0. That makes it
> so that copy_page_range() just copies device ptes over instead
> of trying to lookup pages and stuff using the pfn. The idea is
> to return a bogus pfn so that pfn_valid() on it fails.
Patch attached which does this... however, it does not fix Xorg, it
simply stops the oops. Also confirmed that a cg3 doesn't work any better
than a cg6. Any other ideas?
Signed-off-by: Tom 'spot' Callaway <[EMAIL PROTECTED]>
~spot
---
Tom "spot" Callaway <tcallawa(a)redhat*com> LCA, RHCE
Red Hat Sales Engineer || Aurora Linux Project Leader
"If you are going through hell, keep going."
-- Sir Winston Churchill
--- linux-2.6.10/arch/sparc/mm/srmmu.c.BAD 2005-02-05 09:30:14.238512182 -0500
+++ linux-2.6.10/arch/sparc/mm/srmmu.c 2005-02-05 09:30:50.177048694 -0500
@@ -133,11 +133,7 @@
static unsigned long srmmu_pte_pfn(pte_t pte)
{
if (srmmu_device_memory(pte_val(pte))) {
- /* XXX Anton obviously had something in mind when he did this.
- * But what?
- */
- /* return (struct page *)~0; */
- BUG();
+ return ~0;
}
return (pte_val(pte) & SRMMU_PTE_PMASK) >> (PAGE_SHIFT-4);
}