{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":648142434,"defaultBranch":"master","name":"tilck","ownerLogin":"rviu","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2023-06-01T09:53:47.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/134678217?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1697946724.0","currentOid":""},"activityList":{"items":[{"before":"9cab5c2f052a530a7adcf3addd06304345c21d4d","after":"dde1fd2e45fd65cb01d328967b20a57ca9578d3b","ref":"refs/heads/x86-64","pushedAt":"2023-12-05T09:33:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[64-bit] Make Tilck to enter long mode\n\nThis is the first milestone of porting Tilck to x86-64.","shortMessageHtmlLink":"[64-bit] Make Tilck to enter long mode"}},{"before":"528223b7cd7eeb5eff277a49d9747344c008761c","after":"9cab5c2f052a530a7adcf3addd06304345c21d4d","ref":"refs/heads/x86-64","pushedAt":"2023-12-04T16:58:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[64-bit] Make Tilck to enter long mode\n\nThis is the first milestone of porting Tilck to x86-64.","shortMessageHtmlLink":"[64-bit] Make Tilck to enter long mode"}},{"before":"37a1b27a7ab49746400def3cc4feced517cad3a0","after":"fe029d465495589248dfc3896198be51abf2aaa2","ref":"refs/heads/master","pushedAt":"2023-12-04T16:43:14.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[docs] Update contributing.md","shortMessageHtmlLink":"[docs] Update contributing.md"}},{"before":"194ac87c660787f1ba7515a24885a30cb6a68381","after":"528223b7cd7eeb5eff277a49d9747344c008761c","ref":"refs/heads/x86-64","pushedAt":"2023-12-03T22:42:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"set char in textmode","shortMessageHtmlLink":"set char in textmode"}},{"before":"e508d715c921b60f4135a3e774a388d63c3e0b20","after":"194ac87c660787f1ba7515a24885a30cb6a68381","ref":"refs/heads/x86-64","pushedAt":"2023-12-03T19:07:39.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"move cursor in textmode","shortMessageHtmlLink":"move cursor in textmode"}},{"before":"a6235f790a91fbc573001b7bd4db8600142980a5","after":"e508d715c921b60f4135a3e774a388d63c3e0b20","ref":"refs/heads/x86-64","pushedAt":"2023-12-03T16:07:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"fix indentation","shortMessageHtmlLink":"fix indentation"}},{"before":"5336a63c10b6a686beab4ad48b45092b811ffa42","after":"a6235f790a91fbc573001b7bd4db8600142980a5","ref":"refs/heads/x86-64","pushedAt":"2023-12-03T15:59:25.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"no hardcoding values","shortMessageHtmlLink":"no hardcoding values"}},{"before":"36010de6049bf3bb0ca3c2f63ac910ee3a0de38e","after":"5336a63c10b6a686beab4ad48b45092b811ffa42","ref":"refs/heads/x86-64","pushedAt":"2023-10-28T17:53:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"paging works, reloc error","shortMessageHtmlLink":"paging works, reloc error"}},{"before":"5dd3d973c2acaecdcadaad98f75b39bd370a6beb","after":"37a1b27a7ab49746400def3cc4feced517cad3a0","ref":"refs/heads/master","pushedAt":"2023-10-27T00:20:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[toolchain] Use the SYSCC only when $USE_SYSCC == 1, no matter the $ARCH\n\nCurrently, in many places we check for $HOST_ARCH == $ARCH and use the system\ncompiler in that case, because that check has been written for the\n$HOST_ARCH == i386 case, given that the target $ARCH could only possibly be i386.\nNow that we're working on ARCH=x86_64, we definitively don't want the system\ncompiler to be the automatically the default case because it's always a bit\ntricky to support. Tilck has one officially supported way to be built and that's\nby downloading the pre-compiled toolchain, no matter the target architecture.\nThe support for a build with a system compiler is limited and doesn't need to\nwork in all cases (all the toolchain packages).","shortMessageHtmlLink":"[toolchain] Use the SYSCC only when $USE_SYSCC == 1, no matter the $ARCH"}},{"before":"2328fc786afcb1ebd680f4120dd13f2f2765c5a3","after":"5dd3d973c2acaecdcadaad98f75b39bd370a6beb","ref":"refs/heads/master","pushedAt":"2023-10-24T03:34:22.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[64-bit] Allow Tilck to be mapped at a non-linear vaddr\n\nThis is the part of two of commit 29ee48c7f3. Here we completely decouple\nthe default linear mapping of the physical address space from the kernel's\nvaddr of text, data & bss. By default, the 32-bit Tilck kernel will continue\nto be mapped at BASE_VA + KERNEL_PADDR, using the general-purpose linear\nmapping, but when the KRN32_LIN_VADDR option is disabled, the kernel itself\nwill be mapped at a much higher address, near LINEAR_MAPPING_END.\n\nThe reason is the same as 29ee48c7f3: the 64-bit kernel will need to be mapped\nwell outside of the 4 GB limit in order to support more physical memory in the\nlinear mapping. But, doing that while keeping the linear mapping will be\nextremely inefficient because all the major compilers will refuse to compile\nan ELF binary placed at such a high vaddr without using -mcmodel=large. And\nthe problem with that is that -mcmodel=large uses inefficient instructions to\naccess global variables and call functions because it doesn't assume that data\nand text are within 2 GB of any point. It assumes that each variable or function\ncan be *anywhere* in the 64-bit virtual address space, while that is not true.\nIn theory, it's totally possible to patch the compiler and make it use a small\nmemory model at a high address, but why bothering with that? The mainstream\nsolution is simply to place the kernel somewhere within [-2 GB, 0). This allows\nboth using the smaller (and more efficient) memory model and to leave all the\nvirtual space we want for user programs.\n\nThis change makes mapping the kernel at a non-linear vaddr possible, by removing\nall the hard-coded assumptions about kernel's base vaddr being within the\ngeneric linear mapping at BASE_VA. The core idea is to rename KERNEL_BASE_VA\nto BASE_VA by fixing most of the instances to use the new BASE_VA and\nselectively use the new KERNEL_BASE_VA/KERNEL_VADDR when necessary. One kind of\ncases for the new KERNEL_BASE_VA is when we're accessing kernel's symbol table:\nfor that we really do care about kernel's vaddr. Another case is when we use\nthe address of kernel buffers (e.g. kmalloc's first heap, zero_page, kpdir_buf)\nin contexts where later a VA -> PA conversion will occurr because the code works\nmostly with heap-allocated buffers, which are mapped using the linear mapping.\nIn such cases, since the VA does not start at BASE_VA but at KERNEL_BASE_VA,\nthe conversion leads to a wrong PA and that triggers any sort of failures.\nThe correct approach for those special cases is to convert the kernel VA to a\nlinear VA with a double-conversion: kernel symbol VA -> PA -> linear VA.\nTherefore, we'll access our own kernel variables through a different mapping\nbecause it allows the rest of the generic code to work. That requires also\nkeeping a mapping of the kernel in the early paging setup in start.S, in\naddition to the dedicated kernel mapping near LINEAR_MAPPING_END.","shortMessageHtmlLink":"[64-bit] Allow Tilck to be mapped at a non-linear vaddr"}},{"before":null,"after":"dabbc853670e2363db053223688e48a8996801a8","ref":"refs/heads/vaddr_stuff","pushedAt":"2023-10-22T03:52:04.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"WIP","shortMessageHtmlLink":"WIP"}},{"before":"90eb5397f63175b2db963ee34a5b76e8afd10ea2","after":"a7050e07fa7e540a5dc413c5df20330d0649324a","ref":"refs/heads/64-bit","pushedAt":"2023-10-08T17:40:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[64-bit] Use separate vaddrs for reading phy. mem. and for the kernel\n\nBASE_VA is used for reading the physical memory and\nKERNEL_VADDR is used for the kernel.\n\nIn 64-bit, we want to map the kernel at -2GB to be\nable to use 32-bit offsets. Hence, a separate vaddr\nwas introduced for achieving this.\n\nTo avoid 64-bit specific tricks, this change is\ngeneric and for both 32-bit and 64-bit kernels.","shortMessageHtmlLink":"[64-bit] Use separate vaddrs for reading phy. mem. and for the kernel"}},{"before":"7c8e9f06feaa0b63ac72dc807c8e0aa8547dab36","after":"90eb5397f63175b2db963ee34a5b76e8afd10ea2","ref":"refs/heads/64-bit","pushedAt":"2023-10-08T17:37:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[64-bit] Use separate vaddrs for reading phy. mem. and for the kernel\n\nBASE_VA is used for reading the physical memory and\nKERNEL_VADDR is used for the kernel.\n\nIn 64-bit, we want to map the kernel at -2GB to be\nable to use 32-bit offsets. Hence, a separate vaddr\nwas introduced for achieving this.\n\nTo avoid 64-bit specific tricks, this change is\ngeneric and for both 32-bit and 64-bit kernels.","shortMessageHtmlLink":"[64-bit] Use separate vaddrs for reading phy. mem. and for the kernel"}},{"before":"742c659cf5f4e2a0eb42e2587e361af2bb81838e","after":"2328fc786afcb1ebd680f4120dd13f2f2765c5a3","ref":"refs/heads/master","pushedAt":"2023-10-08T17:35:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[acpi] Allow building ACPICA with -Wno-error\n\nTilck's ACPICA is from 2020 and triggers warnings on new compilers. Because\nof -Werror, this leads to a build failure. Until ACPICA's source is upgraded,\nit makes sense to at least allow the build to succeed, keeping the warnings\nvisible.\n\nBONUS: \"g++-multilib\" is mentioned in the list of packages necessary for\nbuilding all the non-default Tilck configurations, including the ones\nwith system's clang compiler etc.","shortMessageHtmlLink":"[acpi] Allow building ACPICA with -Wno-error"}},{"before":null,"after":"7c8e9f06feaa0b63ac72dc807c8e0aa8547dab36","ref":"refs/heads/64-bit","pushedAt":"2023-10-03T22:51:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"WIP","shortMessageHtmlLink":"WIP"}},{"before":"cf5875dc6a03329b36a76df1ab1be0c5bf8757ee","after":"742c659cf5f4e2a0eb42e2587e361af2bb81838e","ref":"refs/heads/master","pushedAt":"2023-10-01T18:37:33.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[elfhack] Fix two printf fmt warnings","shortMessageHtmlLink":"[elfhack] Fix two printf fmt warnings"}},{"before":null,"after":"36010de6049bf3bb0ca3c2f63ac910ee3a0de38e","ref":"refs/heads/x86-64","pushedAt":"2023-09-22T18:09:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[x86-64] WIP","shortMessageHtmlLink":"[x86-64] WIP"}},{"before":"785eadfc0de9798506c9cdf50a1f9dd724ecfa94","after":"cf5875dc6a03329b36a76df1ab1be0c5bf8757ee","ref":"refs/heads/master","pushedAt":"2023-09-19T12:15:31.000Z","pushType":"push","commitsCount":12,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[elfhack] Intr. --undef-sym","shortMessageHtmlLink":"[elfhack] Intr. --undef-sym"}},{"before":"84dbc4ae5d50ea4a232d6742a3fb3b0e6abe38a2","after":null,"ref":"refs/heads/uefi","pushedAt":"2023-09-19T12:15:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"}},{"before":"602843b4efac740c0e8ba59523c7d38ffc62810e","after":"84dbc4ae5d50ea4a232d6742a3fb3b0e6abe38a2","ref":"refs/heads/uefi","pushedAt":"2023-09-01T18:56:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[selftests] Add clock read-latency test\n\nThis test helps compare latency of CMOS and UEFI implementation.","shortMessageHtmlLink":"[selftests] Add clock read-latency test"}},{"before":"3657a685f18e5eee6674726ee08c1bbf0a560f09","after":"602843b4efac740c0e8ba59523c7d38ffc62810e","ref":"refs/heads/uefi","pushedAt":"2023-09-01T18:53:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[selftests] Add clock read-latency test\n\nThis test helps compare latency of CMOS and UEFI implementation.","shortMessageHtmlLink":"[selftests] Add clock read-latency test"}},{"before":"569e2b59d28c1127b2a64298a3130cdefae2343a","after":"3657a685f18e5eee6674726ee08c1bbf0a560f09","ref":"refs/heads/uefi","pushedAt":"2023-09-01T15:33:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[selftests] Add clock read-latency test\n\nThis test helps compare latency of CMOS and UEFI implementation.","shortMessageHtmlLink":"[selftests] Add clock read-latency test"}},{"before":null,"after":"569e2b59d28c1127b2a64298a3130cdefae2343a","ref":"refs/heads/uefi","pushedAt":"2023-09-01T14:29:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[uefi] Use Runtime Services to read hardware clock","shortMessageHtmlLink":"[uefi] Use Runtime Services to read hardware clock"}},{"before":"61dcc846c5622d186e3c4ffd473ece2c5ce62c67","after":null,"ref":"refs/heads/unit-tests","pushedAt":"2023-09-01T07:51:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"}},{"before":"e8b377732c1b5924babf196b3b2c531aef09de3d","after":null,"ref":"refs/heads/uefi","pushedAt":"2023-09-01T07:50:18.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"}},{"before":"ad058400867b79633c3edc070ab4c5061a807eb2","after":"785eadfc0de9798506c9cdf50a1f9dd724ecfa94","ref":"refs/heads/master","pushedAt":"2023-09-01T07:41:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[uefi] Add support for Runtime Services in the kernel\n\nMultiboot 1.0 protocol doesn't support extra fields.\nSo, new struct tilck_extra_boot_info was introduced\nand set to `apm_table`.\n\nWhen SetVirtualAddressMap() is called, it requires the\nphysical addresses to be directly accessible. So, they\nwere identity mapped before the call and removed\nafter the call.\n\nThe read-only EFI Runtime memory regions were\nconsidered as Code regions and the rest as Data\nregions.\n\nThis doesn't work for 64-bit yet. That will be\nimplemented when Tilck is ported to 64-bit.","shortMessageHtmlLink":"[uefi] Add support for Runtime Services in the kernel"}},{"before":"39dda0bdea808ae891c4ed5681008615cac6300d","after":"e8b377732c1b5924babf196b3b2c531aef09de3d","ref":"refs/heads/uefi","pushedAt":"2023-08-31T04:55:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[uefi] Add support for Runtime Services in the kernel\n\nMultiboot 1.0 protocol doesn't support extra fields.\nSo, new struct tilck_extra_boot_info was introduced\nand set to `apm_table`.\n\nWhen SetVirtualAddressMap() is called, it requires the\nphysical addresses to be directly accessible. So, they\nwere identity mapped before the call and removed\nafter the call.\n\nThe read-only EFI Runtime memory regions were\nconsidered as Code regions and the rest as Data\nregions.\n\nThis doesn't work for 64-bit yet. That will be\nimplemented when Tilck is ported to 64-bit.","shortMessageHtmlLink":"[uefi] Add support for Runtime Services in the kernel"}},{"before":"2c5b6421ca91fabfc358a0426f2e86c40fbd9e96","after":"ad058400867b79633c3edc070ab4c5061a807eb2","ref":"refs/heads/master","pushedAt":"2023-08-31T04:36:21.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[toolchain] Check for spaces in the $MAIN_DIR and abort\n\nTilck's build_toolchain script and build system doesn't support paths\nwith spaces as doing so would require an insane amount of ugly quoting\nand not only that would not be worth the effort, but the final code would\nlook would even worse than now. Therefore, for those reasons, compiling\nthis project will have the reasonable requirement of checking out the\nsource in a path free of spaces.\n\nThis simple change adds a check for that corner case and fails\ngracefully with a human-friendly error in case the project has been\nchecked out in a path with spaces.","shortMessageHtmlLink":"[toolchain] Check for spaces in the $MAIN_DIR and abort"}},{"before":"913b9c671b66b5885a1f395621c948282e733b85","after":"39dda0bdea808ae891c4ed5681008615cac6300d","ref":"refs/heads/uefi","pushedAt":"2023-08-31T02:11:18.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"vvaltchev","name":"Vladislav K. Valtchev","path":"/vvaltchev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1541932?s=80&v=4"},"commit":{"message":"Merge branch 'master' into uefi","shortMessageHtmlLink":"Merge branch 'master' into uefi"}},{"before":"54d9c65ef77fed6c13d18b8f7b6f79cf162a6039","after":"913b9c671b66b5885a1f395621c948282e733b85","ref":"refs/heads/uefi","pushedAt":"2023-08-30T19:36:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"rviu","name":null,"path":"/rviu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/134678217?s=80&v=4"},"commit":{"message":"[uefi] Add support for Runtime Services in the kernel\n\nMultiboot 1.0 protocol doesn't support extra fields.\nSo, new struct tilck_extra_boot_info was introduced\nand set to `apm_table`.\n\nWhen SetVirtualAddressMap() is called, it requires the\nphysical addresses to be directly accessible. So, they\nwere identity mapped before the call and removed\nafter the call.\n\nThe read-only EFI Runtime memory regions were\nconsidered as Code regions and the rest as Data\nregions.\n\nThis doesn't work for 64-bit yet. That will be\nimplemented when Tilck is ported to 64-bit.","shortMessageHtmlLink":"[uefi] Add support for Runtime Services in the kernel"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMi0wNVQwOTozMzo1NS4wMDAwMDBazwAAAAPBY2l7","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0wOC0zMFQxOTozNjowNi4wMDAwMDBazwAAAAN2DQIl"}},"title":"Activity ยท rviu/tilck"}