Arshad, Farrukh wrote:
> I have dumped TLB entries while mapping shared memory. On both cores M-Bit 
> (MAS2[61]) is set in TLB0 entries. On both cores M-Bit is set for all valid 
> TLB1 entries. TLB1 does contains some invalid entries which has M-Bit 
> cleared. So I believe at this time the coherency is not the issue. Any 
> further thoughts on the issue ?
>

Did you check all associated TLBx VPN/RPN and attribute setting are same between
two scenarios: W -> Core0 & R <- Core1 and W -> Core1 & R <- Core0?

Can you send me your TLB dump log separately if possible?

And did you try this flag 'O_SYNC'?

Tiejun

> I have modified dump_tlb_book3e function (found in arch/powerpc/xmon/xmon.c) 
> function for BookE MMU to dump TLB entries.
> 
> Regards,
> Farrukh Arshad
> 
> 
> -----Original Message-----
> From: tiejun.chen [mailto:tiejun.c...@windriver.com] 
> Sent: Thursday, January 12, 2012 1:09 PM
> To: Arshad, Farrukh
> Cc: Scott Wood; linuxppc-dev@lists.ozlabs.org
> Subject: Re: Problem in getting shared memory access on P1022RDK
> 
> Arshad, Farrukh wrote:
>> Adding more it,
>>
>> I have removed the shared memory kernel driver dependency just to narrow 
>> down the problem area and I have written a small piece of code in user 
>> space. A writer & a reader application which access the shared memory and I 
>> got the same behavior as with the shared memory kernel driver. 
>> Interestingly, my user space application work fine on P1022DS but not on 
>> P1022RDK however both using the same CPU modules.
>>
>> When I write a simple string on shared memory from Core 1 it is read 
>> at Core 0 properly When I write a simple string on shared memory from Core 0 
>> it is not read at Core 1.
>>
> 
> Did you dump TLB entry to check page memory coherence attribute for a shared 
> memory as I mentioned previously? This should be consistent on both sides.
> 
>> With this test now I am sure the problem lies in the kernel itself. Any 
>> pointers to look for the troubled area ?
>>
>> My application code is (error checking and other code is omitted)
>>
>> #define      SHM_BASE        0x1C000000
>> #define      SHM_SIZE        0x400000                // 4 MB of Shared Memory
>> #define      PAGE_SIZE       (4*1024)
>>
>> fd = open(device, O_RDWR);
> 
> You may need to add with 'O_SYNC'.
> 
> Tiejun
> 
>> shm = malloc(SHM_SIZE + (PAGE_SIZE - 1)); if ( (unsigned long) shm % 
>> PAGE_SIZE) {
>>      shm += PAGE_SIZE - ((unsigned long)shm % PAGE_SIZE); }
>>
>> shm = mmap(shm, SHM_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED | 
>> MAP_FIXED, fd, SHM_BASE); ......
>> ...... write some string at shm.
>>
>> My memory partitioning for both systems is
>>
>> Core                                 Base Address            Size
>> Core 0                               0x0000,0000             0x1000,0000
>> Core 1                               0x1000,0000             0x0C00,0000
>> Shared Memory        0x1C00,0000             0x0400,0000
>>
>> Regards,
>> Farrukh Arshad.
>> Mentor Graphics Pakistan
> 

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to