How to selectively enable DMA on devb-eide.(Slave Of Chnl=0)

Below is the configuration of my machine,

  1. Channel 0, Primary Master, 2GB Compact Flash : DMA not required
  2. Channel 0, Primary slave, 80 GB HDD : DMA Required
  3. Channel 1, Secondary Master, 512 MB Compact Flash : DMA not required

Hence, i need to enable DMA for Slave device on Channel 0.

Below is the PCI information
Class = Mass Storage (IDE)
Vendor ID = 8086h, Intel Corporation
Device ID = 7111h, 82371AB/EB/MB PIIX4 IDE
PCI index = 0h
Class Codes = 010180h
Revision ID = 1h
Bus number = 0
Device number = 7
Function num = 1
Status Reg = 280h
Command Reg = 5h
I/O space access enabled
Memory space access disabled
Bus Master enabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Error Response disabled
Data/Address stepping disabled
SERR# driver disabled
Fast back-to-back transactions to different agents disabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 40h
Cache Line Size= 0h
PCI IO Address = f000h length 16 enabled
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = NC
Interrupt line = 0
CPU Interrupt = 0h

If i provide the options as, Everything workins fine as DMA is disabled.

devb-eide blk noatime,cache=10m,delwri=11,commit=none cam quiet eide nobios,nobmstr,slave=smart

Following are sloginfo
Jan 14 17:37:42 2 19 0 devb-eide 1.00A (Dec 10 2007 12:05:40)
Jan 14 17:37:42 2 5 0 libcam.so (Jul 27 2007 14:27:15) bver 42000001
Jan 14 17:37:42 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 14 17:37:42 2 19 0 eide_identify_devices: cmd_addr 1f0, cntl_addr 3f4, irq e, chnl 0, udma 2, mdma 2, sdma 0, pio 4
Jan 14 17:37:42 2 19 0 eide_identify_devices: probing dev 0 status 51, error 4
Jan 14 17:37:42 2 19 0 eide_identify_devices: probing dev 1 status 50, error 0
Jan 14 17:37:42 2 19 0 eide_display_devices: mdl SILICONSYSTEMS INC 2GB sn 036VT415S4655QP90062 fw 2.30ld tid 0, cable 40, max udma -1, cur udma -1, max mdma 2, cur mdma 2, max sdma -1, cur sdma -1, pio 4, mblk 1
Jan 14 17:37:42 2 19 0 eide_display_devices: mdl TOSHIBA MK8025GAS sn X56V3793S fw KA023A tid 1, cable 80, max udma 5, cur udma 2, max mdma 2, cur mdma 0, max sdma 2, cur sdma 0, pio 4, mblk 16
Jan 14 17:37:42 2 19 0 eide_init_devices: SILICONSYSTEMS INC 2GB path 0, tid 0, udma -1, mdma -1, sdma -1, pio 4, mblk 1
Jan 14 17:37:42 2 19 0 eide_init_devices: TOSHIBA MK8025GAS path 0, tid 1, udma -1, mdma -1, sdma -1, pio 4, mblk 16
Jan 14 17:37:42 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 14 17:37:42 2 19 0 eide_identify_devices: cmd_addr 170, cntl_addr 374, irq f, chnl 1, udma 2, mdma 2, sdma 0, pio 4
Jan 14 17:37:42 2 19 0 eide_identify_devices: probing dev 0 status 50, error 0
Jan 14 17:37:42 2 19 0 eide_identify_devices: probing dev 1 status 0, error 0
Jan 14 17:37:42 2 19 0 eide_display_devices: mdl SILICONSYSTEMS INC 512MB sn 295ST165S1954DC73009 fw V2.27d tid 0, cable 40, max udma -1, cur udma -1, max mdma 2, cur mdma 2, max sdma -1, cur sdma -1, pio 4, mblk 1
Jan 14 17:37:42 2 19 0 eide_init_devices: SILICONSYSTEMS INC 512MB path 1, tid 0, udma -1, mdma -1, sdma -1, pio 4, mblk 1

I tried using various options like,

  1. devb-eide blk noatime,cache=10m,delwri=11,commit=low cam quiet eide nobios,master=nobmstr,slave=udma=2,slave=smart
  2. devb-eide blk noatime,cache=10m,delwri=11,commit=low cam quiet eide nobios,master=udma=off,master=mdma=off,master=pio= 4,slave=udma=2,slave=smart
  3. devb-eide blk noatime,cache=10m,delwri=11,commit=low cam quiet eide nobios,chnl=0,master=udma=off,master=mdma=off,master=pio=4,slave=udma=2,slave=smart eide nobios,chnl=1,master=udma=off,master=mdma=off,master=pio=4

and below is the output, It fails to load the device on channel 1.

Jan 14 01:29:49 2 19 0 devb-eide 1.00A (Dec 10 2007 12:05:40)
Jan 14 01:29:49 2 5 0 libcam.so (Jul 27 2007 14:27:15) bver 42000001
Jan 14 01:29:49 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 14 01:29:49 2 19 0 eide_identify_devices: cmd_addr 1f0, cntl_addr 3f4, irq e, chnl 0, udma 2, mdma 2, sdma 0, pio 4
Jan 14 01:29:49 2 19 0 eide_identify_devices: probing dev 0 status 51, error 4
Jan 14 01:29:49 2 19 0 eide_identify_devices: probing dev 1 status 50, error 0
Jan 14 01:29:49 2 19 0 eide_display_devices: mdl SILICONSYSTEMS INC 2GB sn 036VT415S4655QP90062 fw 2.30ld tid 0, cable 40, max udma -1, cur udma -1, max mdma 2, cur mdma 2, max sdma -1, cur sdma -1, pio 4, mblk 1
Jan 14 01:29:49 2 19 0 eide_display_devices: mdl TOSHIBA MK8025GAS sn X56V3793S fw KA023A tid 1, cable 80, max udma 5, cur udma 2, max mdma 2, cur mdma 0, max sdma 2, cur sdma 0, pio 4, mblk 16
Jan 14 01:29:49 2 19 0 eide_init_devices: SILICONSYSTEMS INC 2GB path 0, tid 0, udma -1, mdma -1, sdma -1, pio 4, mblk 1
Jan 14 01:29:50 2 19 0 eide_init_devices: TOSHIBA MK8025GAS path 0, tid 1, udma 2, mdma 2, sdma 0, pio 4, mblk 16
Jan 14 01:29:50 2 19 0 eide_identify_devices: Intel 82371AB vid 8086, did 7111, class 10180 rev 1, busno 0, dfunc 39
Jan 14 01:29:50 2 19 0 eide_identify_devices: cmd_addr 170, cntl_addr 374, irq f, chnl 1, udma 2, mdma 2, sdma 0, pio 4
Jan 14 01:29:50 2 19 0 eide_identify_devices: probing dev 0 status 50, error 0
Jan 14 01:29:50 2 19 0 eide_identify_devices: probing dev 1 status 0, error 0
Jan 14 01:29:50 2 19 0 eide_display_devices: mdl SILICONSYSTEMS INC 512MB sn 295ST165S1954DC73009 fw V2.27d tid 0, cable 40, max udma -1, cur udma -1, max mdma 2, cur mdma 2, max sdma -1, cur sdma -1, pio 4, mblk 1
Jan 14 01:29:50 2 19 0 eide_init_devices: SILICONSYSTEMS INC 512MB path 1, tid 0, udma -1, mdma 2, sdma -1, pio 4, mblk 1
Jan 14 01:29:50 2 19 0 eide_error: path=1, device=0 cam_status=b scsi_status=0, status=51, error=4, cmd=2a
Jan 14 01:29:50 2 19 0 eide_dump_regs: error 4, status 51, seccnt 0, secno 0, cyllo 0, cylhi 0