Sunil Kittur(deleted)
|
Re: cpu_pte_split() problem in QNX procnto.
|
Sunil Kittur(deleted)
03/08/2012 9:50 AM
post91976
|
Re: cpu_pte_split() problem in QNX procnto.
A crash in cpu_pte_manipulate typically means that an L2 table
is not mapped - the code checks whether there is a valid L1
entry for the address range, and if so, expects that there is
an L2 table allocated. The L2 tables are mapped within a sparse
4MB space where 4K of tables should be mapped for each 4MB area
that is covered by valid L1 entries. The code will crash if the
mapping in that region is not present.
What OS version and cpu target are you using?
Is this the first user address space that has been created?
Sunil.
On 12-03-08 5:59 AM, ravinder are wrote:
> Dear QNX-OSTech,
>
> We are working on ARM based platform. While the procnto starts running we are seeing a hard crash. Please check the
below call stack.
> It is appearing like there is some problem while preparing a Page Table entry by making pte split, which was called by
mmap().
> In our case we are trying to allocate 1560 bytes memory, for that it is trying to split a 10MB space and create pte
entry . Please find the MMU entries below.
> From the trace messages Mmap() is trying to map the physical address paddr = 0x80C36000, to vaddr = 0x78000000.
> To allocate the physical address 0x80C36000 from the MMU table entries ,it is observed that the 10MB+ has to be split
.
>
> we found similar issue at http://community.qnx.com/sf/go/projects.core_os/discussion.newcode.topc3141
>
> Please suggest /provide some solution.
>
> CallStack
>
> __hardcrash(asm)
>
> exception
> cpu_pte_split(
> vaddr = 0x78000000,
> data = 0xE8AFBBE0 = BUILDENV_qss+0x0E8AFBBDF -> (
> paddr = 0x80C36000,
> adp = 0xE8CDF49C = BUILDENV_qss+0x0E8CDF49B,
> start = 0x78000000,
> end = 0x78001FFF,
> split_end = 0x78001FFF,
> first = 0x78000000,
> prot = 0x0561,
> op = 0x81,
> special = 0x0,
> shmem_flags = 0x00030002))
> flags = 0x8
> r = 0x78000000
> va = 0x78000000
> asid = 0x2
> pte = 0xFFBF0780 = end+0x1B1E058 -> 0xC0C0C0C0
> ptp = 0xFFFF3E00 = end+0x1F216D8 -> 0xC0C0C0C0
>
> do_manipulation(
> manip = 0xE8AFBBE0 = BUILDENV_qss+0x0E8AFBBDF -> (
> data = (paddr = 0x80C36000, adp = 0xE8CDF49C = BUILDENV_qss+0x0E8CDF49B, start = 0x78000000, end =
> state = 0x0,
> mapped = 0x78000000))
>
> ker_manipulate(
> data = 0xE8AFBBE0 = BUILDENV_qss+0x0E8AFBBDF -> )
>
> ker_ring0(
> ?,
> ?)
>
>
> MMU page table
>
> _________address_____________|_physical____________________|sec|_d_|_size____|_permissions____________________|_glb|
_shr|_pageflags_(
> C:0002:00000000--DFFFFFFF| | | | | | |
|
> C:0002:E0000000--E8CFFFFF| A:00:80200000--88EFFFFF| ns| 00| 00100000| P:readwrite U:noaccess exec | yes|
no | strongly or
> C:0002:E8D00000--FC3FFFFF| | | | | | |
|
> C:0002:FC400000--FC403FFF| A:00:80CD4000--80CD7FFF| ns| 00| 00001000| P:readwrite U:noaccess notexec| yes|
no | strongly or
> C:0002:FC404000--FC404FFF| A:00:80CDC000--80CDCFFF| ns| 00| 00001000| P:readwrite U:readonly exec | yes|
no | strongly or
> C:0002:FC405000--FC405FFF| A:00:0209A000--0209AFFF| ns| 00| 00001000| P:readwrite U:noaccess notexec| yes|
no | strongly or
> C:0002:FC406000--FC408FFF| A:00:02000000--02002FFF| ns| 00| 00001000| P:readwrite U:noaccess notexec| yes|
no | strongly or
> C:0002:FC409000--FC40BFFF| A:00:02000000--02002FFF| ns| 00| 00001000| P:readwrite U:noaccess notexec| yes|
no | strongly or
> C:0002:FC40C000--FC40EFFF| A:00:02000000--02002FFF| ns| 00| 00001000| P:readwrite...
View Full Message
|
|
|