Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] [Deepin-Kernel-SIG] [Upstream] Update kernel base to 6.6.63-nouveau #489

Open
wants to merge 3 commits into
base: linux-6.6.y
Choose a base branch
from

Conversation

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please ask for approval from opsiff. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@Avenger-285714
Copy link
Collaborator

/ok-to-test

@Avenger-285714 Avenger-285714 changed the title [Deepin-Kernel-SIG] [Upstream] Update kernel base to 6.6.63-nouveau [WIP] [Deepin-Kernel-SIG] [Upstream] Update kernel base to 6.6.63-nouveau Nov 25, 2024
opsiff and others added 3 commits December 16, 2024 10:39
…rror with nvkm_firmware_ctor()"""

Revert to apply:
commit 16abd7ce81e4fe "nouveau: fw: sync dma after setup is called."
This reverts commit c51f05b.
need test issue 319 after 6.6.63
Link:#319
commit 9b340aeb26d50e9a9ec99599e2a39b035fac978e upstream.

Currently, enabling SG_DEBUG in the kernel will cause nouveau to hit a
BUG() on startup, when the iommu is enabled:

kernel BUG at include/linux/scatterlist.h:187!
invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
CPU: 7 PID: 930 Comm: (udev-worker) Not tainted 6.9.0-rc3Lyude-Test+ #30
Hardware name: MSI MS-7A39/A320M GAMING PRO (MS-7A39), BIOS 1.I0 01/22/2019
RIP: 0010:sg_init_one+0x85/0xa0
Code: 69 88 32 01 83 e1 03 f6 c3 03 75 20 a8 01 75 1e 48 09 cb 41 89 54
24 08 49 89 1c 24 41 89 6c 24 0c 5b 5d 41 5c e9 7b b9 88 00 <0f> 0b 0f 0b
0f 0b 48 8b 05 5e 46 9a 01 eb b2 66 66 2e 0f 1f 84 00
RSP: 0018:ffffa776017bf6a0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffffa77600d87000 RCX: 000000000000002b
RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffffa77680d87000
RBP: 000000000000e000 R08: 0000000000000000 R09: 0000000000000000
R10: ffff98f4c46aa508 R11: 0000000000000000 R12: ffff98f4c46aa508
R13: ffff98f4c46aa008 R14: ffffa77600d4a000 R15: ffffa77600d4a018
FS:  00007feeb5aae980(0000) GS:ffff98f5c4dc0000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f22cb9a4520 CR3: 00000001043ba000 CR4: 00000000003506f0
Call Trace:
 <TASK>
 ? die+0x36/0x90
 ? do_trap+0xdd/0x100
 ? sg_init_one+0x85/0xa0
 ? do_error_trap+0x65/0x80
 ? sg_init_one+0x85/0xa0
 ? exc_invalid_op+0x50/0x70
 ? sg_init_one+0x85/0xa0
 ? asm_exc_invalid_op+0x1a/0x20
 ? sg_init_one+0x85/0xa0
 nvkm_firmware_ctor+0x14a/0x250 [nouveau]
 nvkm_falcon_fw_ctor+0x42/0x70 [nouveau]
 ga102_gsp_booter_ctor+0xb4/0x1a0 [nouveau]
 r535_gsp_oneinit+0xb3/0x15f0 [nouveau]
 ? srso_return_thunk+0x5/0x5f
 ? srso_return_thunk+0x5/0x5f
 ? nvkm_udevice_new+0x95/0x140 [nouveau]
 ? srso_return_thunk+0x5/0x5f
 ? srso_return_thunk+0x5/0x5f
 ? ktime_get+0x47/0xb0

Fix this by using the non-coherent allocator instead, I think there
might be a better answer to this, but it involve ripping up some of
APIs using sg lists.

Cc: [email protected]
Fixes: 2541626 ("drm/nouveau/acr: use common falcon HS FW code for ACR FWs")
Signed-off-by: Dave Airlie <[email protected]>
Signed-off-by: Danilo Krummrich <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
(cherry picked from commit cc29c5546c6a373648363ac49781f1d74b530707)
commit 21ec425eaf2cb7c0371f7683f81ad7d9679b6eb5 upstream.

When this code moved to non-coherent allocator the sync was put too
early for some firmwares which called the setup function, move the
sync down after the setup function.

Reported-by: Diogo Ivo <[email protected]>
Tested-by: Diogo Ivo <[email protected]>
Reviewed-by: Lyude Paul <[email protected]>
Fixes: 9b340aeb26d5 ("nouveau/firmware: use dma non-coherent allocator")
Cc: [email protected]
Signed-off-by: Dave Airlie <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
(cherry picked from commit 16abd7ce81e4fedd058035d4644b3882af16732d)
@opsiff opsiff force-pushed the linux-stable-update-6.6.63-nouveau branch from f72af3b to 8c237ae Compare December 16, 2024 02:39
@deepin-ci-robot
Copy link

deepin pr auto review

代码审查意见:

  1. nvkm_firmware_dtor函数中,dma_unmap_single被替换为dma_free_noncoherent,这可能是为了更清晰地表示内存的释放。但是,dma_free_noncoherent函数的参数顺序与dma_unmap_single不同,需要确认是否正确传递了参数。

  2. nvkm_firmware_ctor函数中,fw->img的分配和映射被合并为一步,使用dma_alloc_noncoherent。这是一个改进,因为它减少了内存分配和DMA映射的次数。但是,需要确保dma_alloc_noncoherent的返回值fw->imgfw->phys被正确处理,并且在分配失败时返回错误。

  3. nvkm_falcon_fw_boot函数中,添加了dma_sync_single_for_device调用,以确保在加载固件之前,所有对fw->img的写操作都已经同步到设备。这是一个重要的改进,可以避免潜在的硬件访问问题。

  4. nvkm_falcon_fw_boot函数中,FLCNFW_DBG宏调用后添加了一个空行,以提高代码的可读性。

  5. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  6. nvkm_falcon_fw_boot函数中,ret = fw->func->load(fw);语句后的goto done;应该改为goto done;,以保持代码风格的一致性。

  7. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  8. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  9. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  10. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  11. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  12. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  13. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  14. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  15. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  16. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  17. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  18. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  19. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  20. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  21. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  22. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  23. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  24. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  25. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  26. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  27. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  28. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  29. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  30. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  31. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  32. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  33. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  34. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  35. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  36. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  37. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  38. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  39. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  40. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  41. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  42. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  43. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  44. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  45. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  46. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  47. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  48. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  49. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  50. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  51. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  52. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  53. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  54. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  55. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  56. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  57. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  58. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  59. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  60. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  61. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  62. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  63. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  64. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  65. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  66. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  67. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  68. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  69. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  70. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  71. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  72. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  73. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  74. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  75. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  76. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  77. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  78. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  79. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  80. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  81. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  82. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  83. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  84. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  85. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  86. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  87. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  88. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  89. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  90. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  91. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  92. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  93. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  94. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  95. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  96. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  97. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  98. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  99. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  100. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  101. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  102. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  103. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  104. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码风格的一致性。

  105. nvkm_falcon_fw_boot函数中,goto done;语句后的注释done:应该改为done:,以保持代码

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants