Tegra30 work around broken firmware.

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

 



Good Morning,


I have an OUYA console that I am attempting to get the 4.14 kernel booted on.

It is a Tegra30-Cardhu based system, which from what I can tell had as many corners cut during development as possible.

I do not have access to the firmware itself, and the firmware does not support anything beyond 3.1.10, so I am using a kernel appended DTB.

The issue I'm running into right now is I cannot get the layer 2 cache controller, a PL310, to init correctly.

I can disable the function, and I boot till DMA starts accessing hardware and go into a hard lock.

If I have the L2C enabled, it kernel panics during L2c310_configure, while trying to write the secure registers.

I am pretty sure the firmware is not using secure mode at all, and in the cache-l2x0.c source the function states "By default, we write directly to secure registers.  Platforms must override this if they are running non-secure."

I unfortunately cannot figure out how to override this function.

I would like to keep all or as much as possible any code modification to the device tree and kernel configuration only.


Is there a way via the device tree to override secure mode?

I have included a full boot log up until the panic.

Very Respectfully,

Peter Geis


[bootloader] (built on Apr 16 2013, 16:46:06)
Initializing Display
Invalidate-only cache maint not supported in NvOs
Platform Pre Boot configuration...
SocCpuMaxKHz = 1000000
SocCpuMinKHz = 32
PLLX0 FreqKHz = 700000
Entering Fastboot based on booting mode configuration
Starting Fastboot USB download protocol
Key driver not found.. Booting OS
Cmd Rcvd: download:00870000
Response sent: DATA00870000

Response sent: OKAY
Cmd Rcvd: boot

Format partition USP
Region=0 SD Erase start 512B-sector=2686976,512B-sector-num=65536 Response sent: OKAY
Booting downloaded image
Platform Pre OS Boot configuration...
The proc BoardInfo: 0x0c5b:0x0b01:0x04:0x43:0x03
tegraid=30.1.3.0.0 mem=1022M@2048M commchip_id=0 androidboot.serialno=015d2d42dd 0fea0b androidboot.commchip_id=0 video=tegrafb no_console_suspend=1 console=ttyS 0,115200n8 debug_uartport=lsport,3 usbcore.old_scheme_first=1 lp0_vec=8192@0xbdd f9000 tegra_fbmem=8302080@0xacc23000 core_edp_mv=1300 audio_codec=wm8903 board_i nfo=c5b:b01:4:43:3 tegraboot=sdmmc gpt gpt_sector=15073279 android.kerneltype=no
rmal
Jumping to kernel at:5048 ms
Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 4.14.0+ (master@master-laptop) (gcc version 7.3.0 (Ubuntu/Linaro 7.3.0-1ubuntu1)) #83 SMP PRE8
CPU: ARMv7 Processor [412fc099] revision 9 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt: Machine model: NVIDIA Tegra30 Cardhu Ouya game console
bootconsole [earlycon0] enabled
Memory policy: Data cache writealloc
cma: Reserved 64 MiB at 0xbc000000
random: fast init done
percpu: Embedded 17 pages/cpu @ef79d000 s39436 r8192 d22004 u69632
Built 1 zonelists, mobility grouping on.  Total pages: 260608
Kernel command line: earlycon=lsport,3 no_console_suspend=1 console=ttyS3,115200n8 earlyprintk kgdboc=ttyS3t
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 957388K/1048576K available (8747K kernel code, 764K rwdata, 2476K rodata, 568K init, 651K bss, 2565)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
    lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc089306c   (8749 kB)
      .init : 0xc0b3c000 - 0xc0bca000   ( 568 kB)
      .data : 0xc0bca000 - 0xc0c89248   ( 765 kB)
       .bss : 0xc0c917e0 - 0xc0d344ac   ( 652 kB)
Preemptible hierarchical RCU implementation.
        Tasks RCU enabled.
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
/interrupt-controller@60004000: 160 interrupts forwarded to /interrupt-controller@50041000
L2C: platform modifies aux control register: 0x2c080000 -> 0x3c480001
L2C: DT/platform modifies aux control register: 0x2c080000 -> 0x3c480001
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310: enabling full line of zeros but not enabled in Cortex-A9
Unhandled fault: imprecise external abort (0xc06) at 0x40431dd0
pgd = c0004000
[40431dd0] *pgd=00000000
Internal error: : c06 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.14.0+ #83
Hardware name: NVIDIA Tegra SoC (Flattened Device Tree)
task: c0bd1640 task.stack: c0bca000
PC is at l2c310_configure+0x188/0x19c
LR is at l2c_enable+0xf0/0x100
pc : [<c0022dc0>]    lr : [<c002263c>]    psr: 600000d3
sp : c0bcbeb8  ip : 00000020  fp : c0ab1c60
r10: 4100c090  r9 : c0c91c48  r8 : 00000008
r7 : 00000008  r6 : c0ab1c60  r5 : fe443000  r4 : c0c91c48
r3 : 00000000  r2 : 00000001  r1 : 00000008  r0 : 7c480001
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment none
Control: 10c5387d  Table: 8000404a  DAC: 00000051
Process swapper/0 (pid: 0, stack limit = 0xc0bca210)
Stack: (0xc0bcbeb8 to 0xc0bcc000)
bea0: c0c91c48 fe443000
bec0: c0ab1c60 c002263c 7c480001 fe443000 00000000 00000007 00000008 c0b438e4 bee0: 410000c7 c007ea78 c0c91c48 3c480001 c0bb4b80 00000008 410000c7 c0b436f4 bf00: 00100000 c0b44510 ef0000c0 00000000 c0bcaa34 c0022664 c00226cc c0022714 bf20: c0023244 c00230f8 c002275c c0023214 00000000 00000000 c0bb4b80 c0c91c48 bf40: 410000c7 c0bb4b80 00000000 3c400001 c20fc3fe c0ba6a28 00000000 c0b44878 bf60: 00000000 c0158100 c20fc3fe 3c400001 c0bcbf80 00000002 50043000 50043fff bf80: ef7e6b94 00000200 00000000 00000000 00000000 00000000 c0c91800 c0ba6a18 bfa0: c0c91800 c0bcdc40 ffffffff c0c91800 efffcc00 c0b3e72c 00000001 c0b3cb14 bfc0: ffffffff ffffffff 00000000 c0b3c674 00000000 c0ba6a28 c0c91a94 c0bcdc58 bfe0: c0ba6a24 c0bd2b58 8000406a 412fc099 00000000 8000807c 00000000 00000000
[<c0022dc0>] (l2c310_configure) from [<c002263c>] (l2c_enable+0xf0/0x100)
[<c002263c>] (l2c_enable) from [<c0b438e4>] (l2c310_enable+0x108/0x1fc)
[<c0b438e4>] (l2c310_enable) from [<c0b44510>] (__l2c_init.part.6+0x194/0x224) [<c0b44510>] (__l2c_init.part.6) from [<c0b44878>] (l2x0_of_init+0x238/0x248)
[<c0b44878>] (l2x0_of_init) from [<c0b3e72c>] (init_IRQ+0x60/0x80)
[<c0b3e72c>] (init_IRQ) from [<c0b3cb14>] (start_kernel+0x24c/0x3a0)
[<c0b3cb14>] (start_kernel) from [<8000807c>] (0x8000807c)
Code: eaffffc5 e5850108 eaffffb8 e5850104 (eaffffab)
---[ end trace 8c862aec2896b62e ]---
Kernel panic - not syncing: Attempted to kill the idle task!
---[ end Kernel panic - not syncing: Attempted to kill the idle task!


--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux