<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c, branch linux-4.17.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.17.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.17.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2017-06-16T04:04:42Z</updated>
<entry>
<title>drm/nouveau/tmr: remove nvkm_timer_alarm_cancel()</title>
<updated>2017-06-16T04:04:42Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2017-05-11T07:29:58Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=7eaf1198a9aaa9c31c9270e370088d8a79c149ab'/>
<id>urn:sha1:7eaf1198a9aaa9c31c9270e370088d8a79c149ab</id>
<content type='text'>
nvkm_timer_alarm() already handles this as part of protecting against
callers passing in no timeout value.

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: fully separate alarm execution/pending lists</title>
<updated>2017-06-06T04:04:07Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2017-06-05T07:23:32Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=b4e382ca7586a63b6c1e5221ce0863ff867c2df6'/>
<id>urn:sha1:b4e382ca7586a63b6c1e5221ce0863ff867c2df6</id>
<content type='text'>
Reusing the list_head for both is a bad idea.  Callback execution is done
with the lock dropped so that alarms can be rescheduled from the callback,
which means that with some unfortunate timing, lists can get corrupted.

The execution list should not require its own locking, the single function
that uses it can only be called from a single context.

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: avoid processing completed alarms when adding a new one</title>
<updated>2017-05-11T22:32:58Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2017-05-11T07:13:29Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=330bdf62fe6a6c5b99a647f7bf7157107c9348b3'/>
<id>urn:sha1:330bdf62fe6a6c5b99a647f7bf7157107c9348b3</id>
<content type='text'>
The idea here was to avoid having to "manually" program the HW if there's
a new earliest alarm.  This was lazy and bad, as it leads to loads of fun
races between inter-related callers (ie. therm).

Turns out, it's not so difficult after all.  Go figure ;)

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: fix corruption of the pending list when rescheduling an alarm</title>
<updated>2017-05-11T22:32:57Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2017-05-11T07:03:05Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=9fc64667ee48c9a25e7dca1a6bcb6906fec5bcc5'/>
<id>urn:sha1:9fc64667ee48c9a25e7dca1a6bcb6906fec5bcc5</id>
<content type='text'>
At least therm/fantog "attempts" to work around this issue, which could
lead to corruption of the pending alarm list.

Fix it properly by not updating the timestamp without the lock held, or
trying to add an already pending alarm to the pending alarm list....

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: handle races with hw when updating the next alarm time</title>
<updated>2017-05-11T22:32:57Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2017-05-11T07:19:48Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=1b0f84380b10ee97f7d2dd191294de9017e94d1d'/>
<id>urn:sha1:1b0f84380b10ee97f7d2dd191294de9017e94d1d</id>
<content type='text'>
If the time to the next alarm is short enough, we could race with HW and
end up with an ~4 second delay until it triggers.

Fix this by checking again after we update HW.

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>drm/nouveau/core: remove pmc_enable argument from subdev ctor</title>
<updated>2016-05-20T04:43:04Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2016-04-08T07:24:40Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=56d06fa29edd58c448766014afd833b7ff51247b'/>
<id>urn:sha1:56d06fa29edd58c448766014afd833b7ff51247b</id>
<content type='text'>
These are now specified directly in the MC subdev.

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: convert to new-style nvkm_subdev</title>
<updated>2015-08-28T02:40:45Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2015-08-20T04:54:21Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=31649ecf47a44e02e73bffc5680c8f56d6cf587a'/>
<id>urn:sha1:31649ecf47a44e02e73bffc5680c8f56d6cf587a</id>
<content type='text'>
Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: type-safe PTIMER-based delay/wait macros</title>
<updated>2015-08-28T02:40:19Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2015-08-20T04:54:10Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=56f67dc19623b6cd4db57ee07d6f0cad32bcd5af'/>
<id>urn:sha1:56f67dc19623b6cd4db57ee07d6f0cad32bcd5af</id>
<content type='text'>
These require an explicit struct nvkm_device pointer, unlike the previous
macros which take a void *, and work for (almost) anything derived from
nvkm_object by using some heuristics.

These macros are more general than the previous ones, and can be used to
handle PTIMER-based busy-waits (will be used in later devinit fixes) as
well as more complicated wait conditions.

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: switch to device pri macros</title>
<updated>2015-08-28T02:40:16Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2015-08-20T04:54:09Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=c44c049f28dbebfb95aca3847fd4996ca3503b0c'/>
<id>urn:sha1:c44c049f28dbebfb95aca3847fd4996ca3503b0c</id>
<content type='text'>
Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
</content>
</entry>
<entry>
<title>drm/nouveau/tmr: cosmetic changes</title>
<updated>2015-08-28T02:40:09Z</updated>
<author>
<name>Ben Skeggs</name>
<email>bskeggs@redhat.com</email>
</author>
<published>2015-08-20T04:54:07Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=cb8bb9cedb6015eafd56ef9e9c5b2c216e8e7960'/>
<id>urn:sha1:cb8bb9cedb6015eafd56ef9e9c5b2c216e8e7960</id>
<content type='text'>
This is purely preparation for upcoming commits, there should be no
code changes here.

Signed-off-by: Ben Skeggs &lt;bskeggs@redhat.com&gt;
</content>
</entry>
</feed>
