Re: [PATCH] sparc: Access kernel TSB using physical addressing when possible.

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

 



Hi David.
  
> diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
> index 94a9548..0e16056 100644
> --- a/arch/sparc/kernel/vmlinux.lds.S
> +++ b/arch/sparc/kernel/vmlinux.lds.S
> @@ -107,6 +107,16 @@ SECTIONS
>  		*(.sun4v_2insn_patch)
>  		__sun4v_2insn_patch_end = .;
>  	}
> +	.swapper_tsb_phys_patch : {
> +		__swapper_tsb_phys_patch = .;
> +		*(.swapper_tsb_phys_patch)
> +		__swapper_tsb_phys_patch_end = .;
> +	}
> +	.swapper_4m_tsb_phys_patch : {
> +		__swapper_4m_tsb_phys_patch = .;
> +		*(.swapper_4m_tsb_phys_patch)
> +		__swapper_4m_tsb_phys_patch_end = .;
> +	}
>  	.popc_3insn_patch : {
>  		__popc_3insn_patch = .;
>  		*(.popc_3insn_patch)
> diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
> index 3fd8e18..adfac23 100644
> --- a/arch/sparc/mm/init_64.c
> +++ b/arch/sparc/mm/init_64.c
> @@ -1597,6 +1597,42 @@ static void __init tsb_phys_patch(void)
>  static struct hv_tsb_descr ktsb_descr[NUM_KTSB_DESCR];
>  extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES];
>  
> +static void patch_one_ktsb_phys(unsigned int *start, unsigned int *end, unsigned long pa)
> +{
> +	pa >>= KTSB_PHYS_SHIFT;
> +
> +	while (start < end) {
> +		unsigned int *ia = (unsigned int *)(unsigned long)*start;
> +
> +		ia[0] = (ia[0] & ~0x3fffff) | (pa >> 10);
> +		__asm__ __volatile__("flush	%0" : : "r" (ia));
> +
> +		ia[1] = (ia[1] & ~0x3ff) | (pa & 0x3ff);
> +		__asm__ __volatile__("flush	%0" : : "r" (ia + 1));
> +
> +		start++;
> +	}
> +}
> +
> +static void ktsb_phys_patch(void)
> +{
> +	extern unsigned int __swapper_tsb_phys_patch;
> +	extern unsigned int __swapper_tsb_phys_patch_end;
> +	extern unsigned int __swapper_4m_tsb_phys_patch;
> +	extern unsigned int __swapper_4m_tsb_phys_patch_end;


Having all the extern definitions from vmlinux.lds located in
arch/sparc/include/asm/sections.h would IMO be more obvious.

I did not try to review the actual patch, I only stumbled on this bit.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux