Search logs:

channel logs for 2004 - 2010 are archived at http://tunes.org/~nef/logs/old/ ·· 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


http://bespin.org/~qz/search/?view=1&c=osdev&y=18&m=5&d=12

Saturday, 12 May 2018

00:00:00 --- log: started osdev/18.05.12
00:02:33 --- quit: oaken-source (Ping timeout: 246 seconds)
00:07:13 --- join: cantbetouched (~SASLExter@gateway/tor-sasl/kernelbloomer) joined #osdev
00:08:29 --- join: SGautam (~GautamS@unaffiliated/gautams) joined #osdev
00:08:43 --- quit: magnificrab (Remote host closed the connection)
00:09:06 --- join: magnificrab (~pi@189.171.148.122.sta.dodo.net.au) joined #osdev
00:10:23 --- quit: KernelBloomer (Ping timeout: 255 seconds)
00:15:35 --- join: keepsil (~user@194.135.153.88) joined #osdev
00:15:39 <keepsil> Hey
00:16:03 <keepsil> If one is creating assembler and needs to associate label declarations with memory locations in the generated binary
00:16:40 <keepsil> Does one use line/column vars from symtable entry for the declaration to decide where should the label refer to?
00:16:47 <keepsil> I think there must be a better way
00:17:20 <Mutabah> ... you want to get the symbol/label name for a memory address?
00:17:34 <keepsil> No
00:17:43 <keepsil> I'm trying to make an assembler
00:18:04 <keepsil> Can't decide the best way of pulling the info about label decl location
00:18:13 <keepsil> Using line/column seems hacky
00:18:45 <Mutabah> Can't you just refer to the instruction offset?
00:19:14 <keepsil> You mean like count emitted instructions length so far and refer to it
00:19:19 <keepsil> Yes that sounds like it
00:19:25 <Mutabah> Yep
00:19:37 <keepsil> I need to sleep more
00:21:14 --- quit: keepsil (Quit: WeeChat 2.1)
00:23:54 --- join: EvanCarroll (~ecarroll@172.58.104.57) joined #osdev
00:32:05 --- join: vdamewood (~vdamewood@unaffiliated/vdamewood) joined #osdev
00:35:48 --- join: sdk93 (uid290141@gateway/web/irccloud.com/x-unsdhqjhesvayljt) joined #osdev
00:39:49 --- quit: AverageJ0e (Ping timeout: 240 seconds)
00:44:53 --- quit: SGautam (Quit: Leaving)
00:47:06 --- join: w41 (~w41@unaffiliated/w41) joined #osdev
00:50:01 --- quit: banisterfiend (Ping timeout: 256 seconds)
00:52:43 --- quit: aalm (Quit: xyz 2.0.1)
00:52:47 --- join: oaken-source (~oaken-sou@fw1.dmz.backbone.elte.hu) joined #osdev
01:01:41 --- quit: oaken-source (Ping timeout: 260 seconds)
01:01:58 --- join: Kimundi__ (~Kimundi@i577A994C.versanet.de) joined #osdev
01:03:25 --- join: oaken-source (~oaken-sou@fw1.dmz.backbone.elte.hu) joined #osdev
01:03:53 --- quit: EvanCarroll (Remote host closed the connection)
01:04:08 --- join: ljc (~ljc@unaffiliated/ljc) joined #osdev
01:06:59 --- join: KernelBloomer (~SASLExter@gateway/tor-sasl/kernelbloomer) joined #osdev
01:08:11 --- join: Asu (~sdelang@AMarseille-658-1-104-62.w86-219.abo.wanadoo.fr) joined #osdev
01:08:26 --- quit: cantbetouched (Ping timeout: 255 seconds)
01:08:33 --- join: zesterer (~zesterer@162.202.189.80.dyn.plus.net) joined #osdev
01:17:01 --- nick: promach__ -> promach2
01:20:01 --- join: aalm (~aalm@37-219-119-194.nat.bb.dnainternet.fi) joined #osdev
01:25:15 --- join: NaNkeen (~nankeen@115.134.149.50) joined #osdev
01:25:46 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
01:30:31 --- quit: cirno_ (Remote host closed the connection)
01:31:34 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
01:33:14 --- quit: ljc (Quit: ayy)
01:38:19 --- quit: MarchHare (Ping timeout: 240 seconds)
01:38:39 --- join: t3hn3rd (~Logic_Bom@cpc91224-cmbg18-2-0-cust219.5-4.cable.virginm.net) joined #osdev
01:39:30 <t3hn3rd> Morning all! \o_ Another day, another issue - anyone have any ideas why an E1000 driver/dev would stop receiving data after a period of time, but continue to be able to TX?
01:43:13 <bauen1> overflow of some integer maybe ?
01:45:09 <t3hn3rd> Hmmm, only using unsigned in E1000 Driver, and the value should be locked to within E1000_NUM_TX_DESC using (tx_curr + 1) MOD E1000_NUM_TX_DESC;
01:52:12 <t3hn3rd> https://pastebin.com/B9Y7fVSP
01:52:14 <bslsk05> ​pastebin.com: [Pascal] drivers/netdev/E1000.pas - Pastebin.com
01:57:00 --- quit: oaken-source (Ping timeout: 246 seconds)
01:58:30 <Mutabah> Rx buffers?
01:58:52 <Mutabah> Maybe start spamming the register state to serial and see what changes when it stops?
01:59:44 <t3hn3rd> Not a bad call, buffering is handled when it's passed off to the first level of the netstack
02:00:30 --- quit: cirno_ (Remote host closed the connection)
02:00:40 <Mutabah> Yeah, but the card has its own buffers
02:01:15 --- quit: hmmmmmm (Remote host closed the connection)
02:01:15 <t3hn3rd> Oh you meant the RX/TX buffers for the card, they're alloced and then the virtual->physical translation is passed to the card
02:01:30 --- join: cirno_ (~cirno_@gateway/tor-sasl/cirno/x-25801483) joined #osdev
02:01:55 <t3hn3rd> it works for a good few minutes, receiving way more than the max buffer count, so the it's looping round OK
02:07:31 --- quit: bemeurer (Quit: WeeChat 2.1)
02:08:17 --- quit: KernelBloomer (Ping timeout: 255 seconds)
02:10:28 --- quit: cirno_ (Quit: WeeChat 2.1)
02:13:45 --- join: m3nt4L (~asvos@2a02:587:a023:f000:3285:a9ff:fe8f:665d) joined #osdev
02:18:37 --- join: oaken-source (~oaken-sou@fw1.dmz.backbone.elte.hu) joined #osdev
02:26:15 --- quit: Halofreak1990 (Ping timeout: 250 seconds)
02:26:29 --- quit: NaNkeen (Read error: Connection reset by peer)
02:27:35 --- join: Halofreak1990 (~FooBar247@5ED0A537.cm-7-1c.dynamic.ziggo.nl) joined #osdev
02:31:53 --- join: NaNkeen (~nankeen@115.134.149.50) joined #osdev
02:32:31 <geist> rx and tx on most ethernet cards is more or less independent
02:32:50 <geist> so it's not entirely out of the question that tx or rx gets into a bad state while the rest works
02:34:02 --- quit: xerpi (Remote host closed the connection)
02:42:32 --- quit: aalm (Ping timeout: 268 seconds)
02:42:35 --- quit: ACE_Recliner (Read error: Connection reset by peer)
02:43:51 --- quit: vaibhav (Quit: Leaving)
02:45:12 --- join: light2yellow (~l2y@185.220.70.141) joined #osdev
02:46:01 <t3hn3rd> Bizarre, it seems to be intermittent... :/
02:46:35 <t3hn3rd> https://i.gyazo.com/7e06a5f271051422f1ca5e5a2939c07e.png
02:46:42 <t3hn3rd> Been running for a while now without issue
02:47:39 <t3hn3rd> OK - scrap that, just as I post that image, it stops working xD
02:48:22 <t3hn3rd> The DESCs are still being changed, so could be an INT issue?
02:49:25 <Mutabah> Maybe you missed one? Race condition cleared the status but didn't actually handle the cause?
02:51:21 <t3hn3rd> Quite possible... If it is that, I might just rock in a corner for a while, as I've not long rewritten my INT handling code
02:53:08 --- join: sortie (~sortie@static-5-186-55-44.ip.fibianet.dk) joined #osdev
02:53:25 <Mutabah> :)
02:53:53 <t3hn3rd> In my main ISR entry point, after calling any hooks for said ISR, I'm ACKing the cascade if the INT# is >= 40 (32 + 8) is that correct or am I being an idiot?
02:55:12 <t3hn3rd> https://i.gyazo.com/292acbf6854cb433755f1fa0a59ce91d.png
02:55:28 --- quit: light2yellow (Quit: brb)
02:56:20 --- join: light2yellow (~l2y@185.220.70.141) joined #osdev
02:59:30 <Mutabah> Sounds right
03:00:08 --- quit: jjuran (Read error: Connection reset by peer)
03:00:13 <Mutabah> That said, this code shouldn't care about the absolute interrupt number, it should probably only care about the line number
03:00:23 <t3hn3rd> Hmm, my thought was maybe a higher priority INT was clearing the cascade/slave before an E1000 INT was handled
03:02:30 <t3hn3rd> Think I'm going to check if INTs are even being fired by the E1000, if it is that then I've really screwed something up
03:02:39 <Mutabah> t3hn3rd: Check the status register
03:02:48 <Mutabah> If there's bit set but there's no IRQs
03:02:54 <Mutabah> then the IRQ code is faulty
03:03:23 <t3hn3rd> E1000 status register is 0x83
03:04:19 --- join: jjuran (~jjuran@c-73-132-80-121.hsd1.md.comcast.net) joined #osdev
03:04:26 <sortie> t3hn3rd: What's that programming language? Also it's generally more helpful with a pastebin than a screenshot
03:04:51 <t3hn3rd> Freepascal :P *queue incoming trash-talk*
03:05:06 <sortie> I did think it looked like pascal or basic or something
03:05:27 <Mutabah> seconded on the pastebin/gist instead of screenshot
03:05:33 <Mutabah> at least it's a dark theme screenshot
03:05:55 <t3hn3rd> xD Sure thing, Paste-bin of the ISRManager or E1000 or both?
03:06:29 <Mutabah> t3hn3rd: Re the status register - I have no idea what that value means, but you probably do
03:07:46 <t3hn3rd> Well, 0x80 being set means there's data ready to be handled
03:07:48 --- quit: m3nt4L (Remote host closed the connection)
03:08:10 <t3hn3rd> Cannot remember what the lower half is
03:11:01 <t3hn3rd> isrmanager: https://pastebin.com/jvSxDfZS
03:11:03 <bslsk05> ​pastebin.com: [Pascal] /isr/isrmanager.pas - Pastebin.com
03:11:56 --- join: nortega (~nortega@gateway/tor-sasl/deathsbreed) joined #osdev
03:13:07 <t3hn3rd> If I've done anything massively idiotic, feel free to scold me.
03:15:53 <t3hn3rd> Oooh, I'm hopeful that I'm right and what I just changed was the issue, will pastebin a before and after from the E1000 code
03:17:24 <t3hn3rd> https://pastebin.com/QVshrnun
03:17:25 <bslsk05> ​pastebin.com: [Pascal] /driver/netdev/e1000.pas - Pastebin.com
03:17:25 --- quit: zesterer (Quit: Leaving)
03:19:07 --- quit: elevated (Quit: bye)
03:24:49 --- quit: NaNkeen (Ping timeout: 240 seconds)
03:25:17 --- quit: `Guest00000 (Quit: leaving)
03:27:50 --- join: elevated (~elevated@unaffiliated/elevated) joined #osdev
03:29:26 <t3hn3rd> Mutabah: Without wishing to jinx it, I think you were right on the money, It's been running for 20mins now, think it was the if-else on the status register and not seperate ifs, meaning if the (status AND $04) or the (Status AND $10) evaluated to true, then (Status AND $80) would never be tested, even if it would have evaluated to true, meaning it wouldn't handle the RX Data and thus no more RX INTs would be generated.
03:36:12 <bauen1> debugging page faults by adding a print to 'map_page' is fun
03:36:38 --- join: NaNkeen (~nankeen@115.134.149.50) joined #osdev
03:41:27 --- quit: elevated (Quit: bye)
03:44:12 <t3hn3rd> ARP seems to be working better too, now that I'm not relying on responses from the router: https://i.gyazo.com/7f8e71393f20117cefe929a9a70fe20f.png
03:44:19 --- quit: NaNkeen (Ping timeout: 240 seconds)
03:45:33 --- join: elevated (~elevated@unaffiliated/elevated) joined #osdev
03:46:59 <t3hn3rd> Looking forward to implementing VNC & IRC on Asuro, should be fun
03:47:28 <Mutabah> VNC is on my radar too :) No real CLI to my current OS
03:48:22 <t3hn3rd> Actually worked at RealVNC for a while, so will be a bit of a throwback.
03:48:55 --- quit: oaken-source (Ping timeout: 248 seconds)
03:49:07 <t3hn3rd> So your OS purely visual?
03:50:22 <Mutabah> Currently, yep
03:50:40 <t3hn3rd> That's pretty cool! Any screenshots? Love seeing other OS UIs!
03:50:59 <t3hn3rd> My UX design skills suck, hence why I went with a TUI Windowing System.
03:53:25 <Mutabah> http://www.mutabah.net/~tpg/TifflinScreenshots/20160111-HexViewer.png - VERY basic
03:53:37 <Mutabah> (damn, that's from a while ago, been ages since I worked on the UI)
03:53:52 <t3hn3rd> Thats f#!*ing awesome!
03:53:58 <t3hn3rd> Nice work man!
03:54:40 --- join: ALowther (~alowther@68.200.236.134) joined #osdev
03:54:43 <bluezinc> wow.
03:55:57 <Mutabah> Not quite as impressive as it looks, I don't think half of the stuff there worked
03:57:19 --- join: glauxosdever (~alex@ppp-94-66-40-239.home.otenet.gr) joined #osdev
03:58:00 <t3hn3rd> Aha, still really nice UX design though
03:58:54 <t3hn3rd> Mine as it stands right now: https://i.imgur.com/undefined.png
03:58:54 <bslsk05> ​i.imgur.com: imgur: the simple 404 page
03:59:09 <t3hn3rd> https://i.imgur.com/mSyUQI1.png oops
03:59:35 <t3hn3rd> Somewhat less impressive :P
04:00:08 --- join: zhiayang (~zhiayang@124.197.97.227) joined #osdev
04:04:54 --- join: SGautam (~GautamS@unaffiliated/gautams) joined #osdev
04:14:11 --- quit: t3hn3rd (Quit: Leaving)
04:16:51 --- join: ryonaloli (ta@unaffiliated/ryonaloli) joined #osdev
04:36:39 --- join: zmzm (~zmzm@gateway/tor-sasl/zmzm) joined #osdev
04:41:13 --- quit: klange (Ping timeout: 240 seconds)
04:42:11 --- quit: magnificrab (Ping timeout: 260 seconds)
04:42:58 --- join: magnificrab (~pi@189.171.148.122.sta.dodo.net.au) joined #osdev
04:43:04 --- join: klange (~klange@dakko.us) joined #osdev
04:43:12 --- join: ljc (~ljc@unaffiliated/ljc) joined #osdev
04:50:01 --- quit: zmzm (Quit: zmzm)
04:57:28 --- quit: Affliction (Remote host closed the connection)
04:57:34 --- join: Affliction` (affliction@2600:3c01::13:ffff) joined #osdev
05:01:25 --- quit: ljc (Quit: ayy)
05:08:10 --- join: m3nt4L (~asvos@2a02:587:a023:f000:3285:a9ff:fe8f:665d) joined #osdev
05:10:43 --- join: CrystalMath (~coderain@reactos/developer/theflash) joined #osdev
05:16:27 --- quit: immibis (Ping timeout: 255 seconds)
05:24:07 --- join: masoudd (~masoudd@5.115.237.66) joined #osdev
05:27:15 --- join: Asu` (~sdelang@87.83.136.77.rev.sfr.net) joined #osdev
05:30:46 --- quit: Asu (Ping timeout: 256 seconds)
05:33:16 <doug16k> wouldn't want to jinx it? jinxes are the most powerful bug finding techniques around
05:33:40 --- quit: ALowther (Remote host closed the connection)
05:33:59 <doug16k> I just made my kernel PIE. it is absolutely perfect. there will be ZERO issues with the changes
05:35:24 --- quit: geist (Ping timeout: 276 seconds)
05:35:31 --- join: geist (~geist@tkgeisel.com) joined #osdev
05:36:11 --- quit: m3nt4L (Remote host closed the connection)
05:38:01 --- join: Lucretia (~laguest@pdpc/supporter/active/lucretia) joined #osdev
05:41:07 <doug16k> those 51 changes to assembly code can't be wrong :P
05:42:27 <Amaan> Nothing wrong with introducing some fun bugs to fix later!
05:43:51 <doug16k> geist, yea, when I objdump --dynamic-reloc they are all R_X86_64_RELATIVE
05:45:17 --- join: booyah (~bb@193.25.1.157) joined #osdev
05:49:49 --- join: spare (~user@unaffiliated/spareproject) joined #osdev
06:00:39 --- quit: elevated (Quit: bye)
06:07:30 --- join: tacco| (~tacco@i59F710ED.versanet.de) joined #osdev
06:09:02 --- quit: nortega (Ping timeout: 255 seconds)
06:09:42 --- join: [X-Scale] (~ARM@229.122.166.178.rev.vodafone.pt) joined #osdev
06:10:05 --- quit: X-Scale (Ping timeout: 256 seconds)
06:10:08 --- nick: [X-Scale] -> X-Scale
06:16:38 --- join: bcos (~bcos@CPE-58-170-185-157.lns3.win.bigpond.net.au) joined #osdev
06:17:01 --- join: ALowther (~alowther@68.200.236.134) joined #osdev
06:20:13 --- quit: bcos_ (Ping timeout: 268 seconds)
06:22:11 --- quit: hl (*.net *.split)
06:23:00 --- join: Goplat (~Goplat@reactos/developer/Goplat) joined #osdev
06:23:28 --- quit: greaser|q (Ping timeout: 265 seconds)
06:24:19 --- join: greaser|q (greaser@antihype.space) joined #osdev
06:25:43 --- quit: lkurusa (Ping timeout: 240 seconds)
06:25:54 --- quit: VOIDShana[m] (Ping timeout: 260 seconds)
06:25:54 --- quit: Wallbraker (Ping timeout: 260 seconds)
06:26:01 --- quit: hcd[m] (Ping timeout: 255 seconds)
06:26:05 --- quit: Drakonis[m] (Ping timeout: 256 seconds)
06:26:06 --- quit: kataria[m] (Ping timeout: 256 seconds)
06:26:09 --- quit: htafdwes[m] (Ping timeout: 246 seconds)
06:26:12 --- quit: Ringil[m] (Ping timeout: 276 seconds)
06:26:12 --- quit: Stary[m] (Ping timeout: 276 seconds)
06:26:12 --- quit: equalunique[m] (Ping timeout: 276 seconds)
06:26:12 --- quit: rw-r-r-0644[m] (Ping timeout: 276 seconds)
06:29:16 --- quit: llmm_ (Ping timeout: 265 seconds)
06:29:16 --- quit: caseypme[m] (Ping timeout: 260 seconds)
06:29:16 --- quit: am2on (Ping timeout: 260 seconds)
06:29:16 --- quit: fristonio[m] (Ping timeout: 256 seconds)
06:29:16 --- join: szpght (~pawel@ns364739.ip-91-121-210.eu) joined #osdev
06:29:17 --- quit: jsgrant[m] (Ping timeout: 256 seconds)
06:29:17 --- quit: smeso (Ping timeout: 240 seconds)
06:29:19 --- quit: promach2 (Ping timeout: 240 seconds)
06:30:32 --- join: promach2 (~promach@bb219-74-174-136.singnet.com.sg) joined #osdev
06:31:38 --- join: smeso (~smeso@unaffiliated/smeso) joined #osdev
06:35:08 --- quit: szpght (Remote host closed the connection)
06:35:39 --- join: szpght (~pawel@ns364739.ip-91-121-210.eu) joined #osdev
06:40:57 --- join: rw-r-r-0644[m] (rw-r-r-064@gateway/shell/matrix.org/x-wvehvuivpwmgwtab) joined #osdev
06:44:20 --- quit: SGautam (Quit: Leaving)
06:44:38 --- join: aalm (~aalm@37-219-119-194.nat.bb.dnainternet.fi) joined #osdev
06:54:01 --- join: kataria[m] (katariamat@gateway/shell/matrix.org/x-fnpqjziskcljjfmf) joined #osdev
06:54:01 --- join: Ringil[m] (ringilmatr@gateway/shell/matrix.org/x-wghmhjecvzirrmwy) joined #osdev
06:54:02 --- join: Drakonis[m] (drakonisma@gateway/shell/matrix.org/x-ruzktfrrnrawfdww) joined #osdev
06:54:02 --- join: hl (m148833mat@gateway/shell/matrix.org/x-jqpdglywcoqugctx) joined #osdev
06:54:03 --- join: caseypme[m] (caseypmema@gateway/shell/matrix.org/x-kiaocfxdjkhrquen) joined #osdev
06:54:03 --- join: htafdwes[m] (htafdwesma@gateway/shell/matrix.org/x-nlbrdscmyfyrpbay) joined #osdev
06:54:03 --- join: Wallbraker (wallbraker@gateway/shell/matrix.org/x-lyydoiehmabgbpjb) joined #osdev
06:54:04 --- join: hcd[m] (hcdmatrixo@gateway/shell/matrix.org/x-fgdgcvbauxzioiwo) joined #osdev
06:54:04 --- join: jsgrant[m] (jsgrantmat@gateway/shell/matrix.org/x-dimdbedfvazhdaza) joined #osdev
06:54:04 --- join: equalunique[m] (equaluniqu@gateway/shell/matrix.org/x-gkazfpzupseisgau) joined #osdev
06:54:05 --- join: am2on (am2onataun@gateway/shell/matrix.org/x-nwlzpmaxfehaymxe) joined #osdev
06:54:05 --- join: Stary[m] (starymatri@gateway/shell/matrix.org/x-qvuxinnwrruxbnaf) joined #osdev
06:54:10 --- join: llmm_ (atrapmatri@gateway/shell/matrix.org/x-tzdfhhizwvmpbyju) joined #osdev
06:54:10 --- join: VOIDShana[m] (void001mis@gateway/shell/matrix.org/x-siaratuwpkimufqv) joined #osdev
06:54:10 --- join: fristonio[m] (fristoniom@gateway/shell/matrix.org/x-hraldlrviepyhevc) joined #osdev
06:54:11 --- join: lkurusa (lkurusamat@fedora/Levex) joined #osdev
07:05:19 --- quit: masoudd (Ping timeout: 240 seconds)
07:17:00 --- quit: m_t (Quit: Leaving)
07:29:15 --- quit: pie_ (Remote host closed the connection)
07:29:16 --- join: pie__ (~pie_@unaffiliated/pie-/x-0787662) joined #osdev
07:31:54 --- join: SGautam (~GautamS@unaffiliated/gautams) joined #osdev
07:35:25 --- quit: ryonaloli (Remote host closed the connection)
07:46:20 --- quit: variable (Quit: Found 1 in /dev/zero)
07:46:41 --- join: oaken-source (~oaken-sou@fw1.dmz.backbone.elte.hu) joined #osdev
07:49:05 --- quit: qeos (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/)
07:49:19 --- join: qeos (~qeos@ppp91-79-242-242.pppoe.mtu-net.ru) joined #osdev
07:49:28 --- join: EvanCarroll (~ecarroll@172.58.104.57) joined #osdev
07:54:09 --- join: daniele_athome (~daniele_a@5.170.125.243) joined #osdev
07:59:30 --- quit: w41 (Ping timeout: 268 seconds)
08:01:58 --- part: fusta left #osdev
08:02:19 --- quit: oaken-source (Ping timeout: 240 seconds)
08:05:43 --- join: dennis95 (~dennis@i577BCEDE.versanet.de) joined #osdev
08:06:59 --- join: fddsafsd (~sdfgsdfg@176.33.238.141) joined #osdev
08:09:02 --- quit: fddsafsd (Max SendQ exceeded)
08:16:43 --- quit: aalm (Ping timeout: 260 seconds)
08:19:18 --- quit: ALowther (Remote host closed the connection)
08:19:34 --- join: ALowther (~alowther@68.200.236.134) joined #osdev
08:19:49 --- join: w41 (~w41@unaffiliated/w41) joined #osdev
08:20:21 --- quit: daniele_athome (Ping timeout: 260 seconds)
08:27:13 --- join: daniele_athome (~daniele_a@5.170.120.90) joined #osdev
08:28:55 --- quit: vdamewood (Ping timeout: 264 seconds)
08:29:39 --- join: fddsafsd (~sdfgsdfg@176.33.236.80) joined #osdev
08:41:19 --- join: baba_yaga (~baba_yaga@208.46.74.162) joined #osdev
08:42:31 --- quit: fddsafsd (Remote host closed the connection)
08:42:43 --- quit: EvanCarroll (Remote host closed the connection)
08:43:32 --- join: fddsafsd (~sdfgsdfg@176.33.236.80) joined #osdev
08:45:09 --- quit: fddsafsd (Remote host closed the connection)
08:45:35 --- join: fddsafsd (~sdfgsdfg@176.33.236.80) joined #osdev
08:45:57 --- quit: baba_yaga (Remote host closed the connection)
08:49:18 --- quit: ALowther (Remote host closed the connection)
08:54:57 --- join: NaNkeen (~nankeen@115.164.80.206) joined #osdev
08:55:04 --- join: absurdistani (~bradford@136.59.70.115) joined #osdev
08:55:44 --- join: AverageJ0e (~joe@ip98-167-200-207.ph.ph.cox.net) joined #osdev
08:55:54 --- join: variable (~variable@freebsd/developer/variable) joined #osdev
08:57:26 --- quit: absurdistani (Client Quit)
09:01:32 --- join: climjark_ (~climjark@c-24-0-220-123.hsd1.nj.comcast.net) joined #osdev
09:07:40 --- join: ALowther (~alowther@68.200.236.134) joined #osdev
09:09:30 --- join: hmmmm (~sdfgsf@pool-72-79-167-28.sctnpa.east.verizon.net) joined #osdev
09:14:45 --- join: elevated (~elevated@unaffiliated/elevated) joined #osdev
09:15:11 --- quit: NaNkeen (Ping timeout: 260 seconds)
09:26:34 --- quit: variable (Quit: /dev/null is full)
09:28:22 --- join: variable (~variable@freebsd/developer/variable) joined #osdev
09:28:36 --- quit: quc (Ping timeout: 260 seconds)
09:30:27 --- quit: Goplat (Remote host closed the connection)
09:36:56 --- quit: ALowther (Remote host closed the connection)
09:37:11 --- quit: JusticeEX (Ping timeout: 248 seconds)
09:44:04 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
09:50:32 --- join: KernelBloomer (~SASLExter@gateway/tor-sasl/kernelbloomer) joined #osdev
09:53:36 --- join: trout (~variable@freebsd/developer/variable) joined #osdev
09:56:42 --- quit: variable (Ping timeout: 276 seconds)
10:06:21 --- join: cantbetouched (~SASLExter@gateway/tor-sasl/kernelbloomer) joined #osdev
10:09:47 --- quit: KernelBloomer (Ping timeout: 255 seconds)
10:12:28 --- quit: promach2 (Quit: WeeChat 2.1)
10:15:54 --- join: quc (~quc@host-89-230-168-176.dynamic.mm.pl) joined #osdev
10:15:57 --- join: MarchHare (~Starwulf@mo-184-5-204-232.dhcp.embarqhsd.net) joined #osdev
10:21:59 --- quit: w41 (Ping timeout: 248 seconds)
10:24:08 --- quit: trout (Quit: Found 1 in /dev/zero)
10:24:22 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
10:28:08 --- join: masoudd (~masoudd@5.115.237.66) joined #osdev
10:31:08 --- join: aalm (~aalm@37-219-119-194.nat.bb.dnainternet.fi) joined #osdev
10:32:39 --- quit: awang_ (Ping timeout: 248 seconds)
10:35:45 --- join: virtx (4dac8cd3@gateway/web/freenode/ip.77.172.140.211) joined #osdev
10:35:50 <virtx> hi
10:36:46 --- quit: brynet (Quit: leaving)
10:37:40 <virtx> what exactly happens with int3? CPL becomes 0 from 3 (if it happens from userspace), EFLAG.IF is cleared and what is the next?
10:38:53 --- join: isd (~isd@209.6.64.199) joined #osdev
10:39:14 --- join: BrainFog (~BrainFog@cpc89010-gill18-2-0-cust1263.20-1.cable.virginm.net) joined #osdev
10:39:15 --- quit: Guest46701 (Read error: Connection reset by peer)
10:39:34 <geist> a lot
10:39:52 <geist> really you should look at the intel manual, there is a whole pile of things that happens
10:39:57 <virtx> so, the first thing is CPL 3 to 0, right?
10:40:09 <virtx> or EFLAGS pushed on the stack?
10:40:14 --- join: brynet (~brynet@brynet6.biz.tm) joined #osdev
10:41:00 <geist> same as any other ring 3 -> ring 0 interrupt/exception
10:41:07 <geist> int3 isn't special in that regard
10:41:22 <virtx> ok
10:41:24 <virtx> https://www.felixcloutier.com/x86/INTn:INTO:INT3.html#operation
10:41:25 <bslsk05> ​www.felixcloutier.com: File Not Found
10:41:29 <virtx> found here, what is PE ?
10:41:40 <geist> i dont know, what is the context?
10:41:51 <virtx> open the link, please
10:42:57 <virtx> it seems to be the current CPU mode
10:43:07 <geist> most likely
10:43:39 <virtx> cr0.pe bit
10:43:39 <geist> these are all answers that the intel manual describes. trying to learn it by looking at a bunch of random web sites will just get you more confused
10:43:55 --- quit: isd (Ping timeout: 264 seconds)
10:44:06 <virtx> I am trying to do, but intel books suck, not so easy to follow
10:44:19 <geist> ring 3 -> ring 0 transitions in x86 are pretty complicated, it's a lot of pieces working together. but then i dont know precisely why you want to know this, because that informs the level of knowledge you seek
10:44:38 <geist> have you tried the AMD books? they can be clearer sometimes
10:44:50 <virtx> some time ago, I will check there as well
10:45:19 <geist> but looking up things like cr0.pe should be easy, since it's a definitive thing that you can search the manual for
10:45:48 <virtx> amd books are splitted at least
10:46:24 <geist> you can get split intel ones too. there's a single pdf and a separate split set
10:46:40 --- quit: BrainFog (Read error: Connection reset by peer)
10:46:50 --- join: ALowther (~alowther@68.200.236.134) joined #osdev
10:46:58 <virtx> oh, really? they provide also splitted again?
10:47:22 <geist> last i checked
10:47:33 <virtx> ok, let me download again, thanks :)
10:47:49 --- join: BrainFog (~BrainFog@cpc89010-gill18-2-0-cust1263.20-1.cable.virginm.net) joined #osdev
10:48:14 <geist> but anywya, yes, ring transitions are complicated, which is why the pseudocode there is very long
10:48:29 <geist> but again, depends on precisely why you want to know this, because it changes how much detail you're interested in
10:51:26 --- quit: ALowther (Ping timeout: 260 seconds)
10:56:50 <virtx> I don't need details about the ring trasitions, but just what does int3 do at very early stage, before to call the DB handler
10:57:33 --- join: awang_ (~awang@cpe-98-31-27-190.columbus.res.rr.com) joined #osdev
10:57:39 --- join: w41 (~w41@unaffiliated/w41) joined #osdev
10:57:40 <virtx> the intel pseudocode indentation is very bad, ELSE is not in the same column of IF
10:59:03 <earlz> Has anyone ever been insane enough to run COBOL in an OS dev environment?
10:59:33 --- quit: fddsafsd (Remote host closed the connection)
11:02:16 --- quit: awang_ (Ping timeout: 256 seconds)
11:02:48 <virtx> geist: ok, so I don't see any push RSP, how the current RSP at the int3 time is saved?
11:02:48 --- quit: BrainFog (Read error: Connection reset by peer)
11:03:06 <geist> it is
11:03:18 --- join: BrainFog (~BrainFog@cpc89010-gill18-2-0-cust1263.20-1.cable.virginm.net) joined #osdev
11:03:21 <geist> if there's a ring transition the cpu will save the stack pointer
11:03:57 <virtx> on amd manual there is push old_RSP (which is not defined), but before this push there is something like RSP = new_RSP
11:04:06 <geist> also it depends on if you're talking about 64bit, 32bit mdoe etc
11:04:16 <virtx> long mode, 64bit
11:04:20 <geist> which is why i was asking you before why specifically you want to know, what constraints do you have
11:05:07 <geist> then the rsp is saved in a slightly complicated way, because of stack alignment
11:05:10 --- join: lachlan_s (uid265665@gateway/web/irccloud.com/x-xwwfzofxdtjvwrxr) joined #osdev
11:05:58 <virtx> uhm, ok
11:05:59 --- quit: MarchHare (Ping timeout: 256 seconds)
11:06:14 <geist> but the gist is it saves it, yes
11:06:20 <geist> only on ring transitions though
11:06:22 <virtx> let me give you more context, the part that I am trying to understand is between XXX here https://pastebin.com/eErSFmWN
11:06:22 <bslsk05> ​pastebin.com: The oversight here is that provided INT 03’s DPL is accessible from the assum - Pastebin.com
11:08:17 <geist> me nods
11:09:20 <virtx> some hits to understand this phase? :)
11:09:23 --- join: aaron (~BrainFog@cpc89010-gill18-2-0-cust1263.20-1.cable.virginm.net) joined #osdev
11:09:39 <geist> sorry, cant help right this instant, kind of busy. hoepfulyl someone else will
11:09:47 --- nick: aaron -> Guest65529
11:10:07 <virtx> no worries, thanks anyway
11:10:35 --- quit: BrainFog (Ping timeout: 250 seconds)
11:18:06 --- quit: light2yellow (Quit: light2yellow)
11:21:23 --- join: MarchHare (~Starwulf@mo-184-5-204-232.dhcp.embarqhsd.net) joined #osdev
11:33:59 --- quit: JusticeEX (Ping timeout: 250 seconds)
11:34:14 --- join: baschdel (~baschdel@2a01:5c0:10:3d11:bca2:7797:3876:4668) joined #osdev
11:38:26 --- quit: climjark_ (Ping timeout: 256 seconds)
11:39:24 --- quit: booyah (Remote host closed the connection)
11:45:09 --- join: isd (~isd@96.70.220.238) joined #osdev
11:45:40 --- join: dbittman_ (~dbittman@2601:647:ca00:1651:b26e:bfff:fe31:5ba2) joined #osdev
11:49:14 --- quit: cantbetouched (Quit: Leaving)
11:50:52 --- quit: elevated (Quit: bye)
11:56:11 --- quit: AverageJ0e (Ping timeout: 260 seconds)
11:59:09 --- join: silas (~silas@bluebook.xen.prgmr.com) joined #osdev
12:04:06 --- quit: tomaw (Quit: Quitting)
12:05:50 --- join: tomaw (tom@freenode/staff/tomaw) joined #osdev
12:11:16 --- join: fddsafsd (~sdfgsdfg@176.33.236.80) joined #osdev
12:16:52 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
12:28:47 --- quit: fddsafsd (Read error: Connection reset by peer)
12:35:05 --- join: fddsafsd (~sdfgsdfg@176.33.236.80) joined #osdev
12:36:14 --- quit: mavhq (Read error: Connection reset by peer)
12:36:17 <sortie> Aah
12:36:22 <sortie> Tonight I am working on my TCP stack
12:36:25 <sortie> Good to be back to basics.
12:36:49 <sortie> Pondered doing a bit of GUI work but some good old-fashioned kernel work on the network stack is very wholesome
12:36:56 --- join: ALowther (~alowther@68.200.236.134) joined #osdev
12:37:30 --- join: mavhq (~quassel@cpc77319-basf12-2-0-cust433.12-3.cable.virginm.net) joined #osdev
12:38:01 <sortie> It's a nice area where you can design a bit to make a good implementation, while there's interoperability concerns with other systems, standards, de-facto behavior, a complicated state machine, and just a bunch of programming to do.
12:38:45 <sortie> Plus documentation (all the documentation!) and portability testing (so you even know what to implement and what the other systems do).
12:39:00 --- join: elevated (~elevated@unaffiliated/elevated) joined #osdev
12:40:57 --- quit: ALowther (Ping timeout: 240 seconds)
12:52:41 --- quit: drakonis (Remote host closed the connection)
12:52:52 --- join: pie___ (~pie_@unaffiliated/pie-/x-0787662) joined #osdev
12:53:11 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
12:54:48 --- quit: drakonis (Remote host closed the connection)
12:55:46 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
12:56:12 --- quit: pie__ (Ping timeout: 240 seconds)
12:56:45 --- quit: fddsafsd (Ping timeout: 256 seconds)
12:59:52 <geist> yeah tcp is fun. you get to talk to toher things and it feels like your system is 'real'
12:59:58 <geist> though in the case of sortix it felt real years ago
13:00:26 <sortie> Well it's a key part of feeling real-er
13:00:49 <sortie> One can ssh to a better OS
13:00:53 <sortie> That's what computing is all about
13:01:17 <sortie> But mucking about in stuff like <netinet/tcp.h>, it feels like classic computing
13:01:51 <sortie> I'm being too perfectionistic with networking here
13:02:20 <sortie> It's taking years to polish and code review this networking support, and there's still a bunch of do with regards to DHCP and init(8)
13:02:43 <sortie> But honestly it's some of my best work to date even if imperfect.
13:03:40 --- quit: Kimundi__ (Ping timeout: 265 seconds)
13:04:48 <sortie> I love the network RFC series. I always prefer those over a datasheet for some hardware driver.
13:07:57 --- quit: JusticeEX (Ping timeout: 246 seconds)
13:08:27 --- quit: daniele_athome (Ping timeout: 268 seconds)
13:09:07 <Amaan> Preach
13:09:35 <Amaan> It's so much more fun to be reading a spec than messing with the specifics _that should work goddamnit!_
13:10:27 --- join: oaken-source (~oaken-sou@194.152.148.167) joined #osdev
13:10:36 <geist> flip side is getting it working is pretty exciting
13:11:04 <sortie> Mmm
13:14:37 <geist> i still have the stupid idea of writing yet another tiny 386 klernel for lulz
13:14:45 <geist> using pure PC hardware, etc. no newer stuff
13:14:50 --- quit: lachlan_s (Quit: Connection closed for inactivity)
13:14:51 <geist> just to get it off my chest. should be EZ
13:16:32 <Amaan> What do you mean by newer stuff?
13:16:43 <geist> sometimes it's fun to take all the knowledge youv'e amassed, and slam out something like that to see if you remember
13:16:55 --- join: climjark_ (~climjark@c-24-0-220-123.hsd1.nj.comcast.net) joined #osdev
13:16:58 <geist> Amaan: well, for example no ACPI, no ioapic, no SMP
13:17:05 <geist> just straight up 80s era PC
13:18:43 <Amaan> I'd imagine it's harder to support those things, no?
13:18:56 <geist> which things, the newer bits? it's more complicated
13:19:04 <Amaan> I thought you meant something like not using UEFI services
13:19:09 <geist> it's generally better, but it's generally more complex
13:19:23 <Amaan> Yeah, that sentiment makes sense
13:19:46 <geist> plus i have this 386 box that i've been fiddling with, and it's fun to use old hardware sometimes
13:20:06 <Amaan> I'm working on an x86-64 port of an RTOS. Definitely leaving as much of the newer stuff out as is possible to limit scope for starters
13:20:25 <Amaan> I'm wondering if that's the best idea though, since I've never done this before, and I don't want to box us in
13:21:32 <geist> it was ACPI that really started ruining things for me a bit
13:21:44 <geist> since now you really need this pile of code to bootstrap some of the newer parts of the system
13:22:01 <geist> late 90s tech was about the sweet spot
13:22:24 <geist> PCI, but old accessor methods. VESA reliably existed, MP table to discover SMP
13:23:24 <Amaan> Isn't the ACPI method for detecting SMP easier?
13:23:34 <geist> MP table was pretty darn simple
13:23:44 <geist> you just scanned the bios area for a magic value and parsed a table
13:24:44 <geist> and iirc it also had a pointer to the ioapics and whatnot
13:24:59 <geist> which is more or less required for SMP, sort of
13:25:19 <geist> local apic for sure, though that's as far as i can tell 100% always in the same spot so you can effectively hard code it
13:25:33 <geist> except maybe early 486s when it was external to the cpu
13:26:10 <Amaan> You seem like a veteran :)
13:26:20 <Amaan> Been doing this a long time, I presume?
13:26:35 <geist> yeah been doing this stuff more or less continually for the last 20 years or so
13:27:19 <Amaan> Your resume 404s, btw :P
13:27:19 <Amaan> http://tkgeisel.com/resume.pdf
13:27:20 <bslsk05> ​tkgeisel.com: 404 Not Found
13:27:51 <geist> yah, i think i did that on purpose one day. thanks for reminding me
13:27:57 <geist> it was out of date by many years
13:28:03 <Amaan> Damn, you worked on BeOS?
13:28:07 <Amaan> How cool!
13:28:09 <geist> yep
13:28:10 --- join: awang_ (~awang@cpe-98-31-27-190.columbus.res.rr.com) joined #osdev
13:28:12 <geist> twas fun
13:29:20 <Amaan> What's your work these days like?
13:29:43 <geist> i work at google, on fuchsia os
13:29:54 <geist> so pretty much the same thing. hack on kernels all day
13:31:28 <Amaan> Damn, sounds quite fun!
13:32:48 <Amaan> I'm grateful I get to work on systems-y stuff for my day job too
13:33:15 <Amaan> I remember being mindblown when I first realized that it was even an option, haha (wasn't that long ago, a few years)
13:36:05 <geist> yep, exactly
13:38:15 --- join: ALowther (~alowther@68.200.236.134) joined #osdev
13:39:12 --- join: fddsafsd (~sdfgsdfg@176.33.236.80) joined #osdev
13:42:42 --- quit: ALowther (Ping timeout: 255 seconds)
13:53:36 --- quit: glauxosdever (Quit: leaving)
13:58:15 <jjuran> geist is an appropriate name for someone who apparently doesn't exist anymore :-)
13:59:03 --- join: booyah (~bb@193.25.1.157) joined #osdev
14:03:29 --- quit: MDude (Quit: Going offline, see ya! (www.adiirc.com))
14:03:49 --- join: zeus1 (~zeus@197.239.5.87) joined #osdev
14:04:25 --- quit: quc (Remote host closed the connection)
14:07:04 --- quit: fddsafsd (Quit: fddsafsd)
14:10:19 --- quit: booyah (Remote host closed the connection)
14:11:31 --- join: xerpi (~xerpi@253.red-83-45-194.dynamicip.rima-tde.net) joined #osdev
14:15:52 --- join: light2yellow (~l2y@185.220.70.165) joined #osdev
14:17:21 --- join: variable (~variable@freebsd/developer/variable) joined #osdev
14:18:24 --- join: Shamar (~giacomote@unaffiliated/giacomotesio) joined #osdev
14:22:51 --- quit: isd (Quit: Leaving.)
14:36:32 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
14:40:47 --- join: Halofreak1990_ (~FooBar247@5ED0A537.cm-7-1c.dynamic.ziggo.nl) joined #osdev
14:41:57 --- quit: Halofreak1990 (Ping timeout: 240 seconds)
14:41:57 --- nick: Halofreak1990_ -> Halofreak1990
14:57:27 --- quit: sdk93 (Quit: Connection closed for inactivity)
14:57:38 --- quit: xenos1984 (Quit: Leaving.)
14:58:47 --- quit: oaken-source (Ping timeout: 248 seconds)
15:15:44 --- quit: dennis95 (Quit: Leaving)
15:17:12 --- quit: gattuso (Remote host closed the connection)
15:18:12 --- join: gattuso (~gattuso@pompel.me) joined #osdev
15:24:19 --- quit: MarchHare (Ping timeout: 240 seconds)
15:24:36 --- quit: virtx (Quit: Page closed)
15:25:06 --- join: Goplat (~goplat@reactos/developer/Goplat) joined #osdev
15:32:24 --- quit: Asu` (Quit: Konversation terminated!)
15:35:24 --- join: Halofreak1990_ (~FooBar247@5ED0A537.cm-7-1c.dynamic.ziggo.nl) joined #osdev
15:36:41 --- quit: Halofreak1990 (Ping timeout: 246 seconds)
15:36:46 --- nick: Halofreak1990_ -> Halofreak1990
15:41:52 --- join: bemeurer (~bemeurer@185.232.22.59) joined #osdev
15:44:32 --- join: lachlan_s (uid265665@gateway/web/irccloud.com/x-vthtdvctfvqkutcf) joined #osdev
15:44:57 <lachlan_s> That settles it, getting a pixelbook when I get the money for it
15:45:45 <geist> it's a pretty good little ultrabook
15:45:52 <geist> a bit thin for me, but i get why people like it
15:46:33 --- quit: spare (Quit: leaving)
15:48:46 <graphitemaster> https://i.imgur.com/XnK4HMS.jpg
15:49:19 <_mjg_> geist: so what about that benchmarking :>
15:49:29 <geist> oh yes thanks for reminding me
15:50:15 <_mjg_> now on a *useful* note, did anyone play with *efficient* memset/memcpy et al for the kernel on x86?
15:50:29 <geist> rep stos
15:50:33 <_mjg_> turns out just resorting to using erms does not cut it
15:50:46 <geist> well on intel boxes it's pretty darn close
15:50:52 <_mjg_> in fact rep stos loses in terms of throughput vs an unrolled mov loop on skylake
15:50:56 <_mjg_> up to about 256 bytes
15:51:09 <_mjg_> and is *way* slower for smaller size, like 64 or less
15:51:18 * geist shrugs
15:51:20 <geist> probably
15:51:50 <_mjg_> vast majority of memsets & friends are called for rather small sizes
15:52:01 <geist> i'm a bit surprised about that, i'd generally think the opposite
15:52:05 <_mjg_> fortunately most cases are optimized thanks to builtins as the size is known at compilation time
15:52:21 <geist> but it may be the poer of rep stosb is that it is a severe prefetching hint, so that only kicks in at larger sizes
15:52:33 <_mjg_> i can put up a shareable testcase, i stole memset_orig (unrolled old-style memset without rep)
15:52:38 <_mjg_> from linux
15:52:51 <_mjg_> and ran it against just rep stosb for various sizes
15:53:13 <_mjg_> i mean i can, but will need to clean it up a little bit first
15:53:26 <geist> yeah that'd be fun. also ryzen
15:53:32 <_mjg_> the question is if perhaps this is only a win in naive testing and starves the other thread
15:53:43 <geist> for zircon we're mostly interested in skylake+ and ryzen.
15:53:51 <_mjg_> i did a quick survey at least, the rep stosq/movsq -> rep stosb/movsb combo is super slow all around
15:53:53 <geist> as in, optimize for the current hardware, worry about older stuff later
15:54:06 <_mjg_> adding a simple jump *prior* to rep stosb gives a nice boost on amd cpus
15:54:08 <_mjg_> and even intel ones
15:54:11 <geist> yeah rep stosb is a massive pessimization for ryzen at least, unless everything is super aligned
15:54:38 <_mjg_> and it does not provide a slowdown for cases where you need to do rep stosb anyway
15:54:43 <_mjg_> i did not experiment with unrolling just that part
15:54:54 <_mjg_> just a 1 byte store loop instead of rep stosb
15:55:00 <_mjg_> for the last 7 tops
15:55:10 <_mjg_> rep stosb was supposed to be fast with that, but it seems it is not
15:55:19 --- quit: JusticeEX (Ping timeout: 264 seconds)
15:56:15 --- quit: Shamar (Quit: Lost terminal)
15:56:43 <_mjg_> unfortunately all resources i found on the subject deal with avx/sse
15:56:49 <_mjg_> so not really usable here
15:57:03 <_mjg_> perhaps i should just ask the dude himself (agner fog)
15:58:53 <graphitemaster> rep movsb for move is fastest on Threadripper
15:59:36 <graphitemaster> I made a benchmark a long time ago with simple byte by byte, sse2, avx, avx2 and rep movsb for copies of size 1k, 2k, 4k, 8k, 16k, 32k, 64k, all the way up to 64gib
15:59:57 <_mjg_> see, for that range i have no trouble believing this is the case
15:59:58 --- quit: xerpi (Quit: Leaving)
16:00:04 <_mjg_> but vast majority of kernel mem* calls are super small
16:00:43 <_mjg_> i got a somewhat naive result from threadripper, wait a sec
16:01:10 <graphitemaster> copies smaller than or equal to a cache line (64 bytes) are faster as unrolled movq's
16:01:28 --- quit: light2yellow (Quit: light2yellow)
16:01:29 <_mjg_> even somewhat bigger
16:01:35 <_mjg_> about 256 in my testing
16:02:06 <graphitemaster> the pipeline can schedule 8 movqs in parallel on TR
16:02:25 <graphitemaster> but I found they take about 4 cycles to complete
16:02:33 <graphitemaster> so yeah you can go _slightly_ higher
16:02:40 <_mjg_> a side note is using something like calloc/kzalloc/what have you
16:02:46 <_mjg_> which calls into slab and onlly then zeroes
16:02:48 <graphitemaster> somewhere around < 1024 is probably aq safe bet
16:02:52 <_mjg_> which loses the size known at compilation time
16:03:04 --- quit: baschdel (Ping timeout: 256 seconds)
16:03:17 <_mjg_> graphitemaster: right, forgot to metnion this was skylake, it was significantly slower than erms with 1024
16:03:22 <graphitemaster> one thing to watch out for, gcc can completely obliterate your unrolled movq loop by shoving it's broken ass stack protector code into it
16:03:31 <_mjg_> graphitemaster: about the same with 256, did not try to find the exact tipping point
16:03:46 <graphitemaster> stack protector is the death of all my tight loops
16:03:53 <_mjg_> what i was surprised to find was that gcc shows rep stos into inlined code
16:04:05 <_mjg_> shoves
16:04:43 <graphitemaster> this is actually one thing PGO does in msvc at least, at runtime it'll cycle different mov/set code paths
16:04:54 <graphitemaster> and then pick the right one when you build your final optimized set
16:05:04 <graphitemaster> for that host mind you
16:06:04 <graphitemaster> also, rep movsb is the fastest on most Intels from my understanding
16:06:14 <graphitemaster> except for small copies again
16:07:04 <_mjg_> yea
16:07:46 <_mjg_> i attached myself with dtrace to memset & friends and noted passed sizes during build: https://people.freebsd.org/~mjg/bufsizes.txt
16:07:47 <bslsk05> ​people.freebsd.org <no title>
16:08:25 <_mjg_> this is already with the ue of __builtin_memset & friends
16:09:17 <graphitemaster> lots of small movs in there
16:09:24 <_mjg_> yea
16:09:41 <_mjg_> i checked who the fuck is doing 1 byte reads, it's make
16:09:47 <_mjg_> from 'token pipe'
16:09:57 <graphitemaster> haha
16:10:20 <graphitemaster> honestly, I'm more concerned about 3 byte reads
16:10:24 <graphitemaster> that's such an odd amount
16:10:37 <_mjg_> what about the 0 byte copyouts
16:10:50 <_mjg_> memcpys too
16:11:09 <_mjg_> tl;dr there is perf to get
16:11:14 --- join: immibis (~chatzilla@222-155-160-32-fibre.bb.spark.co.nz) joined #osdev
16:12:18 <graphitemaster> if they had an inline memset/memcpy, that did something like __builtin_constant_p, for constans with an unroll for some fixed size, and then maybe a runtime leaf selection for non-constant and then a tail call to some actual big block memcpy
16:12:22 <graphitemaster> it would bloat code size a little
16:12:29 <graphitemaster> but may gain some additional perf
16:13:20 <_mjg_> yea, that's what i'm planning to test
16:13:52 <_mjg_> in fact fbsd already has a basic hack for memset, where it just has an inlined byte store loop
16:14:05 <_mjg_> without even checking the size
16:14:22 <_mjg_> turns out clang gives up on its own and generates a memset call past certain threshold
16:14:31 <_mjg_> but it is not enabled right now
16:26:12 <spencerb> hi. I'm doing a bit of research in OS theory, specifically with a focus on x86(_64). I understand that most of the time processes each have their own Page Table(s). But for a multi-level paging structure, like x64 PML4, would each process have a PML4 or just a set of page tables?
16:26:19 --- quit: w41 (Ping timeout: 240 seconds)
16:28:07 --- quit: sortie (Quit: Leaving)
16:32:10 <spencerb> ah, I actually just found the answer on the brilliant wiki.
16:32:23 <spencerb> all you contributors are awesome!
16:32:55 <_mjg_> how about we agree on "some"
16:33:43 --- quit: SGautam (Ping timeout: 260 seconds)
16:34:21 --- quit: bemeurer (Quit: WeeChat 2.1)
16:35:36 <spencerb> haha, fair enough
16:37:45 <doug16k> spencerb, yes different processes would have different PML4 but typically all of the PML4 entries for kernel range would share the kernel PDPT pages
16:41:20 <spencerb> ah, that makes sense.
16:48:35 <clever> spencerb: there are also some tricks you can do with paging tables, to effectively copy data at terrabytes per second
16:49:02 <clever> spencerb: if you just update a page-table entry, and say, swap it between 2 processes, then you have effectively moved the entire range that pointer refered to
16:49:33 <clever> but you need to align the data to the right boundary, and the kernel has to be specialized to allow such trickery
16:52:12 <spencerb> clever: interesting... Memory mapping continues to fascinate me.
17:00:48 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
17:21:43 --- quit: JusticeEX (Ping timeout: 264 seconds)
17:43:37 <lachlan_s> That's actually a method of ipc
17:45:07 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
17:47:19 --- quit: Oxyd76 (Ping timeout: 248 seconds)
17:51:55 --- join: Oxyd76 (~quassel@5.18.99.0) joined #osdev
17:51:59 --- quit: geordi (Remote host closed the connection)
18:28:35 --- join: ACE_Recliner (~ACE_Recli@c-73-18-225-48.hsd1.mi.comcast.net) joined #osdev
18:34:59 --- join: epelesis (~epelesis@173-16-179-32.client.mchsi.com) joined #osdev
18:38:11 --- quit: JusticeEX (Ping timeout: 256 seconds)
18:38:18 --- quit: drakonis (Remote host closed the connection)
18:41:04 --- quit: epelesis (Quit: Mutter: www.mutterirc.com)
18:41:19 <lachlan_s> If only my s8 could run pure Android without this sucky skin. It'd be way better
18:46:35 <variable> clever: you can also do something similar within the same process
18:46:38 <variable> spencerb: ^
18:46:39 --- join: drakonis (~drakonis@unaffiliated/drakonis) joined #osdev
18:50:42 --- quit: nur (Remote host closed the connection)
18:50:56 --- join: nur (~hussein@slb-97-111.tm.net.my) joined #osdev
19:00:08 --- join: spare (~user@unaffiliated/spareproject) joined #osdev
19:06:08 --- quit: tacco| ()
19:14:52 --- join: JusticeEX (~justiceex@pool-98-113-143-43.nycmny.fios.verizon.net) joined #osdev
19:22:19 <variable> things I never thought I'd be doing
19:22:33 <variable> writing, and fixing, unit tests, for a fscking spread sheet
19:24:15 --- nick: dude1231- -> Surtri
19:24:42 --- nick: Surtri -> dude12312414
19:30:28 --- quit: Shikadi (Ping timeout: 256 seconds)
19:34:49 --- quit: ACE_Recliner (Ping timeout: 240 seconds)
19:43:51 --- quit: dafna (Ping timeout: 260 seconds)
19:44:01 --- quit: JusticeEX (Ping timeout: 260 seconds)
19:44:14 <aalm> awww
19:46:08 --- join: NaNkeen (~nankeen@115.164.80.206) joined #osdev
19:49:32 --- join: sdk93 (uid290141@gateway/web/irccloud.com/x-mrfmjiwmobxepxjn) joined #osdev
19:50:33 --- join: promach__ (~promach@bb219-74-174-136.singnet.com.sg) joined #osdev
19:53:49 --- quit: elderK (Ping timeout: 256 seconds)
19:54:18 --- join: ACE_Recliner (~ACE_Recli@c-73-18-225-48.hsd1.mi.comcast.net) joined #osdev
20:07:49 --- join: elderK (~k@122-61-112-9-adsl.bb.spark.co.nz) joined #osdev
20:07:49 --- quit: elderK (Changing host)
20:07:49 --- join: elderK (~k@pdpc/supporter/active/elderk) joined #osdev
20:12:55 --- quit: nj0rd (Ping timeout: 248 seconds)
20:14:57 --- quit: freakazoid0223 (Quit: I cna ytpe 300 wrods pre mniuet!!!)
20:20:22 --- join: oaken-source (~oaken-sou@194.152.148.167) joined #osdev
20:23:19 --- join: MarchHare (~Starwulf@mo-184-5-204-232.dhcp.embarqhsd.net) joined #osdev
20:28:53 --- join: nj0rd (~nj0rd@mue-88-130-48-119.dsl.tropolys.de) joined #osdev
20:35:39 --- join: MDude (~MDude@pa-67-234-118-37.dhcp.embarqhsd.net) joined #osdev
21:05:03 --- quit: oldtopman (Ping timeout: 255 seconds)
21:07:07 --- join: zlsyx (~zlsyx@193.2.224.100) joined #osdev
21:10:06 --- join: xenos1984 (~xenos1984@22-164-191-90.dyn.estpak.ee) joined #osdev
21:20:21 --- join: ctrlshftn (~ctrlshftn@unaffiliated/ctrlshftn) joined #osdev
21:23:32 --- quit: variable (Quit: /dev/null is full)
21:32:29 --- quit: CrystalMath (Quit: Support Free Software - https://www.fsf.org/)
21:33:32 --- join: ljc (~ljc@unaffiliated/ljc) joined #osdev
21:36:57 --- join: Philpax_ (~Philpax@144.132.100.253) joined #osdev
21:37:24 --- join: EvanCarroll (~ecarroll@172.58.100.104) joined #osdev
21:37:28 --- join: AverageJ0e (~joe@ip98-167-200-207.ph.ph.cox.net) joined #osdev
21:37:37 --- quit: ljc (Client Quit)
21:51:10 --- join: ljc (~ljc@unaffiliated/ljc) joined #osdev
21:56:16 --- quit: lachlan_s (Quit: Connection closed for inactivity)
22:00:59 --- quit: EvanCarroll (Remote host closed the connection)
22:05:32 --- quit: NaNkeen (Ping timeout: 264 seconds)
22:06:27 <ljc> i followed the bare bones setup but `cli;hlt` doesn't exit qemu? the screen hangs and i have to do kill <pid> from another terminal
22:07:11 <ljc> (i've also tried ctrl+a+x)
22:07:26 <ctrlshftn> ctrla
22:07:29 <ctrlshftn> shift x
22:07:32 <ctrlshftn> its a X
22:09:49 --- join: Halofreak1990_ (~FooBar247@5ED0A537.cm-7-1c.dynamic.ziggo.nl) joined #osdev
22:10:31 --- quit: promach__ (Quit: WeeChat 2.1)
22:11:26 --- quit: Halofreak1990 (Ping timeout: 250 seconds)
22:11:28 --- nick: Halofreak1990_ -> Halofreak1990
22:17:45 --- quit: ljc (Quit: ayy)
22:26:55 --- join: epelesis (~epelesis@2600:380:667a:5b66:d9f0:6228:b1f3:3f3c) joined #osdev
22:29:30 --- join: KernelBloomer (~SASLExter@gateway/tor-sasl/kernelbloomer) joined #osdev
22:33:35 --- quit: epelesis (Quit: Mutter: www.mutterirc.com)
22:38:05 --- join: epelesis (~epelesis@2600:380:667a:5b66:d9f0:6228:b1f3:3f3c) joined #osdev
22:38:30 --- quit: ctrlshftn (Ping timeout: 276 seconds)
22:39:14 --- quit: drakonis (Read error: Connection reset by peer)
22:40:14 --- quit: epelesis (Client Quit)
22:41:18 --- join: epelesis (~epelesis@173-16-179-32.client.mchsi.com) joined #osdev
22:52:29 --- quit: epelesis (Quit: Mutter: www.mutterirc.com)
22:53:01 --- quit: spare (Quit: Lost terminal)
22:55:00 <geist> neat, that was fun. just tossed together a very simple little hello world floppy -> print on screen thing
22:55:07 <geist> tested on a 386
22:56:57 --- quit: Goplat ()
23:04:35 <Mutabah> Nice :)
23:20:36 --- quit: mavhq (Read error: Connection reset by peer)
23:21:54 --- join: mavhq (~quassel@cpc77319-basf12-2-0-cust433.12-3.cable.virginm.net) joined #osdev
23:31:22 --- quit: zlsyx (Quit: Leaving...)
23:36:42 --- join: cantbetouched (~SASLExter@gateway/tor-sasl/kernelbloomer) joined #osdev
23:39:47 --- quit: KernelBloomer (Ping timeout: 255 seconds)
23:43:39 --- join: NaNkeen (~nankeen@115.164.80.206) joined #osdev
23:48:15 --- quit: jakogut (Remote host closed the connection)
23:49:28 --- quit: mra90 (Read error: Connection reset by peer)
23:54:51 --- quit: climjark_ (Ping timeout: 260 seconds)
23:59:59 --- log: ended osdev/18.05.12