[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH 0/6] Enable solo5 platform support



On 14.03.19, 02:44, "Haibo Xu (Arm Technology China)" <Haibo.Xu@xxxxxxx> wrote:

    On 2019/3/13 21:19, Simon Kuenzer wrote:
    > Hey Haibo,
    >
    > thanks a lot for providing this patch series! It doesn't seem to require 
much code, this looks good. ;-)
    >
    > I have some questions to this port:
    > - Is the sub repository of solo5 needed? Maybe Ricardo can answer this: 
Is it natural for solo5 to build guest and monitor (e.g., solo5-hvt) together? 
I thought we could keep these two things separated but maybe I am wrong.
    >
    
    Yes, they can be build separately, but we need to make sure both the guest 
bindings(solo5_hvt.o) and the monitor(solo5-hvt) are from the same code base.
    To be elaborate, the solo_hvt.o bindings will be linked together with our 
unikraft library and application objects to produce the final guest executable
    image(helloworld_solo5-x86_64). Then we can run the uni-kernel with the 
following command:
    
    sudo ./solo5-hvt helloworld_solo5-x86_64
    
    So if we build the solo5 separately, we need to make sure the solo5 
monitor(solo5-hvt tender) is installed on our machine in advance.

Hum, Ricardo mentioned that the API may be incompatible if build separately. My 
suggestion would be the following: I would add a menu option to the solo5 
platform that enables building the monitor. I would also use the build system 
provided calls to download and extract the solo5 repository. You can have a 
look to `Makefile.uk` of lwip or newlib ( 
http://xenbits.xen.org/gitweb/?p=unikraft/libs/lwip.git;a=blob;f=Makefile.uk ). 
The function that you can use is `fetch` or `fetch_as`. It works with `zip`, 
`tar.gz`, or `tar.xz` and will extract the files to an according subdirectory 
of the build directory.
This URL from GitHub should work: 
https://github.com/Solo5/solo5/archive/master.zip , but I suggest to point to a 
particular release tag or commit ID. This is to make sure that your port is 
pointing to a particular version.
    
    >  - I would exclude block and networking for the beginning. I saw that the 
built image require both to be attached right now. Ideally, that should happen 
when you explicitly enable networking, block, etc. in the platform 
configuration. When enabled, Solo5 networking should be represented as 
libuknetdev device so that it can be utilized the same way as networking on 
other platforms. Block-I/O should be done similarly. As site note, we are 
currently working on a similar abstraction for block device drivers that will 
go upstream soon.
    >
    
    Yes, the default solo5 building require both network and block device 
attached, or the monitor will refuse to load the guest kernel. So to run the 
helloworld application, I used the test build of solo5 monitor which doesn't 
include both of them. But I think it's not a big problem, we
    can talk with Ricardo and the solo5 community about it.
    
    For how to handle the network and block device, I think we need to add 
extra codes to the uknetdev library to adapt to solo5's network APIs:
    
    void solo5_net_info(struct solo5_net_info *info);
    solo5_result_t solo5_net_write(const uint8_t *buf, size_t size);
    solo5_result_t solo5_net_read(uint8_t *buf, size_t size, size_t *read_size);

Yes, you are right and I think this should be the proper way. The idea is to 
abstract platform details on higher levels. For network devices we have 
libuknetdev so far. But I expect that the driver code is quiet minimal for 
solo5.
    
    Hi Ricardo,
    
    Please correct me if I was wrong or miss something.
    
    Regards,
    Haibo
    
Thanks,

Simon

    > Thanks a lot,
    >
    > Simon
    >
    > Start without netwotking and block / add this as dep only when needed.
    > Add networking thorugh libuknetdev.
    >
    > On 11.03.19, 02:23, "Minios-devel on behalf of Haibo Xu" 
<minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of haibo.xu@xxxxxxx> wrote:
    >
    >     Hi,
    >
    >     As discussed with Simon and Ricardo in the email loop,
    >     Solo5(formerly known as ukvm) would make most sense as
    >     another and new platform library for the unikraft, this
    >     patch set will try to enable the solo5 platform support.
    >
    >     Currently, the implementation has been tested with the
    >     hello-world application on both x86-64 and arm64 machine.
    >
    >     Regards,
    >
    >     Haibo
    >
    >     Haibo Xu (6):
    >       plat/solo5: Add solo5 source code as a submodule
    >       plat/solo5: Add solo5 platform Config.uk file
    >       plat/solo5: Add solo5 platform link files.
    >       plat/solo5: Add solo5 platform Makefile.uk
    >       plat/solo5: Add the solo5 API declaration in solo5.h
    >       plat/solo5: Add platform interface implementation
    >
    >      .gitmodules                      |   3 +
    >      plat/Config.uk                   |   1 +
    >      plat/Linker.uk                   |   1 +
    >      plat/Makefile.uk                 |   1 +
    >      plat/solo5/Config.uk             |   8 +
    >      plat/solo5/Linker.uk             |  79 +++++++++
    >      plat/solo5/Makefile.uk           |  30 ++++
    >      plat/solo5/console.c             |  45 +++++
    >      plat/solo5/include/solo5/setup.h |  49 ++++++
    >      plat/solo5/include/solo5/solo5.h | 280 
+++++++++++++++++++++++++++++++
    >      plat/solo5/io.c                  |  41 +++++
    >      plat/solo5/irq.c                 |  28 ++++
    >      plat/solo5/lcpu.c                |  75 +++++++++
    >      plat/solo5/link64.lds            |  94 +++++++++++
    >      plat/solo5/memory.c              |  81 +++++++++
    >      plat/solo5/setup.c               |  42 +++++
    >      plat/solo5/shutdown.c            |  37 ++++
    >      plat/solo5/src-solo5             |   1 +
    >      plat/solo5/time.c                |  56 +++++++
    >      19 files changed, 952 insertions(+)
    >      create mode 100644 .gitmodules
    >      create mode 100644 plat/solo5/Config.uk
    >      create mode 100644 plat/solo5/Linker.uk
    >      create mode 100644 plat/solo5/Makefile.uk
    >      create mode 100644 plat/solo5/console.c
    >      create mode 100644 plat/solo5/include/solo5/setup.h
    >      create mode 100644 plat/solo5/include/solo5/solo5.h
    >      create mode 100644 plat/solo5/io.c
    >      create mode 100644 plat/solo5/irq.c
    >      create mode 100644 plat/solo5/lcpu.c
    >      create mode 100644 plat/solo5/link64.lds
    >      create mode 100644 plat/solo5/memory.c
    >      create mode 100644 plat/solo5/setup.c
    >      create mode 100644 plat/solo5/shutdown.c
    >      create mode 160000 plat/solo5/src-solo5
    >      create mode 100644 plat/solo5/time.c
    >
    >     --
    >     2.17.1
    >
    >
    >     _______________________________________________
    >     Minios-devel mailing list
    >     Minios-devel@xxxxxxxxxxxxxxxxxxxx
    >     https://lists.xenproject.org/mailman/listinfo/minios-devel
    >
    IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.
    

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.