rhdrjones / kvm-unit-tests Goto Github PK
View Code? Open in Web Editor NEWUnit tests for the kernel virtual machine (KVM)
Unit tests for the kernel virtual machine (KVM)
If I try to build kvm-unit-tests with --target-efi on Debian 9.9 I get the following error:
gcc -mstrict-align -std=gnu99 -ffreestanding -O2 -I /home/alex/kvm-unit-tests/lib -I /home/alex/kvm-unit-tests/lib/libfdt -I lib -g -MMD -MF lib/.efi.d -fno-strict-aliasing -fno-common -Wall -Wwrite-strings -Wempty-body -Wuninitialized -Wignored-qualifiers -Werror -fomit-frame-pointer -fno-stack-protector -Wno-frame-address -Wclobbered -Wunused-but-set-parameter -DTARGET_EFI -DEFI_DEBUG -I /usr/include/efi -I /usr/include/efi/aa64 -fpic -fshort-wchar -fno-stack-check -fno-merge-all-constants -Wno-error=missing-prototypes -Wno-error=strict-prototypes -Wno-error=pragmas -Wmissing-parameter-type -Wold-style-declaration -Woverride-init -Wmissing-prototypes -Wstrict-prototypes -c -o lib/efi.o lib/efi.c
In file included from lib/efi.c:14:0:
/usr/include/efi/efi.h:41:21: fatal error: efibind.h: No such file or directory
#include "efibind.h"
^
compilation terminated.
: recipe for target 'lib/efi.o' failed
make: *** [lib/efi.o] Error 1
This is fixed by setting EFI_ARCH=aarch64 in Makefile.
System configuration:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.9 (stretch)
Release: 9.9
Codename: stretch
$ dpkg-query --status gnu-efi
Package: gnu-efi
Status: install ok installed
Priority: optional
Section: devel
Installed-Size: 522
Maintainer: Julian Andres Klode [email protected]
Architecture: arm64
Version: 3.0.9-1
Description: Library for developing EFI applications
GNU toolchain for building applications that can run in the environment
presented by Intel's EFI (Extensible Firmware Interface). EFI is a firmware
specification for the "BIOS" on ia64(IPF), IA-32(x86) and x86_64 systems.
Homepage: http://sourceforge.net/projects/gnu-efi/
$ dpkg-query -L gnu-efi
/.
/usr
/usr/include
/usr/include/efi
/usr/include/efi/aarch64
/usr/include/efi/aarch64/efibind.h
/usr/include/efi/aarch64/efilibplat.h
/usr/include/efi/aarch64/efisetjmp_arch.h
/usr/include/efi/efi.h
/usr/include/efi/efi_nii.h
/usr/include/efi/efi_pxe.h
/usr/include/efi/efiapi.h
/usr/include/efi/eficompiler.h
/usr/include/efi/eficon.h
/usr/include/efi/efidebug.h
/usr/include/efi/efidef.h
/usr/include/efi/efidevp.h
/usr/include/efi/efierr.h
/usr/include/efi/efifs.h
/usr/include/efi/efigpt.h
/usr/include/efi/efiip.h
/usr/include/efi/efilib.h
/usr/include/efi/efilink.h
/usr/include/efi/efinet.h
/usr/include/efi/efipart.h
/usr/include/efi/efipciio.h
/usr/include/efi/efipoint.h
/usr/include/efi/efiprot.h
/usr/include/efi/efipxebc.h
/usr/include/efi/efirtlib.h
/usr/include/efi/efiser.h
/usr/include/efi/efisetjmp.h
/usr/include/efi/efishellintf.h
/usr/include/efi/efishellparm.h
/usr/include/efi/efistdarg.h
/usr/include/efi/efitcp.h
/usr/include/efi/efiudp.h
/usr/include/efi/efiui.h
/usr/include/efi/libsmbios.h
/usr/include/efi/pci22.h
/usr/include/efi/protocol
/usr/include/efi/protocol/adapterdebug.h
/usr/include/efi/protocol/eficonsplit.h
/usr/include/efi/protocol/efidbg.h
/usr/include/efi/protocol/efivar.h
/usr/include/efi/protocol/intload.h
/usr/include/efi/protocol/legacyboot.h
/usr/include/efi/protocol/piflash64.h
/usr/include/efi/protocol/vgaclass.h
/usr/include/efi/romload.h
/usr/lib
/usr/lib/crt0-efi-aarch64.o
/usr/lib/elf_aarch64_efi.lds
/usr/lib/libefi.a
/usr/lib/libgnuefi.a
/usr/share
/usr/share/doc
/usr/share/doc/gnu-efi
/usr/share/doc/gnu-efi/TODO.Debian
/usr/share/doc/gnu-efi/changelog.Debian.gz
/usr/share/doc/gnu-efi/changelog.gz
/usr/share/doc/gnu-efi/copyright
Hi Drew,
I am working on running EFI tests on a Neoverse N1 server and one of the issues I run into was that its memory map (at least the way UEFI is reporting it) is not contiguous. Looking at git log
it seems that you are aware of this.
kvm-unit-tests/lib/arm/setup.c
Line 204 in bad079a
It looks like, we need to fix to allow non-contiguous memory maps would be to change the way we clean and invalidate the data cache to avoid gaps and executing dc civac
for invalid memory locations.
I was thinking of changing dcache_by_line_op
Line 202 in bad079a
mem_regions
. Would that be an acceptable solution? Do you have any other issues in mind?
Thanks,
Nikos
When I try to compile kvm-unit-tests configure with --target-efi I get the following error:
gcc -mstrict-align -std=gnu99 -ffreestanding -O2 -I /home/alex/kvm-unit-tests/lib -I /home/alex/kvm-unit-tests/lib/libfdt -I lib -g -MMD -MF lib/.efi.d -fno-strict-aliasing -fno-common -Wall -Wwrite-strings -Wempty-body -Wuninitialized -Wignored-qualifiers -Werror -fomit-frame-pointer -fno-stack-protector -Wno-frame-address -Wclobbered -Wunused-but-set-parameter -DTARGET_EFI -DEFI_DEBUG -I /usr/include/efi -I /usr/include/efi/aarch64 -fpic -fshort-wchar -fno-stack-check -fno-merge-all-constants -Wno-error=missing-prototypes -Wno-error=strict-prototypes -Wno-error=pragmas -Wmissing-parameter-type -Wold-style-declaration -Woverride-init -Wmissing-prototypes -Wstrict-prototypes -c -o lib/efi.o lib/efi.c
In file included from /usr/include/efi/efi.h:52:0,
from lib/efi.c:14:
/usr/include/efi/efiapi.h:734:5: warning: function declaration isn't a prototype [-Wstrict-prototypes]
);
^
lib/efi.c: In function 'efi_char16_to_char':
lib/efi.c:44:25: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT((CHAR16)t == *w);
^
In file included from /usr/include/efi/efilib.h:22:0,
from lib/efi.c:15:
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:44:25: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT((CHAR16)t == *w);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:44:3: note: in expansion of macro 'ASSERT'
ASSERT((CHAR16)t == *w);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c: In function 'efi_generate_path':
lib/efi.c:116:18: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(*PathName);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:116:18: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(*PathName);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:116:2: note: in expansion of macro 'ASSERT'
ASSERT(*PathName);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c: In function 'efi_load_image':
lib/efi.c:140:30: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:140:30: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:140:2: note: in expansion of macro 'ASSERT'
ASSERT(Status == EFI_SUCCESS);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:143:30: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:143:30: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:143:2: note: in expansion of macro 'ASSERT'
ASSERT(Status == EFI_SUCCESS);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:150:31: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:150:31: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:150:3: note: in expansion of macro 'ASSERT'
ASSERT(Status == EFI_SUCCESS);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:155:17: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(FileInfo);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:155:17: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(FileInfo);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:155:2: note: in expansion of macro 'ASSERT'
ASSERT(FileInfo);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:163:18: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(FileInfo);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:163:18: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(FileInfo);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:163:3: note: in expansion of macro 'ASSERT'
ASSERT(FileInfo);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:169:30: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:169:30: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:169:2: note: in expansion of macro 'ASSERT'
ASSERT(Status == EFI_SUCCESS);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:176:14: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(*data);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:176:14: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(*data);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:176:2: note: in expansion of macro 'ASSERT'
ASSERT(*data);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:187:30: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:187:30: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:187:2: note: in expansion of macro 'ASSERT'
ASSERT(Status == EFI_SUCCESS);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c: In function 'efi_get_fdt':
lib/efi.c:215:30: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:215:30: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:215:2: note: in expansion of macro 'ASSERT'
ASSERT(Status == EFI_SUCCESS);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c: In function 'efi_set_mem_regions':
lib/efi.c:258:31: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(DescriptorVersion == 1);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:258:31: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(DescriptorVersion == 1);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:258:2: note: in expansion of macro 'ASSERT'
ASSERT(DescriptorVersion == 1);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:304:22: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(freemem_start);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:304:22: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(freemem_start);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:304:2: note: in expansion of macro 'ASSERT'
ASSERT(freemem_start);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c: In function 'efi_main':
lib/efi.c:328:30: error: pointer targets in passing argument 1 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
lib/efi.c:328:30: error: pointer targets in passing argument 3 of 'DbgAssert' differ in signedness [-Werror=pointer-sign]
ASSERT(Status == EFI_SUCCESS);
^
/usr/include/efi/efidebug.h:26:64: note: in definition of macro 'DBGASSERT'
#define DBGASSERT(a) DbgAssert(FILE, LINE, #a)
^
lib/efi.c:328:2: note: in expansion of macro 'ASSERT'
ASSERT(Status == EFI_SUCCESS);
^~~~~~
/usr/include/efi/efidebug.h:96:1: note: expected 'const CHAR8 * {aka const unsigned char *}' but argument is of type 'const char *'
DbgAssert (
^~~~~~~~~
cc1: all warnings being treated as errors
: recipe for target 'lib/efi.o' failed
make: *** [lib/efi.o] Error 1
Same configuration as in Issue #3; the change EFI_ARCH=aarch64 applied to /Makefile.
arm64 tests fail on target-efi running on Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0+ aarch64). The problem seems to be in the order in which we setup the system in
void setup(const void *fdt, phys_addr_t freemem_start)
If I understand correctly, mem_init()
kvm-unit-tests/lib/arm/setup.c
Line 304 in bad079a
current_thread_info()
Call Stack
--------------------
mem_init()
phys_alloc_init()
spin_lock()
mmu_enabled()
__mmu_enabled()
current_thread_info()
but that happens only after we have called thread_info_init()
kvm-unit-tests/lib/arm/setup.c
Line 320 in bad079a
I tried moving mem_init()
below thread_info_init()
but I think there is a circular dependency.
target-efi seems to work fine if I downgrade the QEMU_EFI.fd
. Tests pass when I use: 0~20180205.c0d9813c-2u
(https://packages.ubuntu.com/bionic-updates/qemu-efi-aarch64) and things break when I use the default 0~20191122.bd85bf54-2ubuntu3
(https://packages.ubuntu.com/focal/qemu-efi-aarch64). One thing that I found is that they return a slightly different memory map. current_thread_info maps to:
For the newer QEMU_EFI.fd
(bad)
...
960 type=EfiConventionalMemory 44020000 47844000
1008 type=EfiBootServicesData 47844000 47865000 <- current_thread_info pointer (47864000)
1056 type=EfiBootServicesCode 47865000 4789A000
...
For the older QEMU_EFI.fd
(good)
...
1056 type=EfiConventionalMemory 44020000 47887000
1104 type=EfiBootServicesData 47887000 478A8000 <- current_thread_info pointer (478A4000)
1152 type=EfiBootServicesCode 478A8000 478C4000
...
I didn't expect that the thread stack maps to EfiBootServicesData
but to EfiConventionalMemory
but I know very little about EFI.
Hello, I see multiple failures when testing with kvm-unit-tests. These are easily reproducible and mostly these bugs are related to KVM test cases. Basic details: https://pastebin.com/xLw9d7yX.
Let me know what all information needs to be provided to address this issue.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.