01:31 prOMiNd: anyone not asleep?
01:32 prOMiNd: nvapeek 0032e1ae => 2300414c
01:32 prOMiNd: nvapoke doesn´t seem to be able to write over it
01:43 imirkin: prOMiNd: these aren't registers
01:43 imirkin: these are function calls
01:44 imirkin: write(reg, val). read(reg). just because you write something somewhere doesn't mean that you get that value when you read.
01:44 prOMiNd: elaborate as to a complete idiot
01:44 prOMiNd: nvapeek is supposed to read the register(function), nvapoke to write over it
01:44 imirkin: if i call function A with an argument
01:45 imirkin: would you necessarily expect function B to return you that argument?
01:45 prOMiNd: not exactly
01:45 imirkin: that's what these registers are.
01:45 prOMiNd: but how am I supposed to write to a register?
01:45 imirkin: now ... MANY of them just store a value
01:45 imirkin: however that's not necessarily true
01:45 imirkin: there is no register. that's just a name we use.
01:46 imirkin: it's not a 32-bit value being stored
01:46 imirkin: it's some function being called inside the card
01:46 karolherbst: also 0032e1ae is unaligned
01:46 karolherbst: and points into the PROM region
01:46 imirkin: haha. good point. i didn't notice. but that doesn't affect my comment.
01:46 imirkin: PROM is, of course, read-only
01:46 karolherbst: yeah, just pointing it out
01:47 imirkin: but more generally, just coz you write a value, doesn't mean that you'll get it when you read the register again
01:47 imirkin: that's just not how the hardware works
01:47 imirkin: if you want to make the appearance of that, you could extend mmiotrace to fake values at certain addresses.
01:48 karolherbst: 10a040 is rw as long as the PMU is not in LS/HS mode
01:49 prOMiNd: in English please :)
01:49 prOMiNd: its indeed vbios pointer inside memory address space
01:49 imirkin: "the thing you are trying to do won't work"
01:49 imirkin: how's that?
01:50 prOMiNd: now...since that ain´t work obviously how it can actually work?
01:51 karolherbst: what do you want to do?
01:51 prOMiNd: adjust certain value in memory timings
01:51 karolherbst: you mean you want the driver to use a modified vbios?
01:52 prOMiNd: keep in mind I have no idea how nvidia works, I´ve been doing that on AMD for ages but using umr is much easer
01:52 prOMiNd: easier*
01:52 karolherbst: what GPU do you have?
01:52 prOMiNd: p106-100
01:52 karolherbst: okay
01:52 karolherbst: you can't
01:52 karolherbst: only way is to flash the vbios with tools provided by nvidia for OEMs
01:52 prOMiNd: that actually is 1080ti
01:52 karolherbst: but
01:52 karolherbst: you won't get the driver to read a changed vbios without being able to sign it with nvidias keys
01:52 prOMiNd: I don´t want to flash the bios, someone already did that and called it ¨OhGodAPill¨
01:53 imirkin: OhGodAGirl: --^
01:53 prOMiNd: lets say its not her but someone else, the point is she adviced me to come here and seek for help
01:54 prOMiNd: I did my humble homework and located where timings are stored and how to reach them
01:54 karolherbst: yeah, in the vbios
01:54 karolherbst: and no, you can't change it
01:54 prOMiNd: I know I can´t
01:54 prOMiNd: but some certain people did that and I just wanna know how, because its clearly possible
01:55 karolherbst: intercept the read between device -> driver, flash a modded vbios, exploiting vulneribilities
01:55 karolherbst: there are many ways
01:55 karolherbst: but doing anything on the PROM region in MMIO won't work
01:55 prOMiNd: one is enough
01:56 karolherbst: ask them for the source code
01:57 prOMiNd: its no fun
01:58 prOMiNd: besides why would they share it?
01:58 karolherbst: I will shame them
01:58 karolherbst: otherwise
02:00 prOMiNd: what for? :)
02:00 karolherbst: OhGodAGirl: shame on you btw
02:00 prOMiNd: forget shaming
02:00 prOMiNd: help me out to achieve that
02:01 karolherbst: will you make the software you write with that open source?
02:01 prOMiNd: I can´t
02:01 prOMiNd: not a developer
02:01 karolherbst: then I won't help you
02:01 prOMiNd: but I can share the method :)
02:01 karolherbst: I don't care
02:01 karolherbst: share the code
02:01 prOMiNd: what code? bash script to peek and poke? :D
02:01 prOMiNd: sure
02:02 karolherbst: whatever
02:02 karolherbst: but peek and poke won't work here anyway
02:02 karolherbst: you can't even change the timings or anything anymore on those GPUs
02:02 prOMiNd: whatever it works
02:03 karolherbst: well, not directly
02:03 karolherbst: so you have to trick the driver
02:03 karolherbst: but that's what I told you already
02:07 prOMiNd: you mean try to load some fake bios?
02:12 karolherbst: some people say that ETH tool even contained malware
02:12 karolherbst: interesting
02:13 prOMiNd: nvafakebios looks interesting
02:15 imirkin: not going to help
02:16 imirkin: skeggsb: ping on those patches? (esp the nv4x fan situation)
02:16 imirkin: looks like rc2 already went out
02:17 skeggsb: imirkin: haven't forgotten ;)
02:17 prOMiNd: I have no idea if it does or not contain malware
02:18 prOMiNd: and frankly not interested in using it
02:18 imirkin: skeggsb: ok :)
02:40 karolherbst: oh wow, that business is just full of scammers, broken promises and destroying your "partners"... I think I'll stay away from anybody from now onw trying to get dubious optimizations for dubious reasons :/
02:41 imirkin: you could be talking about almost anything...
02:41 karolherbst: I meant OhGodAGirl
02:42 karolherbst: seems to have screwed over her "partners" in the last company she was invovled
02:42 karolherbst: but that entire mining business is a big scam anyway
02:43 karolherbst: so I am not even surprised
02:45 imirkin: i think pretty much everyone doing mining got screwed...
02:45 karolherbst: true
02:48 airlied: imirkin: not if they gave up at the right time :-P
02:49 imirkin: heh
02:49 karolherbst: :D
02:49 airlied: someone must have all the money at the top of the pyramid :P
02:49 airlied: what's the point in creating a massive pyrmaid scheme otherwise
02:49 karolherbst: you mean the bankers?
02:50 karolherbst: ohh wait
02:50 karolherbst: somebody had to invent those coins as well
02:50 karolherbst: I guess those have enough as well
02:51 imirkin: https://www.youtube.com/watch?v=lC5lsemxaJo
03:27 imirkin: HdkR: what happened to the dolphin progress report?
03:28 HdkR: Everyone was at 35c3 so not much happened
03:28 HdkR: https://twitter.com/Dolphin_Emu/status/1079309006848454656
03:29 HdkR: Plus vacations for a lot of people
03:29 karolherbst: overspecific denial there :D
03:30 HdkR: :P
03:32 karolherbst: anyway, I think I will be able to recover my minecraft account again, so I would be able to look into those weirdo bugs now
03:45 imirkin: heh
17:20 prOMiNd: karolherbst, hi again
17:21 prOMiNd: do you know how to determine memory vendor like on amd poking mmMC_SEQ_MISC0?
18:07 RSpliet: prOMiNd: you mean the DRAM vendor? there might be some mechanism that messes with the MR registers, but we haven't found (or really looked for) it
18:10 prOMiNd: it should be simple scratch register
18:11 prOMiNd: populated by fw or idk
18:11 prOMiNd: I don´t have any experience with nv hardware, just starting to play with it :)
18:12 RSpliet: DRAM has a standardised method of requesting a vendor ID. It involves writing a bit to an MR register, reading out what's broadcast on the data lines, then unsetting that bit again. If you do that mid-DRAM-transfer, you'll start reading bogus data, so there's constraints under which you can do that.
18:13 RSpliet: We haven't found a use-case for which knowing the DRAM vendor is relevant for operation of the card.
18:16 prOMiNd: overclocking capabilities
18:18 karolherbst: prOMiNd: usually it is a very good idea to trust the values the vbios comes with the GPU
18:18 karolherbst: you can get lucky and it works for some workloads
18:19 karolherbst: but then you get random misscalculations you now have to detect in software
18:19 karolherbst: or just ignore
18:21 prOMiNd: thank you very much for this explanation, but thats not really what I am aiming for
18:22 prOMiNd: since last night i discovered a lot, i can now determine memory type by comparing timing sets
18:22 karolherbst: well, that's the nature of overclocking
18:22 prOMiNd: the nature of overclocking is understanding how GDDR works and what you can do with it :)
18:22 karolherbst: there is always room for a bin of optimizations without running into issues, because not every single card is tested by itself
18:23 prOMiNd: I am extremely surprised how good NVIDIA made they timings compared to AMD
18:23 karolherbst: so you can fine tune values for your card and get away with it without running into issues
18:23 prOMiNd: their*
18:24 karolherbst: but for workloads where precision doens't matter or the result is verified anyway, you can trade of speed with errors if in avg you get better performance
18:24 prOMiNd: experience says that memory vendor matters, micron cannot be overclocked that much compared to samsung for example and knowing your vendor you can at least know your limits
18:24 karolherbst: you have to test it anyway
18:24 karolherbst: it highly depends on how the chip was produced and the specific chip you got
18:24 RSpliet: prOMiNd: for overclocking purposes, you can also eyeball the DRAM chips on the card...
18:25 karolherbst: just because one brand is "better" in avg, doesn't mean it's valid for your case
18:25 karolherbst: normally you stresstest with your adjusted values and check if everything is still fine
18:25 prOMiNd: RSpliet, I will have to disassemble the GPU to do that or run on windows
18:25 karolherbst: and you can do that until you run into issues
18:25 prOMiNd: its not like I can´t it just either voids my warranty or gives me pain by running on windows
18:25 karolherbst: and knowing the vendor is highly irrelevant for this
18:26 RSpliet: prOMiNd: both are actually easier than reverse engineering a GPUs interfaces
18:26 pmoreau: sooda: Thanks for the reply. :-) Are you coming to FOSDEM btw?
18:26 karolherbst: it helps choosing an initial starting value, but that's basically it
18:26 prOMiNd: RSpliet, no fun! :)
18:26 karolherbst: but the vbios already did this for you
18:26 prOMiNd: I like to poke around and discover new things
18:26 RSpliet: prOMiNd: feel free to do the work ;-) what I tell you is the current state of our collective understanding.
18:27 prOMiNd: thank you for that
18:27 prOMiNd: )
18:27 prOMiNd: :)
18:27 prOMiNd: karolherbst, and yes its possible to adjust timings and I found the right registers, I intend to publish it once my research is finished
18:28 karolherbst: cool
18:28 RSpliet: prOMiNd: we know where timings are pushed on the card... there's a pile of nouveau code that does just that. The Kepler code is relevant for more modern chips too.
18:29 prOMiNd: exactly
18:29 prOMiNd: :)
18:29 RSpliet: I... kind of wrote that code for older chips.
18:29 prOMiNd: but yesterday karolherbst refused to reveal it I had to review the whole envytools code
18:29 prOMiNd: was nice reading though :)
18:29 karolherbst: you said you weren't able to publish it ;)
18:30 prOMiNd: karolherbst, I don´t code, there is a difference
18:31 RSpliet: Oh heh, the envytools stuff. Heh, yeah that's incomplete...
18:32 RSpliet: Changing memory clocks is finnicky, even if you know all the parameters (which is more than you think...)
18:33 RSpliet: Us here aren't interested in overclocking too much, because... well, it's bad enough initialising DRAM to clocks that we know are supported (through what's provided in the VBIOS), and because there's no place for overclocking-related code in the driver.
18:34 RSpliet: No point overclocking a card using a driver that gives so many other performance disadvantages...
18:49 sooda: pmoreau: i'm not this time, might change (or make up) plans though