|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |