From 26b33763ab066b8ddd656def6850de83a5c16498 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Thu, 9 Oct 2008 07:41:24 +0000 Subject: linux omap git: add patch to fix irq -33 problem --- packages/linux/linux-omap/fix-irq33.diff | 111 +++++++++++++++++++++++++++++++ packages/linux/linux-omap_git.bb | 3 +- 2 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 packages/linux/linux-omap/fix-irq33.diff (limited to 'packages') diff --git a/packages/linux/linux-omap/fix-irq33.diff b/packages/linux/linux-omap/fix-irq33.diff new file mode 100644 index 0000000000..709f042ab7 --- /dev/null +++ b/packages/linux/linux-omap/fix-irq33.diff @@ -0,0 +1,111 @@ +From: "Nathan Monson" +To: "linux-omap@vger.kernel.org List" +Subject: Re: omapfb: help from userspace +Cc: "TK, Pratheesh Gangadhar" + +On Wed, Oct 8, 2008 at 11:36 AM, Nathan Monson wrote: +> "Felipe Contreras" 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... + +--- +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@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb index a81cec89aa..14de954e7c 100644 --- a/packages/linux/linux-omap_git.bb +++ b/packages/linux/linux-omap_git.bb @@ -9,7 +9,7 @@ COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard| SRCREV = "e1c49d7d22af768188e2a54c167ed79919361e55" PV = "2.6.26+2.6.27-rc7+${PR}+git${SRCREV}" -PR = "r13" +PR = "r14" SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \ file://defconfig" @@ -35,6 +35,7 @@ SRC_URI_append = " \ file://mru-256MB.diff;patch=1 \ file://musb-fix-endpoints.diff;patch=1 \ file://dvb-fix-dma.diff;patch=1 \ + file://fix-irq33.diff;patch=1 \ " -- cgit v1.2.3