Subject: swapon failure with au1550

From: "Bob Breuer" <[email-masked]>
Date: Tue, 15 Feb 2005 17:09:13 -0600

With the current cvs on an au1550 configured with 64-bit physical
address, I get a kernel oops when trying to activate a swap partition
with swapon.

It looks like mm/swapfile.c line 1385 is hitting the BUG_ON() in both
pte_to_swp_entry() and swp_entry_to_pte().

Bob Breuer

---

From: "Bob Breuer" <[email-masked]>
Date: Tue, 22 Feb 2005 16:20:28 -0600

The bitmask in a pte for swap type is 0x0000_1f00.  In the CPU_MIPS32 &&
64BIT_PHYS_ADDR case, _PAGE_FILE is 0x0000_0400.  Since _PAGE_FILE is
set in the maxed out swap type, it triggers a BUG().

If I move the swap type field like this:
  #define __swp_type(x)  (((x).val >> 2) & 0x0f)
then it works for me.  This makes use of the _PAGE_DIRTY and _CACHE_MASK
bits which were being used in the !64BIT_PHYS_ADDR case.

Is this a reasonable solution, or should a different grouping of bits be
used?

Bob Breuer