rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/4] drm/panic: Add a QR code panic screen
@ 2024-07-17 14:24 Jocelyn Falempe
  2024-07-17 14:24 ` [PATCH v4 1/4] drm/panic: Add integer scaling to blit() Jocelyn Falempe
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Jocelyn Falempe @ 2024-07-17 14:24 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Daniel Vetter, Miguel Ojeda, Alex Gaynor, Wedson Almeida Filho,
	Boqun Feng, Gary Guo, Bjorn Roy Baron, Benno Lossin,
	Andreas Hindborg, Alice Ryhl, linux-kernel, dri-devel,
	rust-for-linux, Danilo Krummrich
  Cc: Jocelyn Falempe

This series adds a new panic screen, with the kmsg data embedded in a QR code.

The main advantage of QR code, is that you can copy/paste the debug data to a bug report.

The QR code encoder is written in rust, and is very specific to drm panic.
The reason is that it is called in a panic handler, and thus can't allocate memory, or use locking.
The rust code uses a few rust core API, and provides only two C entry points.
There is no particular reason to do it in rust, I just wanted to learn rust, and see if it can work in the kernel.

If you want to see what it looks like, I've put a few screenshots here:
https://github.com/kdj0c/panic_report/issues/1

v2:
 * Rewrite the rust comments with Markdown (Alice Ryhl)
 * Mark drm_panic_qr_generate() as unsafe (Alice Ryhl)
 * Use CStr directly, and remove the call to as_str_unchecked()
   (Alice Ryhl)
 * Add a check for data_len <= data_size (Greg KH)

v3:
 * Fix all rust comments (typo, punctuation) (Miguel Ojeda)
 * Change the wording of safety comments (Alice Ryhl)
 * Add a link to the javascript decoder in the Kconfig (Greg KH)
 * Fix data_size and tmp_size check in drm_panic_qr_generate()
 
 v4:
 * Fix the logic to find next line and skip the '\n' (Alice Ryhl)
 * Remove __LOG_PREFIX as it's not used (Alice Ryhl)

Jocelyn Falempe (4):
  drm/panic: Add integer scaling to blit()
  drm/rect: Add drm_rect_overlap()
  drm/panic: Simplify logo handling
  drm/panic: Add a QR code panic screen

 drivers/gpu/drm/Kconfig         |   31 +
 drivers/gpu/drm/Makefile        |    1 +
 drivers/gpu/drm/drm_drv.c       |    3 +
 drivers/gpu/drm/drm_panic.c     |  340 +++++++++--
 drivers/gpu/drm/drm_panic_qr.rs | 1003 +++++++++++++++++++++++++++++++
 include/drm/drm_panic.h         |    4 +
 include/drm/drm_rect.h          |   15 +
 7 files changed, 1358 insertions(+), 39 deletions(-)
 create mode 100644 drivers/gpu/drm/drm_panic_qr.rs


base-commit: e1a261ba599eec97e1c5c7760d5c3698fc24e6a6
-- 
2.45.2


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-07-23  8:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-17 14:24 [PATCH v4 0/4] drm/panic: Add a QR code panic screen Jocelyn Falempe
2024-07-17 14:24 ` [PATCH v4 1/4] drm/panic: Add integer scaling to blit() Jocelyn Falempe
2024-07-17 14:24 ` [PATCH v4 2/4] drm/rect: Add drm_rect_overlap() Jocelyn Falempe
2024-07-17 14:24 ` [PATCH v4 3/4] drm/panic: Simplify logo handling Jocelyn Falempe
2024-07-17 14:24 ` [PATCH v4 4/4] drm/panic: Add a QR code panic screen Jocelyn Falempe
2024-07-22  9:02   ` Alice Ryhl
2024-07-22 23:20   ` Mitchell Levy
2024-07-23  8:09     ` Jocelyn Falempe
2024-07-19 18:50 ` [PATCH v4 0/4] " Mitchell Levy
2024-07-22  8:53   ` Jocelyn Falempe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).