Christian König
2019-Sep-24 12:19 UTC
[Nouveau] Is Nouveau really using the io_reserve_lru?
Hi guys, while working through more old TTM functionality I stumbled over the io_reserve_lru. Basic idea is that when this flag is set the driver->io_mem_reserve() callback can return -EAGAIN resulting in unmapping of other BOs. But Nouveau doesn't seem to return -EAGAIN in the call path of io_mem_reserve anywhere. So is this unused or am I missing something? Regards, Christian.
On Tue, 24 Sep 2019 at 22:19, Christian König <ckoenig.leichtzumerken at gmail.com> wrote:> > Hi guys, > > while working through more old TTM functionality I stumbled over the > io_reserve_lru. > > Basic idea is that when this flag is set the driver->io_mem_reserve() > callback can return -EAGAIN resulting in unmapping of other BOs. > > But Nouveau doesn't seem to return -EAGAIN in the call path of > io_mem_reserve anywhere.I believe this is a bug in Nouveau. We *should* be returning -EAGAIN if we fail to find space in BAR1 to map the BO into. Ben.> > So is this unused or am I missing something? > > Regards, > Christian. > _______________________________________________ > Nouveau mailing list > Nouveau at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/nouveau
Koenig, Christian
2019-Sep-27 12:19 UTC
[Nouveau] Is Nouveau really using the io_reserve_lru?
Am 26.09.19 um 23:44 schrieb Ben Skeggs:> On Tue, 24 Sep 2019 at 22:19, Christian König > <ckoenig.leichtzumerken at gmail.com> wrote: >> Hi guys, >> >> while working through more old TTM functionality I stumbled over the >> io_reserve_lru. >> >> Basic idea is that when this flag is set the driver->io_mem_reserve() >> callback can return -EAGAIN resulting in unmapping of other BOs. >> >> But Nouveau doesn't seem to return -EAGAIN in the call path of >> io_mem_reserve anywhere. > I believe this is a bug in Nouveau. We *should* be returning -EAGAIN > if we fail to find space in BAR1 to map the BO into.Yeah, thought that this is rather odd. But I can't fix it since I don't really know the code. On the other hand do you have any objections that I move the remaining io_reserve_lru functionality into Nouveau then? It's only used by this driver and since Thomas cleaned up the VM handling that shouldn't be a problem any more. Thanks, Christian.> > Ben. >> So is this unused or am I missing something? >> >> Regards, >> Christian. >> _______________________________________________ >> Nouveau mailing list >> Nouveau at lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/nouveau
On Thu, Sep 26, 2019 at 5:44 PM Ben Skeggs <skeggsb at gmail.com> wrote:> > On Tue, 24 Sep 2019 at 22:19, Christian König > <ckoenig.leichtzumerken at gmail.com> wrote: > > > > Hi guys, > > > > while working through more old TTM functionality I stumbled over the > > io_reserve_lru. > > > > Basic idea is that when this flag is set the driver->io_mem_reserve() > > callback can return -EAGAIN resulting in unmapping of other BOs. > > > > But Nouveau doesn't seem to return -EAGAIN in the call path of > > io_mem_reserve anywhere. > I believe this is a bug in Nouveau. We *should* be returning -EAGAIN > if we fail to find space in BAR1 to map the BO into.Could this lead to SIGBUS in userspace, esp related to resume and similar situations? A user has been experiencing this in a tricky-to-reproduce scenario with a ton of vram dedicated to framebuffers and so on (3x 4K), and the nouveau ddx falls back to memcpy in certain cases. -ilia