Re: Enable L4Linux network access on Raspberry Pi-b.

2019-06-23 Thread Adam Lackorzynski
Hi,

On Fri Jun 21, 2019 at 17:39:11 +, Lei Zhou wrote:
> Did some research into L4Re memory management and IO server. 
> 
> For my original question 1: on native device tree file adapting to L4linux:
> 1>  Since Sigma0 got one-2-one mapping statically from Fiasco microkernel,  I 
> think I still can directly use those reg_address declaration for each device 
> nodes within native rpi3's bcm2710-rpi-3-b.dts.

Yes, that's identity mapped but that has nothing really to do with
sigma0, that's io job.

> I will only make following simple changes comparing to simple.dts from l4re 
> in case they are necessary for L4Linux to use.
> >>model = "L4Linux (DT)"; 
> 
> >>compatible = "L4Linux"; 
>   
>   
> < 
> < 
> /*-- copied from l4re..simple.dts --*/
>   
> intc: l4icu { 
>   
> compatible = "l4,icu";
>   
> interrupt-controller; 
>   
> /* type can be 'gic' or 'single' currently */ 
>   
> l4icu-type = "gic";   
>   
> #interrupt-cells = <3>;   
>   
> /*
>   
> l4icu-type = "single";
>   
> #interrupt-cells = <1>;   
>   
> */
>   
> };
>   
> /*--*/ 

ok.

> 2> For my original question 3: in terms of io config for IO server.  Still 
> don't have clear idea how to do it.
>   Should I only need create a vBUS and grant access for L4linux to 
> network NIC devices?  
>   Specifically I copied Raspberry PI3 NIC part of device tree node here 
> for reference as below

You need to put those device on the vbus that the Linux needs access to,
in this case that would be the MMIO and IRQs for the USB controller as
the NIC is a USB NIC on the rpi.

>
> -
>usb@7e98 { 
>  
> compatible = "brcm,bcm2708-usb";  
>   
> reg = <0x7e98 0x1 0x7e006000 0x1000>; 
>   
> interrupts = <0x2 0x0 0x1 0x9>;   
>   
> #address-cells = <0x1>;   
>   
> #size-cells = <0x0>;  
>   
> clocks = <0x18>;  
>   
> clock-names = "otg";  
>   
> phys = <0x19>;
>   
> phy-names = "usb2-phy";   
>   
> power-domains = <0x14 0x6>;   
>   
> phandle = <0x6d>; 
>   
>   
>   
> usb1@1 {  
>   
> compatible = "usb424,9514";   
>   
> reg = <0x1>;  
>   
> #address-cells = <0x1>;   
>   
> #size-cells = <0x0>;  
>   
>   
>   
> usbether@1 {  
>   
> compatible = "usb424,ec00";   
>   
> reg = <0x1>;  
>   
> phandle = <0x6e>; 
>   
> };
>   
> };
>   
> };   
>  
> 
> Is this 

RE: Enable L4Linux network access on Raspberry Pi-b.

2019-06-21 Thread Lei Zhou
Hi Adam & Hackers,

Did some research into L4Re memory management and IO server. 

For my original question 1: on native device tree file adapting to L4linux:
1>  Since Sigma0 got one-2-one mapping statically from Fiasco microkernel,  I 
think I still can directly use those reg_address declaration for each device 
nodes within native rpi3's bcm2710-rpi-3-b.dts.  I will only make following 
simple changes comparing to simple.dts from l4re in case they are necessary for 
L4Linux to use.
>>model = "L4Linux (DT)";   
  
>>compatible = "L4Linux";   

  
<; 
/*  
l4icu-type = "single";  
#interrupt-cells = <1>; 
*/  
};  
/*--*/ 

2> For my original question 3: in terms of io config for IO server.  Still 
don't have clear idea how to do it.
  Should I only need create a vBUS and grant access for L4linux to network 
NIC devices?  
  Specifically I copied Raspberry PI3 NIC part of device tree node here for 
reference as below
   
-
   usb@7e98 {   
   
compatible = "brcm,bcm2708-usb";
reg = <0x7e98 0x1 0x7e006000 0x1000>;   
interrupts = <0x2 0x0 0x1 0x9>; 
#address-cells = <0x1>; 
#size-cells = <0x0>;
clocks = <0x18>;
clock-names = "otg";
phys = <0x19>;  
phy-names = "usb2-phy"; 
power-domains = <0x14 0x6>; 
phandle = <0x6d>;   

usb1@1 {
compatible = "usb424,9514"; 
reg = <0x1>;
#address-cells = <0x1>; 
#size-cells = <0x0>;

usbether@1 {
compatible = "usb424,ec00"; 
reg = <0x1>;
phandle = <0x6e>;   
};  
};  
};   
 

Is this sufficient to do IO config as following rpi_devices.io?
Within rpi_devices.io, I defined a named vBUS as l4lx.   How does L4linux 
client know this "l4lx" vBUS is for me?  Should I need configure it within 
L4linux somewhere?


local Res = Io.Res  
local Hw = Io.Hw
local hw = Io.system_bus()  

-- create a virtual bus for client with its name as 'l4lx'  
-- Give it access to NIC device 
-- 'l4lx is name of vbus
Io.add_vbus("l4lx", Io.Vi.System_bus
{   
  -- a