marcan changed the topic of #asahi to: Asahi Linux: porting Linux to Apple Silicon macs | General project discussion | GitHub: | Wiki: | Topics: #asahi-dev #asahi-re #asahi-gpu #asahi-offtopic | Keep things on topic | Logs:
Gues_____ has joined #asahi
Gues_____ is now known as r0ni
tomtastic has joined #asahi
tomtastic_ has quit [Ping timeout: 480 seconds]
vup2 has joined #asahi
vup2 has quit []
vup2 has joined #asahi
vup2 has quit []
klltkr has quit [Ping timeout: 480 seconds]
phiologe has joined #asahi
PhilippvK has quit [Ping timeout: 480 seconds]
skipwich has quit [Ping timeout: 480 seconds]
marvin24 has joined #asahi
marvin24_ has quit [Ping timeout: 480 seconds]
Izumoo has quit [Quit: Konversation terminated!]
JTL1 has joined #asahi
JTL1 has quit []
quarkyalice_ has joined #asahi
quarkyalice has quit [Ping timeout: 480 seconds]
VinDuv has joined #asahi
quarkyalice_ has quit [Quit: Leaving]
quarkyalice has joined #asahi
arekm has quit [Quit: leaving]
arekm has joined #asahi
VinDuv has quit [Quit: Leaving.]
mini has quit [Quit: ZNC closing...]
mini has joined #asahi
aleasto has joined #asahi
linuxgemini has quit [Quit: Ping timeout (120 seconds)]
linuxgemini has joined #asahi
bgb_ has joined #asahi
bisko has joined #asahi
bgb_ has quit [Ping timeout: 480 seconds]
bgb_ has joined #asahi
BlitzWorks has joined #asahi
bgb_ has quit [Ping timeout: 480 seconds]
robinp_ has joined #asahi
bgb_ has joined #asahi
robinp has quit [Ping timeout: 480 seconds]
<marcan> always fun to bisect a GPU driver bug down to a memory coherency change
* marcan throws it over to the mesa folks to look at
<marcan> at least my menus aren't flashing any more
<marcan> at least the repro is trivial
<marcan> but it was a layer 2 bisect
<j_ey> layer 2?
<marcan> bisecting to a commit that exposes the bug but isn't the bug, then having to bisect again adding that
<j_ey> aha
bisko has quit [Read error: Connection reset by peer]
bgb_ has quit [Ping timeout: 480 seconds]
<arnd> j_ey: that looks like a scary bug on the i.MX, I hope it's an SoC specific issue rather than a fundamental issue in the way we think of the barriers
<Emantor> I wouldn't even be remotely surprised if this is an i.MX8Q* issue…
bisko has joined #asahi
jkc_ has joined #asahi
Raqbit has quit [Quit: The Lounge -]
Raqbit has joined #asahi
bisko has quit [Ping timeout: 480 seconds]
bisko has joined #asahi
pastly-antispam has joined #asahi
choozy has joined #asahi
jkc has quit [Quit: WeeChat 3.0.1]
radex2 has joined #asahi
radex1 has quit [Ping timeout: 480 seconds]
choozy has quit [Quit: - Chat comfortably. Anywhere.]
jato has joined #asahi
impromptu-cauterize has joined #asahi
impromptu-cauterize has left #asahi [#asahi]
Izumoo has joined #asahi
bgb_ has joined #asahi
bgb_ has quit [Ping timeout: 480 seconds]
bgb_ has joined #asahi
skipwich has joined #asahi
bisko has quit [Read error: Connection reset by peer]
bisko has joined #asahi
yuyichao has quit [Ping timeout: 480 seconds]
skipwich has quit [Quit: DISCONNECT]
skipwich has joined #asahi
bisko has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
bisko has joined #asahi
jkc_ is now known as jkc
bisko has quit []
VinDuv has joined #asahi
aleasto has quit [Remote host closed the connection]
aleasto has joined #asahi
<marcan> it's great when you work for a few hours on a bunch of code and the end result is everything works exactly the way it did before and no new features have been added :P
<marcan> (...yet)
<hell__> I think this is called "refactoring"
<marcan> yup
<marcan> async MMIO tracing now uses the stacked tracer concept I mentioned above (sync/hooks are still TODO)
<quarkyalice> yeah I've been there
<marcan> one thing this does do is fix the "clobbering the vuart" problem
<quarkyalice> refactoring can be quite useful for cleaning up and creating more readable code
<marcan> pagetable updates are now automatically done based on whatever tracers you configure, and it keeps track of dirty sections and updates as necessary
<marcan> and also flushes the TLBs
<marcan> quarkyalice: or in this case preparing for new features later (and fixing problems)
<quarkyalice> there's been times when I've changed one line of code and broken an entire project by creating a cascade of problems that need fixing :P
<marcan> I mean I basically changed the entire way MMIO tracing works
<marcan> ... it's just that there is a default tracer now that just so happens to implement the same exact behavior the old code had
<marcan> (and which is configured the same way)
<hell__> I... once caused build failures by replacing license headers. (some uses of "dead code" macros that used the line number to declare undefined functions ended up having the same line number in the same compilation unit)
* hell__ likes to use reproducible builds to verify the bulk of changes when refactoring stuff, especially when testing is impractical (e.g. missing the necessary hardware, or way too many variables to account for with testing)
<j_ey> marcan: is it re-doing the whole page tables in pt_update?
<marcan> j_ey: no, only the parts that changed
<marcan> that's what that dirty_maps thing is for
<marcan> and if it's empty (which is a cheap check) it does nothing
<marcan> so now I automatically call pt_update after every exception before returning to the guest
<j_ey> oh right, i see. and if it's tracemode.OFF... it just maps_hw
<marcan> yup
<marcan> so now the base MMIO map is actually a "HW" OFF tracer that underlies the entire address range
<marcan> (originally I wasn't going to do that but it turns out that's the easiest way, code-wise, instead of trying to fill in holes in the RangeMap with map_hw)
<j_ey> marcan: just to clarify, think im having a bit of a brainfart, hv_handle_dabort is only meant to be for SPTEs right?
<marcan> yes; that path triggers when you forget to invalidate the TLBs :-)
<marcan> otherwise it should never happen since the CPU should have taken care of it
<marcan> well, and also for actual missing maps (which means the guest accessed nonexistent hardware or you forgot to map a range)
<j_ey> I was trying to convince myself that hw_map() when TraceMade.OFF doesnt call into C/python
<marcan> hw_map(), modulo unaligned sub-page maps, creates real page table mappings
<marcan> that are therefore handled by the MMU as stage 2 translation
<marcan> (I did make the python side fall back to sw_map for weird alignment or sub-page chunks at the start and end, because it makes the rest of the code easier to write instead of having to deal with the page-alignment requirement of the underlying hv_map() in hw mode)
<marcan> (so in those unaligned cases it will go through C)
<marcan> basically the HW alignment is 16K and the SW alignment is 4b (due to the extra fake pagetable level I maintain, which only works for SPTEs)
<marcan> note that this isn't massively different from what I was doing earlier; the commit replaces a hw_map of the entire MMIO range with setting up the HW tracer
<marcan> the main difference is before we were stacking and mutating page tables (map everything hw, replace some bits with sw maps)
<marcan> while now since it gets coalesced and updated rangewise, it'll hw_map a bit, sw_map a bit, hw_map a bit, etc in address order, without overlaps
<marcan> (which in this case does ~double the number of proxy calls but whatever)
<marcan> j_ey: oh that will go through C
<marcan> but that's the point
<marcan> that's asking for a mmiotrace of everything
<marcan> so that'll map_sw everything with async tracing turned on
<marcan> so again that's no different from the map_sw it replaces :-)
<marcan> yes, that one
<marcan> with the trace_all script you end up with this page table:
<marcan> which is PrintTracer everything except the exceptions in that script, and the PMU hack, and VUART
<marcan> so next up will be building the scaffolding for easily writing higher level tracers with RegMaps, and finishing the sync/hook support (which is broken/not finished right now)
<j_ey> I appreciate the tests for regmaps :)
<marcan> there's no way to make that kind of code work properly without tests :)
<marcan> (and I still ran into a broken untested codepath at least once while doing the hv thing :p)
<marcan> (was just a typo in one of the wrappers though, not the core code)
robinp has joined #asahi
Misthios has quit [Quit: Misthios]
Misthios has joined #asahi
robinp_ has quit [Ping timeout: 480 seconds]
klltkr has joined #asahi
nsklaus has quit [Quit: WeeChat 3.1]
VinDuv has quit [Quit: Leaving.]
nsklaus has joined #asahi
skali has joined #asahi
skali is now known as skali_
skali_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
klltkr has quit [Quit: Textual IRC Client:]
angustrau[m] has joined #asahi
aleasto has quit [Quit: Konversation terminated!]