[#5704] fail to xip_test on bf537-stamp mpu kernel
Submitted By: Vivi Li
Open Date
2009-11-19 02:51:40 Close Date
2010-01-07 21:51:59
Priority:
Medium High Assignee:
Barry Song
Status:
Closed Fixed In Release:
N/A
Found In Release:
2010R1 Release:
Category:
Tests Board:
STAMP
Processor:
BF537 Silicon Revision:
Is this bug repeatable?:
Yes Resolution:
Fixed
Uboot version or rev.:
Toolchain version or rev.:
gcc4.3-trunk
App binary format:
N/A
Summary: fail to xip_test on bf537-stamp mpu kernel
Details:
Run xip test on bf537-stamp mpu kernel, xip_test fails to execute on flash and shows "CPLB miss" error.
It happens for both fdpic and shared-flat format.
Config files are attached. Bellow is the log for fdpic format:
--
/home/test/work/cruise/checkouts/uclinux-dist/user/genromfs/genromfs -f ../../images/img.romfs -d /home/test/work/cruise/checkouts/uclinux-dist/user/blkfin-test/xip_test
cp /home/test/work/cruise/checkouts/uclinux-dist/images/img.romfs /tftpboot
U-Boot 2008.10-svn1956 (ADI-2009R1-rc2) (Jul 2 2009 - 20:05:22)^M
^M
CPU: ADSP bf537-0.2 (Detected Rev: 0.3) (bypass boot)^M
Board: ADI BF537 stamp board^M
Support: http://blackfin.uclinux.org/^M
Clock: VCO: 500 MHz, Core: 500 MHz, System: 125 MHz^M
RAM: 64 MB^M
Flash: 4 MB^M
In: serial^M
Out: serial^M
Err: serial^M
Net: Blackfin EMAC^M
MAC: 00:E0:22:FE:58:9C^M
Hit any key to stop autoboot: 5 ^H^H^H 0 ^M
bfin> successful reset attemp
tftpboot 0x1000000 img.romfs^M
Using Blackfin EMAC device^M
TFTP from server 10.100.4.174; our IP address is 10.100.4.50^M
Filename 'img.romfs'.^M
Load address: 0x1000000^M
Loading: *^H#^M
done^M
Bytes transferred = 14336 (3800 hex)^M
bfin> protect off 0x201c0000 0x2020ffff^M
..... done^M
Un-Protected 5 sectors^M
bfin> erase 0x201c0000 0x2020ffff^M
^M
..... done^M
Erased 5 sectors^M
bfin> cp.b 0x1000000 0x201c0000 0x3800^M
Copy to Flash... done^M
bfin> reset
U-Boot 2008.10-svn1956 (ADI-2009R1-rc2) (Jul 2 2009 - 20:05:22)^M
^M
CPU: ADSP bf537-0.2 (Detected Rev: 0.3) (bypass boot)^M
Board: ADI BF537 stamp board^M
Support: http://blackfin.uclinux.org/^M
Clock: VCO: 500 MHz, Core: 500 MHz, System: 125 MHz^M
RAM: 64 MB^M
RAM size is 64 MB.
Flash: 4 MB^M
In: serial^M
Out: serial^M
Err: serial^M
Net: Blackfin EMAC^M
MAC: 00:E0:22:FE:58:9C^M
Hit any key to stop autoboot: 5 ^H^H^H 0 ^M
bfin> set bootargs root=/dev/mtdblock0 rw ip=10.100.4.50 earlyprintk=serial,uart0,57600 console=ttyBF0,57600^M
bfin> set serverip 10.100.4.174^M
bfin> set ipaddr 10.100.4.50^M
bfin> save^M
Saving Environment to Flash...^M
. done^M
Un-Protected 1 sectors^M
Erasing Flash...^M
. done^M
Erased 1 sectors^M
Writing to Flash... done^M
. done^M
Protected 1 sectors^M
bfin> ^M
bfin> tftpboot 0x2000000 uImage^M
Using Blackfin EMAC device^M
TFTP from server 10.100.4.174; our IP address is 10.100.4.50^M
Filename 'uImage'.^M
Load address: 0x2000000^M
Loading: *^H#################################################################^M
#################################################################^M
#################################################################^M
#################################################################^M
#######^M
done^M
Bytes transferred = 3905479 (3b97c7 hex)^M
Image size is 3b97c7
bfin> run addip^M
bfin> bootm^M
## Booting kernel from Legacy Image at 02000000 ...^M
Image Name: bf537-2.6.31.6-ADI-2010R1-pre-sv^M
Created: 2009-11-18 3:19:08 UTC^M
Image Type: Blackfin Linux Kernel Image (gzip compressed)^M
Data Size: 3905415 Bytes = 3.7 MB^M
Load Address: 00001000^M
Entry Point: 00195690^M
Verifying Checksum ... OK^M
Uncompressing Kernel Image ... OK^M
Starting Kernel at = 00195690^M
Linux version 2.6.31.6-ADI-2010R1-pre-svn7831 (test@uclinux74-mpu) (gcc version 4.3.4 (ADI-trunk/svn-3679) ) #46 Wed Nov 18 03:18:59 GMT 2009^M
register early platform devices^M
bootconsole [early_shadow0] enabled^M
bootconsole [early_BFuart0] enabled^M
early printk enabled on early_BFuart0^M
Board Memory: 64MB^M
Kernel Managed Memory: 64MB^M
Memory map:^M
fixedcode = 0x00000400-0x00000490^M
text = 0x00001000-0x00111df0^M
rodata = 0x00111df0-0x00167f48^M
bss = 0x00168000-0x00178a9c^M
data = 0x00178a9c-0x0018a000^M
stack = 0x00188000-0x0018a000^M
init = 0x0018a000-0x00796000^M
available = 0x00796000-0x03eff000^M
DMA Zone = 0x03f00000-0x04000000^M
Hardware Trace Active and Enabled^M
Boot Mode: 0^M
Reset caused by Software reset^M
Blackfin support (C) 2004-2009 Analog Devices, Inc.^M
Compiled for ADSP-BF537 Rev 0.3^M
Blackfin Linux support by http://blackfin.uclinux.org/^M
Processor Speed: 500 MHz core clock and 125 MHz System Clock^M
MPU: setting up cplb tables with memory protection^M
Instruction Cache Enabled for CPU0^M
External memory: cacheable in instruction cache^M
Data Cache Enabled for CPU0^M
External memory: cacheable (write-back) in data cache^M
Built 1 zonelists in Zone order, mobility grouping off. Total pages: 16001^M
Kernel command line: root=/dev/mtdblock0 rw ip=10.100.4.50 earlyprintk=serial,uart0,57600 console=ttyBF0,57600 ip=10.100.4.50:10.100.4.174:10.100.4.174:255.255.255.0:bf537-stamp:eth0:off^M
PID hash table entries: 256 (order: 8, 1024 bytes)^M
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)^M
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)^M
Memory available: 55748k/65536k RAM, (6192k init code, 1091k kernel code, 481k data, 1024k dma, 996k reserved)^M
NR_IRQS:98^M
Configuring Blackfin Priority Driven Interrupts^M
console [ttyBF0] enabled, bootconsole disabled^M
console [ttyBF0] enabled, bootconsole disabled^M
Calibrating delay loop... 997.37 BogoMIPS (lpj=1994752)^M
Security Framework initialized^M
Mount-cache hash table entries: 512^M
Blackfin Scratchpad data SRAM: 4 KB^M
Blackfin L1 Data A SRAM: 16 KB (16 KB free)^M
Blackfin L1 Data B SRAM: 16 KB (16 KB free)^M
Blackfin L1 Instruction SRAM: 48 KB (36 KB free)^M
NET: Registered protocol family 16^M
Blackfin DMA Controller^M
stamp_init(): registering device resources^M
bio: create slab <bio-0> at 0^M
NET: Registered protocol family 2^M
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)^M
TCP established hash table entries: 2048 (order: 2, 16384 bytes)^M
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)^M
TCP: Hash tables configured (established 2048 bind 2048)^M
TCP reno registered^M
NET: Registered protocol family 1^M
ROMFS MTD (C) 2007 Red Hat, Inc.^M
msgmni has been set to 108^M
io scheduler noop registered^M
io scheduler anticipatory registered (default)^M
io scheduler cfq registered^M
bfin-uart: Blackfin serial driver^M
bfin-uart.0: ttyBF0 at MMIO 0xffc00400 (irq = 18) is a BFIN-UART^M
brd: module loaded^M
bfin_mii_bus: probed^M
bfin_mac: attached PHY driver [SMSC LAN83C185] (mii_bus:phy_addr=0:01, irq=-1, mdc_clk=2500000Hz(mdc_div=24)@sclk=125MHz)^M
bfin_mac bfin_mac.0: Blackfin on-chip Ethernet MAC driver, Version 1.1^M
physmap platform flash device: 00400000 at 20000000^M
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank^M
Amd/Fujitsu Extended Query Table at 0x0040^M
number of CFI chips: 1^M
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.^M
RedBoot partition parsing not available^M
Using physmap partition information^M
Creating 4 MTD partitions on "physmap-flash.0":^M
0x000000000000-0x000000040000 : "bootloader(nor)"^M
0x000000040000-0x0000001c0000 : "linux kernel(nor)"^M
0x0000001c0000-0x0000003f0000 : "file system(nor)"^M
0x0000003f0000-0x000000400000 : "MAC Address(nor)"^M
bfin-spi bfin-spi.0: Blackfin on-chip SPI Controller Driver, Version 1.0, regs_base@ffc00500, dma channel@7^M
rtc-bfin rtc-bfin: rtc core: registered rtc-bfin as rtc0^M
bfin-wdt: initialized: timeout=20 sec (nowayout=0)^M
TCP cubic registered^M
NET: Registered protocol family 17^M
rtc-bfin rtc-bfin: setting system clock to 2004-05-31 09:16:31 UTC (1085994991)^M
IP-Config: Complete:^M
device=eth0, addr=10.100.4.50, mask=255.255.255.0, gw=10.100.4.174,^M
host=bf537-stamp, domain=, nis-domain=(none),^M
bootserver=10.100.4.174, rootserver=10.100.4.174, rootpath=^M
dma_alloc_init: dma_page @ 0x0281b000 - 256 pages at 0x03f00000^M
BusyBox v1.15.2 (2009-11-18 03:16:43 GMT) hush - the humble shell^M
^M
root:/> successful boot attempt^M
root:/> mount -t romfs /dev/mtdblock2 /mnt^M
root:/> /mnt/xip_test
Data access CPLB miss^M
<5> - Used by the MMU to signal a CPLB miss on a data access.^M
Deferred Exception context^M
CURRENT PROCESS:^M
COMM=xip_test PID=173 CPU=0^M
TEXT = 0x201c0080-0x201c0814 DATA = 0x029d5794-0x029d58f4^M
BSS = 0x029d58f4-0x02a80000 USER-STACK = 0x02a9feb0^M
^M
return address: [0x028348fa]; contents of:^M
0x028348d0: e50a 0083 9310 6812 e73a ffa8 aefb aef8 ^M
0x028348e0: 6cc3 e73b ffa5 6d40 a058 e738 ffa6 a042 ^M
0x028348f0: 0c02 1813 0000 3210 6031 [9110] 0808 1402 ^M
0x02834900: 2793 6001 6033 2006 6d02 9110 0818 1402 ^M
^M
ADSP-BF537-0.3 500(MHz CCLK) 125(MHz SCLK) (mpu on)^M
Linux version 2.6.31.6-ADI-2010R1-pre-svn7831 (test@uclinux74-mpu) (gcc version 4.3.4 (ADI-trunk/svn-3679) ) #46 Wed Nov 18 03:18:59 GMT 2009^M
^M
SEQUENCER STATUS: Not tainted^M
SEQSTAT: 00002026 IPEND: 0008 IMASK: ffff SYSCFG: 0006^M
EXCAUSE : 0x26^M
physical IVG3 asserted : <0xffa007f4> { _trap + 0x0 }^M
RETE: <0x00000000> /* Maybe null pointer? */^M
RETN: <0x02074000> /* kernel dynamic memory */^M
RETX: <0xffa006e4> { _exception_to_level5 + 0x0 }^M
RETS: <0x02835a7a> [ /lib/ld-uClibc.so.0 + 0x5a7a ]^M
PC : <0x028348fa> [ /lib/ld-uClibc.so.0 + 0x48fa ]^M
DCPLB_FAULT_ADDR: <0x201c00b4> [ /mnt/xip_test + 0x34 ]^M
ICPLB_FAULT_ADDR: <0x028348fa> [ /lib/ld-uClibc.so.0 + 0x48fa ]^M
PROCESSOR STATE:^M
R0 : 201c00b4 R1 : 00000006 R2 : 00000006 R3 : 00007f10^M
R4 : 028330d8 R5 : 02917068 R6 : 00000512 R7 : 00000000^M
P0 : 02a9fe20 P1 : 00000000 P2 : 201c00b4 P3 : 02a9fe10^M
P4 : 000005c0 P5 : 02a9ff70 FP : 02a9fcbc SP : 02073f24^M
LB0: 028e01df LT0: 028e01cc LC0: ffffffff^M
LB1: 02834807 LT1: 02834806 LC1: 00000000^M
B0 : 00000000 L0 : 00000000 M0 : 00000000 I0 : 000005c0^M
B1 : 00000000 L1 : 00000000 M1 : 00000000 I1 : 00000001^M
B2 : 00000000 L2 : 00000000 M2 : 00000000 I2 : 00000005^M
B3 : 00000000 L3 : 00000000 M3 : 00000000 I3 : 00000000^M
A0.w: 00000000 A0.x: 00000000 A1.w: 00000000 A1.x: 00000000^M
USP : 02a9fae4 ASTAT: 02003004^M
^M
Hardware Trace:^M
0 Target : <0x000051a0> { _trap_c + 0x0 }^M
Source : <0xffa00788> { _exception_to_level5 + 0xa4 } CALL pcrel^M
1 Target : <0xffa006e4> { _exception_to_level5 + 0x0 }^M
Source : <0xffa00524> { _ex_dcplb_miss + 0x78 } RTX^M
2 Target : <0xffa004ac> { _ex_dcplb_miss + 0x0 }^M
Source : <0xffa0084e> { _trap + 0x5a } JUMP (P4)^M
3 Target : <0xffa007f4> { _trap + 0x0 }^M
Source : <0xffa00598> { _bfin_return_from_exception + 0x18 } RTX^M
4 Target : <0xffa00580> { _bfin_return_from_exception + 0x0 }^M
Source : <0xffa0063c> { _ex_trap_c + 0x74 } JUMP.S^M
5 Target : <0xffa004ac> { _ex_dcplb_miss + 0x0 }^M
Source : <0xffa0084e> { _trap + 0x5a } JUMP (P4)^M
6 Target : <0xffa007f4> { _trap + 0x0 }^M
Source : <0x028348f8> [ /lib/ld-uClibc.so.0 + 0x48f8 ] 0x6031^M
7 Target : <0x028348dc> [ /lib/ld-uClibc.so.0 + 0x48dc ]^M
Source : <0x02835a84> [ /lib/ld-uClibc.so.0 + 0x5a84 ] JUMP.L^M
8 Target : <0x02835a7a> [ /lib/ld-uClibc.so.0 + 0x5a7a ]^M
Source : <0x02831626> [ /lib/ld-uClibc.so.0 + 0x1626 ] RTS^M
9 Target : <0x02831620> [ /lib/ld-uClibc.so.0 + 0x1620 ]^M
Source : <0x028315d2> [ /lib/ld-uClibc.so.0 + 0x15d2 ] IF !CC JUMP^M
10 Target : <0x028315cc> [ /lib/ld-uClibc.so.0 + 0x15cc ]^M
Source : <0x02831608> [ /lib/ld-uClibc.so.0 + 0x1608 ] IF !CC JUMP^M
11 Target : <0x02831604> [ /lib/ld-uClibc.so.0 + 0x1604 ]^M
Source : <0x0283162a> [ /lib/ld-uClibc.so.0 + 0x162a ] JUMP.S^M
12 Target : <0x02831628> [ /lib/ld-uClibc.so.0 + 0x1628 ]^M
Source : <0x028315ea> [ /lib/ld-uClibc.so.0 + 0x15ea ] IF !CC JUMP^M
13 Target : <0x028315cc> [ /lib/ld-uClibc.so.0 + 0x15cc ]^M
Source : <0x02831608> [ /lib/ld-uClibc.so.0 + 0x1608 ] IF !CC JUMP^M
14 Target : <0x02831604> [ /lib/ld-uClibc.so.0 + 0x1604 ]^M
Source : <0x0283162a> [ /lib/ld-uClibc.so.0 + 0x162a ] JUMP.S^M
15 Target : <0x02831628> [ /lib/ld-uClibc.so.0 + 0x1628 ]^M
Source : <0x028315ea> [ /lib/ld-uClibc.so.0 + 0x15ea ] IF !CC JUMP^M
Userspace Stack^M
Stack info:^M
SP: [0x02a9fae4] <0x02a9fae4> [ xip_test + 0x1fae4 ]^M
FP: (0x02a9feb8)^M
Memory from 0x02a9fae0 to 02aa0000^M
02a9fae0:<02835a7a>[00000000] 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fb00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fb20: 00000000 00000000 00000000 00000000 00000000 00000000 029172b4 02917030 ^M
02a9fb40: 02917068 02a9ff50 02a9fae4 02917068 02a9fe10 02a9fe20 00000000 00000000 ^M
02a9fb60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fb80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fba0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fbc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fbe0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fc00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fc20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fc40: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fc60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fc80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fca0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 02a9fe70 ^M
02a9fcc0:<028360e6> 02a9ff50 000005c0 00000002 00000512 02917068 028330d8 02a9fd08 ^M
02a9fce0: 00000000 00000000 02a9fdf8 02a9febc 02a9feb4 02a9ff70 02917068 02917068 ^M
02a9fd00: 02a9feb4 02a9febc 02a9ff50 02917068 00000000 02916f98 00000000 00000000 ^M
02a9fd20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fd40: 00000000 00000000 00000000 00000000 00000000 00000000 02917068 028300d4 ^M
02a9fd60: 0283074c 028302fc 00000000 00000000 00000000 00000407 00000010 00000000 ^M
02a9fd80: 00000000 000003ec 00000000 00000000 02830b54 000005c0 00000008 00000000 ^M
02a9fda0: 00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000 ^M
02a9fdc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fde0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ^M
02a9fe00: 00000000 00000000 00000000 00000000 00000003 201c00b4 00000004 00000020 ^M
02a9fe20: 00000005 00000006 00000006 00001000 00000007 02830000 00000008 00000000 ^M
02a9fe40: 00000009 201c0468 00000000 00000000 0000000b 00000000 0000000c 00000000 ^M
02a9fe60: 0000000d 00000000 0000000e 00000000 02a7fbe0 <02831170> 02917068 02951568 ^M
02a9fe80: 02916f98 02a9ff50 02a9ff70 <02831124> 02917068 02a9ff70 00000000 02916f98 ^M
02a9fea0: 02a9fea8 02a9feb0 00000000 00000000 00000001 02a9ff98 (00000000)<02a9ffa6>^M
02a9fec0: 02a9ffb1 02a9ffd4 02a9ffe8 00000000 00000010 00000000 00000006 00001000 ^M
02a9fee0: 00000011 00000064 00000003 201c00b4 00000004 00000020 00000005 00000006 ^M
02a9ff00: 00000007 02830000 00000008 00000000 00000009 201c0468 0000000b 00000000 ^M
02a9ff20: 0000000c 00000000 0000000d 00000000 0000000e 00000000 00000017 00000000 ^M
02a9ff40: 0000001f 0001ffee 00000000 00000000 00020000 02830000 00000000 00006f0c ^M
02a9ff60: 02916f0c 00007f0c 00000450 00000000 00020000 201c0080 00000000 00000794 ^M
02a9ff80: 029d5794 00001794 00000160 00000000 00000000 00000000 746e6d2f 7069782f ^M
02a9ffa0: 7365745f 45540074 6c3d4d52 78756e69 54415000 622f3d48 2f3a6e69 2f727375 ^M
02a9ffc0: 3a6e6962 6962732f 752f3a6e 732f7273 006e6962 48535548 5245565f 4e4f4953 ^M
02a9ffe0: 312e313d 00322e35 3d445750 6d2f002f 782f746e 745f7069 00747365 00000000 ^M
Return addresses in stack:^M
address : <0x02835a7a> [ /lib/ld-uClibc.so.0 + 0x5a7a ]^M
address : <0x028360e6> [ /lib/ld-uClibc.so.0 + 0x60e6 ]^M
address : <0x02831170> [ /lib/ld-uClibc.so.0 + 0x1170 ]^M
address : <0x02831124> [ /lib/ld-uClibc.so.0 + 0x1124 ]^M
frame 1 : <0x02a9ffa6> [ xip_test + 0x1ffa6 ]^M
BUS^M
root:/>
--
Follow-ups
--- Vivi Li 2009-11-19 03:03:21
Bellow version doesn't crash.
--
kernel: Linux release 2.6.31.5-ADI-2010R1-pre-svn7729, build #38 Fri Oct 30
14:29:03 GMT 2009^M
toolchain: bfin-uclinux-gcc release gcc version 4.1.2 (ADI svn)^M
user-dist: release svn-9070, build #1252 Fri Oct 30 14:27:50 GMT 2009^M
--
--- Sonic Zhang 2009-11-24 23:22:25
looks like duplicated to bug 5719.
--- Barry Song 2009-12-01 05:30:25
It seems our mpu codes haven't handled XIP on async memory case. The following
patch can fix it by handling cplb missing:
(way 1)
Index: arch/blackfin/kernel/cplb-mpu/cplbmgr.c
===================================================================
--- arch/blackfin/kernel/cplb-mpu/cplbmgr.c (revision 7900)
+++ arch/blackfin/kernel/cplb-mpu/cplbmgr.c (working copy)
@@ -113,11 +113,11 @@
addr = L2_START;
d_data = L2_DMEMORY;
} else if (addr >= physical_mem_end) {
- if (addr >= ASYNC_BANK0_BASE && addr <
ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE
- && (status & FAULT_USERSUPV)) {
+ if (addr >= ASYNC_BANK0_BASE && addr <
ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE) {
addr &= ~0x3fffff;
d_data &= ~PAGE_SIZE_4KB;
d_data |= PAGE_SIZE_4MB;
+ d_data |= CPLB_USER_RD;
} else if (addr >= BOOT_ROM_START && addr <
BOOT_ROM_START + BOOT_ROM_LENGTH
&& (status & (FAULT_RW | FAULT_USERSUPV)) ==
FAULT_USERSUPV) {
addr &= ~(1 * 1024 * 1024 - 1);
@@ -198,12 +198,16 @@
(addr < physical_mem_end && reserved_mem_icache_on))
i_data |= CPLB_L1_CHBL | ANOMALY_05000158_WORKAROUND;
#endif
-
if (L2_LENGTH && addr >= L2_START && addr <
L2_START + L2_LENGTH) {
addr = L2_START;
i_data = L2_IMEMORY;
} else if (addr >= physical_mem_end) {
- if (addr >= BOOT_ROM_START && addr <
BOOT_ROM_START + BOOT_ROM_LENGTH
+ if (addr >= ASYNC_BANK0_BASE && addr <
ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE) {
+ addr &= ~0x3fffff;
+ i_data &= ~PAGE_SIZE_4KB;
+ i_data |= PAGE_SIZE_4MB;
+ i_data |= CPLB_USER_RD;
+ } else if (addr >= BOOT_ROM_START && addr <
BOOT_ROM_START + BOOT_ROM_LENGTH
&& (status & FAULT_USERSUPV)) {
addr &= ~(1 * 1024 * 1024 - 1);
(way 2)
Or place an entry for ASYNC memory area in generate_cplb_tables_cpu() just like
l1 or l2?
To decrease cplb miss, we maybe use the way1 better?
--- Barry Song 2009-12-02 23:58:21
The current fix doesn't make sense. There are still issues for MTD XIP to do in
our kernel. At least, we need ARCH_MTD_XIP.
--- Barry Song 2009-12-07 03:28:56
While executing in chips, VMA will be created in load_flat/elf_binary/library by
do_mmap, then add_vma_to_mm() -> protect_vma() will be called to transform
VMA to page mask for every process. But our page mask size is ram_end, then
memory overflow will happen in protect_page(). We must fix it.
--- Vivi Li 2010-01-07 21:51:56
OK now. Close it.
Files
Changes
Commits
Dependencies
Duplicates
Associations
Tags
File Name File Type File Size Posted By
config.xip.shared-flat application/octet-stream 35657 Vivi Li
config.xip.fdpic application/octet-stream 35657 Vivi Li