Re: omapfb: help from userspace

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

 



* Nathan Monson <nmonson@xxxxxxxxx> [081008 13:22]:
> On Wed, Oct 8, 2008 at 11:36 AM, Nathan Monson <nmonson@xxxxxxxxx> wrote:
> > "Felipe Contreras" <felipe.contreras@xxxxxxxxx> writes:
> >> irq -33, desc: c0335cf8, depth: 0, count: 0, unhandled: 0
> >
> > On the BeagleBoard list, Pratheesh Gangadhar said that mapping I/O
> > regions as Strongly Ordered suppresses this problem:
> > http://groups.google.com/group/beagleboard/browse_thread/thread/23e1c95b4bfb09b5/70d12dca569ca503?show_docid=70d12dca569ca503
> 
> Pratheesh helped me make a patch against the latest linux-omap git to
> try this.
> 
> With this patch, my IRQ -33 problems with the DSP have disappeared.
> Before, I would end up in IRQ -33 loop after 10 invocations of the DSP
> Bridge 'ping.out' utility.  I just finished running it 50,000 times
> without error.
> 
> As stated before, this patch is just a workaround for testing
> purposes, not a fix.  Who knows what performance side effects it
> has...

OK, pushed this for now until we know if there's a better solution.

Tony

> 
> ---
> diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
> index 9eb936e..5cb4f5f 100644
> --- a/arch/arm/include/asm/mach/map.h
> +++ b/arch/arm/include/asm/mach/map.h
> @@ -25,6 +25,7 @@ struct map_desc {
>  #define MT_HIGH_VECTORS		8
>  #define MT_MEMORY		9
>  #define MT_ROM			10
> +#define MT_MEMORY_SO		11
> 
>  #define MT_NONSHARED_DEVICE	MT_DEVICE_NONSHARED
>  #define MT_IXP2000_DEVICE	MT_DEVICE_IXP2000
> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> index adbe21f..c11c0e8 100644
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -119,13 +119,13 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
>  		.virtual	= L3_34XX_VIRT,
>  		.pfn		= __phys_to_pfn(L3_34XX_PHYS),
>  		.length		= L3_34XX_SIZE,
> -		.type		= MT_DEVICE
> +		.type		= MT_MEMORY_SO
>  	},
>  	{
>  		.virtual	= L4_34XX_VIRT,
>  		.pfn		= __phys_to_pfn(L4_34XX_PHYS),
>  		.length		= L4_34XX_SIZE,
> -		.type		= MT_DEVICE
> +		.type		= MT_MEMORY_SO
>  	},
>  	{
>  		.virtual	= L4_WK_34XX_VIRT,
> @@ -137,19 +137,19 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
>  		.virtual	= OMAP34XX_GPMC_VIRT,
>  		.pfn		= __phys_to_pfn(OMAP34XX_GPMC_PHYS),
>  		.length		= OMAP34XX_GPMC_SIZE,
> -		.type		= MT_DEVICE
> +		.type		= MT_MEMORY_SO
>  	},
>  	{
>  		.virtual	= OMAP343X_SMS_VIRT,
>  		.pfn		= __phys_to_pfn(OMAP343X_SMS_PHYS),
>  		.length		= OMAP343X_SMS_SIZE,
> -		.type		= MT_DEVICE
> +		.type		= MT_MEMORY_SO
>  	},
>  	{
>  		.virtual	= OMAP343X_SDRC_VIRT,
>  		.pfn		= __phys_to_pfn(OMAP343X_SDRC_PHYS),
>  		.length		= OMAP343X_SDRC_SIZE,
> -		.type		= MT_DEVICE
> +		.type		= MT_MEMORY_SO
>  	},
>  	{
>  		.virtual	= L4_PER_34XX_VIRT,
> @@ -161,7 +161,7 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
>  		.virtual	= L4_EMU_34XX_VIRT,
>  		.pfn		= __phys_to_pfn(L4_EMU_34XX_PHYS),
>  		.length		= L4_EMU_34XX_SIZE,
> -		.type		= MT_DEVICE
> +		.type		= MT_MEMORY_SO
>  	},
>  };
>  #endif
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index a713e40..d5f25ad 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -245,6 +245,10 @@ static struct mem_type mem_types[] = {
>  		.prot_sect = PMD_TYPE_SECT,
>  		.domain    = DOMAIN_KERNEL,
>  	},
> +	[MT_MEMORY_SO] = {
> +		.prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_UNCACHED,
> +		.domain    = DOMAIN_KERNEL,
> +	},
>  };
> 
>  const struct mem_type *get_mem_type(unsigned int type)
> --
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux