Fpage mapping in L4 Pistachio

View: New views
7 Messages — Rating Filter:   Alert me  

Fpage mapping in L4 Pistachio

by Katsumi Maruyama :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear sir:

For inter-process data copying,
I am using Flex page mapping conveniently.

However, I noticed copy failure when the Fpage is large.

My program outline is as follows:
(Code is only explanatory, not real one)

Let me call the mapping side process as Mapper,
and mapped side process as Mappee.

==== (1) Mappee ==================

(1-1) Receive window
Fpage:
mappeefpage: L4_Fpage(0x40000000, 0x100000)
i.e. 1 mega bytes recv window from 1 Giga

==== (2) Mapper ===================

(2-1) Buffer to send/receive data
char xbuf[XSIZE];
// This buffer happened being allocated at 0xA26820.

The Flex page which cover this buffer is used for mapping.
strncpy() is used for string copying.


====== (3) Situation ========

(3-1) WHEN XSIZE <= 6112: No problem

Fpage of Mapper:
mapperfpage: L4_Fpage(0xA26000, 0x2000) with R/W permissions

MapItem:
mapitem: L4_MapItem(mapperfpage, 0)
i.e. send-base is 0.

Fpage is mapped, and data is rightly copyed from Mappee to Mapper.


(3-2) WHEN XSIZE > 6112: COPY FAILED

Fpage of Mapper:
mapperfpage: L4_Fpage(0xA20000, 0x10000) with R/W permissions
// To cover the buffer, Fpage becomes large !
// as the buffer happened to be at 0xA26820 !
MapItem:
mapitem: L4_MapItem(mapperfpage, 0)
i.e. send-base is 0.

==> NO DATA COPIED.

( Cf. 0xA26820 + 6112 == 0xA28000.
&xbuf[6112] is 0xA28000)


===== (4) Question ======

Am I misunderstanding the fpage mapping usage, or
are there some restriction or limitation in L4 flex page mapping ?

Thank in advance.
---
K. Maruyama
National Institute of Informatics, Japan



Afterburner-Wedge Compile Error - Need Help!

by muhammad saufy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi All l4ka mailing list members,

i had read most of the post here and i have other
problem  than what discuss here so far. ( i hope)

i compiling afterburner with pistachio in 2 machine.
(one my notebook with Intel VT and my desktop with
Intel Pentium 4 (without VT).

On my laptop, the error is:
==========================

before that i configure the kernel to do:
-compile on pentium 3 (i dont know why people say with
core 2 due, need to use pentium 3)
-l4ka with VMX (hardware virtualization)
-use custom version of pistachio (debug)
-build l4ka wedges
-with guest kernel linux 2.6
-with vga boot option
-when i enable the options of wedge-use-real device

this error occur

===> common/crtend.cc
===> l4ka-resourcemon
Configuring the Afterburn wedge-l4ka-passthru-p3
#@echo "Options WEDGE_L4KA DEVICE_PASSTHRU
DEVICE_APIC=n ARCH_IA32=y L4KA_VT=y
L4KA_INTERFACE_DIR=/root/afterburner/.//l4ka-interfaces
L4KA_PISTACHIO_USER=/root/afterburner/usr
DEVICE_PCI_FORWARD=n   CPU_P3"
make[1]: Entering directory
`/root/afterburner/build/afterburn-wedge-l4ka-passthru-p3'
Can't find tkinter support, falling back to curses
mode...
Rewriting Makeconf.local ...
make[1]: Leaving directory
`/root/afterburner/build/afterburn-wedge-l4ka-passthru-p3'
Building the Afterburn Wedge for hv l4ka type passthru
cpu p3
===> common/crtbegin.cc
make: ***
[/root/afterburner/build/afterburn-wedge-l4ka-passthru-p3/afterburn-wedge]
Error 2

and one more, which is the right binary file to be
loaded by menu.1st?

in /afterburner/build or in /afterburner/boot/ ???

--i use gcc 3.4.6

and on my desktop
=================
In file included from
/root/afterburner/.//l4ka-resourcemon/common/debug.h:51,
                 from
/root/afterburner/.//l4ka-resourcemon/resourcemon/console.cc:33:
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t0(L4_Word_t, const
char*)':
/root/afterburner/usr/include/l4/tracebuffer.h:50:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:50:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t1(L4_Word_t, const
char*, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:59:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:59:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t2(L4_Word_t, const
char*, L4_Word_t, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:69:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:69:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t3(L4_Word_t, const
char*, L4_Word_t, L4_Word_t, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:81:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:81:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t4(L4_Word_t, const
char*, L4_Word_t, L4_Word_t, L4_Word_t, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:94:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:94:
warning: unused variable '_dummy'
make[1]: *** [resourcemon/console.o] Error 1
In file included from
/root/afterburner/.//l4ka-resourcemon/common/debug.h:51,
                 from
/root/afterburner/.//l4ka-resourcemon/resourcemon/locator.cc:34:
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t0(L4_Word_t, const
char*)':
/root/afterburner/usr/include/l4/tracebuffer.h:50:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:50:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t1(L4_Word_t, const
char*, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:59:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:59:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t2(L4_Word_t, const
char*, L4_Word_t, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:69:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:69:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t3(L4_Word_t, const
char*, L4_Word_t, L4_Word_t, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:81:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:81:
warning: unused variable '_dummy'
/root/afterburner/usr/include/l4/tracebuffer.h: In
function `void L4_Tbuf_RecordEvent_t4(L4_Word_t, const
char*, L4_Word_t, L4_Word_t, L4_Word_t, L4_Word_t)':
/root/afterburner/usr/include/l4/tracebuffer.h:94:
error: expected `)' before "__L4_TBUF_RDTSC"
/root/afterburner/usr/include/l4/tracebuffer.h:94:
warning: unused variable '_dummy'
make[1]: *** [resourcemon/locator.o] Error 1
make[1]: *** wait: No child processes.  Stop.
make: ***
[/root/afterburner/build/l4ka-resourcemon-p4/l4ka-resourcemon]
Error 2
root@hasanahcode:~/afterburner#

but the mysteerius issue is when i look in to the
code,there are no  __L4_TBUF_RDTSC  !! helps!

hope can help me.

-saufy



      ___________________________________________________________
Yahoo! For Good helps you make a difference  

http://uk.promotions.yahoo.com/forgood/


Re: Fpage mapping in L4 Pistachio

by Espen Skoglund :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

[Katsumi Maruyama]
> $B#D#e#a#r!!#s#i#r!'(B
> For inter-process data copying,
> I am using Flex page mapping conveniently.

> However, I noticed copy failure when the Fpage is large.

> My program outline is as follows:
> (Code is only explanatory, not real one)

> Let me call the mapping side process as Mapper,
> and mapped side process as Mappee.

> ==== (1) Mappee ==================

> (1-1) Receive window
> Fpage:
> mappeefpage: L4_Fpage(0x40000000, 0x100000)
> i.e. 1 mega bytes recv window from 1 Giga

> ==== (2) Mapper ===================

> (2-1) Buffer to send/receive data
> char xbuf[XSIZE];
> // This buffer happened being allocated at 0xA26820.

> The Flex page which cover this buffer is used for mapping.
> strncpy() is used for string copying.


> ====== (3) Situation ========

> (3-1) WHEN XSIZE <= 6112: No problem

> Fpage of Mapper:
> mapperfpage: L4_Fpage(0xA26000, 0x2000) with R/W permissions

> MapItem:
> mapitem: L4_MapItem(mapperfpage, 0)
> i.e. send-base is 0.

> Fpage is mapped, and data is rightly copyed from Mappee to Mapper.

>From mapper to mappee you mean, right?

And the xbuf[] array is accessible at address 0x40000820 of mappee.
BTW, saying "copied" here can be confusing.  Copying and mapping are
not the same thing.


> (3-2) WHEN XSIZE > 6112: COPY FAILED

> Fpage of Mapper:
> mapperfpage: L4_Fpage(0xA20000, 0x10000) with R/W permissions
> // To cover the buffer, Fpage becomes large !
> // as the buffer happened to be at 0xA26820 !
> MapItem:
> mapitem: L4_MapItem(mapperfpage, 0)
> i.e. send-base is 0.

And the xbuf[] array should now be accessible at address 0x40006820 of
mappee.  Is this not happening?

> ==> NO DATA COPIED.

> ( Cf. 0xA26820 + 6112 == 0xA28000.
> &xbuf[6112] is 0xA28000)

> ===== (4) Question ======

> Am I misunderstanding the fpage mapping usage, or
> are there some restriction or limitation in L4 flex page mapping ?

I don't know if you misunderstood it because I don't know what you
expect to happen.  The limitation of mapping is that pages not present
in the mapper will (obviously) not be mapped to the mappee.  Also,
mapper can not map its own KIP or UTCB memory, and mappee can not
receive mappings in its own KIP and UTCB memory.

        eSk


Re: Fpage mapping in L4 Pistachio

by Katsumi Maruyama :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear Espen Skoglund,:

Thank you for your help. I added some KDB result.

>>Let me call the mapping side process as Mapper,
>>and mapped side process as Mappee.
>>    
>>
>>==== (1) Mappee ==================
>>    
>>
>>(1-1) Receive window
>>Fpage:
>>mappeefpage: L4_Fpage(0x40000000, 0x100000)
>>i.e. 1 mega bytes recv window from 1 Giga
>>    
>>
>>==== (2) Mapper ===================
>>    
>>
>>(2-1) Buffer to send/receive data
>>char xbuf[XSIZE];
>>// This buffer happened being allocated (unfortunately !) at 0xA26820.
>>    
>>
>>====== (3) Situation ========
>>    
>>
>>(3-1) WHEN XSIZE <= 6112: No problem
>>    
>>
>>Fpage of Mapper:
>>mapperfpage: L4_Fpage(0xA26000, 0x2000) with R/W permissions
>>    
>>
>>MapItem:
>>mapitem: L4_MapItem(mapperfpage, 0)
>>i.e. send-base is 0.
>>    
>>
>>Fpage is mapped, and data is rightly copyed from Mappee to Mapper.
>>    
>>
>
>>From mapper to mappee you mean, right?
>
>And the xbuf[] array is accessible at address 0x40000820 of mappee.
>  
>
Yes, it can be accessed at 0x40000820.

>BTW, saying "copied" here can be confusing.  Copying and mapping are
>not the same thing.
>  
>
I meant:  strncpy(0x40000820, mappeeOwnBuffer, SIZE);   i.e. mappee -->
mapper

Right after receiving the mapping-IPC, I confirmed the mappint using KDB
d command.
d 40000820
 >memdump

Dump address [0x0]: 0x40000820

40000820  00000000 00000000 00000000 00000000 .......
 ....

(3-2) WHEN XSIZE > 6112: COPY FAILED

>>Fpage of Mapper:
>>mapperfpage: L4_Fpage(0xA20000, 0x10000) with R/W permissions
>>// To cover the buffer, Fpage becomes large !
>>// as the buffer happened to be at 0xA26820 !
>>MapItem:
>>mapitem: L4_MapItem(mapperfpage, 0)
>>i.e. send-base is 0.
>>    
>>
>
>And the xbuf[] array should now be accessible at address 0x40006820 of
>mappee.  Is this not happening?
>  
>
I expected the mapping at 0x40006820, but it seemed not-mapped.
KDB d command answered:
d 0x40006820
>memdump
Dump address [0x0]: 0x40006820
0x40006820  ######## ######## ######## ########      
.....

>>( Cf. 0xA26820 + 6112 == 0xA28000.
>>&xbuf[6112] is 0xA28000)
>>    
>>
>>===== (4) Question ======
>>    
>>
>>Am I misunderstanding the fpage mapping usage, or
>>are there some restriction or limitation in L4 flex page mapping ?
>>    
>>
>
>I don't know if you misunderstood it because I don't know what you
>expect to happen.  The limitation of mapping is that pages not present
>in the mapper will (obviously) not be mapped to the mappee.  Also,
>mapper can not map its own KIP or UTCB memory, and mappee can not
>receive mappings in its own KIP and UTCB memory.
>  
>
Before the mapping IPC call, mapper filled the buffer with 0,  thus
pages  are present.
Umm. my test code seems not conflicting with the limitation.

---
K. Maruyama,  L4-devotee
NII, Japan


Re: Fpage mapping in L4 Pistachio

by Espen Skoglund :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

[Katsumi Maruyama]

>> And the xbuf[] array should now be accessible at address 0x40006820 of
>> mappee.  Is this not happening?
>>
>>
> I expected the mapping at 0x40006820, but it seemed not-mapped.
> KDB d command answered:
> d 0x40006820
>> memdump
> Dump address [0x0]: 0x40006820
> 0x40006820  ######## ######## ######## ########      
> .....

Try dumping the page table of the mapper ('p' in kdb).  Also, try
dumping the mapping database for the page frame in question ('m' in
kdb I think, and provide the physical address of the page).

        eSk


Re: Fpage mapping in L4 Pistachio

by Katsumi Maruyama :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear Espen Skoglund:

Than you for your help.
I tried some KDB commands.
(I am not familiar wth the KDB. A KDB manual is wanted.)

------ Test condition ----
The test condition is as follows:

[1] Mapper
   mapper<a26820-a28000, a28000, 10000>

  This means:
  Buffer ia located at [a26820-a28000]. (size is 6113)
  Mapper Flexpage : <a28000, 10000>
  (a26820 is very delicated address !?)

[2] Mappee
   (My mappee assigns the idle mappee fpage at 1G + 1M*n of 1M window size )

   mappee<40606820-40608000, 40600000, 1000000>
   Buffer is to be accessible at: [40606820-40608000] (6113 bytes)
   Mappee flex page: <40600000, 1000000>

========== KDB results =============
Followings are KDB results,
just after receiveing mapping IPC in mappee.

------- d command --------
d
 >memdump  40606820 ######## ######## ######## ########
.....
  ===> Expecting pages seem not mapped.

---- p command ------------
 > ptab
 .......
40400000 [0b44a027]: tree=fb44a000
40500000  .............
40501000  ............
40600000 [0117a007]: phys=0117a000 map=fb440568 4KB rw~ (~~~) user WB
40601000 [0117b007]: phys=0117b000 map=fb440eec 4KB rw~ (~~~) user WB
...........
40604000 [0117e007]: phys=0117e000 map=fb440f10 4KB rw~ (~~~) user WB
    /***** Entries 40605000-406ff000 do not apper; ********/
40700000 [011bd005]: phys=011bd000 map=fb440544 4KB rw~ (~~~) user WB
40701000 ....................
40702000 ....................

  ===> Expected pages 40605000-406ff000 seem not apper.

---  m command --------------
 > mdb
Address [0x0] 0117e000
01000000: 4MB [root] (f012c010)
  0117e000: 4KB [map] (fb41d5f8)
     [1] space=f0138000 ...
       [2] space=fb426000 ....
         [3] space=f4b18000 vaddr=40604000 pgent=fb44a818 (fb440f10)

>[Katsumi Maruyama]
>  
>
>>>And the xbuf[] array should now be accessible at address 0x40006820 of
>>>mappee.  Is this not happening?
>>>
>>>
>>>      
>>>
>>I expected the mapping at 0x40006820, but it seemed not-mapped.
>>KDB d command answered:
>>d 0x40006820
>>    
>>
>>>memdump
>>>      
>>>
>>Dump address [0x0]: 0x40006820
>>0x40006820  ######## ######## ######## ########      
>>.....
>>    
>>
>
>Try dumping the page table of the mapper ('p' in kdb).  Also, try
>dumping the mapping database for the page frame in question ('m' in
>kdb I think, and provide the physical address of the page).
>
> eSk
>  
>
Thank you for your consideration.
K. Maruyama


RE: Afterburner-Wedge Compile Error - Need Help!

by Jan Stoess :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> -----Original Message-----

> From: l4ka-bounces@... [mailto:l4ka-bounces@...-
> karlsruhe.de] On Behalf Of muhammad saufy
> Sent: Thursday, April 10, 2008 10:19 AM
> To: Katsumi Maruyama; l4ka@...
> Subject: Afterburner-Wedge Compile Error - Need Help!
>
>
> ===> common/crtend.cc
> ===> l4ka-resourcemon
> Configuring the Afterburn wedge-l4ka-passthru-p3
> #@echo "Options WEDGE_L4KA DEVICE_PASSTHRU
> DEVICE_APIC=n ARCH_IA32=y L4KA_VT=y
It seems that you're using an older version of afterburner (newer ones have
L4KA_VT renamed to L4KA_HVM). Please update your revision accordingly. Keep
in mind that L4/HVM and afterburner/HVM are *development* branches, so don't
expect anything to compile smoothly out of the box. Also check the branches
for changes regularly (http://hg.l4ka.org/exp/ provides RSS feeds to do
conveniently do that)

> and one more, which is the right binary file to be
> loaded by menu.1st?

Build contains build files, boot contains the files to be booted from grub.

> in /afterburner/build or in /afterburner/boot/ ???
>
> --i use gcc 3.4.6
>
> and on my desktop
> =================

It's impossible to guess what could have gone wrong without knowing your
configuration. Can you post the top level config.out?

-Jan

--
Jan Stoess
System Architecture Group
University of Karlsruhe
Phone: +49 (721) 608-4056
Fax: +49 (721) 608-7664
eMail: stoess@...




smime.p7s (4K) Download Attachment