Git pull request: mach/vmalloc.h removal, and ioremap optimizations

Rob Herring robherring2 at gmail.com
Thu Sep 29 14:25:17 EDT 2011


On 09/29/2011 12:37 PM, Russell King - ARM Linux wrote:
> On Thu, Sep 29, 2011 at 10:59:21AM -0500, Rob Herring wrote:
>> commit e0438e2f333005c217a2f65aacab23a39261c64c
>> Author: Nicolas Pitre <nicolas.pitre at linaro.org>
>> Date:   Thu Aug 25 00:35:59 2011 -0400
>>
>>     ARM: move iotable mappings within the vmalloc region
>>
>>     In order to remove the build time variation between different SOCs with
>>     regards to VMALLOC_END, the iotable mappings are now allocated inside
>>     the vmalloc region.  This allows for VMALLOC_END to be identical across
>>     all machines.
>>
>>     The value for VMALLOC_END is now set to 0xff000000 which is right where
>>     the consistent DMA area starts.
>>
>>     To accommodate all static mappings on machines with possible highmem
>> usage,
>>     the default vmalloc area size is changed to 240 MB so that VMALLOC_START
>>     is no higher than 0xf0000000 by default in that case.
>>
>>     Signed-off-by: Nicolas Pitre <nicolas.pitre at linaro.org>
>>
>>
>> It dies after "Data cache writeback" with BUG at vmalloc.c:1139.
> 
> My guess would be:
> 
>         }, {
>                 .virtual        =  IO_ADDRESS(VERSATILE_SCTL_BASE),
>                 .pfn            = __phys_to_pfn(VERSATILE_SCTL_BASE),
>                 .length         = SZ_4K * 9,
>                 .type           = MT_DEVICE
>         },
> #ifdef CONFIG_MACH_VERSATILE_AB
>         {
>                 .virtual        =  IO_ADDRESS(VERSATILE_GPIO0_BASE),
>                 .pfn            = __phys_to_pfn(VERSATILE_GPIO0_BASE),
>                 .length         = SZ_4K,
>                 .type           = MT_DEVICE
> 
> #define VERSATILE_SCTL_BASE            0x101E0000	/* System controller */
> #define VERSATILE_GPIO0_BASE           0x101E4000	/* GPIO port 0 */
> 
> I don't see why GPIO0 is explicitly listed here.

It works for PB and AB with that removed. Here's a patch:

Author: Rob Herring <rob.herring at calxeda.com>
Date:   Thu Sep 29 13:18:29 2011 -0500

    ARM: versatile: remove overlapping map_desc entry

    The map_desc for VERSATILE_GPIO0_BASE overlaps with VERSATILE_SCTL_BASE.
    The overlapping entry can be removed.

    Signed-off-by: Rob Herring <rob.herring at calxeda.com>

diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index e340a54..4d8dfc1 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -141,11 +141,6 @@ static struct map_desc versatile_io_desc[]
__initdata = {
 	},
 #ifdef CONFIG_MACH_VERSATILE_AB
  	{
-		.virtual	=  IO_ADDRESS(VERSATILE_GPIO0_BASE),
-		.pfn		= __phys_to_pfn(VERSATILE_GPIO0_BASE),
-		.length		= SZ_4K,
-		.type		= MT_DEVICE
-	}, {
 		.virtual	=  IO_ADDRESS(VERSATILE_IB2_BASE),
 		.pfn		= __phys_to_pfn(VERSATILE_IB2_BASE),
 		.length		= SZ_64M,



More information about the linux-arm-kernel mailing list