Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NET branch #141

Merged
merged 76 commits into from
Nov 29, 2024
Merged

NET branch #141

merged 76 commits into from
Nov 29, 2024

Conversation

heatd
Copy link
Owner

@heatd heatd commented Nov 10, 2024

Various fixes, some networking, some not. TCP rework incoming (one day)

We were calculating the csum without initializing the icmp header's csum
field, which made for spurious echo reply drops.

Signed-off-by: Pedro Falcato <[email protected]>
Add %pI4 support, per the Linux kernel printk specifiers.

%pI4 prints an IPv4 address in xx.xx.xx.xx form.

Example:
	in_addr_t addr = INADDR_LOOPBACK;
	printf("%pI4\n", &addr) => 127.0.0.1

Signed-off-by: Pedro Falcato <[email protected]>
Break instead of continuing when printing a bad stack. This should lead
to led recursive faults (which helps GDB).

Signed-off-by: Pedro Falcato <[email protected]>
@petershh
Copy link
Contributor

Please push 1f8cbcb to master

heatd added 25 commits November 29, 2024 23:50
Add a brand new neighbour system, more correct, non-blocking, and takes
full advantage of RCU. This commit does not yet support failure.

While we're at it, we add small fixes on the IPv4 and v6 core code. One
notable fix is the adding of longest matching prefix logic (which is
required for e.g proper IPv4 routing on local networks).

Signed-off-by: Pedro Falcato <[email protected]>
Rework the RX netif logic. This should be safe(r) and probably faster.

Signed-off-by: Pedro Falcato <[email protected]>
Make our terminal less buggy, A LOT FASTER scrolling, and add more
sequences such that it's more similar to TERM=linux.

Signed-off-by: Pedro Falcato <[email protected]>
Add box-drawing support by including a unicode font, and implementing a
(very primitive!) version of G0 and G1 + shift-in/shift-out.

Tested by running KBuild menuconfig on Onyx. Things look okay.

Signed-off-by: Pedro Falcato <[email protected]>
After up-scrolling got optimized recently, less was noticeably slower
when scrolling up. Rectify this.

Signed-off-by: Pedro Falcato <[email protected]>
Add an fbdev implementation as desired by Xorg.

Not-Yet-Signed-off-by: Pedro Falcato <[email protected]>
Add an RCU-based d_path implementation.
dentry names should be RCU-protected in order for this to be truly safe.

Signed-off-by: Pedro Falcato <[email protected]>
There was a subtle race condition in sync_call logic where two cpus
could observe waiting_for_completion = 0 and double-free the control
block. Fix it trivially.

Signed-off-by: Pedro Falcato <[email protected]>
This is slightly faster and also avoids LRU locking issues inside free_page.

Signed-off-by: Pedro Falcato <[email protected]>
WARN() will give us a nice backtrace + register dump. Do it.

Signed-off-by: Pedro Falcato <[email protected]>
Named pipe O_NONBLOCK is required by POSIX to not block in the open, e.g
don't wait for a reader and just give me a darn open pipe.

Signed-off-by: Pedro Falcato <[email protected]>
This lets us use the page allocator directly in the SLAB allocator, for
KASAN builds too.

Signed-off-by: Pedro Falcato <[email protected]>
This was previously implemented for sockets, should be for every fd.

Signed-off-by: Pedro Falcato <[email protected]>
Global mutexen should be declared with DECLARE_MUTEX so internal members
get initialized properly. Fixes a crash when cache_list_lock is
contended.

Signed-off-by: Pedro Falcato <[email protected]>
Results in instability sometimes (to be addressed, related to memory
fragmentation and higher order page allocation).

Signed-off-by: Pedro Falcato <[email protected]>
We were passing the bufctl as if it were the object, which fired
assertions when dumping the quarantine to the slab allocator.

Signed-off-by: Pedro Falcato <[email protected]>
Enabling preemption is tricky because we can stall doing $STUFF while
other cpus are stuck waiting for us. This results in a deadlock. Move
preemption down to after cpus are unfrozen again.

Signed-off-by: Pedro Falcato <[email protected]>
When traversing symlinks such as:
/symlink -> /path/to/file

it erroneously backed out and returned the path string related to
/symlink; however, even worse, because we had consumed that path element
before, callers would see an empty string. This is obviously wrong.

Signed-off-by: Pedro Falcato <[email protected]>
Previously, we only set_current_state once, when entering wait_for().
This is wrong and resulted in busy loops. Fix it.

While we're at it, set up some next patches by adding an optional "DO
NOT DEQUEUE" flag.

Signed-off-by: Pedro Falcato <[email protected]>
This fixes a race condition trivially exposed by the previous commit.

Signed-off-by: Pedro Falcato <[email protected]>
We were not inheriting umask, which is obviously wrong and broken.

Signed-off-by: Pedro Falcato <[email protected]>
Swapping isn't quite stable. Add a small fix and some more debug checks.

Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
heatd added 28 commits November 29, 2024 23:50
Add two new callbacks that allow us to do more intelligent page cache
accesses when doing writes. Also add a sample implementation for block
devices.

Signed-off-by: Pedro Falcato <[email protected]>
This is obviously wrong and resulted in crashes.

Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
BLKFLSBUF flushes all buffers and pages related to this block device.

Signed-off-by: Pedro Falcato <[email protected]>
This stops bad, inconsistent filesystems from crashing the whole system.

Signed-off-by: Pedro Falcato <[email protected]>
Plus the generic bits in fs/block

Signed-off-by: Pedro Falcato <[email protected]>
This makes us ring the nvme doorbell once per pull, instead of once per
sqe, which results in a nice speedup, particularly in VMs.

Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
This fixes certain weird bugs that only seemed to happen on EFI in some
cases.

Signed-off-by: Pedro Falcato <[email protected]>
Don't believe GRUB's load bias (it seems to lie in some versions, fml).
Also rework some bits to be slightly safer when it comes to avoiding a
crash (namely, wrt running on wrong page tables).

Signed-off-by: Pedro Falcato <[email protected]>
Map boot services eagerly (although we should end up unmapping this,
Eventually, after we add proper reservation and late freeing of boot
services memory). Also create our own memmap instead of passing the
firmware's, which ended up causing crashes on some hardware.

Signed-off-by: Pedro Falcato <[email protected]>
We had a nasty hack with regards to .. following and mount roots. Fix it
by doing proper mount parents. This also fixes '..' on mounts, which
ended up broken and causing mount reference leaks.

Signed-off-by: Pedro Falcato <[email protected]>
Data corruption fix in cases where a buffer could be both in the disk's
page cache and a file's disk cache (this fix is not perfect). Zero out
file holes now that filemap feeds us unzeroed pages.

Signed-off-by: Pedro Falcato <[email protected]>
Should radically improve page fault scalability.

Signed-off-by: Pedro Falcato <[email protected]>
Add job stealing from other cores. Radically improves performance in e.g
a make -j4 gcc build.

Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
Signed-off-by: Pedro Falcato <[email protected]>
@heatd heatd merged commit a591b8e into master Nov 29, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants