Search logs:

channel logs for 2004 - 2010 are archived at ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present

Wednesday, 19 January 2022

00:00:00 <zid> distributing them across multiple cpus isn't *exactly* the same thing as 'pairing the msi to the cpu with the task that will consume the packet' though
00:00:00 <zid> that requires some extra coordination on top
00:05:00 <sonny> I can't shake the feeling that the Windows implementation seems like overkill ... unix is a corporate OS but the architecture doesn't come across the same way
00:06:00 <geist> also in numa situations (or at least multisocket) you probably want the IRQ to fire on at least the cpu node that the PCI bus exists on
00:21:00 <Jari--> Good morning from Finland, EU.
00:22:00 <vdamewood> Hyvää huomenta.
00:27:00 <Jari--> vdamewood been long here?
03:18:00 <heat> i a m h e r e
03:18:00 <klange> But are you really? Is anyone really here?
03:19:00 <heat> hey vsauce, klange here
03:20:00 <zid> but what IS here?
03:22:00 <graphitemaster> And more importantly, what IS there?
03:23:00 <Oli> What is where? I have just reconnected to IRC!
03:23:00 <Mutabah> The channel is getting deeeep
03:23:00 <Oli> I am feeling curious about what you are referencing to!
03:24:00 <Affliction> That's the question...
03:26:00 <Oli> Is there any context about that I may be shared of?
03:26:00 <klange> Don't worry about it.
03:26:00 <klange> Also there's a log.
03:27:00 <Oli> Thank you for mentioning about, klange! I forgot that this channel is logged!
03:27:00 <heat> hey google, who is vsauce michael
03:28:00 <graphitemaster> what is a v sauce anyways
03:28:00 <graphitemaster> is it five sauces
03:28:00 <heat> sauce in v shape
03:29:00 <graphitemaster> does sauce have shape
03:29:00 <Oli> VIP sauce Michael
03:29:00 <kingoffrance> when will there be here? closely. skip this part
03:30:00 <graphitemaster> how far apart is there and here
03:30:00 <Oli> Is here where magnets energy comes from?
03:31:00 <kingoffrance> graphitemaster, a ludicrous amount
03:31:00 <kingoffrance> that's obvious
03:32:00 <Oli> If both there and here are in my heart, I am a superset of both?
04:03:00 <kingoffrance> i think the trick is to be transparent so that userland Olis dont have to know or care where they are?
04:17:00 <Oli> Yes! Thats Olis kernel business!
04:18:00 <Jari--> Lots of kernel developers available for an OSDEV project? Know a website where to here them? Interested.
04:18:00 <heat> PSA: not a good idea to reset PS2 devices
04:18:00 <heat> Jari--,
04:21:00 <Oli> Single kernel developers near your city
04:21:00 <Jari--> Hire someone who knows C from your local university?
04:21:00 <Jari--> Educate them your kernel/OS.
04:21:00 <klange> google only wants Linux kernel devs in my experience...
04:24:00 <heat> klange, i've seen plenty of fuchsia roles
04:24:00 <heat> maybe they're not for the kernel? i dunno
04:24:00 <heat> maybe it's because they have way less of it
04:26:00 <klange> (i may be particularly salty)
04:29:00 <sonny> Jari-- what are you working on?
04:30:00 <Jari--> sonny basically DOS or CP/M like operating system, with multitasking and a simple clear GUI (high performance)
04:31:00 <Jari--> meant to run games e.g.
04:31:00 <sonny> ok, that's interesting
04:33:00 <sonny> what are you doing a gui for if it's for games?
04:33:00 <Jari--> sonny I mean complete user interface
04:33:00 <Jari--> basically its just windowed terminals at the moment
04:34:00 <Jari--> start menu, etc.
04:34:00 <sonny> oh, that's a big project
04:35:00 <sonny> I've been thinking that there could be a much better OS interface than this windowed thing :P
04:35:00 <heat> trianglix time
04:37:00 <sonny> manipulating text is really common, but defining a good interface for this seems really difficult
04:38:00 <Jari--> sonny I can run a web server on my OS
04:39:00 <heat> sonny, text editor?
04:40:00 <Jari-->
04:40:00 <sonny> heat: yes, but really general
04:40:00 <sonny> Jari-- wow, that's great
04:40:00 <heat> most of your computer activity simply isn't text
04:40:00 <heat> and where it's text you've got an editor
04:41:00 <sonny> ok, well we can say strings instead of text
04:41:00 <kazinsal> text editor, not to be confused with .text editor
04:44:00 <sonny> heat it's the primary way we get stuff into a computer?
04:55:00 <Jari--> sonny I am good at marketing, it is possible I get my first 100 users pretty soon as I get my linker up and running
04:56:00 <Jari--> before I used statically linked binaries and flat memory addressing
04:56:00 <Jari--> paging kinda made me think a lot of it
04:56:00 <Jari--> you have to have a seperate paging directory on each thread...
04:56:00 <Jari--> its lots of headache for me, could you possibly do this simpler?
04:57:00 <Jari--> CP/M wise design would imply I should do the dynamic runtime linker software, and have an universal memory map where all threads processes tasks operate together
04:58:00 <Jari--> klange do you know any C runtime linker ?
04:59:00 <klange> Mine.
04:59:00 <Jari--> most code is C++ && it's annoying me a lot
04:59:00 <Jari--> klange but I am not getting your marcoes :) and I lost the football at looking at your hash, could not find your hash routines anywhere :) although dependeable
05:01:00 <Jari--> Did you mean: klang tourism
05:01:00 <sonny> klange: any story behind the linker?
05:02:00 <klange> story? it's... a dynamic linker, it does the thing
05:02:00 <Jari--> klange this is mature?
05:02:00 <bslsk05> ​ toaruos/linker at master · klange/toaruos · GitHub
05:02:00 <sonny> maybe the linker has some special feature for your OS, idk
05:03:00 <Jari--> glob_dat hmm
05:04:00 <Jari--> klange where is the hash init? and needed hash routines?
05:04:00 <Jari--> looking
05:05:00 <Jari--> cloning the project
05:05:00 <klange> 1) If you can't find libs in my repo, I have to imagine you didn't even look at the repo.
05:05:00 <klange> 2) There is nothing special about my hashmap implementation, if you need to see it to understand my you're going to have a bad time.
05:08:00 <Jari--> as optimized as Windows registry that would be my friday night code
05:09:00 <heat> like 99% of dynamic linkers are written in C
05:10:00 <Jari--> making LIBC is doing lots of return 0; code
05:10:00 <heat> and good luck with your marketing, marketing man
05:10:00 <heat> most of us have been doing this for years with 0 users besides ourselves
05:11:00 <Jari--> heat
05:11:00 <bslsk05> ​redirect -> Facebook
05:12:00 <Jari--> 177 likes
05:12:00 <heat> you're the only one liking your posts lol
05:12:00 <Jari--> heat this is typical FaceBook, really new to you?
05:13:00 <heat> nah
05:13:00 <Jari--> I mean millionaries with >100 million revenue corporations can have only 2 or 3 likes quite often
05:13:00 <Jari--> it is hilarious
05:17:00 <MarchHare> Here's a question. Been bugging me all week when I think about it. When I copy data from memory to A000:0000-FFFF for a full screen vga image, it's really slow and I can see it building the image. How exactly do old games like commander keen (I'm not asking about their scrolling stuff) and doom do the full screen writes so fast? I'd guess page swapping, but how is that actually done in practice
05:18:00 <heat> MarchHare, are you talking about real hardware or an emulator?
05:19:00 <MarchHare> heat: Real hardware, but a virtual machine behaves about the same in my experience.
05:19:00 <heat> vga memory isn't slow
05:19:00 <heat> at least I haven't seen it be that slow
05:19:00 <MarchHare> heat: In my bit of test code, I just include the raw image data in the bootsector and copy it to the vidmem.
05:20:00 <heat> it's slower but not "hey i'm waiting for the image to render" slow
05:20:00 <MarchHare> heat: I assume I'm just doing something super non-optimized and probably it's related to timing and memory exclusivity or something
05:21:00 <MarchHare> heat: I'm not doing anything cutting edge (and to be frank, haven't played with it for a few years)
05:21:00 <heat> I don't use VGA but I use the linear framebuffer with much higher resolutions than VGA allows
05:21:00 <heat> usually 1024x768x32 is what I use
05:22:00 <heat> and it's not as slow as you're saying it is
05:22:00 <heat> and I don't really optimise it
05:22:00 <MarchHare> heat: Like I said, I'm probably doing something super naiive.
05:22:00 <heat> do you have sauce?
05:22:00 <MarchHare> heat: There an article on how to use linear framebuffers?
05:22:00 <MarchHare> heat: I can dig it up, sure.
05:23:00 <heat> MarchHare, yes, multiple on the wiki
05:23:00 <heat> depends on what you're doing of course (BIOS, EFI, a bootloader like GRUB)
05:23:00 <MarchHare> heat: I've just been doing bare metal with super minimal bios to get it started.
05:24:00 <MarchHare> heat: This is more curiosity for the moment, since I've been super unmotivated lately and about to start a new job.
05:26:00 <MarchHare> Well I think I have to look for it. I found the one that draws a CGA image to the screen.
05:27:00 <klange> Video setup is one of those things where it became infeasible to DIY it somewhere around 30 years ago.
05:29:00 <MarchHare> klange: Yeah, I know. I'm doing it for the lulz right now.
05:29:00 <Jari--> klange it is easy to say to plug the linker to my MS-DOS...
05:29:00 <Jari--> Anyone have experiencing regarding GCC / DJGPP / FreeDOS?
05:30:00 <Jari--> I tried Rhide IDE (editor) and it crashed on FreeDOS...
05:30:00 <klange> Jari--: My linker is for Elf binaries/shared objects, and that version of it is specifically for 64-bit stuff, it is absolutely useless to you if you are trying to use DOS.
05:30:00 <MarchHare> klange: It's just fun playing around for me. Build it, stick it on a disk or CD, drop it into a real machine, see it light up. It's basica;y like embedded programming
05:30:00 <Jari--> klange oh
05:31:00 <Jari--> a facebook friend has
05:31:00 <bslsk05> ​ Public Domain Operating System
05:33:00 <MarchHare> heat: I'm thinking the code that does the vga one might actually be in BASIC. I could have sworn
05:33:00 <MarchHare> I converted that one to asm.
05:38:00 <MarchHare> heat: Well, I found the BASIC version. I'm pretty sure I converted it, but it runs damn fast in dosemu under qbasic, so maybe I'm just remembering doing something REALLY naive.
05:38:00 <heat> mandela effect yo
05:40:00 <Jari--> Don't expect Microsoft workers to like your project.
05:44:00 <MarchHare> heat: Anyway, got a link to a good article on how to use a linear framebuffer? I'm guessing that's hardware involving PCI hardware, which I'm not very good at (well, I completely don't understand it)
05:46:00 <klange> "Using" a linear framebuffer is just writing pixels into a big array somewhere set up by the hardware. The tricky bit is setting one up.
05:46:00 <klange> That's where my previous comes into play; there hasn't been a viable way to do this yourself, after you've left the safety of the BIOS, since the 90s.
05:47:00 <heat> he's in real mode I think
05:49:00 <MarchHare> heat: Yeah, I'm just doing this with real mode for now.
05:50:00 <Jari--> klange planning to build a virtual machine to run 32-bit apps drivers?
05:50:00 <Jari--> Windows like
05:50:00 <MarchHare> klange: I assume you just tell the hardware where in memory your framebuffer is and it does the copy to hardware buffer, then?
05:50:00 <MarchHare> klange: Sort of a DMA>
05:50:00 <heat> no
05:50:00 <klange> MarchHare: Generally no, the hardware tells you where _its_ memory is, and you write directly to it.
05:51:00 <heat> the hardware tells you where the framebuffer is and you just write to it
05:51:00 <heat> no copy
05:51:00 <heat> this is literally like VGA but better
05:51:00 <heat> (well, not the hardware but the video bios/driver, but that's besides the point)
05:52:00 <klange> I think LFB support is the point where bit-banging VGA is no longer viable; what you'll want to look at is VESA BIOS Extensions. It's a spec for a handful of BIOS functions to query and set video modes.
05:52:00 <MarchHare> klange: Gotcha. So for double buffering for instance, the hardware will have a pointer that points to the page you write to and you just write to it and the hardware handles that, and when it's ready to flip the page, switches that pointer to it?
05:52:00 <MarchHare> Sorry, switches the active screen rendering to that memory
05:53:00 <heat> you don't have double buffering with LFBs
05:53:00 <Griwes> if you had hardware double buffering, yes, but you don't
05:53:00 <heat> you pull out the good old memcpy
05:53:00 <CompanionCube> the funny thing about pdos is the manifesto pretending profit isn't a thing
05:54:00 <Griwes> an LFB is literally just a chunk of the video controller's memory that's wired more or less directly to the cpu's memory controller and you just... write there
05:54:00 <MarchHare> klange: I think I have a long bit of studying and tinkering ahead if I ever want to get something out of it out.
05:54:00 <klange> You can have double buffering with LFBs if the video hardware supports something like panning, but that's out of the scope of what you'll get from generic interfaces.
05:54:00 <MarchHare> Griwes: That doesn't really sound much different than writing to A000:0000 or something.
05:54:00 <heat> it's not
05:54:00 <Griwes> that's because it isn't
05:54:00 <heat> you just have better video modes
05:55:00 <heat> the gpu does to 0xA0000 what it does to the LFB's address
05:56:00 <klange> Better video modes, generally no banking (the 'linear' bit means it's pixel after pixel, not separate color channels)... very hands-off operation...
05:56:00 <klange> Turns video setup into a fire-and-forget thing. Someone else set up a framebuffer, now you can just write to it and see pixels.
05:56:00 <heat> although generally from what I've read the VGA memory thing is way hackier than your LFB that can be just video memory
05:57:00 <Griwes> I mean there's no issues with implementing vga memory as being just the "video" memory
05:57:00 <Griwes> it's fairly easy to turn that into a video signal
05:58:00 <heat> the intel GPUs have a lot of weird internal details on VGA, etc in the chipset itself iirc
05:58:00 <Griwes> I mean turning a bunch of bytes into a video signal is fairly trivial
05:58:00 <heat> that's what I was referring to
05:58:00 <MarchHare> Griwes: I pulled the manual for CGA awhile back an I was just awed by how easy that one is. I kind of want an old PC with true CGA just to play with
05:58:00 <Griwes> if I was to implement a vga adaptor, I'd have separate buffers for vga memory and for an lfb
05:59:00 <CompanionCube> i wonder if there's any notable internal VBE/GOP differences
05:59:00 <Griwes> (I would not implement one, but if I had to...)
05:59:00 <MarchHare> I'm kind of mad my mom gave away our old amstrad 6400 25 years ago.
05:59:00 <heat> CompanionCube, they're always drivers :)
05:59:00 <Griwes> (...if I had to, I would reuse bits from my B.Eng. project ;p)
06:00:00 <MarchHare> Griwes: Wanna build a modern vga adapter that outputs on the video out for TV sets :)
06:01:00 <Griwes> my B.Eng. project was literally an fpga thing that accepted text over serial, and then displayed the characters over hdmi
06:03:00 <MarchHare> Griwes: Nice. Nice and simple, but maybe quite complex on the hdmi side of things. I assume you had to implement a character generator and everything?
06:04:00 <Griwes> yes
06:04:00 <Griwes> hdmi wasn't too bad
06:04:00 <Griwes> just multiply the clocks with PLLs and retype some constants from the spec
06:04:00 <CompanionCube> i bet displayport would be worse?
06:04:00 <Griwes> yes
06:05:00 <Griwes> god yes
06:05:00 <MarchHare> Griwes: Maybe that's why displayport is taking off so slowly?
06:05:00 <Griwes> taking off slowly?
06:05:00 <Griwes> can't say I have noticed that
06:06:00 <MarchHare> Griwes: Seems like HDMI kind of seems to be winning the format war over DP, but I'm also not super up to date
06:06:00 <MarchHare> I see hdmi on most stuff, not so much DP
06:06:00 <heat> nah display port is pretty on top
06:06:00 <heat> most monitors come with DP for example
06:06:00 <Griwes> maybe if you look at like TVs and shit
06:06:00 <Mutabah> ^
06:06:00 <heat> laptops have eDP
06:06:00 <Mutabah> And most modern cards will have one HDMI and many DP
06:06:00 <heat> anything DP is winning
06:06:00 <klange> I have the opposit experience.
06:06:00 <Griwes> but in spaces where DP is actually beneficial, you'll see dp everywhere
06:06:00 <MarchHare> So why don't TVs have it?
06:07:00 <heat> MarchHare, legacy?
06:07:00 <Griwes> it gains nothing for TVs tbh
06:07:00 <Griwes> you ain't going to daisy chain TVs, you ain't going to throw things to them over usb-c or thunderbolt, ...
06:08:00 <Griwes> the point of DP is that it works *very well* within the integrated environment of PC peripherals
06:08:00 <MarchHare> I probably shouldn't be using my TV as a monitor anyway.
06:08:00 <Griwes> you can easily get a single cable to give you power, networking, usb, displays, ...
06:08:00 <MarchHare> I kind of did that because that's mostly where my power is in this room.
06:09:00 <Griwes> (..., pci-e lanes, ...)
06:09:00 <MarchHare> Griwes: DP can encapsulate PCI-E?
06:09:00 <Griwes> no
06:09:00 <heat> thunderbolt can
06:10:00 <Griwes> but thunderbolt does, and it _also_ carries DP
06:10:00 <Griwes> usb-c also carries DP
06:11:00 <MarchHare> Wow, I'm really behind on my tech.
06:12:00 <MarchHare> Or my use cases don't involve a lot of perpherials or something
06:12:00 <MarchHare> Which makes sense I guess, I tend to do things like serial over usb and embedded programming.
06:12:00 <Griwes> my laptop currently has three external screens connected, two 1440p ones from a thunderbolt dock that also has my usb, audio, and ethernet
06:13:00 <Jari--> formatting a disk drive (ramdisk) appears to work fine here
06:13:00 <Griwes> and another one is a 3840x1600 that is connected with an usb-c dongle directly to the laptop, through just a normal usb-c port
06:14:00 <Griwes> and all of this is internally routed to actual physical outputs of the laptop's dgpu
06:14:00 <Griwes> it's kind of magical really
06:15:00 <MarchHare> Griwes: I also don't have a performance laptop. The laptop I got is a crappy HP that I thought had a 1060p screen and it only had a 768 (and I was pi$$ed about that)
06:15:00 <Griwes> right; I didn't intend to brag, rather to show what the sort-of-state-of-the-art of the year is
06:15:00 <MarchHare> To be fair, I mostly used it for programming.
06:16:00 <MarchHare> Griwes: Maybe if I last at my new job I'll score some better gear like decent screens and stuff.
06:17:00 * CompanionCube switched to a 1440p monitor using dp recentlg
06:18:00 <MarchHare> hell, maybe I'll spring for a better laptop too, this one is okay, but I'm not real impressed with it.
06:22:00 <MarchHare> I really hate spending a lot on laptops, given that they tend to fail from physical wear and tear very reliably on about a 4 year schedule.
06:23:00 <MarchHare> Seems like it's like clockwork with the last several I've had. 4-5 years.
06:23:00 <MarchHare> And it tends to be things I can't pinpoint.
06:26:00 <MarchHare> You guys have a lot of git repos you like to keep up to date? I've got a sweet little updater.
06:27:00 <MarchHare> Lets you update stuff from a list, and only that stuff, so if you have a local only repo or something you don't want updated, just leave it out of the list.
06:28:00 <MarchHare> I just do a find on my programming dir for list files and tell it to do them.
06:29:00 <kingoffrance> CompanionCube, re pdos dont want to start anything, but i will note for usa he is 180 of declaration of independence about whether "companies" are "sovereign" or not. is australia, where he seems to be, different? dont know. cant say that is not a common "mistake" though. "company" is vague and meaningless.
06:30:00 <kingoffrance> i dont think that changes anything...just doesnt inspire confidence
06:31:00 <MarchHare> kingoffrance: Could be worse. Could be templeOS.
06:32:00 <kingoffrance> thats actually similar for me -- no confidence :)
06:32:00 <kingoffrance> really, i dont have anything 64-bit to screw around with
06:33:00 <kingoffrance> my only 64-bit machine is occupeid
06:35:00 <CompanionCube> i think he's using the word correctly
06:36:00 <MarchHare> CompanionCube: Are you referring to pdos's license somewhere?
06:36:00 <CompanionCube> MarchHare:
06:36:00 <bslsk05> ​ PDOS / Git Code / [9da2bc] /pdpgoal.txt
06:39:00 <MarchHare> CompanionCube: This bit -> "company makes a sovereign decision"
06:40:00 <CompanionCube> yes
06:40:00 <klange> I think that's a fine use of the word?
06:41:00 <MarchHare> CompanionCube, kingoffrance, klange: Seems to be used more or less correctly here, yes. Not sure I would have used sovereign, but the meaning intended is clear enough
06:41:00 <MarchHare> He's basically trying to elevate it to the level of "It's their god-given right"
06:42:00 <klange> With no comment on the rest of the statement, my intuition is that Paul means "when you make a decision without outside influence or control".
06:43:00 <CompanionCube> the other thing is the interesting dissonance vis a vis his position on the GPL and on proprietary software
06:43:00 <MarchHare> klange: Not quite. Sovereigns influence each other all the time. What he means is that within that domain (within their company), they have absolute authority to make that decision.
06:43:00 <MarchHare> CompanionCube: He seems to be forgetting LGPL or something
06:43:00 <klange> "Without outside _force_" then.
06:44:00 <klange> "You made this decision, not because some other obligation forced you to, or a government said you had to, but because you evaluated the situation and came to that conclusion on your own".
06:44:00 <CompanionCube> MarchHare: more: he goes on about stuff needing to be public domain to avoid reinvention, but at the same time argues that proprietary software with the same end result is fine.
06:44:00 <MarchHare> klange: Yeah, more or less.
06:45:00 <MarchHare> CompanionCube: He definitely contradicts himself in making his point. It's a valid point, but his argument is deficient.
06:46:00 <klange> Paul's philosophy on the GPL is a common enough one, it's why a lot of stuff chooses BSD-style licenses.
06:47:00 <kingoffrance> all: fair enough, i gathered that too...just wanted to note. agree with MarchHare too "within domain". that is pretty much the only real definition
06:47:00 <CompanionCube> yeah the argument against the GPL is fine, it's just inconsistent with their *other* views
06:47:00 <klange> Though I think some of his reasoning is flawed... the FSF fully admits that the GPL limits a freedom in service empowering other freedoms. GNU/FSF are also heavily focused on the idea of freedoms for end users and considers, eg., a company building software to not be an end user, so restricted their freedoms in service of end users is "fair game".
06:48:00 <klange> s/in service empowering/in service to empowering/
06:48:00 <klange> s/so restricted/so restricting/
06:49:00 <klange> I am spoiled by message editing on Discord.
06:51:00 <klange> My personal philosphy is... that I undersand and appreciate the goals of the GPL, but my own code, for the most part, does not have "end users", and I want to do what I can to make it easiest for actual users to enjoy my code.
06:52:00 <klange> Also if someone takes my code, makes changes, and doesn't want to release them, they're assholes and I don't want their changes anyway.
06:53:00 <klange> Like if my OS ended up in a backdoor system management engine on a CPU, would I want the code changes that made that possible? Heck no, that's revolting, keep it away from me!
06:54:00 <klange> Public domain dedications are not legally viable, which makes them antithetical to the idea of maximizing anyone's freedoms. The same goes for all those joke license like the beer one or the WTFPL, they don't make it easier for users because now there's a legal debacle to solve.
06:56:00 <heat> i think history has proven the GPL can't force anyone to release their changes
06:56:00 <MarchHare> klange: Discord lets you use sed notation to edit things?
06:56:00 <klange> It lets you edit things at all, I'm just old enough to do the sed thing on IRC because it's an old tradition.
06:57:00 <MarchHare> klange: Oh. I did it too, I was just getting excited that I could use it to edit things
06:58:00 <klange> oh actually it does but it's broken and doesn't handle the trailing / correctly
06:58:00 <kazinsal> The GPL and its derivatives are carefully constructed for GNU software that has the backing of the FSF's lawyers. Everyone else just has to hope that the EFF will step in for them if needed.
06:58:00 <MarchHare> klange: I just make my stuff gpl3 and if someone wants to use it, I don't make a big deal of it. But I reserve the right if someone wants to cook something really neat up and be a dick about it.
06:58:00 <klange> silly discord, all sed replacements should have a trailing slash for symmetry and so you can specify options!
07:00:00 <MarchHare> Oh nice, it does work!
07:15:00 <Jari--> klange :: I thought I am doing it better when I added directory caching system into JTMFS / JTMOS (dirdb cache)
07:15:00 <Jari--> now the cache won't flush properly, so I need to format a drive twice to make it visible to ls / dir
07:30:00 <Jari-->
07:30:00 <bslsk05> ​ SnowflakeOS's blog
07:30:00 <Jari--> interesting osdev project
07:30:00 <geist> howdy folks
07:31:00 <geist> i just playued throught he B ending of Nier: Replicant
07:31:00 <geist> mooood
07:31:00 <Jari-->
07:31:00 <bslsk05> ​29jm/SnowflakeOS - "It is very special" (10 forks/234 stargazers/MIT)
07:36:00 <heat> i've been banging my head against the ps2 driver for like 4 hours in a row
07:37:00 <heat> *it's 7am*
07:44:00 <klange> what's yielding the head-banging?
07:45:00 <heat> not working in real hardware
07:45:00 <heat> i think i've tracked it down
07:47:00 <kazinsal> 2400 baud serial terminals ought to be enough for anybody
07:49:00 <klange> Saw that Snowflake refs me in their ext2 driver (oof, good luck with that) and did a quick search on Github to see what's linking to me these days, and apparently links to my repo as an example project using the NCSA/UofI license.
07:57:00 <heat> yeeeeeees
07:57:00 <heat> its aliveee
07:59:00 <j`ey> heat: !!
08:00:00 <heat> all I need is an rtl8168 driver and a working sshd now
08:00:00 <heat> because my old laptop's keyboard is all busted up
08:02:00 <heat> i've got storage, all the CPU goodness (with SMP ofc), a framebuffer and a working userspace
08:03:00 <heat> this is getting surprisingly usable
08:04:00 <heat> I also ported nano, python, gcc, a bunch of posix utilities, make
08:04:00 <heat> i'm proud
08:04:00 <klange> plz send disk image kthx
08:05:00 <heat>
08:05:00 <bslsk05> ​ init: Set the foreground pgrp on the tty when executing dash · heatd/Onyx@2932a92 · GitHub
08:05:00 <heat> oh yeah I also added budget job control
08:05:00 <heat> Disk-image.img was compiled with GCC and because of that ships gcc
08:05:00 <klange> that's a lot of build artifacts
08:06:00 <heat> the llvm one doesn't because llvm can't compile gcc multilibs :/
08:06:00 <heat> klange, yeah 8 of them are toolchains
08:07:00 <klange> I've got mine as a Docker thing I don't touch, since it's just the gcc and binutils cross compilers
08:07:00 <heat> + a minimal sysroot as a small sdk of some sorts (you need it to compile a fully fledged GCC or LLVM)
08:07:00 <heat> and 4 disk images
08:08:00 <klange> Ah, you're doing result caching... I should look into that instead of this docker image so I can update more easily...
08:18:00 <klange> Neat. Had to finagle some qemu stuff to get it to boot and then had to hunt for / on this keyboard layout
08:19:00 <heat> oh yeah sorry I have my native keyboard layout lol
08:20:00 <heat> i'm really not happy with how my disk images are created
08:21:00 <klange> i ran `nyancat` and it went boom
08:21:00 <heat> bootable ones can only boot on EFI and, because of my config file, only boots on AHCI machines (IDE ones have a different path)
08:21:00 <heat> hmmm
08:21:00 <klange> hm, second time it got one blue line out and _then_ went boom
08:22:00 <heat> how boom?
08:22:00 <heat> like boom boom?
08:22:00 <heat> or just oopsie the program crashed boom
08:22:00 <klange> unresponsive, `info registers` suggests it's doing nothing
08:23:00 <heat> interesting... i'm taking a look
08:26:00 <heat> yeah its a legit kernel crash
08:29:00 <heat> well, don't do that then :P
08:29:00 <klange> hehe
08:29:00 <heat> TERM=ansi nyancat seems to not bork the kernel but you get cursed nyancat
08:29:00 <heat> and I don't think you want to see cursed nyancat
08:30:00 <heat> I could fix this but 1) need to sleep 2) i'm tired of looking at virtual terminal code
08:31:00 <klange> I get both of those things.
08:31:00 <heat> why are we emulating 1980s devices anyway
08:32:00 <heat> my computer is not a vt102 thank you very much
08:33:00 <kazinsal> hey, the current default xterm emulation is the VT420!
08:33:00 <kazinsal> which was released in 1990, thank you very much
08:33:00 <klange> (which is from 1990)
08:33:00 <heat> blaze it
08:33:00 <klange> Though the bulk of the escapes used by something like `nyancat` are 340
08:33:00 <kazinsal> the DEC terminal that tells you to smoke weed, kids
08:34:00 <kazinsal> I kinda want to find a DEC terminal and a MicroVAX or similar
08:34:00 <klange> And really we're all emulating xterm and each other these days.
08:34:00 <kazinsal> get some right proper vintage computing in this place
08:34:00 <klange> I want a 340.
08:34:00 <heat> i can't even find a good source on xterm though
08:35:00 <kazinsal> unfortunately I live in the wrong country to just pillage a dozen working DEC machines from a silicon valley e-waste recycler
08:35:00 <heat> i've mostly been using the OG vt100 one + some sauce code
08:35:00 <klange> When I was building my terminal I did three things:
08:35:00 <klange> - Dump lots of TUI app output and compare to what it looked like in VTE.
08:35:00 <heat> did you know there's a DEC escape code that fills your screen with E's
08:35:00 <klange> - Referenced this listing a ton:
08:35:00 <bslsk05> ​ ctlseqs(ms)
08:36:00 <klange> - Wrote a bunch of my own test apps.
08:36:00 <heat> yesterday or so I tried out vttest
08:37:00 <klange> vttest is both way too short and also way too focused on a handful of things nothing emulates anymore like doublewidth/doubleheight
08:37:00 <klange> ← One of the earliest screenshots in here is parsing some output from Vim
08:37:00 <bslsk05> ​ 11 Years of ToaruOS · GitHub
08:38:00 <heat> oh yeah I saw that
08:38:00 <heat> do you just pipe stuff to tee?
08:38:00 <klange> I think that's what I did for that.
08:39:00 <klange> Configured a terminal for the same dimensions and tee'd vim, waited for it to settle, and then closed it
08:41:00 <sham1> If it runs nyancat, it's good enough for me
08:41:00 <heat> its not good enough for you then
08:42:00 <klange> cli nyancat was also a ToaruOS test app before it was a telnet server / standalone application
08:42:00 <sham1> Sadly there is no more telnet
08:43:00 <heat> are you sure about that
08:43:00 <heat> try doing telnet on your government mandated Onyx installation
08:43:00 <sham1> I meant nyancat
08:43:00 <klange> I no longer run it, and all of the mirrors people have sent me over the years have also disappeared.
08:44:00 <klange> It's a huge bandwidth hog since it has very few optimizations and is just a constant stream of crap
08:44:00 <klange> And while it's just a few frames per second, people would run it for _days_.
08:45:00 <klange> Weirdly _that's_ not what got me kicked off the university network; recreating Dan Kaminsky's TCP-over-DNS project is.
08:45:00 <sham1> People like the pop tart cat
08:46:00 <heat> tcp over what
08:46:00 <sham1> TCP over DNS, so TCP over UDP
08:46:00 <klange> Outgoing packets encoded into request subdomains, responses over TXT records.
08:46:00 <klange> Generally the pipe was actually SSH and then you'd throw SOCKS over that.
08:47:00 <kazinsal> The only time I recall seeing someone get kicked off the university network when I was at BCIT was for running an intermural Dota 2 tournament without authorization… and opening it up to the world
08:47:00 <sham1> Hah
08:49:00 <heat> man I love me some low overhead protocols
08:49:00 <heat> what's quic compared to tcp over dns
08:56:00 <sham1> Google, and by that I mean is that it's googleware
08:57:00 <CompanionCube> klange: was the presumed filter that bad
08:59:00 <klange> Specifically, I had my domain blacklisted from the DNS servers so they no longer made new recursive calls to it.
08:59:00 <klange> Which, when you're making _millions_ of requests for new unique subdomains of a particular domain sure would look like an attack to basically anything.
08:59:00 <CompanionCube> lol
09:03:00 <klange> That tech got me free Internet on a plane once, so it was totally worth it. I had my own Python client connecting to an improved version of dakami's Perl server. RIP, man.
09:12:00 <geist> yay ahci actually identified a real disk on a real machine
09:12:00 <geist> using MSIs as well
09:12:00 <j`ey> x86?
09:12:00 <geist> yah a ryzen machine, x570 chipset i believe
09:12:00 <j`ey> is this the old ryzen?
09:12:00 <j`ey> ^
09:12:00 <geist> more like a new ryzen actually
09:13:00 <kazinsal> :toot:
09:13:00 <geist> only ahci on a real non x86 i can think of is the Cavium machine i think has ahci controllers on the die
09:13:00 <geist> maybe the marvell armada socs?
09:13:00 <geist> oh i guess a bunch of storage ARM socs have SATA. dunno if they do AHCI or some proprietary thing in general though
09:14:00 <sham1> Woot
09:16:00 <geist> i did read the identity block but am dreading actually parsing it. it's a huge mess of backwards compatibility
09:17:00 <geist> but for now since i'm just doing SATA i can probably basically assume i think ATA7 and above (or is it ATA8 == SATA?)
09:17:00 <klange> it does my self-worth some good hearing that geist of all people is struggling with ahci here
09:17:00 <geist> haha it's mostly cause i'm not so PC focused, so i only go back and fill in the gaps later
09:18:00 <geist> that eing said i like to build proper driver stacks too, and i tend to be bottom up, so i had to build a whole PCI stack, MSI allocation scheme, etc before even starting the driver
09:18:00 <geist> still have to actually flesh out the PCI driver to assign bars (for ARM and RISCV qemu)
09:18:00 <geist> since those PCI busses come up completely unconfigured
09:19:00 <geist> i'll probably do nvme next, or actually wire up virtio-pci. previous virtio drivers are virtio-mmio based, whcih is a different aperture style
09:37:00 <Jari--> Oh my God people, it is called "loader" not "dynamic linker" what I am doing.
09:37:00 <Jari-->
09:37:00 <bslsk05> ​ ld-linux(8): dynamic linker/loader - Linux man page
09:40:00 <geist> oh i dunno while i prefer runtime loader, i think dynamic linker is understood
09:45:00 <Jari-->
09:45:00 <bslsk05> ​ runtime-unpack/loader.c at master · 0xbigshaq/runtime-unpack · GitHub
09:46:00 <geist> haha apple you taunt me
09:48:00 <geist> it pops up a thing extolling the virtues of macos monterrey and telling me i should upgrade
09:48:00 <geist> but this mac isn't eligable for one
09:48:00 <geist> that's a surprising lack of polish for apple
09:50:00 <geist> i expect that sort of nonsense from msft. especially since i've literally gotten it: upgrade to windows 11! your machine isn't eligable
09:51:00 <Jari--> . /* allocating memory for the segment */ mmap(target_addr, phdr[i].p_memsz, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE, -1, 0); // hotfix patched by BigShaq
09:51:00 <GeDaMo> "Hours of fun for all the family! Not for sale to children!" :P
09:51:00 <Jari--> I will be using kmalloc for this.
09:52:00 <Jari--> That will default to executable, read/write, kernel. Owner is PID.
10:00:00 <klange> Hm, kling retweeted me... he doesn't even follow me, so that was a nice surprise. I give him a hard time because I'm constantly jelly of Serenity, but he does seem like a nice dude.
10:01:00 <sham1> It might even be that Serenity was influenced by ToaruOS in some ways
10:01:00 <sham1> I don't know though
10:02:00 <kazinsal> does serenity release disk images yet
10:02:00 <j`ey> not when I last checked
10:02:00 <sham1> IIRC no
10:02:00 <klange> From my last check, no, though their build process - while long - does seem to work okay.
10:03:00 <klange> I do poke it with a stick every so often, gotta keep an eye on the competition.
10:19:00 <klange> lol they require gcc-11 on the host now
10:19:00 <klange> why
10:21:00 <sortie> <heat> trianglix time
10:21:00 <sortie> /\
10:21:00 <sortie> _
10:21:00 <klange> oh dear, your triangle is having some trouble
10:21:00 <sortie> It all comes together
10:22:00 <klange> △ here you can borrow one of mine
10:22:00 <sortie> Oh neat I can barely feel it's uncontrolled rage
10:22:00 <sortie> △△△
10:23:00 <j`ey> klange: cant see any reasons for gcc11 stated :<
10:23:00 <bslsk05> ​ Meta+CI+Documentation: Bump host gcc requirement up to gcc 11 · SerenityOS/serenity@c62c10c · GitHub
10:23:00 <kazinsal> probably the same reason they don't provide disk images
10:23:00 <kazinsal> any *real* unix user etc etc
10:23:00 <GeDaMo> s⃤
10:23:00 <klange> oh no GeDaMo got a big one
10:24:00 <Jari--> Whats the maximum frame rate throughput you can get for e.g. 1024x768 32 bpp with VESA Linear Frame Buffers?
10:24:00 <Jari--> If you reblit the whole screen on constant basis.
10:24:00 <kazinsal> not enough parameters
10:24:00 <sortie> kazinsal, the real problem is when these disk images start replicating on their own, I got a whole containment mess down at the /cisortix/ build where it's even using scp to breach containment
10:25:00 <kazinsal> sortie: glad to see you've managed to develop a cognitohazard
10:25:00 <kazinsal> (thinking about it, this channel does sometimes get extremely Gamers Against Weed)
10:26:00 <klange> ah, a regret: that I never set up a CI system that uses ToaruOS to build ToaruOS
10:26:00 <klange> There was a period in the 1.x days when it would have been possible.
10:26:00 <j`ey> 2.x cant do that?
10:27:00 <sortie> kazinsal, I've been leaning into the whole anomalous art scene lately
10:28:00 <klange> There's a few blockers I would have to satisfy through ports, and some of the EFI stuff is touchy.
10:29:00 * kazinsal plans to eventually rewrite his core for x86-64, figure out why he's mysteriously missing a bunch of CPU time on his test environment, get some more IPv4 features finished, and then open-source his project
10:30:00 <j`ey> and provide disk images :P
10:30:00 <kazinsal> I would like the first "release" to be something you could feasibly run as your home/SMB router/firewall.
10:31:00 <sortie> These days I'm really wanting to go for cloud
10:31:00 <kazinsal> in an ideal world I'd like to have sort of a netgate/pfsense thing going where the OS itself is open source but if you want a guaranteed supported hardware platform that's a thing you can buy
10:31:00 <sortie> I totally want physical machines, but in practice, anyone doing anything useful with my OS, they're gonna stash it on some VM on some cloud provider
10:31:00 <kazinsal> in a sense I'd be less selling the OS and more selling the hardware+support
10:33:00 <kazinsal> yeah, I need to learn more about cloud networking
10:33:00 <sortie> I think the networking is pretty trivial
10:34:00 <kazinsal> both for osdev hackery and for work; the solutions architect I do a lot of stuff for has been declared the supreme emperor of cloud solutions
10:34:00 <sortie> It's really all the virtio drivers, disk image formats, APIs called, etc.
10:34:00 <klange> sortix as a google cloud option when
10:34:00 <sortie> ^^
10:34:00 <sham1> That'd be neat
10:35:00 <sortie> klange, uh, I did look at the compute engine pricing, seriously considered it, and went with a much cheaper competitor that gives me a really great deal
10:35:00 <klange> (I feel like that joke would have been funnier with AWS, but I gotta play the cards I'm dealt)
10:35:00 <sham1> Azure?
10:35:00 <sortie> That's where I host the infrastructure now. I got a big dedicated server and just spin up my recursive VMs.
10:36:00 <kazinsal> I ought to actually spend some time and a few bucks on fiddling with the various cloud providers
10:36:00 <kazinsal> we're technically an azure partner at work
10:36:00 <Jari--> klange managed to get any funding for OS project or Open Source in general?
10:36:00 <sortie> klange, I wasn't joking tho. I am seriously considering how to make compatible disk images for GCE, heck even AWS et al, I just only know GCE so far
10:37:00 <sortie> ^^ This is how one's OS would probably get used in production for real.
10:37:00 <klange> I think Travis's setups used to support nested virtualization, and I remember running tests with QEMU on them but I don't recall if I ever actually used KVM for it or if those tests run in TCG...
10:37:00 <klange> Github's stuff is all Docker madness.
10:38:00 <kingoffrance> sortie, any plans for multi-triangle aka pyramids?
10:38:00 <sortie> GCE has a free tier that might be good enough to do a hint of experimentation with, although I can totally throw some bucks at some sizeable instances to test on. Not too bad if I don't run them permanently. Honestly it was the bandwidth I found too expensive.
10:38:00 <klange> I could probably spin things up on a DO droplet...
10:38:00 <sortie> kingoffrance, mostly Mr. Termansen has been dealing with Trianglix 4 lately
10:39:00 <GeDaMo>
10:39:00 <bslsk05> ​ Pyramid Scheme - Esolang
10:40:00 <sortie> klange: ← This is really lovely. You know, I can pinpoint when I heard about it by the wallpaper era heh. Those orbital images seem familiar but I definitely remember Miku-era.
10:40:00 <bslsk05> ​ 11 Years of ToaruOS · GitHub
10:40:00 <sham1> GeDaMo: oh man, that's odd looking
10:41:00 <GeDaMo> Pyramid power! :P
10:41:00 <klange> Heh, Toaru wallpaper eras. "Random Gnome-Look wallpapers" "screw it, here's one of the Miku wallpapers from my actual desktop" (that one is still on my left monitor but it's usually covered by a browser 24/7)
10:41:00 <sortie> :D
10:41:00 <klange> And then the "my own photos" era that continues to this day - 1.x was landscapes, 2.x is macro stuff
10:42:00 <sham1> There was never a "monochromatic wallpaper" era interestingly
10:42:00 <kazinsal> heh, my current wallpaper is one of the night shots from the macOS Mojave dynamic wallpaper
10:43:00 <klange> Yutani has a default gray it will paint if there's no background window... which was actually a light blue originally.
10:43:00 <klange> Went from light blue always being painted as a base to no base to "medium gray, but only if there's no bottom window, just to stop the ghosting effect".
10:44:00 <sham1> I usually use #80020 because I like burgundy red
10:44:00 <sham1> Err, #800020
10:44:00 <kazinsal> I'm a purple kinda guy
10:44:00 <klange> I also experimented with black and vary dark gray.
10:44:00 <kazinsal> more blue-purple than red-purple.
10:45:00 <klange> Hm, actually, I think I _do_ paint black now...
10:45:00 <sham1> Black is the most "obvious"
10:45:00 <klange> if (!yg->bottom_z || yg->bottom_z->anim_mode) { draw_fill(yg->backend_ctx, rgb(0,0,0)); }
10:45:00 <sortie> ← Since my compositor's earliest days, I went with this pleasant blue default background which invokes a retro late 1990's era computing latent power
10:46:00 <klange> If there is no bottom window, or it's animating, I paint black. That was part of the login experience improvements, as the login screen does the "grow in/out" effect.
10:46:00 <kazinsal> #5A4DDE is the "primary" accent colour for my project
10:46:00 <sham1> sortie: that kinda looks like Windows 2K
10:46:00 <sham1> I like it
10:46:00 <sortie> Heck that blue still feels modern with a bit of transparent window decorations to give it a mid 2000's feel
10:46:00 <kingoffrance> GeDaMo, but but but ..... i thought that was the normal scheme <points at cover>
10:46:00 <bslsk05> ​ Structure and Interpretation of Computer Programs - Wikipedia
10:46:00 <klange> Hm, actually, this should go in that album... where's my SDL Yutani prototype screenshots...
10:47:00 <sham1> SICP is nowadays in JavaScript
10:47:00 * klange ventures into the dark forest that is imgur
10:47:00 <sortie> sham1, Windows 2K is one of my favorite computing eras growing up :)
10:47:00 <sham1> I thought you'd venture into the OS screenshots thread of the forum
10:48:00 <kazinsal> whoa, there's a forum?
10:48:00 <sortie> Holy shit what a forum?
10:48:00 <kazinsal> (the inverse of the classic SA joke "there's a front page?")
10:48:00 <klange> The forum is slow these days, but it's at least been working for the last month or two.
10:48:00 <sham1> Yeah
10:48:00 <klange> And we don't get a bunch of spam I have to deal with!
10:48:00 <sham1> Too much flamewar IMO
10:49:00 <klange> Also I finally got wiki admin sorted out, woo.
10:49:00 <kazinsal> I kinda tuned out of the forum after that extremely abrasive bzt dude got unbanned
10:49:00 <sortie> sham1, yeah this color scheme reminding people of those times is a great thing, because it makes even the simplest screenshot like that, invoke some expectation of underlying power and flexibility (which totally isn't there, at least during that ancient screenshot)
10:49:00 <kazinsal> anything actually intellectually stimulating in the osdev community happens here anyways
10:50:00 <kazinsal> on the forum you've got "why is os crashing *dereferences null pointer*" and "look i made os [screenshot of a BIOS print string hello world booting from a floppy in bochs]"
10:50:00 <klange> i mean, we get those here too
10:51:00 <kazinsal> yeah but we also get vintage ISA discussion and practical OS design discussion and catgirls
10:51:00 <sham1> Yeah, the developer section has a lot of relatively easy questions
10:51:00 <klange> if you want catgirls on the forum, that can be arranged
10:52:00 <kazinsal> amazon affiliate link for programmer socks and clip on headphone cat ears
10:52:00 <sham1> Next April fools
10:52:00 <kazinsal> maybe this year I'll get around to doing my 5150-compatible unix clone for april fools
10:52:00 <klange> I'm sure if we had adsense or something embedded on the forum we'd get that sort of stuff
10:53:00 <klange> found what I was looking for
10:54:00 <klange> oh and while I'm in here, here's _technically_ the first screenshot of Misaka:
10:55:00 <sham1> Speaking of compositors (on Linux land instead of in a custom OS because I just can't be arsed enough) I've actually needed to look into some interesting maths. Might just write a blog post, I suppose some people might find creating unions of rectangles using line sweeps useful
10:55:00 <klange> (just in case anyone thought I was exagerating when I said I'd had that repository sitting around since 2015 and didn't get around to actually working on it until 2021)
10:56:00 * kazinsal contemplates just bolting all of his code onto Misaka instead of writing a new kernel core...
10:57:00 <klange> oh there was actually a _different_ solid color default background for Yutani after the SDL prototype
11:09:00 <geist> oh thanks for reminding me, i meant to retweet that
11:14:00 <kazinsal> same
11:15:00 <kazinsal> hmm. it's three in the morning. why am I still awake
12:14:00 <GeDaMo>
12:14:00 <bslsk05> ​'Chicago - 25 or 6 to 4 (Official Audio)' by Chicago Band (00:04:50)
12:20:00 <gog> is that your current jam?
12:21:00 <GeDaMo> It's kind of a reference to kazinsal, the song's about a song writer up working at 25 or 26 minutes to 4 in the morning
12:21:00 <gog> ah ok
12:23:00 <klange> Brings me back to my school jazz band days.
12:36:00 <GeDaMo> Ever heard acid house being played by a brass band? :P
12:36:00 <bslsk05> ​'What Time Is Love?' by The Williams Fairey Brass Band - Topic (00:04:36)
12:37:00 <gog> ok this is a jam
12:38:00 <klange> No and it looks like that won't be changing quite yet: 'This video is unavailable.'
12:38:00 <GeDaMo> :(
12:38:00 <gog> oof
12:38:00 <klange> The joys of international copyright.
12:39:00 <GeDaMo> This has a bit of it
12:39:00 <bslsk05> ​'Acid Brass - What Time Is Love' by ukbrassbands (00:02:19)
17:10:00 <Jari--> I am reading
17:10:00 <bslsk05> ​ Windows Kernel - Microsoft Tech Community
17:11:00 <sham1> Okay
17:21:00 <Killashi234> Hello
17:21:00 <Killashi234> Wait wait
17:21:00 <Killashi234> Did I mistype my username or did I leave my other computer on
17:22:00 <Killashi234> hm
18:11:00 <junon> Reading AMD64 vol 2 and it overviews SMM - is that code that is written by the system programmer? Or is it supplied by the processor that allows you to call into firmware stuff? It's really vague.
18:11:00 <sham1> IIRC SMM is firmware stuff
18:12:00 <clever> i think it comes from the bios blob, yeah
18:12:00 <clever> and it basically just lets the bios continue to run, without the old problems of having to drop from virtual to real mode
18:13:00 <junon> ah okay so it's almost an interrupt system between protected (or above) mode kernels and the BIOS, akin to ring 3 -> ring 0 interrupts?
18:13:00 <junon> are SMIs standardized then? or are they different on each machine?
18:13:00 <clever> i assume they are standardized
18:13:00 <clever> i think the SMM can also trap IO ports
18:14:00 <clever> so it can emulate a ps2 keyboard, and route it over usb
18:14:00 <junon> cool, makes sense
18:14:00 <junon> thanks :D
18:20:00 <clever> junon: also has info
18:20:00 <bslsk05> ​ System Management Mode - OSDev Wiki
18:23:00 <clever> junon: yeah, it looks like a whole other ring, and the cpu will context-switch in/out automatically, and then whatever code the bios/firmware setup runs to handle things
18:23:00 <junon> ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
18:23:00 <junon> Wow that's a much better explanation of it
18:23:00 <junon> Thanks
18:23:00 <clever> and it doesnt go thru the IDT, so the os cant really block it
18:23:00 <clever> or break it
18:24:00 <junon> Yeah makes sense
18:24:00 <junon> I suppose it could have been a dedicated coprocessor but they did it this way to keep things all in one arch/spot/etc instead of making firmware vendors target a completely different ISA or something, yeah?
18:25:00 <clever> yeah
18:25:00 <clever> its far simpler to just context-switch then to add a whole other core
18:25:00 <junon> cool
18:25:00 <clever> fewer transistors in the cpu
18:25:00 <junon> yeah definitely
18:25:00 <clever> but at the cost that the OS just halts when you run SMM code
18:27:00 <clever> junon: you might find more information in the coreboot source, since thats replacing the bios
18:28:00 <junon> SMM code is pretty lightweight though no?
18:28:00 <junon> and yeah good idea, I'll check there.
18:28:00 <clever> yeah, if designed right, it shouldnt cost much time
18:29:00 <clever> one of my older laptops, would lock up solid for ~0.5 seconds, every time the cpu freq changed
18:29:00 <clever> and the FIFO from the internal keyboard would overflow if i type during that time
18:29:00 <clever> causing loss of key-up events, causing auto-repeat to just take off
18:47:00 <junon> oh god haha
18:54:00 <clever> junon: for extra fun, `ls -lh` causes the cpu usage to spike enough to make it change freq
18:54:00 <clever> and the downclock afterwards, lines up with me reacting to the output, and typing the next cmd
18:54:00 <clever> so basically every command i type, will drop keys and repeat others
18:54:00 <junon> yuck
18:55:00 <clever> i never found a proper fix
18:55:00 <junon> so SMM also manages CPU voltage and whatnot, is it what controls parking and whatnot?
18:55:00 <clever> but at the time, the governer was in userland, and had proper config files
18:55:00 <clever> so i just told it to wait until the cpu usage is high for 30 seconds before stepping up
18:55:00 <clever> then its less twitchy on the trigger
18:56:00 <clever> junon: i think thats highly chip dependant
18:56:00 <clever> some may hide it behind SMM code, others may directly expose it with acpi AML
18:56:00 <clever> some may just use AML to poke the SMM
18:56:00 <junon> Ah okay, so there's a tight relationship between SMM and ACPI then
18:56:00 <junon> what's AML?
18:56:00 <clever> a bytecode in acpi
18:57:00 <clever> so you can run executable code the bios gave you
18:57:00 <clever> in any isa
18:57:00 <clever> (32bit vs 64bit)
19:11:00 <junon> o-o
19:11:00 <junon> you have to implement a bytecode interpreter to run ACPI stuff?
19:11:00 <junon> in the kernel?
19:11:00 <junon> (I haven't gotten to ACPI yet but I hear a lot of groaning about it)
19:13:00 <clever> junon: for certain features, yes
19:13:00 <junon> Actually sounds kind of fun.
19:13:00 <clever>
19:13:00 <bslsk05> ​ AML - OSDev Wiki
19:13:00 <clever> > A knowledge of it is required to even shutdown the computer.
19:13:00 <clever> "certain features" includes such basic things like turning off the power :P
19:16:00 <junon> good lord lmfaoooooooo
19:17:00 <junon> that's going to be fun.
19:17:00 <junon> I wonder if Kaitai could capture this.
19:17:00 <junon> not that I'd use that in a kernel, would just be curious.
19:20:00 <junon> is the ACPICA liberally licensed?
19:21:00 <junon> Oh it's under GPLv2 or BSD.
19:21:00 <clever> no idea, but i do notice there is also a page
19:21:00 <bslsk05> ​ ACPICA - OSDev Wiki
19:22:00 <junon> yeah
19:22:00 <junon> is the license on the official site
19:22:00 <junon> either a 3-clause BSD, GPLv2, or an intel license - your choice.
19:51:00 <Ermine> Acpi specification is more than 1000 pages long...
19:52:00 <geist> i can tell you that acpica is pretty easy to integrate, provided your os has some sort of mutex and routes to map/unmap mmio space, or is in a supervisor mode where it can directly do so
19:52:00 <geist> downside is the esult is pretty large, 200KB or so of .text/data
19:52:00 <Oli> You can say it is specific
19:52:00 <geist> apica does have a nice porting layer, however
19:53:00 <Ermine> Is acpica big because of portability layer?
19:55:00 <clever> Ermine: i suspect its big just due to how many functions there are
19:57:00 <geist> yah most of it is a huge pile of if/elses and a shitton of structures
19:58:00 <geist> since it has all the routines to parse every possible combination of everything
19:58:00 <geist> plus the bytecode interpreter
19:58:00 <geist> and also that does't link time optimize out that well, since most of the code is reachable through a relatively few entry points: parse_this_table() or run_this_bytecode(), etc
20:08:00 <Oli> Seems like a good scenario for a jump table work
20:20:00 <geist> yah lots of switch statements so the code probably already uses it
20:21:00 <geist> it's basically lots of plain C. I don't particularly like the style of the code, it's very windowsy but that's their choice
20:22:00 <CompanionCube> using kaitai struct in kernel space would be a new one :P
20:23:00 <CompanionCube> doesn't seem to have a plain C output, which is likely to be a Problem
20:24:00 <geist> will have to look up what that is
20:25:00 <CompanionCube>
20:25:00 <bslsk05> ​ Kaitai Struct: declarative binary format parsing language
20:26:00 <geist> hmm yeah 'C++/STL' does not look good
20:26:00 <geist> depends on which parts of STL they use
20:26:00 <geist> may just be simple stuff like std::array or whatnot
20:28:00 <CompanionCube> seems to be stdint.h, vector, memory, also streams
20:30:00 <geist> yah bummer. the vector is a drag since that also means it's using the heap to extract things
20:58:00 <clever> junon: oh right, qemu source should also have bits of SMM
21:01:00 <clever> target/i386/smm_helper.c:void do_smm_enter(X86CPU *cpu)