[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 |