klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
mctpyt has joined #osdev
gog has quit [Ping timeout: 244 seconds]
gog has joined #osdev
[itchyjunk] has quit [Remote host closed the connection]
nyah has quit [Ping timeout: 244 seconds]
srjek has quit [Ping timeout: 264 seconds]
[itchyjunk] has joined #osdev
sprock has quit [Ping timeout: 252 seconds]
mctpyt has quit [Ping timeout: 260 seconds]
theruran has quit [Ping timeout: 245 seconds]
theruran has joined #osdev
Oli has quit [Quit: leaving]
MiningMarsh has quit [Ping timeout: 260 seconds]
MiningMarsh has joined #osdev
devcpu has quit [Quit: leaving]
devcpu has joined #osdev
[itchyjunk] has quit [Read error: Connection reset by peer]
m3a has joined #osdev
Oli has joined #osdev
<klange> Finished up and merged my bootloader branch to do mode setting, since someone on Discord (no I don't have a Discord server, just someone in a mutual server) said they had managed to partially boot from a USB stick with my loader, but VGA text mode wasn't working (not sure what's up with that, the boot log works, but the userspace terminal emulator doesn't) and obviously no framebuffer...
zaquest has quit [Remote host closed the connection]
zaquest has joined #osdev
paulusASol has quit [*.net *.split]
sdfgsdfg has quit [*.net *.split]
j00ru_ has quit [*.net *.split]
bslsk05 has quit [*.net *.split]
terrorjack has quit [*.net *.split]
zid has quit [*.net *.split]
Geertiebear has quit [*.net *.split]
Bonstra has quit [*.net *.split]
jstoker has quit [*.net *.split]
MrBonkers has quit [*.net *.split]
mctpyt has joined #osdev
j00ru has joined #osdev
MrBonkers has joined #osdev
Bonstra has joined #osdev
jstoker has joined #osdev
bslsk05 has joined #osdev
zid has joined #osdev
terrorjack has joined #osdev
paulusASol has joined #osdev
sdfgsdfg has joined #osdev
ElectronApps has joined #osdev
vai has joined #osdev
<vai> hi all morning
* Mutabah waves
<Oli> Hello, and good day!
nanovad has quit [Ping timeout: 260 seconds]
nanovad has joined #osdev
kingoffrance has quit [Quit: Leaving]
brynet has quit [Ping timeout: 260 seconds]
jess has quit [Quit: Lost terminal]
jess has joined #osdev
MiningMarsh has quit [Ping timeout: 260 seconds]
<klange> Oh good, DigitalOcean's CDN supports clear-text HTTP... their direct "Spaces" product does not, but the CDN in front of it does, so I can use it as a package repository.
wleslie has joined #osdev
Belxjander has quit [Ping timeout: 265 seconds]
m3a has quit [Ping timeout: 265 seconds]
Belxjander has joined #osdev
Coldberg has quit [Ping timeout: 244 seconds]
GeDaMo has joined #osdev
MiningMarsh has joined #osdev
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
dormito has quit [Quit: WeeChat 3.3]
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
brynet has joined #osdev
adachristine has joined #osdev
gog has quit [Quit: byee]
adachristine is now known as gog
pretty_dumm_guy has joined #osdev
amj has joined #osdev
dormito has joined #osdev
Oli has quit [Ping timeout: 265 seconds]
xenos1984 has quit [Quit: Leaving.]
Arthuria has joined #osdev
dormito has quit [Ping timeout: 244 seconds]
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
scoobydoo has quit [Read error: Connection timed out]
scoobydoo has joined #osdev
ahalaney has joined #osdev
<opios2> does bochs support nested virtualization?
<klange> You're going to need to clarify what you mean.
<klange> Bochs itself is not virtualized at all. If you mean does it implement the VM extensions such that an OS running within it can expose nested virtualization (which would but your _four_ levels deep, three of which are Bochs), I believe so, but it'll probably take you three years just to boot the second nesting.
MiningMarsh has quit [Ping timeout: 265 seconds]
<zid> bochs is an emulator
wleslie has quit [Quit: ~~~ Crash in JIT!]
<Mutabah> Bochs is a pure simulator, it does not use/require the host to have virtualisation extensions
Oli has joined #osdev
<opios2> yeah i know its an emulator that support virtualization like you can run a hypervisor inside it
<zid> you can run a hypervisor in any program
<opios2> so now can my hypervisor inside bochs can run another hypervisor?
<zid> if your hypervisor itself decides to set up another one, there's no reason why not
<opios2> ok
MiningMarsh has joined #osdev
<zid> bochs will have to support translating your hypervisor instructions setup into something the host OS understands though
<zid> and idk offhand that it actually does
<klange> Bochs even supports SVM, which QEMU regularly informs me my actual CPU does not support...
scoobydoo has quit [Read error: Connection timed out]
<zid> It's okay, your cpu feels shameful
<klange> Nah, just old.
<zid> It just so happens to be a sadist so it's fine
scoobydoo has joined #osdev
<josuah> a "aha!" moment for me (noob) was when Xen could run a VM on hardware that did not support virtualization
<j`ey> how?
<klange> Before virtualization extensions like VT-x, there were all sorts of dirty tricks things like VMware used.
<klange> Xen is essentially its own platform target because of how it does its thing...
<zid> Run it as a user mode program, catch all the illegal instruction faults, simulate them? :P
<zid> like vmexit but ghettoier
<josuah> j`ey: it requires the host operating system to be aware it is a VM, and rather than use hardware interfaces, use interfaces provided by Xen (the hypervisor)
<j`ey> oh right, paavirt
<j`ey> paravirt
xenos1984 has joined #osdev
ahalaney has quit [Quit: Leaving]
dennis95 has joined #osdev
mctpyt has quit [Ping timeout: 244 seconds]
scoobydoo has quit [Read error: Connection timed out]
scoobydoo has joined #osdev
[itchyjunk] has joined #osdev
m3a has joined #osdev
<vin> What are some interesting small concurrnecy projects/assignments you have come across? That requires good use of locks or conditional variables. How can I say if a program uses multiple threads to solve a problem without reading it's code?
<vin> I am designing this problem from an OS learning perspective
<klange> If you run it with `time` and it takes notably more `user` time than `real` time, it probably uses threads ;)
<zid> if it uses more than 1/cores% cpu use
<zid> as a single process
<vin> Can I do that deterministically though? I was thinking of just doing a ps and checking how many threads are spawned but there is no gurantee those threads are doing the work.
<klange> That sounds like it may be a variant of the halting problem. Read the code if you want to know if it uses threads to do useful things.
<zid> or check the imports/syscalls it does
<zid> to see if it at least 'uses' threads
<klange> Speaking of `time`, I need to fix my shell built-in... it acts more like the `time` command but i should be able to make it work like the shell prefix...
<vin> Yea a combination of time and ps should be okay.
<vin> What is a simple OS tool that benefits greatly from threads?
<zid> nothing
<zid> threads are just an option
<klange> (and if you're wondering wtf I'm going on about, compare `time echo foo | sleep 2` with `/usr/bin/time echo foo | sleep 2` in Bash)
<vin> speed is always a benefit zid
<junon> vin: message passing is one thing that comes to mind.
<junon> but not required.
<junon> benefits greatly, but not required.
<zid> threads are not faster
<vin> zid: using more cores is
<zid> more processes also does that
<junon> assuming a process is allowed to touch all resources that the kernel can touch, sure
<vin> junon: yes
<zid> threads are just an abstraction to pretend multiple processes exist from a single one, you can also just do that by starting more processes
<junon> if so, then zid is of course correct
Jerjerbinks has joined #osdev
<vin> Right, threads are sort of processes in linux anyway. Just that they share address space so allows more control on how they communicate with each other.
<zid> It's a *convenient* abstraction, and makes *writing* some things simpler in some cases
<Jerjerbinks> hi
<junon> e.g. io_uring uses a dedicated kernel thread in SQPOLL mode where you can invoke kernel subroutines from userspace by submitting them to a shared memory region (between the process and the kernel). Though in practice it's not as fast as you'd think unless you're setting boot-time kernel thread affinity.
<junon> vin: Think of processes as a collection of 1 or more threads. Address space (usually) belongs to the entire process, not an individual thread.
<junon> They're just conceptual abstractions.
<vin> Yup
<junon> The CPU only cares about "tasks". However you want to employ them is up to you.
<zid> cpu doesn't even care about tasks
<junon> Just referring to task selector, etc.
<zid> it just knows ring0 and ring3 or whatever
<junon> TSS
<zid> yea nobody uses tss :p
<zid> you use it to grab a valid stack pointer for IRQs and that's it, it might as well be an MSR
<junon> maybe I use TSS zid, don't erase me
<junon> :D
m3a has quit [Quit: leaving]
<vin> can multiple threads use same io_uring buffer junon ?
<junon> I knew the answer at one point. My knee-jerk reaction would be to say no.
<Jerjerbinks> Anyone used uIP TCP/IP stack? actually know it?
<junon> I'd probably create a queue per-thread vin
<junon> Plus in high throughput you're not waiting between iterations anyway, you're spinning as fast as possible, which means you probably don't want to slam the CPU's cache waiting for memory barriers to resolve since you 'lease' out request entries.
<junon> Plus you need to submit in order for the best performance, I don't even know if you can submit out of order.
<junon> Which means the threads would have to coordinate that too, which means some sort of lock, which defeats the entire purpose.
Coldberg has joined #osdev
<vin> I see
<junon> But that's faster in theory anyway since the kernel doesn't need to use locks to read from multiple queues. It just has to do for-each-queue, for-each-pending-request-in-said-queue. Not a whole lot of logic there.
<junon> It's pretty directly a memory-vs-performance tradeoff, and the memory is, usually, negligible.
<junon> And fixed, for that matter.
X-Scale` has joined #osdev
<junon> The reason why SQPOLL exists, which spawns a kernel thread, is to handle reading, parsing, and dispatching those queues, usually on a dedicated core affined only for the SQPOLL thread. But you have to specify that in the boot parameters. It's typical to affine the main kernel thread to 0, an SQPOLL thread to 1, and then you affine your application threads to the rest of the cores.
X-Scale has quit [Ping timeout: 264 seconds]
X-Scale` is now known as X-Scale
<junon> (note that there's very little evidence this actually improves performance in production as io_uring is so new, but of course this sounds like it would on paper)
Jerjerbinks has quit [Ping timeout: 260 seconds]
nyah has joined #osdev
scoobydoo has quit [Read error: Connection timed out]
scoobydoo has joined #osdev
Jerjerbinkz has joined #osdev
Oli_ has joined #osdev
dormito has joined #osdev
dormito10 has joined #osdev
dormito has quit [Ping timeout: 265 seconds]
dormito has joined #osdev
dormito11 has joined #osdev
dormito11 has quit [Read error: Connection reset by peer]
dormito10 has quit [Ping timeout: 244 seconds]
Oli_ has quit [Quit: leaving]
dormito has quit [Ping timeout: 264 seconds]
dormito has joined #osdev
dormito10 has joined #osdev
dormito has quit [Ping timeout: 260 seconds]
dormito has joined #osdev
Starfoxxes has quit [Ping timeout: 245 seconds]
dormito11 has joined #osdev
dormito11 has quit [Client Quit]
dormito10 has quit [Ping timeout: 260 seconds]
dormito has quit [Ping timeout: 260 seconds]
Jerjerbinkz has quit [Ping timeout: 260 seconds]
Starfoxxes has joined #osdev
Matt|home has quit [Remote host closed the connection]
<nur> is anyone attending SOSP 2021 right now
[itchyjunk] has quit [Quit: Leaving]
ElectronApps has quit [Remote host closed the connection]
X-Scale has quit [Ping timeout: 260 seconds]
X-Scale` has joined #osdev
X-Scale` is now known as X-Scale
Bonstra has quit [Quit: Pouf c'est tout !]
Bonstra has joined #osdev
dennis95 has quit [Remote host closed the connection]
dennis95 has joined #osdev
gxt_ has quit [Remote host closed the connection]
gxt_ has joined #osdev
sprock has joined #osdev
elastic_dog has quit [Ping timeout: 252 seconds]
dennis95 has quit [Quit: Leaving]
elastic_dog has joined #osdev
srjek has joined #osdev
srjek has quit [Client Quit]
srjek has joined #osdev
elastic_dog has quit [Ping timeout: 260 seconds]
elastic_dog has joined #osdev
aleamb has quit [Quit: bye]
gxt_ has quit [Remote host closed the connection]
gxt_ has joined #osdev
Kerum has joined #osdev
xenos1984 has quit [Read error: Connection reset by peer]
xenos1984 has joined #osdev
freakazoid343 has joined #osdev
Oli has quit [Quit: leaving]
<Kerum> are there any tools which can update the MBR of a disk and the VBR of a FAT12 partition without touching the partition table or the BPB respectively?
Oli has joined #osdev
<zid> hex editor? :P
<zid> If I needed a simple disk util like that in my project I'd probably just write it and stick it in util/ in my source tree
<zid> and set make to build it before using it to prep the disk image
<gog> you can use dd if you're careful
<gog> write only the first 446 bytes then the n bytes of wherever the VBR is
mahmutov has joined #osdev
<Kerum> zid: i will consider that, thanks
<Kerum> gog: i am aware that dd exists, i would just prefer to be able to update both MBR and VBR with 1 command and not have to instruct it to only write 446 bytes or to skip the BPB every time
<Kerum> thanks anyway for the suggestion
<Kerum> granted i could write a simple shell script or even an alias
<gog> script is best, less opportuntity to punch in the wrong numbers
<zid> build your disk image using ld ;)
<Kerum> ld the linker?
<zid> Yea I build all sorts of things I shouldn't using linker scripts
<zid> I'm the proud owner of a custom 3D model format I made using gcc and ld..
<Kerum> sounds interesting
<zid> yes, I have corrupted another!
<Kerum> anyway, i just made a minimal MBR+VBR setup
<Kerum> MBR sets up stack, looks for active partition, loads its VBR and executes it
<Kerum> only now did i find out that a floppy disk does not even have an MBR
<clever> which is why a usb stick without an MBR is often called s super-floppy
<Kerum> so on a storage device with an MBR this will cause no issue
<Kerum> but should i still move the stack setup to the VBR because of MBR less storage?
<Kerum> or just initialize stack in both
<clever> maybe initialize it in both?
<Kerum> yeah, will probably do
<clever> your never going to `return;` back to the MBR once in the VBR
sprock has quit [Ping timeout: 265 seconds]
sprock has joined #osdev
Oli_ has joined #osdev
bradd has quit [Ping timeout: 252 seconds]
freakazoid343 has quit [Ping timeout: 260 seconds]
bradd has joined #osdev
scoobydoo has quit [Read error: Connection timed out]
scoobydoo has joined #osdev
Kerum has quit [Quit: leaving]
CompanionCube is now known as CrazyCube
MiningMarsh has quit [Ping timeout: 265 seconds]
MiningMarsh has joined #osdev
CrazyCube is now known as CompanionCube
Arthuria has quit [Ping timeout: 260 seconds]
mahmutov has quit [Ping timeout: 244 seconds]
scoobydoo has quit [Read error: Connection timed out]
scoobydoo has joined #osdev
GeDaMo has quit [Remote host closed the connection]
<kazinsal> "Welcome to GitHub Copilot Technical Preview!" oh no
nanovad has quit [Ping timeout: 244 seconds]
nanovad has joined #osdev
nanovad has quit [Client Quit]
nanovad has joined #osdev
sprock has quit [Ping timeout: 260 seconds]
scoobydoo has quit [Read error: Connection timed out]
scoobydoo has joined #osdev
Oli_ has quit [Ping timeout: 260 seconds]
sprock has joined #osdev
srjek has quit [Ping timeout: 264 seconds]
pretty_dumm_guy has quit [Ping timeout: 265 seconds]
dormito has joined #osdev
pretty_dumm_guy has joined #osdev
<geist> now we can never trust anything you do
dormito has quit [Ping timeout: 260 seconds]
MiningMarsh has quit [Ping timeout: 260 seconds]
jess has quit []
manawyrm has quit [Quit: Read error: 2.99792458 x 10^8 meters/second (Excessive speed of light)]
manawyrm has joined #osdev
<klange> looking forward to seeing the OS Copilot cobbles together
dormito has joined #osdev
pg12 has quit [Ping timeout: 268 seconds]
<zid> I hope they copilot my linker scripts
<zid> I do hope geist was replying to me
<geist> isn't the copilot thing where it AI generates stuff for you?
pg12 has joined #osdev
<kazinsal> yeah
<kazinsal> aka a GPU rips off GPLed code
<geist> so how does that work outside of the web page? is it a plugin for vscode or something that talks to github servers?
<kazinsal> yeah, the email has a link to a vscode extension
<bslsk05> ​marketplace.visualstudio.com: GitHub Copilot - Visual Studio Marketplace
<geist> ah okay
<kazinsal> I didn't even sign up for it, they just randomly added me to the whitelist
<geist> gues it would be interesting to use it for some osdev hackery
<geist> see if it blats out a bootloader for you or gets you into protected mode
<klange> I've been waiting for someone to try just to see what it produces.
<klange> And what it pulls from...
<klange> So now that my BIOS loader does modesetting, the text thing I built for the EFI one just feels boring. What should I do with this? https://klange.dev/s/Screenshot%20from%202021-10-26%2008-33-38.png
<klange> I was thinking maybe a background, possibly some borders so it looks like a terminal window?
<geist> probably will just copy a bunch of bad ideas from the jamesm tutorial
* kazinsal begins chanting in latin at the mention of that name
* gog puts out the pentrgram and candles
* klange plays Quake
<klange> I added support in my compositor for 24bpp framebuffers, finally. Still doing 32bpp everywhere else, but special cased the final flip to the framebuffer memory to do the... I was going to say swizzle, but that's not quite right.
<klange> Though speaking of swizzles, is it worth my time to further support other pixel formats...
<geist> hmm, do you have something handy that does 24bpp?
<klange> The Cirrus card QEMU emulates does 24bpp.
<geist> ah
<klange> Feels hella wrong to put `-M q35` and `-vga cirrus` in the same command line, but, it works :)