Date: Sat, 22 Jun 2002 01:59:15 -0700 (PDT) From: Dave Barker <dave_barker@bigpond.com> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/39650: Digital audio extraction on an atapi CD does not use DMA even when atamode is DMA Message-ID: <200206220859.g5M8xFvS021536@www.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 39650 >Category: kern >Synopsis: Digital audio extraction on an atapi CD does not use DMA even when atamode is DMA >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Jun 22 02:00:07 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Dave Barker >Release: 4.5 x86 >Organization: BAE SYSTEMS >Environment: FreeBSD deluge.my.domain 4.5-RELEASE FreeBSD 4.5-RELEASE #4: Fri Jun 21 10:18:06 CST 2002 toor@deluge.my.domain:/usr/src/sys/compile/DELUGE i386 >Description: Even with atapi CD DMA turned on and working, digital audio extraction (using dagrab) still uses PIO. Hence DAE is slow and consumes too much CPU time. "atapi-all.c" looks at the atapi command packet and only sets up a DMA transfer for normal reads and writes. >How-To-Repeat: Run dagrab to extract an audio track. Speeds will be low, and top will report little idle time and lots of interrupt time. Before patching, I could only achieve 12x DAE on my PlexWriter 16/10/40A (Athlon 1.3GHz system) at around 100% CPU usage. After patching, I get up to 33x (outer tracks) at around 5% CPU usage. >Fix: DMA to be used to for DAE, provided DMA is enabled for the drive, and a new sysctl tunable has not been set to force PIO transfers for DAE. Tested on several audio CDs and 2 CD readers on my Athlon system: atapci0: <VIA 82C686 ATA100 controller> port 0xe000-0xe00f at device 17.1 on pci0 acd0: DVD-ROM <MATSHITADVD-ROM SR-8586> at ata1-master using UDMA33 acd1: CD-RW <PLEXTOR CD-R PX-W1610A> at ata1-slave using UDMA33 New tunable: hw.ata.atapi_dae_without_dma: 0 Patch to /usr/src/sys/dev/ata/atapi-all.c: begin 644 atapi-all.c.diff M*BHJ("]U<W(O<W)C+W-Y<R]D978O871A+V%T87!I+6%L;"YC+D]224<)1G)I M($IU;B`R,2`P,3HQ,3HU,B`R,#`R"BTM+2`O=7-R+W-R8R]S>7,O9&5V+V%T M82]A=&%P:2UA;&PN8PE&<FD@2G5N(#(Q(#$P.C$W.C0Y(#(P,#(**BHJ*BHJ M*BHJ*BHJ*BHJ"BHJ*B`U-2PV-B`J*BHJ"BTM+2`U-2PW,2`M+2TM"B`@+RH@ M:6YT97)N86P@=F%R<R`J+PH@('-T871I8R!-04Q,3T-?1$5&24Y%*$U?051! M4$DL(")!5$%022!G96YE<FEC(BP@(D%405!)(&1R:79E<B!G96YE<FEC(&QA M>65R(BD["B`@<W1A=&EC(&EN="!A=&%P:5]D;6$@/2`P.PHK('-T871I8R!I M;G0@871A<&E?9&%E7W=I=&AO=71?9&UA(#T@,#L*("!454Y!0DQ%7TE.5"@B M:'<N871A+F%T87!I7V1M82(L("9A=&%P:5]D;6$I.PHK(%153D%"3$5?24Y4 M*")H=RYA=&$N871A<&E?9&%E7W=I=&AO=71?9&UA(BP@)F%T87!I7V1A95]W M:71H;W5T7V1M82D["B`@"B`@+RH@<WES=&-L('9A<G,@*B\*("!365-#5$Q? M1$5#3"A?:'=?871A*3L*("!365-#5$Q?24Y4*%]H=U]A=&$L($])1%]!551/ M+"!A=&%P:5]D;6$L($-43$9,04=?4D0L("9A=&%P:5]D;6$L(#`L"B`@"2`@ M(")!5$%022!D979I8V4@1$U!(&UO9&4@8V]N=')O;"(I.PHK(%-94T-43%]) M3E0H7VAW7V%T82P@3TE$7T%55$\L(&%T87!I7V1A95]W:71H;W5T7V1M82P@ M0U1,1DQ!1U]25RP**R`)("`@)F%T87!I7V1A95]W:71H;W5T7V1M82P@,"P* M*R`)("`@(D%405!)(&1E=FEC92!$34$@<W5P<')E<W-I;VX@9F]R($1!12(I M.PH@(`H@("\J(&1E9FEN97,@*B\*("`C9&5F:6YE($%405!)7TU!6%]21512 M2453("`),PHJ*BHJ*BHJ*BHJ*BHJ*BH**BHJ(#(X-RPR.3(@*BHJ*@HM+2T@ M,CDR+#(Y."`M+2TM"B`@("`@(&EF("@H871P+3YC;VYT<F]L;&5R+3YM;V1E M6T%405]$158H871P+3YU;FET*5T@/CT@051!7T1-02D@)B8*("`)*')E<75E M<W0M/F-C8ELP72`]/2!!5$%025]214%$('Q\"B`@"2!R97%U97-T+3YC8V); M,%T@/3T@051!4$E?4D5!1%]"24<@?'P**R`)("AR97%U97-T+3YC8V);,%T@ M/3T@051!4$E?4D5!1%]#1"`F)B`A871A<&E?9&%E7W=I=&AO=71?9&UA*2!\ M?`H@(`D@*"AR97%U97-T+3YC8V);,%T@/3T@051!4$E?5U))5$4@?'P*("`) M("`@<F5Q=65S="T^8V-B6S!=(#T]($%405!)7U=2251%7T))1RD@)B8*("`) M("`A*&%T<"T^8V]N=')O;&QE<BT^9FQA9W,@)B!!5$%?051!4$E?1$U!7U)/ '*2DI("8F"@`` ` end patch to /usr/src/share/man/man4/ata.4: begin 644 ata.4.diff M*BHJ("]U<W(O<W)C+W-H87)E+VUA;B]M86XT+V%T82XT+D]224<)1G)I($YO M=B`@,B`R,3HQ.#HT,R`R,#`Q"BTM+2`O=7-R+W-R8R]S:&%R92]M86XO;6%N M-"]A=&$N-`E&<FD@2G5N(#(Q(#$P.C(X.C4W(#(P,#(**BHJ*BHJ*BHJ*BHJ M*BHJ"BHJ*B`Q-S8L,3@Q("HJ*BH*+2TM(#$W-BPQ.3`@+2TM+0H@("Y$;"!S M>7-C=&P@+7<@:'<N871A;6]D97,]<&EO+'!I;RPM+2TL9&UA+'!I;RPM+2TL M9&UA+"TM+2P*("`N4'`*("!4:&4@;F5W(&UO9&5S(&%R92!S970@87,@<V]O M;B!A<R!T:&4@<WES8W1L(&-O;6UA;F0@<F5T=7)N<RX**R`N4'`**R!">2!D M969A=6QT+"!D:6=I=&%L(&%U9&EO(&5X=')A8W1I;VX@*$1!12D@=VEL;"!U M<V4@=&AE($%405!)($-$(&1R:79E)W,@871A;6]D97,@<V5T=&EN9R!T;R!D M971E<FUI;F4@=VAE=&AE<B!T;R!U<V4@1$U!+B`@1$%%(&-A;B!B92!F;W)C M960@=&\@=7-E(%!)3R!R96=A<F1L97-S(&]F('1H92!A=&%M;V1E<R!A="!A M;GD@=&EM92!W:&EL92!T:&4@<WES=&5M(&ES(')U;FYI;F<L('5S:6YG('1H M92!C;VUM86YD(&QI;F4Z"BL@+E!P"BL@+D1L('-Y<V-T;"!H=RYA=&$N871A M<&E?9&%E7W=I=&AO=71?9&UA/3$**R`N4'`**R!4;R!R97-T;W)E('1H92!D M969A=6QT(&)E:&%V:6]U<BP@=7-E('1H92!C;VUM86YD.@HK("Y0<`HK("Y$ M;"!S>7-C=&P@:'<N871A+F%T87!I7V1A95]W:71H;W5T7V1M83TP"BL@+E!P M"B`@+E-H($9)3$53"B`@+D)L("UT86<@+7=I9'1H("(O<WES+VDS.#8O8V]N G9B]'14Y%4DE#("(@+6-O;7!A8W0*("`N270@4&$@+V1E=B]A9"H* ` end >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206220859.g5M8xFvS021536>