Message ID | 20201101174132.10513-1-rwright@hpe.com |
---|---|
Headers | show |
Series | Reduce context clear batch size to avoid gpu hang | expand |
On Mon, Nov 02, 2020 at 10:48:54AM +0100, Hans de Goede wrote: > Hi, > > On 11/1/20 6:41 PM, rwright@hpe.com wrote: > > From: Randy Wright <rwright@hpe.com> > > > > For several months, I've been experiencing GPU hangs when starting > > Cinnamon on an HP Pavilion Mini 300-020 if I try to run an upstream > > kernel. I reported this recently in > > https://gitlab.freedesktop.org/drm/intel/-/issues/2413 where I have > > attached the requested evidence including the state collected from > > /sys/class/drm/card0/error and debug output from dmesg. > > > > I ran a bisect to find the problem, which indicates this is the > > troublesome commit: > > > > [47f8253d2b8947d79fd3196bf96c1959c0f25f20] drm/i915/gen7: Clear all EU/L3 residual contexts > > ... > > I've now cleaned up the patch to employ a new QUIRK_RENDERCLEAR_REDUCED. > > The quirk is presently set only for the aforementioned HP Pavilion Mini > > 300-020. The patch now touches three files to define the quirk, set it, > > and then check for it in function batch_get_defaults. > > Note I'm not really an i915 dev. > > With that said I do wonder if we should not use the > reduced batch size in a lot more cases, the machine in question uses a > 3558U CPU if the iGPU of that CPU has this issue, then I would expect > pretty much all Haswell U models (at a minimum) to have this issue. > > So solving this with a quirk for just the HP Pavilion Mini 300-020 > seems wrong to me. I think we need a more generic way of enabling > the reduced batch size. I even wonder if we should not simply use > it everywhere. Since you do have a proper Haswell CPU, I guess > it being an U model makes the hang easier to trigger, but I suspect > the higher TPD ones may also still be susceptible ... > > Regards, > > Hans > Hi Hans, As you noted, the 3558U cpu is one of the least powerful processors to be designated as a Haswell, but there are others at the low end of the Haswell architecture that I also suspect might exhibit similar problems. That leads me to think that more gpu hangs like mine will be reported when commit 47f8253d makes its way into widely used kernels. And that's why I chose to implement a quirk that would allow enrolling other systems as they are identified. Your remark about applying the reduced batch size in all cases certainly would simplify the patch. However, I don't have any other systems using the i915 driver on which I could try to measure the putative performance penalty of reducing the batch size on a system that worked properly with the large size. So I couldn't thoroughly investigate the consequences of a broader change. That said, if the i915 maintainers respond in favor of the simpler unconditional reduction of the batch size, I will be glad to propose a much simpler version of my patch. I probably should clarify that this patch is to resolve a problem on a personally owned system that I use at home. It is not related to a problem with any of HPE's products, and so I don't have a lab full of systems using the i915 driver on which I can test a change that would have an effect many products. The consumer products like Pavilions stayed with HP when HPE split from HP five years ago. -- Randy Wright Usmail: Hewlett Packard Enterprise Email: rwright@hpe.com Servers Linux Enablement Phone: (970) 898-0998 3404 E. Harmony Rd, Mailstop 36 Fort Collins, CO 80528-9599
On Mon, Nov 02, 2020 at 12:57:10PM -0700, rwright@hpe.com wrote: > On Mon, Nov 02, 2020 at 10:48:54AM +0100, Hans de Goede wrote: > > Hi, > > > ... > That said, if the i915 maintainers respond in favor of the simpler > unconditional reduction of the batch size, I will be glad to > propose a much simpler version of my patch. > ... I received a suggestion from Mika Kuoppala to test https://patchwork.freedesktop.org/patch/399174/?series=83531&rev=1 as a solution for the GPU hang I observed, and the test was successful. I recommend this patch as a better approch than my own, as it addresses more general cases without introducing a new quirk. -- Randy Wright Usmail: Hewlett Packard Enterprise Email: rwright@hpe.com Servers Linux Enablement Phone: (970) 898-0998 3404 E. Harmony Rd, Mailstop 36 Fort Collins, CO 80528-9599
From: Randy Wright <rwright@hpe.com> For several months, I've been experiencing GPU hangs when starting Cinnamon on an HP Pavilion Mini 300-020 if I try to run an upstream kernel. I reported this recently in https://gitlab.freedesktop.org/drm/intel/-/issues/2413 where I have attached the requested evidence including the state collected from /sys/class/drm/card0/error and debug output from dmesg. I ran a bisect to find the problem, which indicates this is the troublesome commit: [47f8253d2b8947d79fd3196bf96c1959c0f25f20] drm/i915/gen7: Clear all EU/L3 residual contexts The nature of that commit suggested to me that reducing the batch size used in the context clear operation might help this relatively low-powered system to avoid the hang.... and it did! I simply forced this system to take the smaller batch length that is already used for non-Haswell systems. The first two versions of this patch were posted as RFC patches to the Intel-gfx list, implementing the same algorithmic change in function batch_get_defaults, but without employing a properly constructed quirk. I've now cleaned up the patch to employ a new QUIRK_RENDERCLEAR_REDUCED. The quirk is presently set only for the aforementioned HP Pavilion Mini 300-020. The patch now touches three files to define the quirk, set it, and then check for it in function batch_get_defaults. Randy Wright (3): drm/i915: Introduce quirk QUIRK_RENDERCLEAR_REDUCED drm/i915/display: Add function quirk_renderclear_reduced drm/i915/gt: Force reduced batch size if new QUIRK_RENDERCLEAR_REDUCED is set. drivers/gpu/drm/i915/display/intel_quirks.c | 13 +++++++++++++ drivers/gpu/drm/i915/gt/gen7_renderclear.c | 2 +- drivers/gpu/drm/i915/i915_drv.h | 1 + 3 files changed, 15 insertions(+), 1 deletion(-)