linux-mips
[Top] [All Lists]

Re: [PATCH 2/2] MIPS: mm: Use scratch for PGD when !CONFIG_MIPS_PGD_C0_C

To: Jayachandran C <jchandra@broadcom.com>
Subject: Re: [PATCH 2/2] MIPS: mm: Use scratch for PGD when !CONFIG_MIPS_PGD_C0_CONTEXT
From: Ralf Baechle <ralf@linux-mips.org>
Date: Tue, 17 Sep 2013 23:21:13 +0200
Cc: linux-mips@linux-mips.org
In-reply-to: <1376221217-9335-3-git-send-email-jchandra@broadcom.com>
List-archive: <http://www.linux-mips.org/archives/linux-mips/>
List-help: <mailto:ecartis@linux-mips.org?Subject=help>
List-id: linux-mips <linux-mips.eddie.linux-mips.org>
List-owner: <mailto:ralf@linux-mips.org>
List-post: <mailto:linux-mips@linux-mips.org>
List-software: Ecartis version 1.0.0
List-subscribe: <mailto:ecartis@linux-mips.org?subject=subscribe%20linux-mips>
List-unsubscribe: <mailto:ecartis@linux-mips.org?subject=unsubscribe%20linux-mips>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <1376221217-9335-1-git-send-email-jchandra@broadcom.com> <1376221217-9335-3-git-send-email-jchandra@broadcom.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.21 (2010-09-15)
On Sun, Aug 11, 2013 at 05:10:17PM +0530, Jayachandran C wrote:

> Allow usage of scratch register for current pgd even when
> MIPS_PGD_C0_CONTEXT is not configured. MIPS_PGD_C0_CONTEXT is set
> for 64r2 platforms to indicate availability of Xcontext for saving
> cpuid, thus freeing Context to be used for saving PGD. This option
> was also tied to using a scratch register for storing PGD.
> 
> This commit will allow usage of scratch register to store the current
> pgd if one can be allocated for the platform, even when
> MIPS_PGD_C0_CONTEXT is not set. The cpuid will be kept in the CP0
> Context register in this case.
> 
> The code to store the current pgd for the TLB miss handler is now
> generated in all cases. When scratch register is available, the PGD
> is also stored in the scratch register.

This patch breaks the build for almost all platforms.  Amusingly it
doesn't break Cavium however which is why I didn't notice it right away.

The build error is the same for all platforms:

[...]
  LD      init/built-in.o
arch/mips/built-in.o: In function `per_cpu_trap_init':
(.text+0x80e4): undefined reference to `tlbmiss_handler_setup_pgd'
arch/mips/built-in.o: In function `build_setup_pgd':
tlbex.c:(.text+0xe31c): undefined reference to `tlbmiss_handler_setup_pgd'
tlbex.c:(.text+0xe328): undefined reference to `tlbmiss_handler_setup_pgd'
tlbex.c:(.text+0xe324): undefined reference to `tlbmiss_handler_setup_pgd_end'
tlbex.c:(.text+0xe32c): undefined reference to `tlbmiss_handler_setup_pgd_end'
kernel/built-in.o: In function `__schedule':
core.c:(.sched.text+0x1b74): undefined reference to `tlbmiss_handler_setup_pgd'
mm/built-in.o: In function `use_mm':
(.text+0x1a530): undefined reference to `tlbmiss_handler_setup_pgd'
fs/built-in.o: In function `flush_old_exec':
(.text+0x8da8): undefined reference to `tlbmiss_handler_setup_pgd'
make[2]: *** [vmlinux] Error 1
make[1]: *** [sub-make] Error 2
make: *** [all] Error 2
make: Leaving directory `/home/ralf/src/linux/obj/cobalt-build'

I'm reverting the patch now.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>