lkml.org 
[lkml]   [2013]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 11/52] ARM: footbridge: fix VGA initialisation
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Russell King <rmk+kernel@arm.linux.org.uk>

    commit 43659222e7a0113912ed02f6b2231550b3e471ac upstream.

    It's no good setting vga_base after the VGA console has been
    initialised, because if we do that we get this:

    Unable to handle kernel paging request at virtual address 000b8000
    pgd = c0004000
    [000b8000] *pgd=07ffc831, *pte=00000000, *ppte=00000000
    0Internal error: Oops: 5017 [#1] ARM
    Modules linked in:
    CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.0+ #49
    task: c03e2974 ti: c03d8000 task.ti: c03d8000
    PC is at vgacon_startup+0x258/0x39c
    LR is at request_resource+0x10/0x1c
    pc : [<c01725d0>] lr : [<c0022b50>] psr: 60000053
    sp : c03d9f68 ip : 000b8000 fp : c03d9f8c
    r10: 000055aa r9 : 4401a103 r8 : ffffaa55
    r7 : c03e357c r6 : c051b460 r5 : 000000ff r4 : 000c0000
    r3 : 000b8000 r2 : c03e0514 r1 : 00000000 r0 : c0304971
    Flags: nZCv IRQs on FIQs off Mode SVC_32 ISA ARM Segment kernel

    which is an access to the 0xb8000 without the PCI offset required to
    make it work.

    Fixes: cc22b4c18540 ("ARM: set vga memory base at run-time")
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/arm/mach-footbridge/common.c | 3 +++
    arch/arm/mach-footbridge/dc21285.c | 2 --
    2 files changed, 3 insertions(+), 2 deletions(-)

    --- a/arch/arm/mach-footbridge/common.c
    +++ b/arch/arm/mach-footbridge/common.c
    @@ -15,6 +15,7 @@
    #include <linux/init.h>
    #include <linux/io.h>
    #include <linux/spinlock.h>
    +#include <video/vga.h>

    #include <asm/pgtable.h>
    #include <asm/page.h>
    @@ -196,6 +197,8 @@ void __init footbridge_map_io(void)
    iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc));
    pci_map_io_early(__phys_to_pfn(DC21285_PCI_IO));
    }
    +
    + vga_base = PCIMEM_BASE;
    }

    void footbridge_restart(char mode, const char *cmd)
    --- a/arch/arm/mach-footbridge/dc21285.c
    +++ b/arch/arm/mach-footbridge/dc21285.c
    @@ -18,7 +18,6 @@
    #include <linux/irq.h>
    #include <linux/io.h>
    #include <linux/spinlock.h>
    -#include <video/vga.h>

    #include <asm/irq.h>
    #include <asm/mach/pci.h>
    @@ -291,7 +290,6 @@ void __init dc21285_preinit(void)
    int cfn_mode;

    pcibios_min_mem = 0x81000000;
    - vga_base = PCIMEM_BASE;

    mem_size = (unsigned int)high_memory - PAGE_OFFSET;
    for (mem_mask = 0x00100000; mem_mask < 0x10000000; mem_mask <<= 1)



    \
     
     \ /
      Last update: 2013-12-10 11:41    [W:7.414 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site