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

kabylake/skylake load firmware #117

Closed
zhuyingjiang opened this issue Sep 10, 2018 · 3 comments
Closed

kabylake/skylake load firmware #117

zhuyingjiang opened this issue Sep 10, 2018 · 3 comments
Assignees
Labels
enhancement New feature or request

Comments

@zhuyingjiang
Copy link

The Skylake/Kabylake has different load firmware sequence with APL, and the different DMA. This issue is to track enable skylake/kabylake to load the firmware

@zhuyingjiang
Copy link
Author

with call the snd_dma_alloc_pages the error occurs:

[ 15.292195] sof-audio sof-audio: in ==cl_stream_prepare_skl==1===
[ 15.292196] sof-audio sof-audio: in =====cl_alloc_dma_buf_skl====
[ 15.292212] WARNING: CPU: 6 PID: 82 at ./include/linux/dma-mapping.h:516 snd_dma_alloc_pages+0x144/0x1e0 [snd_pcm]
[ 15.292212] Modules linked in: sof_pci_dev snd_sof_intel_hda_common snd_sof_intel_byt intel_rapl snd_sof_nocodec snd_sof x86_pkg_temp_thermal snd_sof_xtensa_dsp intel_powerclamp snd_soc_acpi_intel_match coretemp snd_soc_acpi snd_soc_core kvm_intel snd_compress kvm arc4 snd_pcm_dmaengine ac97_bus irqbypass joydev snd_pcm iwlmvm snd_seq_midi mac80211 snd_seq_midi_event crct10dif_pclmul snd_rawmidi crc32_pclmul 8250_dw snd_seq snd_seq_device ghash_clmulni_intel snd_timer pcbc snd iwlwifi soundcore btusb aesni_intel idma64 aes_x86_64 input_leds virt_dma crypto_simd btrtl btbcm cryptd processor_thermal_device glue_helper serio_raw btintel int340x_thermal_zone intel_lpss_pci bluetooth cfg80211 mei_me ecdh_generic intel_soc_dts_iosf mei intel_pch_thermal intel_lpss int3400_thermal acpi_thermal_rel mac_hid
[ 15.292233] acpi_pad nfsd auth_rpcgss nfs_acl lockd grace sunrpc parport_pc ppdev lp parport autofs4 hid_generic usbhid hid i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops e1000e drm sdhci_pci ahci cqhci sdhci libahci wmi pinctrl_sunrisepoint video pinctrl_intel
[ 15.292247] CPU: 6 PID: 82 Comm: kworker/6:1 Not tainted 4.18.0+ #2
[ 15.292247] Hardware name: Intel Corporation Kabylake Client platform/Kabylake R DDR4 RVP, BIOS KBLSE2R1.R00.X073.P03.1701171658 01/17/2017
[ 15.292250] Workqueue: events request_firmware_work_func
[ 15.292253] RIP: 0010:snd_dma_alloc_pages+0x144/0x1e0 [snd_pcm]
[ 15.292254] Code: b7 00 00 00 48 83 c4 10 5b 5d 41 5c 41 5d c3 83 ff 01 75 1d 48 89 d7 e8 5a fe ff ff 48 c7 43 18 00 00 00 00 48 89 43 10 eb b7 <0f> 0b e9 6d ff ff ff 89 fe 48 c7 c7 f0 da 82 c0 e8 65 ab 8b e3 48
[ 15.292270] RSP: 0018:ffffab51c11afb60 EFLAGS: 00010246
[ 15.292271] RAX: ffff9237eebf7410 RBX: ffff9237eebf1618 RCX: 0000000000000000
[ 15.292271] RDX: 000000000000001f RSI: ffff9237eebf7410 RDI: 0000000000000002
[ 15.292272] RBP: 0000000000020000 R08: 0000000000000001 R09: 0000000000000384
[ 15.292272] R10: 00000000000002f1 R11: 0000000000000384 R12: 0000000000000004
[ 15.292273] R13: ffffffffa4e1a9e0 R14: 0000000000000029 R15: 0000000000000000
[ 15.292274] FS: 0000000000000000(0000) GS:ffff9237fed80000(0000) knlGS:0000000000000000
[ 15.292274] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 15.292275] CR2: 00007f62d007b000 CR3: 00000001e020a003 CR4: 00000000003606e0
[ 15.292276] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 15.292276] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 15.292277] Call Trace:
[ 15.292281] cl_dsp_init_skl+0xc4/0x280 [snd_sof_intel_hda_common]
[ 15.292282] hda_dsp_cl_boot_firmware_skl+0x44/0x180 [snd_sof_intel_hda_common]
[ 15.292285] snd_sof_run_firmware+0x7a/0x1d0 [snd_sof]
[ 15.292287] ? request_firmware+0x3b/0x50
[ 15.292289] sof_probe+0x1a8/0x330 [snd_sof]
[ 15.292291] platform_drv_probe+0x3a/0x90
[ 15.292293] ? driver_sysfs_add+0x71/0xd0
[ 15.292294] driver_probe_device+0x2b0/0x490
[ 15.292295] ? __driver_attach+0x110/0x110
[ 15.292296] bus_for_each_drv+0x64/0xb0
[ 15.292297] __device_attach+0xd9/0x150
[ 15.292299] bus_probe_device+0x8a/0xa0
[ 15.292300] device_add+0x3bc/0x620
[ 15.292302] ? complete_all+0x31/0x40
[ 15.292303] platform_device_add+0x100/0x260
[ 15.292305] platform_device_register_full+0xf0/0x120
[ 15.292306] sof_pci_fw_cb+0x6a/0xc0 [sof_pci_dev]
[ 15.292308] request_firmware_work_func+0x47/0x90
[ 15.292310] process_one_work+0x15e/0x3d0
[ 15.292311] worker_thread+0x4c/0x440
[ 15.292313] kthread+0xf8/0x130
[ 15.292314] ? rescuer_thread+0x350/0x350
[ 15.292315] ? kthread_associate_blkcg+0x90/0x90
[ 15.292317] ret_from_fork+0x35/0x40
[ 15.292319] ---[ end trace 7439e9ae441b9717 ]---
[ 15.292320] sof-audio sof-audio: Alloc FW buffer failed: fffffff4
[ 15.292321] sof-audio sof-audio: CL dma prepare failed : -12
[ 15.292324] BUG: unable to handle kernel paging request at ffffab51c1510000
[ 15.292342] PGD 2b6142067 P4D 2b6142067 PUD 2b6143067 PMD 2aabf2067 PTE 0
[ 15.292357] Oops: 0000 [#1] SMP PTI
[ 15.292364] CPU: 6 PID: 82 Comm: kworker/6:1 Tainted: G W 4.18.0+ #2
[ 15.292379] Hardware name: Intel Corporation Kabylake Client platform/Kabylake R DDR4 RVP, BIOS KBLSE2R1.R00.X073.P03.1701171658 01/17/2017
[ 15.292403] Workqueue: events request_firmware_work_func
[ 15.292415] RIP: 0010:hda_dsp_read+0x5/0x10 [snd_sof_intel_hda_common]
[ 15.292427] Code: 68 f7 87 c0 eb e1 0f 1f 44 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 89 16 c3 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 <8b> 06 c3 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 16 c3 0f 1f
[ 15.292477] RSP: 0018:ffffab51c11afa88 EFLAGS: 00010286
[ 15.292487] RAX: ffffffffc087a0c0 RBX: ffff9237eebf1418 RCX: ffffab51c1490000
[ 15.292501] RDX: 0000000000000000 RSI: ffffab51c1510000 RDI: ffff9237eebf1418
[ 15.292514] RBP: ffff9237eebf1418 R08: 0000000000000001 R09: 00000000000003b3
[ 15.292528] R10: 00000000000002f1 R11: 00000000000003b3 R12: ffff9237eebf1618
[ 15.292541] R13: ffff9237eebf7410 R14: 0000000000000029 R15: 0000000000000000
[ 15.292555] FS: 0000000000000000(0000) GS:ffff9237fed80000(0000) knlGS:0000000000000000
[ 15.292570] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 15.292581] CR2: ffffab51c1510000 CR3: 00000001e020a003 CR4: 00000000003606e0
[ 15.292595] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 15.292611] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 15.292628] Call Trace:
[ 15.292637] hda_dsp_get_status+0x2c/0xb0 [snd_sof_intel_hda_common]
[ 15.292670] hda_dsp_dump+0x29/0x240 [snd_sof_intel_hda_common]
[ 15.292684] ? dev_printk_emit+0x4a/0x70
[ 15.292693] ? dev_err+0x64/0x80
[ 15.292703] ? snd_dma_alloc_pages+0xc0/0x1e0 [snd_pcm]
[ 15.292715] cl_dsp_init_skl+0x224/0x280 [snd_sof_intel_hda_common]
[ 15.292728] hda_dsp_cl_boot_firmware_skl+0x44/0x180 [snd_sof_intel_hda_common]
[ 15.292744] snd_sof_run_firmware+0x7a/0x1d0 [snd_sof]
[ 15.292756] ? request_firmware+0x3b/0x50
[ 15.292766] sof_probe+0x1a8/0x330 [snd_sof]
[ 15.292776] platform_drv_probe+0x3a/0x90
[ 15.292786] ? driver_sysfs_add+0x71/0xd0
[ 15.292794] driver_probe_device+0x2b0/0x490
[ 15.292804] ? __driver_attach+0x110/0x110
[ 15.292813] bus_for_each_drv+0x64/0xb0
[ 15.292823] __device_attach+0xd9/0x150
[ 15.292847] bus_probe_device+0x8a/0xa0
[ 15.292855] device_add+0x3bc/0x620
[ 15.292863] ? complete_all+0x31/0x40
[ 15.292871] platform_device_add+0x100/0x260
[ 15.292881] platform_device_register_full+0xf0/0x120
[ 15.292891] sof_pci_fw_cb+0x6a/0xc0 [sof_pci_dev]
[ 15.292902] request_firmware_work_func+0x47/0x90
[ 15.292912] process_one_work+0x15e/0x3d0
[ 15.293446] worker_thread+0x4c/0x440
[ 15.293984] kthread+0xf8/0x130
[ 15.294527] ? rescuer_thread+0x350/0x350
[ 15.295076] ? kthread_associate_blkcg+0x90/0x90
[ 15.295637] ret_from_fork+0x35/0x40
[ 15.296231] Modules linked in: sof_pci_dev snd_sof_intel_hda_common snd_sof_intel_byt intel_rapl snd_sof_nocodec snd_sof x86_pkg_temp_thermal snd_sof_xtensa_dsp intel_powerclamp snd_soc_acpi_intel_match coretemp snd_soc_acpi snd_soc_core kvm_intel snd_compress kvm arc4 snd_pcm_dmaengine ac97_bus irqbypass joydev snd_pcm iwlmvm snd_seq_midi mac80211 snd_seq_midi_event crct10dif_pclmul snd_rawmidi crc32_pclmul 8250_dw snd_seq snd_seq_device ghash_clmulni_intel snd_timer pcbc snd iwlwifi soundcore btusb aesni_intel idma64 aes_x86_64 input_leds virt_dma crypto_simd btrtl btbcm cryptd processor_thermal_device glue_helper serio_raw btintel int340x_thermal_zone intel_lpss_pci bluetooth cfg80211 mei_me ecdh_generic intel_soc_dts_iosf mei intel_pch_thermal intel_lpss int3400_thermal acpi_thermal_rel mac_hid
[ 15.298338] acpi_pad nfsd auth_rpcgss nfs_acl lockd grace sunrpc parport_pc ppdev lp parport autofs4 hid_generic usbhid hid i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops e1000e drm sdhci_pci ahci cqhci sdhci libahci wmi pinctrl_sunrisepoint video pinctrl_intel
[ 15.299144] CR2: ffffab51c1510000
[ 15.299946] ---[ end trace 7439e9ae441b9718 ]---
[ 15.300793] RIP: 0010:hda_dsp_read+0x5/0x10 [snd_sof_intel_hda_common]
[ 15.301617] Code: 68 f7 87 c0 eb e1 0f 1f 44 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 89 16 c3 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 <8b> 06 c3 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 16 c3 0f 1f
[ 15.302515] RSP: 0018:ffffab51c11afa88 EFLAGS: 00010286
[ 15.303412] RAX: ffffffffc087a0c0 RBX: ffff9237eebf1418 RCX: ffffab51c1490000
[ 15.304354] RDX: 0000000000000000 RSI: ffffab51c1510000 RDI: ffff9237eebf1418
[ 15.305275] RBP: ffff9237eebf1418 R08: 0000000000000001 R09: 00000000000003b3
[ 15.306206] R10: 00000000000002f1 R11: 00000000000003b3 R12: ffff9237eebf1618
[ 15.307146] R13: ffff9237eebf7410 R14: 0000000000000029 R15: 0000000000000000
[ 15.308126] FS: 0000000000000000(0000) GS:ffff9237fed80000(0000) knlGS:0000000000000000
[ 15.309098] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 15.310067] CR2: ffffab51c1510000 CR3: 00000001e020a003 CR4: 00000000003606e0
[ 15.311052] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 15.312077] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 16.104209] Adding 8271868k swap on /dev/sda3. Priority:-2 extents:1 across:8271868k FS
[ 16.336361] asix 1-6:1.0 eth0: register 'asix' at usb-0000:00:14.0-6, ASIX AX88772 USB 2.0 Ethernet, 00:24:8c:01:36:21
[ 16.336420] usbcore: registered new interface driver asix
[ 16.337188] sof-nocodec sof-nocodec: ASoC: CPU DAI SSP0 Pin not registered

@mengdonglin mengdonglin added the enhancement New feature or request label Sep 16, 2018
cujomalainey pushed a commit to cujomalainey/linux that referenced this issue Sep 18, 2018
…sfers

[ Upstream commit d52e4d0 ]

This bug happens only when the UDC needs to sleep during usb_ep_dequeue,
as is the case for (at least) dwc3.

[  382.200896] BUG: scheduling while atomic: screen/1808/0x00000100
[  382.207124] 4 locks held by screen/1808:
[  382.211266]  #0:  (rcu_callback){....}, at: [<c10b4ff0>] rcu_process_callbacks+0x260/0x440
[  382.219949]  #1:  (rcu_read_lock_sched){....}, at: [<c1358ba0>] percpu_ref_switch_to_atomic_rcu+0xb0/0x130
[  382.230034]  #2:  (&(&ctx->ctx_lock)->rlock){....}, at: [<c11f0c73>] free_ioctx_users+0x23/0xd0
[  382.230096]  #3:  (&(&ffs->eps_lock)->rlock){....}, at: [<f81e7710>] ffs_aio_cancel+0x20/0x60 [usb_f_fs]
[  382.230160] Modules linked in: usb_f_fs libcomposite configfs bnep btsdio bluetooth ecdh_generic brcmfmac brcmutil intel_powerclamp coretemp dwc3 kvm_intel ulpi udc_core kvm irqbypass crc32_pclmul crc32c_intel pcbc dwc3_pci aesni_intel aes_i586 crypto_simd cryptd ehci_pci ehci_hcd gpio_keys usbcore basincove_gpadc industrialio usb_common
[  382.230407] CPU: 1 PID: 1808 Comm: screen Not tainted 4.14.0-edison+ thesofproject#117
[  382.230416] Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542 2015.01.21:18.19.48
[  382.230425] Call Trace:
[  382.230438]  <SOFTIRQ>
[  382.230466]  dump_stack+0x47/0x62
[  382.230498]  __schedule_bug+0x61/0x80
[  382.230522]  __schedule+0x43/0x7a0
[  382.230587]  schedule+0x5f/0x70
[  382.230625]  dwc3_gadget_ep_dequeue+0x14c/0x270 [dwc3]
[  382.230669]  ? do_wait_intr_irq+0x70/0x70
[  382.230724]  usb_ep_dequeue+0x19/0x90 [udc_core]
[  382.230770]  ffs_aio_cancel+0x37/0x60 [usb_f_fs]
[  382.230798]  kiocb_cancel+0x31/0x40
[  382.230822]  free_ioctx_users+0x4d/0xd0
[  382.230858]  percpu_ref_switch_to_atomic_rcu+0x10a/0x130
[  382.230881]  ? percpu_ref_exit+0x40/0x40
[  382.230904]  rcu_process_callbacks+0x2b3/0x440
[  382.230965]  __do_softirq+0xf8/0x26b
[  382.231011]  ? __softirqentry_text_start+0x8/0x8
[  382.231033]  do_softirq_own_stack+0x22/0x30
[  382.231042]  </SOFTIRQ>
[  382.231071]  irq_exit+0x45/0xc0
[  382.231089]  smp_apic_timer_interrupt+0x13c/0x150
[  382.231118]  apic_timer_interrupt+0x35/0x3c
[  382.231132] EIP: __copy_user_ll+0xe2/0xf0
[  382.231142] EFLAGS: 00210293 CPU: 1
[  382.231154] EAX: bfd4508c EBX: 00000004 ECX: 00000003 EDX: f3d8fe50
[  382.231165] ESI: f3d8fe51 EDI: bfd4508d EBP: f3d8fe14 ESP: f3d8fe08
[  382.231176]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[  382.231265]  core_sys_select+0x25f/0x320
[  382.231346]  ? __wake_up_common_lock+0x62/0x80
[  382.231399]  ? tty_ldisc_deref+0x13/0x20
[  382.231438]  ? ldsem_up_read+0x1b/0x40
[  382.231459]  ? tty_ldisc_deref+0x13/0x20
[  382.231479]  ? tty_write+0x29f/0x2e0
[  382.231514]  ? n_tty_ioctl+0xe0/0xe0
[  382.231541]  ? tty_write_unlock+0x30/0x30
[  382.231566]  ? __vfs_write+0x22/0x110
[  382.231604]  ? security_file_permission+0x2f/0xd0
[  382.231635]  ? rw_verify_area+0xac/0x120
[  382.231677]  ? vfs_write+0x103/0x180
[  382.231711]  SyS_select+0x87/0xc0
[  382.231739]  ? SyS_write+0x42/0x90
[  382.231781]  do_fast_syscall_32+0xd6/0x1a0
[  382.231836]  entry_SYSENTER_32+0x47/0x71
[  382.231848] EIP: 0xb7f75b05
[  382.231857] EFLAGS: 00000246 CPU: 1
[  382.231868] EAX: ffffffda EBX: 00000400 ECX: bfd4508c EDX: bfd4510c
[  382.231878] ESI: 00000000 EDI: 00000000 EBP: 00000000 ESP: bfd45020
[  382.231889]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b
[  382.232281] softirq: huh, entered softirq 9 RCU c10b4d90 with preempt_count 00000100, exited with 00000000?

Tested-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Vincent Pelletier <plr.vincent@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
cujomalainey pushed a commit to cujomalainey/linux that referenced this issue Sep 18, 2018
[ Upstream commit 56bc615 ]

The change protects almost the whole body of u_audio_iso_complete()
function by PCM stream lock, this is mainly sufficient to avoid a race
between USB request completion and stream termination, the change
prevents a possibility of invalid memory access in interrupt context
by memcpy():

    Unable to handle kernel paging request at virtual address 00004e80
    pgd = c0004000
    [00004e80] *pgd=00000000
    Internal error: Oops: 817 [#1] PREEMPT SMP ARM
    CPU: 0 PID: 3 Comm: ksoftirqd/0 Tainted: G         C   3.14.54+ thesofproject#117
    task: da180b80 ti: da192000 task.ti: da192000
    PC is at memcpy+0x50/0x330
    LR is at 0xcdd92b0e
    pc : [<c029ef30>]    lr : [<cdd92b0e>]    psr: 20000193
    sp : da193ce4  ip : dd86ae26  fp : 0000b180
    r10: daf81680  r9 : 00000000  r8 : d58a01ea
    r7 : 2c0b43e4  r6 : acdfb08b  r5 : 01a271cf  r4 : 87389377
    r3 : 69469782  r2 : 00000020  r1 : daf82fe0  r0 : 00004e80
    Flags: nzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    Control: 10c5387d  Table: 2b70804a  DAC: 00000015
    Process ksoftirqd/0 (pid: 3, stack limit = 0xda192238)

Also added a check for potential !runtime condition, commonly it is
done by PCM_RUNTIME_CHECK(substream) in the beginning, however this
does not completely prevent from oopses in u_audio_iso_complete(),
because the proper protection scheme must be implemented in PCM
library functions.

An example of *not fixed* oops due to substream->runtime->*
dereference by snd_pcm_running(substream) from
snd_pcm_period_elapsed(), where substream->runtime is gone while
waiting the substream lock:

    Unable to handle kernel paging request at virtual address 6b6b6b6b
    pgd = db7e4000
    [6b6b6b6b] *pgd=00000000
    CPU: 0 PID: 193 Comm: klogd Tainted: G         C   3.14.54+ thesofproject#118
    task: db5ac500 ti: db60c000 task.ti: db60c000
    PC is at snd_pcm_period_elapsed+0x48/0xd8 [snd_pcm]
    LR is at snd_pcm_period_elapsed+0x40/0xd8 [snd_pcm]
    pc : [<>]    lr : [<>]    psr: 60000193
    Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
    Control: 10c5387d  Table: 2b7e404a  DAC: 00000015
    Process klogd (pid: 193, stack limit = 0xdb60c238)
    [<>] (snd_pcm_period_elapsed [snd_pcm]) from [<>] (udc_irq+0x500/0xbbc)
    [<>] (udc_irq) from [<>] (ci_irq+0x280/0x304)
    [<>] (ci_irq) from [<>] (handle_irq_event_percpu+0xa4/0x40c)
    [<>] (handle_irq_event_percpu) from [<>] (handle_irq_event+0x3c/0x5c)
    [<>] (handle_irq_event) from [<>] (handle_fasteoi_irq+0xc4/0x110)
    [<>] (handle_fasteoi_irq) from [<>] (generic_handle_irq+0x20/0x30)
    [<>] (generic_handle_irq) from [<>] (handle_IRQ+0x80/0xc0)
    [<>] (handle_IRQ) from [<>] (gic_handle_irq+0x3c/0x60)
    [<>] (gic_handle_irq) from [<>] (__irq_svc+0x44/0x78)

Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
[erosca: W/o this patch, with minimal instrumentation [1], I can
         consistently reproduce BUG: KASAN: use-after-free [2]]

[1] Instrumentation to reproduce issue [2]:
#  diff --git a/drivers/usb/gadget/function/u_audio.c b/drivers/usb/gadget/function/u_audio.c
#  index a72295c953bb..bd0b308024fe 100644
#  --- a/drivers/usb/gadget/function/u_audio.c
#  +++ b/drivers/usb/gadget/function/u_audio.c
#  @@ -16,6 +16,7 @@
#   #include <sound/core.h>
#   #include <sound/pcm.h>
#   #include <sound/pcm_params.h>
#  +#include <linux/delay.h>
# 
#   #include "u_audio.h"
# 
#  @@ -147,6 +148,8 @@ static void u_audio_iso_complete(struct usb_ep *ep, struct usb_request *req)
# 
# 	spin_unlock_irqrestore(&prm->lock, flags);
# 
#  +	udelay(500); //delay here to increase probability of parallel activities
#  +
# 	/* Pack USB load in ALSA ring buffer */
# 	pending = prm->dma_bytes - hw_ptr;

[2] After applying [1], below BUG occurs on Rcar-H3-Salvator-X board:
==================================================================
BUG: KASAN: use-after-free in u_audio_iso_complete+0x24c/0x520 [u_audio]
Read of size 8 at addr ffff8006cafcc248 by task swapper/0/0

CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        WC      4.14.47+ thesofproject#160
Hardware name: Renesas Salvator-X board based on r8a7795 ES2.0+ (DT)
Call trace:
[<ffff2000080925ac>] dump_backtrace+0x0/0x364
[<ffff200008092924>] show_stack+0x14/0x1c
[<ffff200008f8dbcc>] dump_stack+0x108/0x174
[<ffff2000083c71b8>] print_address_description+0x7c/0x32c
[<ffff2000083c78e8>] kasan_report+0x324/0x354
[<ffff2000083c6114>] __asan_load8+0x24/0x94
[<ffff2000021d1b34>] u_audio_iso_complete+0x24c/0x520 [u_audio]
[<ffff20000152fe50>] usb_gadget_giveback_request+0x480/0x4d0 [udc_core]
[<ffff200001860ab8>] usbhsg_queue_done+0x100/0x130 [renesas_usbhs]
[<ffff20000185f814>] usbhsf_pkt_handler+0x1a4/0x298 [renesas_usbhs]
[<ffff20000185fb38>] usbhsf_irq_ready+0x128/0x178 [renesas_usbhs]
[<ffff200001859cc8>] usbhs_interrupt+0x440/0x490 [renesas_usbhs]
[<ffff2000081a0288>] __handle_irq_event_percpu+0x594/0xa58
[<ffff2000081a07d0>] handle_irq_event_percpu+0x84/0x12c
[<ffff2000081a0928>] handle_irq_event+0xb0/0x10c
[<ffff2000081a8384>] handle_fasteoi_irq+0x1e0/0x2ec
[<ffff20000819e5f8>] generic_handle_irq+0x2c/0x44
[<ffff20000819f0d0>] __handle_domain_irq+0x190/0x194
[<ffff20000808177c>] gic_handle_irq+0x80/0xac
Exception stack(0xffff200009e97c80 to 0xffff200009e97dc0)
7c80: 0000000000000000 0000000000000000 0000000000000003 ffff200008179298
7ca0: ffff20000ae1c180 dfff200000000000 0000000000000000 ffff2000081f9a88
7cc0: ffff200009eb5960 ffff200009e97cf0 0000000000001600 ffff0400041b064b
7ce0: 0000000000000000 0000000000000002 0000000200000001 0000000000000001
7d00: ffff20000842197c 0000ffff958c4970 0000000000000000 ffff8006da0d5b80
7d20: ffff8006d4678498 0000000000000000 000000126bde0a8b ffff8006d4678480
7d40: 0000000000000000 000000126bdbea64 ffff200008fd0000 ffff8006fffff980
7d60: 00000000495f0018 ffff200009e97dc0 ffff200008b6c4ec ffff200009e97dc0
7d80: ffff200008b6c4f0 0000000020000145 ffff8006da0d5b80 ffff8006d4678498
7da0: ffffffffffffffff ffff8006d4678498 ffff200009e97dc0 ffff200008b6c4f0
[<ffff200008084034>] el1_irq+0xb4/0x12c
[<ffff200008b6c4f0>] cpuidle_enter_state+0x818/0x844
[<ffff200008b6c59c>] cpuidle_enter+0x18/0x20
[<ffff20000815f2e4>] call_cpuidle+0x98/0x9c
[<ffff20000815f674>] do_idle+0x214/0x264
[<ffff20000815facc>] cpu_startup_entry+0x20/0x24
[<ffff200008fb09d8>] rest_init+0x30c/0x320
[<ffff2000095f1338>] start_kernel+0x570/0x5b0
---<-snip->---

Fixes: 132fcb4 ("usb: gadget: Add Audio Class 2.0 Driver")
Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@wenqingfu
Copy link

are we done with SKL/KBL fw loading? can we close this tracker? @zhuyingjiang

@zhuyingjiang
Copy link
Author

Yes, this is done, close it.

plbossart pushed a commit that referenced this issue Apr 11, 2019
 - ARCv2 LLSC spinlocks have smp_mb() both before and after the LLSC
   instructions, which is not required per lkmm ACQ/REL semantics.
   smp_mb() is only needed _after_ lock and _before_ unlock.
   So remove the extra barriers.
   The reason they were there was mainly historical. At the time of
   initial SMP Linux bringup on HS38 cores, I was too conservative,
   given the fluidity of both hw and sw. The last attempt to ditch the
   extra barrier showed some hackbench regression which is apparently
   not the case now (atleast for LLSC case, read on...)

 - EX based spinlocks (!CONFIG_ARC_HAS_LLSC) still needs the extra
   smp_mb(), not due to lkmm, but due to some hardware shenanigans.
   W/o that, hackbench triggers RCU stall splat so extra DMB is retained
   !LLSC based systems are not realistic Linux sstem anyways so they can
   afford to be a nit suboptimal ;-)

   | [ARCLinux]# for i in (seq 1 1 5) ; do hackbench; done
   | Running with 10 groups 400 process
   | INFO: task hackbench:158 blocked for more than 10 seconds.
   |       Not tainted 4.20.0-00005-g96b18288a88e-dirty #117
   | "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
   | hackbench       D    0   158    135 0x00000000
   |
   | Stack Trace:
   | watchdog: BUG: soft lockup - CPU#3 stuck for 59s! [hackbench:469]
   | Modules linked in:
   | Path: (null)
   | CPU: 3 PID: 469 Comm: hackbench Not tainted 4.20.0-00005-g96b18288a88e-dirty
   |
   | [ECR   ]: 0x00000000 => Check Programmer's Manual
   | [EFA   ]: 0x00000000
   | [BLINK ]: do_exit+0x4a6/0x7d0
   | [ERET  ]: _raw_write_unlock_irq+0x44/0x5c

 - And while at it, remove the extar smp_mb() from EX based
   arch_read_trylock() since the spin lock there guarantees a full
   barrier anyways

 - For LLSC case, hackbench threads improves with this patch (HAPS @ 50MHz)

   ---- before ----
   |
   | [ARCLinux]# for i in 1 2 3 4 5; do hackbench 10 thread; done
   | Running with 10 groups 400 threads
   | Time: 16.253
   | Time: 16.445
   | Time: 16.590
   | Time: 16.721
   | Time: 16.544

   ---- after ----
   |
   | [ARCLinux]# for i in 1 2 3 4 5; do hackbench 10 thread; done
   | Running with 10 groups 400 threads
   | Time: 15.638
   | Time: 15.730
   | Time: 15.870
   | Time: 15.842
   | Time: 15.729

Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
naveen-manohar pushed a commit to naveen-manohar/linux that referenced this issue May 23, 2019
[ Upstream commit ee74d0b ]

In case x25_connect() fails and frees the socket neighbour,
we also need to undo the change done to x25->state.

Before my last bug fix, we had use-after-free so this
patch fixes a latent bug.

syzbot report :

kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [thesofproject#1] PREEMPT SMP KASAN
CPU: 1 PID: 16137 Comm: syz-executor.1 Not tainted 5.0.0+ thesofproject#117
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:x25_write_internal+0x1e8/0xdf0 net/x25/x25_subr.c:173
Code: 00 40 88 b5 e0 fe ff ff 0f 85 01 0b 00 00 48 8b 8b 80 04 00 00 48 ba 00 00 00 00 00 fc ff df 48 8d 79 1c 48 89 fe 48 c1 ee 03 <0f> b6 34 16 48 89 fa 83 e2 07 83 c2 03 40 38 f2 7c 09 40 84 f6 0f
RSP: 0018:ffff888076717a08 EFLAGS: 00010207
RAX: ffff88805f2f2292 RBX: ffff8880a0ae6000 RCX: 0000000000000000
kobject: 'loop5' (0000000018d0d0ee): kobject_uevent_env
RDX: dffffc0000000000 RSI: 0000000000000003 RDI: 000000000000001c
RBP: ffff888076717b40 R08: ffff8880950e0580 R09: ffffed100be5e46d
R10: ffffed100be5e46c R11: ffff88805f2f2363 R12: ffff888065579840
kobject: 'loop5' (0000000018d0d0ee): fill_kobj_path: path = '/devices/virtual/block/loop5'
R13: 1ffff1100ece2f47 R14: 0000000000000013 R15: 0000000000000013
FS:  00007fb88cf43700(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f9a42a41028 CR3: 0000000087a67000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 x25_release+0xd0/0x340 net/x25/af_x25.c:658
 __sock_release+0xd3/0x2b0 net/socket.c:579
 sock_close+0x1b/0x30 net/socket.c:1162
 __fput+0x2df/0x8d0 fs/file_table.c:278
 ____fput+0x16/0x20 fs/file_table.c:309
 task_work_run+0x14a/0x1c0 kernel/task_work.c:113
 get_signal+0x1961/0x1d50 kernel/signal.c:2388
 do_signal+0x87/0x1940 arch/x86/kernel/signal.c:816
 exit_to_usermode_loop+0x244/0x2c0 arch/x86/entry/common.c:162
 prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
 syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
 do_syscall_64+0x52d/0x610 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x457f29
Code: ad b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007fb88cf42c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
RAX: fffffffffffffe00 RBX: 0000000000000003 RCX: 0000000000457f29
RDX: 0000000000000012 RSI: 0000000020000080 RDI: 0000000000000004
RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00007fb88cf436d4
R13: 00000000004be462 R14: 00000000004cec98 R15: 00000000ffffffff
Modules linked in:

Fixes: 95d6ebd ("net/x25: fix use-after-free in x25_device_event()")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: andrew hendry <andrew.hendry@gmail.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
bardliao pushed a commit that referenced this issue Jun 11, 2019
BugLink: https://bugs.launchpad.net/bugs/1821074

[ Upstream commit ee74d0b ]

In case x25_connect() fails and frees the socket neighbour,
we also need to undo the change done to x25->state.

Before my last bug fix, we had use-after-free so this
patch fixes a latent bug.

syzbot report :

kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] PREEMPT SMP KASAN
CPU: 1 PID: 16137 Comm: syz-executor.1 Not tainted 5.0.0+ #117
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:x25_write_internal+0x1e8/0xdf0 net/x25/x25_subr.c:173
Code: 00 40 88 b5 e0 fe ff ff 0f 85 01 0b 00 00 48 8b 8b 80 04 00 00 48 ba 00 00 00 00 00 fc ff df 48 8d 79 1c 48 89 fe 48 c1 ee 03 <0f> b6 34 16 48 89 fa 83 e2 07 83 c2 03 40 38 f2 7c 09 40 84 f6 0f
RSP: 0018:ffff888076717a08 EFLAGS: 00010207
RAX: ffff88805f2f2292 RBX: ffff8880a0ae6000 RCX: 0000000000000000
kobject: 'loop5' (0000000018d0d0ee): kobject_uevent_env
RDX: dffffc0000000000 RSI: 0000000000000003 RDI: 000000000000001c
RBP: ffff888076717b40 R08: ffff8880950e0580 R09: ffffed100be5e46d
R10: ffffed100be5e46c R11: ffff88805f2f2363 R12: ffff888065579840
kobject: 'loop5' (0000000018d0d0ee): fill_kobj_path: path = '/devices/virtual/block/loop5'
R13: 1ffff1100ece2f47 R14: 0000000000000013 R15: 0000000000000013
FS:  00007fb88cf43700(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f9a42a41028 CR3: 0000000087a67000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 x25_release+0xd0/0x340 net/x25/af_x25.c:658
 __sock_release+0xd3/0x2b0 net/socket.c:579
 sock_close+0x1b/0x30 net/socket.c:1162
 __fput+0x2df/0x8d0 fs/file_table.c:278
 ____fput+0x16/0x20 fs/file_table.c:309
 task_work_run+0x14a/0x1c0 kernel/task_work.c:113
 get_signal+0x1961/0x1d50 kernel/signal.c:2388
 do_signal+0x87/0x1940 arch/x86/kernel/signal.c:816
 exit_to_usermode_loop+0x244/0x2c0 arch/x86/entry/common.c:162
 prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
 syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
 do_syscall_64+0x52d/0x610 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x457f29
Code: ad b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007fb88cf42c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
RAX: fffffffffffffe00 RBX: 0000000000000003 RCX: 0000000000457f29
RDX: 0000000000000012 RSI: 0000000020000080 RDI: 0000000000000004
RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00007fb88cf436d4
R13: 00000000004be462 R14: 00000000004cec98 R15: 00000000ffffffff
Modules linked in:

Fixes: 95d6ebd ("net/x25: fix use-after-free in x25_device_event()")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: andrew hendry <andrew.hendry@gmail.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
plbossart pushed a commit that referenced this issue Jan 13, 2020
vm_ops is now initialized in ib_uverbs_mmap() with the recent rdma mmap
API changes. Earlier it was done in rdma_umap_priv_init() which would not
be called unless a driver called rdma_user_mmap_io() in its mmap.

i40iw does not use the rdma_user_mmap_io API but sets the vma's
vm_private_data to a driver object. This now conflicts with the vm_op
rdma_umap_close as priv pointer points to the i40iw driver object instead
of the private data setup by core when rdma_user_mmap_io is called.  This
leads to a crash in rdma_umap_close with a mmap put being called when it
should not have.

Remove the redundant setting of the vma private_data in i40iw as it is not
used. Also move i40iw over to use the rdma_user_mmap_io API. This gives
the extra protection of having the mappings zapped when the context is
detsroyed.

  BUG: unable to handle page fault for address: 0000000100000001
  #PF: supervisor write access in kernel mode
  #PF: error_code(0x0002) - not-present page
  PGD 0 P4D 0
  Oops: 0002 [#1] SMP PTI
  CPU: 6 PID: 9528 Comm: rping Kdump: loaded Not tainted 5.5.0-rc4+ #117
  Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./Q87M-D2H, BIOS F7 01/17/2014
  RIP: 0010:rdma_user_mmap_entry_put+0xa/0x30 [ib_core]
  RSP: 0018:ffffb340c04c7c38 EFLAGS: 00010202
  RAX: 00000000ffffffff RBX: ffff9308e7be2a00 RCX: 000000000000cec0
  RDX: 0000000000000000 RSI: 0000000000000006 RDI: 0000000100000001
  RBP: ffff9308dc7641f0 R08: 0000000000000001 R09: 0000000000000000
  R10: 0000000000000001 R11: ffffffff8d4414d8 R12: ffff93075182c780
  R13: 0000000000000001 R14: ffff93075182d2a8 R15: ffff9308e2ddc840
  FS:  0000000000000000(0000) GS:ffff9308fdc00000(0000) knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: 0000000100000001 CR3: 00000002e0412004 CR4: 00000000001606e0
  Call Trace:
   rdma_umap_close+0x40/0x90 [ib_uverbs]
   remove_vma+0x43/0x80
   exit_mmap+0xfd/0x1b0
   mmput+0x6e/0x130
   do_exit+0x290/0xcc0
   ? get_signal+0x152/0xc40
   do_group_exit+0x46/0xc0
   get_signal+0x1bd/0xc40
   ? prepare_to_wait_event+0x97/0x190
   do_signal+0x36/0x630
   ? remove_wait_queue+0x60/0x60
   ? __audit_syscall_exit+0x1d9/0x290
   ? rcu_read_lock_sched_held+0x52/0x90
   ? kfree+0x21c/0x2e0
   exit_to_usermode_loop+0x4f/0xc3
   do_syscall_64+0x1ed/0x270
   entry_SYSCALL_64_after_hwframe+0x49/0xbe
  RIP: 0033:0x7fae715a81fd
  Code: Bad RIP value.
  RSP: 002b:00007fae6e163cb0 EFLAGS: 00000293 ORIG_RAX: 0000000000000001
  RAX: fffffffffffffe00 RBX: 00007fae6e163d30 RCX: 00007fae715a81fd
  RDX: 0000000000000010 RSI: 00007fae6e163cf0 RDI: 0000000000000003
  RBP: 00000000013413a0 R08: 00007fae68000000 R09: 0000000000000017
  R10: 0000000000000001 R11: 0000000000000293 R12: 00007fae680008c0
  R13: 00007fae6e163cf0 R14: 00007fae717c9804 R15: 00007fae6e163ed0
  CR2: 0000000100000001
  ---[ end trace b33d58d3a06782cb ]---
  RIP: 0010:rdma_user_mmap_entry_put+0xa/0x30 [ib_core]

Fixes: b86deba ("RDMA/core: Move core content from ib_uverbs to ib_core")
Link: https://lore.kernel.org/r/20200107162223.1745-1-shiraz.saleem@intel.com
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
paulstelian97 pushed a commit to paulstelian97/linux that referenced this issue May 4, 2020
…/file_systems_part_2

teaching: labs: filesystems part 2: Add lab documentation
aiChaoSONG pushed a commit to aiChaoSONG/linux that referenced this issue May 6, 2021
Add functions to read/write plain old data (POD) types.
wenliangwu pushed a commit that referenced this issue Oct 30, 2023
Using netconsole netpoll_poll_dev could be called from interrupt
context, thus using disable_irq() would cause the following kernel
warning with CONFIG_DEBUG_ATOMIC_SLEEP enabled:

  BUG: sleeping function called from invalid context at kernel/irq/manage.c:137
  in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 10, name: ksoftirqd/0
  CPU: 0 PID: 10 Comm: ksoftirqd/0 Tainted: G        W         5.15.42-00075-g816b502b2298-dirty #117
  Hardware name: aml (r1) (DT)
  Call trace:
   dump_backtrace+0x0/0x270
   show_stack+0x14/0x20
   dump_stack_lvl+0x8c/0xac
   dump_stack+0x18/0x30
   ___might_sleep+0x150/0x194
   __might_sleep+0x64/0xbc
   synchronize_irq+0x8c/0x150
   disable_irq+0x2c/0x40
   stmmac_poll_controller+0x140/0x1a0
   netpoll_poll_dev+0x6c/0x220
   netpoll_send_skb+0x308/0x390
   netpoll_send_udp+0x418/0x760
   write_msg+0x118/0x140 [netconsole]
   console_unlock+0x404/0x500
   vprintk_emit+0x118/0x250
   dev_vprintk_emit+0x19c/0x1cc
   dev_printk_emit+0x90/0xa8
   __dev_printk+0x78/0x9c
   _dev_warn+0xa4/0xbc
   ath10k_warn+0xe8/0xf0 [ath10k_core]
   ath10k_htt_txrx_compl_task+0x790/0x7fc [ath10k_core]
   ath10k_pci_napi_poll+0x98/0x1f4 [ath10k_pci]
   __napi_poll+0x58/0x1f4
   net_rx_action+0x504/0x590
   _stext+0x1b8/0x418
   run_ksoftirqd+0x74/0xa4
   smpboot_thread_fn+0x210/0x3c0
   kthread+0x1fc/0x210
   ret_from_fork+0x10/0x20

Since [0] .ndo_poll_controller is only needed if driver doesn't or
partially use NAPI. Because stmmac does so, stmmac_poll_controller
can be removed fixing the above warning.

[0] commit ac3d9dd ("netpoll: make ndo_poll_controller() optional")

Cc: <stable@vger.kernel.org> # 5.15.x
Fixes: 47dd7a5 ("net: add support for STMicroelectronics Ethernet controllers")
Signed-off-by: Remi Pommarel <repk@triplefau.lt>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/1c156a6d8c9170bd6a17825f2277115525b4d50f.1696429960.git.repk@triplefau.lt
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants