Commit acb7f883 authored by Nathan Monson's avatar Nathan Monson Committed by Tony Lindgren

Add MT_MEMORY_SO, mark L3 and L4 to use it

On Wed, Oct 8, 2008 at 11:36 AM, Nathan Monson <nmonson@gmail.com> wrote:
> "Felipe Contreras" <felipe.contreras@gmail.com> 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...
Signed-off-by: default avatarNathan Monson <nmonson@gmail.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent c61516af
...@@ -25,6 +25,7 @@ struct map_desc { ...@@ -25,6 +25,7 @@ struct map_desc {
#define MT_HIGH_VECTORS 8 #define MT_HIGH_VECTORS 8
#define MT_MEMORY 9 #define MT_MEMORY 9
#define MT_ROM 10 #define MT_ROM 10
#define MT_MEMORY_SO 11
#define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED
#define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000
......
...@@ -119,13 +119,13 @@ static struct map_desc omap34xx_io_desc[] __initdata = { ...@@ -119,13 +119,13 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
.virtual = L3_34XX_VIRT, .virtual = L3_34XX_VIRT,
.pfn = __phys_to_pfn(L3_34XX_PHYS), .pfn = __phys_to_pfn(L3_34XX_PHYS),
.length = L3_34XX_SIZE, .length = L3_34XX_SIZE,
.type = MT_DEVICE .type = MT_MEMORY_SO
}, },
{ {
.virtual = L4_34XX_VIRT, .virtual = L4_34XX_VIRT,
.pfn = __phys_to_pfn(L4_34XX_PHYS), .pfn = __phys_to_pfn(L4_34XX_PHYS),
.length = L4_34XX_SIZE, .length = L4_34XX_SIZE,
.type = MT_DEVICE .type = MT_MEMORY_SO
}, },
{ {
.virtual = L4_WK_34XX_VIRT, .virtual = L4_WK_34XX_VIRT,
...@@ -137,19 +137,19 @@ static struct map_desc omap34xx_io_desc[] __initdata = { ...@@ -137,19 +137,19 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
.virtual = OMAP34XX_GPMC_VIRT, .virtual = OMAP34XX_GPMC_VIRT,
.pfn = __phys_to_pfn(OMAP34XX_GPMC_PHYS), .pfn = __phys_to_pfn(OMAP34XX_GPMC_PHYS),
.length = OMAP34XX_GPMC_SIZE, .length = OMAP34XX_GPMC_SIZE,
.type = MT_DEVICE .type = MT_MEMORY_SO
}, },
{ {
.virtual = OMAP343X_SMS_VIRT, .virtual = OMAP343X_SMS_VIRT,
.pfn = __phys_to_pfn(OMAP343X_SMS_PHYS), .pfn = __phys_to_pfn(OMAP343X_SMS_PHYS),
.length = OMAP343X_SMS_SIZE, .length = OMAP343X_SMS_SIZE,
.type = MT_DEVICE .type = MT_MEMORY_SO
}, },
{ {
.virtual = OMAP343X_SDRC_VIRT, .virtual = OMAP343X_SDRC_VIRT,
.pfn = __phys_to_pfn(OMAP343X_SDRC_PHYS), .pfn = __phys_to_pfn(OMAP343X_SDRC_PHYS),
.length = OMAP343X_SDRC_SIZE, .length = OMAP343X_SDRC_SIZE,
.type = MT_DEVICE .type = MT_MEMORY_SO
}, },
{ {
.virtual = L4_PER_34XX_VIRT, .virtual = L4_PER_34XX_VIRT,
...@@ -161,7 +161,7 @@ static struct map_desc omap34xx_io_desc[] __initdata = { ...@@ -161,7 +161,7 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
.virtual = L4_EMU_34XX_VIRT, .virtual = L4_EMU_34XX_VIRT,
.pfn = __phys_to_pfn(L4_EMU_34XX_PHYS), .pfn = __phys_to_pfn(L4_EMU_34XX_PHYS),
.length = L4_EMU_34XX_SIZE, .length = L4_EMU_34XX_SIZE,
.type = MT_DEVICE .type = MT_MEMORY_SO
}, },
}; };
#endif #endif
......
...@@ -245,6 +245,10 @@ static struct mem_type mem_types[] = { ...@@ -245,6 +245,10 @@ static struct mem_type mem_types[] = {
.prot_sect = PMD_TYPE_SECT, .prot_sect = PMD_TYPE_SECT,
.domain = DOMAIN_KERNEL, .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) const struct mem_type *get_mem_type(unsigned int type)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment