Ang Mga Isyu sa Audio ng HD sa Mga AMDGPU Driver ay Tumanggap ng Patch, Maaari na ngayong Magkopya ng DRM ang Hot-Plugging

Linux-Unix / Ang Mga Isyu sa Audio ng HD sa Mga AMDGPU Driver ay Tumanggap ng Patch, Maaari na ngayong Magkopya ng DRM ang Hot-Plugging 2 minuto basahin

AMD



Habang ang Radeon / AMD GPU's ay nakakakuha ng mas mahusay na suporta sa Linux sa mga mas bagong mga modelo ng GPU, ang suporta sa audio ay malungkot na napabayaan - hanggang ngayon. Kamakailan lamang ay itinulak ng isang Takashi Iwai ng SUSE, na nagpapanatili rin ng subsystem ng tunog sa mainline kernel ng Linux. Ang tampal tinutugunan ang ilang pangkalahatang mga isyu sa suporta sa audio ng AMDGPU.

Ang kasalukuyang mga isyu sa audio ng AMDGPU ay umiikot sa ilang mga GPU upang magkaroon ng suporta sa audio na HDMI / DP na naantala ng AMDGPU Display Code (DC / DAL) na kinakailangang ma-patch sa kernel, ilang mga format ng audio ang hindi sinusuportahan, at pangkalahatang mga bug sa ilang mga bahagi ng stack ng driver. Gayunpaman, ang SUSE's Takashi Iwai ay naglabas ng isang hanay ng mga patch para sa mga driver ng Radeon / AMDGPU DRM.



Ang ginagawa ng mga patch na ito ay magbigay ng suporta sa sangkap ng audio ng DRM para sa mga driver ng Radeon at AMDGPU Direct Rendering Manager - sa maikling salita, papayagan ng mode ng audio ng DRM audio para sa mga interface ng HDMI at DisplayPort na mangyari ang hot hot plug at ELD read-outs, nang walang access sa hardware . Karaniwang nangangahulugang maaari itong payagan para sa tamang paghawak ng hot-plug, kahit na ang system ay nasa isang run-time na suspind na mode. Gayunpaman, ang mga AMDGPU DC code path ay hindi maayos na pinagsama sa kasalukuyang form ng patch.



Kaya karaniwang, ang Radeon lamang at isang bahagi ng AMDGPU ang tinutugunan ng patch - suporta ng DC ay hindi pa kasama.



Ipinaliwanag ni Takashi ang mga patch nang malalim sa ibaba:

Ang mga driver ng AMD / ATI HDMI codec ay walang bono ng sangkap ng audio tulad ng i915, ngunit gumana lamang ito sa tradisyonal na hindi hinihiling na HD-audio na kaganapan para sa pagtuklas ng HDMI hotplug at sa pagbasa ng ELD pagkatapos. Naging problema ito sa maraming paraan: una sa lahat, dumadaan ito sa paglipat ng kaganapan sa hardware (mula sa pagsulat ng GPU register, HD-audio controller trigger, at sa wakas sa HD-audio na hindi hinihiling na paghawak sa kaganapan), na madalas ay hindi maaasahan at maaaring makaligtaan ilang mga pagkakataon. Pangalawa, ang bawat paghawak ng kaganapan na hindi nalutas at pagbasa ng ELD ay nangangailangan ng tahasang lakas pataas / pababa kapag ang codec ay nasa runtime suspindihin. Huling ngunit hindi pa huli, alin ang pinakamahalaga, ang hotplug wakeup ay maaaring napalampas kapag ang HD-audio controller ay nasa runtime suspindihin. Lalo na ang huling punto ay isang malaking problema dahil sa kamakailang pagbabago na nauugnay sa vga_switcheroo na sapilitang pinapagana ang runtime PM para sa mga AMD HDMI na kontrolado.

Ang mga isyung ito ay nalulutas sa pamamagitan ng pagpapakilala ng sangkap ng audio; ang abiso ng hotplug ay ginagawa ng isang direktang pag-andar ng callback, na kung saan ay mas tumpak at maaasahan, at maaari itong maproseso nang walang aktwal na pag-access sa hardware, ibig sabihin walang kinakailangang gatime PM trigger, at nakukuha ng HD-audio ang kaganapan kahit na ito ay nasa runtime suspindihin Pareho para sa query ng ELD, dahil direktang nabasa ito mula sa mga naka-cache na byte ng ELD na nakaimbak sa driver ng DRM, samakatuwid ang buong pag-access sa hardware ay maaaring laktawan.



Kaya narito ito: ipinatutupad ng patch na ito ang sangkap ng audio na nagbubuklod sa AMD / ATI DRM driver. Ang pinakamalaking pagkakaiba mula sa pagpapatupad ng i915 ay ang pagbubuklod na ito ay ganap na opsyonal at maaari itong paganahin nang asynchronous sa mabilisang. Iyon ay, ang driver ay lilipat mula sa hindi hinihiling na HD-audio na kaganapan sa abisuhan ang callback nang isang beses kapag ang sangkap ng DRM ay nakakagapos. Katulad nito, kapag na-unload ang driver ng DRM, ang paghawak sa kaganapan ng HDMI ay babalik din sa mode ng legacy.

Gayundin, isa pang pagkakaiba mula sa i915 ay ang pagrerehistro ng AMD HDMI ang sangkap sa driver ng codec, habang ipinapalagay ng i915 HDMI codec na tapos na ang sangkap na umiiral. Samakatuwid ang AMD code ay de-rehistro ang sangkap na nagbubuklod sa exit ng codec. '