00:01TimurTabi: What is a "client", e.g. nouveau_cli ?
00:02imirkin_: iirc that's a VM
00:02imirkin_: so every open file handle of the card(/render) node will have a client associated
00:02imirkin_: there's also the "system" client which is used to manage things like fbcon/etc
00:04TimurTabi: Ah, I see that nouveau_drm_open() calls nouveau_cli_init(). And also in nouveau_drm_device_init() there are two calls to nouveau_cli_init(), one for "DRM-master" and another for "DRM"
00:04imirkin_: dunno what the difference is
00:05imirkin_: i was only aware of the "DRM" one
00:05imirkin_: but it's also the sort of thing that sorta just works, so i don't go looking often
00:07TimurTabi: I'm trying to understand the initialization code. I don't know NVidia hardware as well as I should, so it's a challenge.
00:07imirkin_: "as you should"? how well *should* you know nvidia hw?
00:08imirkin_: unless you've been hanging out here for a very long time (or are an nvidia engineer), the answer should be "not very well" :)
00:08imirkin_: initialization is driven by nvkm/engine/device/base.c
00:08TimurTabi: I am an NVidia engineer, but I haven't gotten a lot of training in this area.
00:08imirkin_: oh heh
00:09imirkin_: glad i had the exception clause there!
00:09imirkin_: anyways, each device is a composition of subdevices (some of which are engines)
00:09imirkin_: "devinit" is kinda special
00:10imirkin_: the lifecycle of a subdev is wildly complicated
00:10imirkin_: and takes things like runpm suspend, hibernate, etc
00:10imirkin_: er, takes things into account like ...
00:10imirkin_: but basically there's like a preinit, init, maybe a initonce
00:11imirkin_: amusingly fini gets called before init does
00:13imirkin_: also, while sometimes helpful, my answers are in no way authoritative
00:13imirkin_: skeggsb is the authority on this stuff. but he's currently on vacation, i think
00:14TimurTabi: Yeah, I think he's out until next week
00:16karolherbst: TimurTabi: ohh, now I know why your name sounded familiar :D Hi Timur
00:17karolherbst: TimurTabi: so regarding initialization, we have in each engine and subdev the *init functions which gets called in order
00:18karolherbst: order is kind of defined by drm/nouveau/include/nvkm/core/device.h
00:18karolherbst: enum nvkm_devidx
00:18karolherbst: preinit gets called first on all engines/subdevs, then init
00:19TimurTabi: I need to go get dinner now, so I'll be back tomorrow morning. Thanks!
00:19karolherbst: imirkin_: fini gets called before, because we create the nouveau_device thing once to probe stuff and then clean it up again, or did you mean something else?
00:20imirkin_: that's not exactly why, but what i mean is that one might not expect fini to be called prior to init
00:20imirkin_: when looking at the list of hooks
00:21karolherbst: well, it's not
00:22imirkin_: it very much is.
00:23imirkin_: iirc it's explicitly called prior to init as part of the lifecycle stuff
00:23karolherbst: preinit is the first thing here
00:24karolherbst: ohh, I guess I was indeed wrong here
01:19imirkin_: TimurTabi: are you working on accel init or something?
05:36mupuf: imirkin_: bugzilla will be turned read-only at the end of the month
05:37mupuf: so, if you don't want any bugs and want emails for everything, then I guess not doing anything is the way to go
11:44RSpliet: Looks like industry took a page from the RNN book :-P
15:39imirkin_: mupuf: let's see what happens
16:33codedmart: Lyude: it seems that without nvidia drivers installed chromium randomly freezes without hardware accel disabled. Is this related to my problems as well.
17:08codedmart: Nevermind that question I think it is related to kernel 5.3 and intel DDX