diff mbox

noveau: emergency shutdown handling is overcomplex and broken

Message ID 20161025105050.GA20923@amd (mailing list archive)
State New, archived
Headers show

Commit Message

Pavel Machek Oct. 25, 2016, 10:50 a.m. UTC
GFP_ATOMIC is not reliable. Plus, see the fixme.

Best regards,
									Pavel

Comments

karol herbst Oct. 25, 2016, 11:09 a.m. UTC | #1
Thanks for the pointer.

But I don't like this patch. If you find a bug, make a bug report or
just fix it if you know the fix already. Or write something in IRC. Or
write on the Mailing list as a general question or something else

But I really don't agree on doing it this way. You would have needed
like the same amount of time to actual fix the problem.

Anyway, for adding a printk:

struct nvkm_subdev *subdev = &therm->subdev;
nvkm_error(subdev, "message");

2016-10-25 12:50 GMT+02:00 Pavel Machek <pavel@ucw.cz>:
>
> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
> index b9703c0..adb1deb 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
> @@ -120,6 +120,11 @@ nvkm_therm_sensor_event(struct nvkm_therm *therm, enum nvkm_therm_thrs thrs,
>                         struct work_struct *work;
>
>                         work = kmalloc(sizeof(*work), GFP_ATOMIC);
> +                       /* FIXME:
> +                          1) this is total overkill, orderly_poweroff() already
> +                          uses schedule_work internally
> +                          2) it would  be good to at least printk what is going on
> +                       */
>                         if (work) {
>                                 INIT_WORK(work, nv_poweroff_work);
>                                 schedule_work(work);
>
> GFP_ATOMIC is not reliable. Plus, see the fixme.
>
> Best regards,
>                                                                         Pavel
>
> --
> (english) http://www.livejournal.com/~pavelmachek
> (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
>
> _______________________________________________
> Nouveau mailing list
> Nouveau@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/nouveau
>
Pavel Machek Oct. 25, 2016, 11:13 a.m. UTC | #2
On Tue 2016-10-25 13:09:25, Karol Herbst wrote:
> Thanks for the pointer.
> 
> But I don't like this patch. If you find a bug, make a bug report or
> just fix it if you know the fix already. Or write something in
> IRC. Or

I found a bug, and this is my bug report. Can you take care and fix
it?

									Pavel



> write on the Mailing list as a general question or something else
> 
> But I really don't agree on doing it this way. You would have needed
> like the same amount of time to actual fix the problem.
> 
> Anyway, for adding a printk:
> 
> struct nvkm_subdev *subdev = &therm->subdev;
> nvkm_error(subdev, "message");
> 
> 2016-10-25 12:50 GMT+02:00 Pavel Machek <pavel@ucw.cz>:
> >
> > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
> > index b9703c0..adb1deb 100644
> > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
> > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
> > @@ -120,6 +120,11 @@ nvkm_therm_sensor_event(struct nvkm_therm *therm, enum nvkm_therm_thrs thrs,
> >                         struct work_struct *work;
> >
> >                         work = kmalloc(sizeof(*work), GFP_ATOMIC);
> > +                       /* FIXME:
> > +                          1) this is total overkill, orderly_poweroff() already
> > +                          uses schedule_work internally
> > +                          2) it would  be good to at least printk what is going on
> > +                       */
> >                         if (work) {
> >                                 INIT_WORK(work, nv_poweroff_work);
> >                                 schedule_work(work);
> >
> > GFP_ATOMIC is not reliable. Plus, see the fixme.
> >
> > Best regards,
> >                                                                         Pavel
> >
> > --
> > (english) http://www.livejournal.com/~pavelmachek
> > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
> >
> > _______________________________________________
> > Nouveau mailing list
> > Nouveau@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/nouveau
> >
diff mbox

Patch

diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
index b9703c0..adb1deb 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.c
@@ -120,6 +120,11 @@  nvkm_therm_sensor_event(struct nvkm_therm *therm, enum nvkm_therm_thrs thrs,
 			struct work_struct *work;
 
 			work = kmalloc(sizeof(*work), GFP_ATOMIC);
+			/* FIXME:
+			   1) this is total overkill, orderly_poweroff() already
+			   uses schedule_work internally
+			   2) it would  be good to at least printk what is going on
+			*/
 			if (work) {
 				INIT_WORK(work, nv_poweroff_work);
 				schedule_work(work);