2001-04-19 06:14:30

by Pavel Roskin

[permalink] [raw]
Subject: PNP BIOS and parport_pc - dma found but not used

Hello!

I've compiled 2.4.3-ac9 with support for PNP BIOS. I understand that this
is a new feature experimental and the feedback is requested.

The setting is BIOS is to use irq 7 and dma 3. I normally use "options
parport_pc io=0x378 irq=7 dma=3" in /etc/modules.conf, but this time I
commented them out hoping that the driver will ask BIOS.

Although the kernel can see those settings, the dma is not used by the
driver. This is the output from dmesg.

PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=-1
0x378: FIFO is 16 bytes
0x378: writeIntrThreshold is 7
0x378: readIntrThreshold is 7
0x378: PWord is 8 bits
0x378: Interrupts are ISA-Pulses
0x378: ECP port cfgA=0x10 cfgB=0x4b
0x378: ECP settings irq=7 dma=3
parport0: PC-style at 0x378 (0x778), irq 7, using FIFO
[PCSPP,TRISTATE,COMPAT,ECP]
parport0: cpp_daisy: aa5500ff(98)
parport0: assign_addrs: aa5500ff(98)
parport0: Printer, Canon BJC-1000
# cat /proc/dma
4: cascade
# cat /proc/interrupts
CPU0
0: 1323677 XT-PIC timer
1: 20176 XT-PIC keyboard
2: 0 XT-PIC cascade
3: 0 XT-PIC eth1
4: 288111 XT-PIC
7: 2 XT-PIC parport0
8: 1 XT-PIC rtc
12: 41138 XT-PIC eth0
14: 22503 XT-PIC ide0
15: 0 XT-PIC ide1
NMI: 0
ERR: 0

The full output is here: http://www.red-bean.com/~proski/linux/dmesg
First time parport_pc was loaded with the explicit options.

--
Regards,
Pavel Roskin


2001-04-19 11:42:22

by Alan

[permalink] [raw]
Subject: Re: PNP BIOS and parport_pc - dma found but not used

> I've compiled 2.4.3-ac9 with support for PNP BIOS. I understand that this
> is a new feature experimental and the feedback is requested.

Thanks

> The setting is BIOS is to use irq 7 and dma 3. I normally use "options
> parport_pc io=0x378 irq=7 dma=3" in /etc/modules.conf, but this time I
> commented them out hoping that the driver will ask BIOS.
>
> PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=-1

Do you have it set in the BIOS itself to use DMA mode and to use DMA 3. The
PnPBIOS should be reflecting your BIOS choices if I understand rightly

2001-04-19 14:50:48

by Pavel Roskin

[permalink] [raw]
Subject: Re: PNP BIOS and parport_pc - dma found but not used

Hello, Alan!

> > The setting is BIOS is to use irq 7 and dma 3. I normally use "options
> > parport_pc io=0x378 irq=7 dma=3" in /etc/modules.conf, but this time I
> > commented them out hoping that the driver will ask BIOS.
> >
> > PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=-1
>
> Do you have it set in the BIOS itself to use DMA mode and to use DMA 3. The
> PnPBIOS should be reflecting your BIOS choices if I understand rightly

Yes, it is set in BIOS to use ECP, EPP, IRQ 7 and DMA 3.

There is another interesting line in the log that you didn't quote. The
driver actually knows about DMA 3:

0x378: ECP settings irq=7 dma=3

Just in case, that board is Asus P5A-B with the latest BIOS:
P5A-B BIOS ver. 1010, 05/31/2000

For comparison, I took a board with VIA chipset and PhoenixBIOS 4.0
Release 6.0, and it works properly with another 2.4.3-ac9 kernel:

Winbond Super-IO detection, now testing ports 3F0,370,250,4E,2E ...
SMSC Super-IO detection, now testing Ports 2F0, 370 ...
PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=3
0x378: FIFO is 16 bytes
0x378: writeIntrThreshold is 8
0x378: readIntrThreshold is 8
0x378: PWord is 8 bits
0x378: Interrupts are ISA-Pulses
0x378: ECP port cfgA=0x10 cfgB=0x4b
0x378: ECP settings irq=7 dma=3
parport0: PC-style at 0x378 (0x778), irq 7, dma 3
[PCSPP,TRISTATE,COMPAT,ECP,DMA]
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)

--
Regards,
Pavel Roskin

2001-04-19 17:31:09

by Gunther.Mayer

[permalink] [raw]
Subject: Re: PNP BIOS and parport_pc - dma found but not used

Pavel Roskin wrote:
>
> Hello!
>
> I've compiled 2.4.3-ac9 with support for PNP BIOS. I understand that this
> is a new feature experimental and the feedback is requested.
>
> The setting is BIOS is to use irq 7 and dma 3. I normally use "options
> parport_pc io=0x378 irq=7 dma=3" in /etc/modules.conf, but this time I
> commented them out hoping that the driver will ask BIOS.
>
> Although the kernel can see those settings, the dma is not used by the
> driver. This is the output from dmesg.
>
> PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=-1
^^^^^^ culprit !

Send me the raw PNP resource data so I can look into this:

1) Search for the right two-digit PNP handle for device "0104d041":
cat /proc/bus/pnb/devices
01 0104d041 07:01:00 0080
02 0105d041 07:00:02 0180
03 1005d041 07:00:02 0180
04 0007d041 01:02:00 0003
...

The number in the first column (here: 01) is the handle
to be used in step 2.

2) Send cat /proc/bus/pnp/01 | od -tx1

2001-04-19 17:40:20

by Gunther.Mayer

[permalink] [raw]
Subject: Re: PNP BIOS and parport_pc - dma found but not used

Pavel Roskin wrote:
...
>
> There is another interesting line in the log that you didn't quote. The
> driver actually knows about DMA 3:
>
> 0x378: ECP settings irq=7 dma=3

The parport code only uses DMA when told by the user, so
insmod parport_pc dma=auto
should to the trick. Parport DMA transfers are considered experimental still,
so this is not the default.

>
> Just in case, that board is Asus P5A-B with the latest BIOS:
> P5A-B BIOS ver. 1010, 05/31/2000
>
> For comparison, I took a board with VIA chipset and PhoenixBIOS 4.0
> Release 6.0, and it works properly with another 2.4.3-ac9 kernel:

Fine. With PNPBIOS or ACPI you don't currently need dma=auto.
This is subject to change probably (see above).

>
> Winbond Super-IO detection, now testing ports 3F0,370,250,4E,2E ...
> SMSC Super-IO detection, now testing Ports 2F0, 370 ...
> PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=3
> 0x378: FIFO is 16 bytes
> 0x378: writeIntrThreshold is 8
> 0x378: readIntrThreshold is 8
> 0x378: PWord is 8 bits
> 0x378: Interrupts are ISA-Pulses
> 0x378: ECP port cfgA=0x10 cfgB=0x4b
> 0x378: ECP settings irq=7 dma=3
> parport0: PC-style at 0x378 (0x778), irq 7, dma 3
> [PCSPP,TRISTATE,COMPAT,ECP,DMA]
> parport0: cpp_daisy: aa5500ff(38)
> parport0: assign_addrs: aa5500ff(38)
> parport0: cpp_daisy: aa5500ff(38)
> parport0: assign_addrs: aa5500ff(38)

2001-04-20 04:11:44

by Pavel Roskin

[permalink] [raw]
Subject: Re: PNP BIOS and parport_pc - dma found but not used

Hello, Gunther!

On Thu, 19 Apr 2001, Gunther Mayer wrote:

> > PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=-1
> ^^^^^^ culprit !

For some reason I'm not getting that message anymore. PnPBIOS is in the
kernel, parport_pc is a module. This time I rebooted with the parport_pc
module already installed, as opposed to the first time when I compiled and
inserted it without a reboot.

I'm puzzled. Just in case, it's my .config:
http://www.red-bean.com/~proski/linux/config

Anyway, the result is still the same, just without this message.

> 1) Search for the right two-digit PNP handle for device "0104d041":

this is 01.

> cat /proc/bus/pnb/devices

01 0104d041 07:01:00 0080
02 0105d041 07:00:02 0180
06 0007d041 01:02:00 0003
08 010cd041 05:00:00 0003
09 0000d041 08:00:01 0003
0a 0001d041 08:02:01 0003
0b 000bd041 08:03:01 0003
0c 0303d041 09:00:00 000b
0d 040cd041 0b:01:00 0003
0e 0002d041 08:01:01 0003
0f 0008d041 08:80:00 0003
10 030ad041 06:04:00 0003
11 020cd041 08:80:ff 0003

> 2) Send cat /proc/bus/pnp/01 | od -tx1

0000000 2a 00 00 22 80 00 47 01 78 03 78 03 00 08 47 01
0000020 78 07 78 07 00 08 79 00 30 2a 0a 00 22 80 00 47
0000040 01 bc 03 bc 03 00 03 47 01 bc 07 bc 07 00 03 30
0000060 2a 0a 00 22 80 00 47 01 78 03 78 03 00 08 47 01
0000100 78 07 78 07 00 08 30 2a 0a 00 22 20 00 47 01 78
0000120 02 78 02 00 08 47 01 78 06 78 06 00 08 38 79 00
0000140 79 00

Settings:
Parallel port mode: ECP+EPP
ECP DMA select: 3

--
Regards,
Pavel Roskin

2001-04-20 17:33:03

by Gunther.Mayer

[permalink] [raw]
Subject: Re: PNP BIOS and parport_pc - dma found but not used

Pavel Roskin wrote:
>
> Hello, Gunther!
>
> On Thu, 19 Apr 2001, Gunther Mayer wrote:
>
> > > PnPBIOS: Parport found PNPBIOS PNP0401 at io=0378,0778 irq=7 dma=-1
> > ^^^^^^ culprit !
>
> For some reason I'm not getting that message anymore. PnPBIOS is in the
> kernel, parport_pc is a module. This time I rebooted with the parport_pc
> module already installed, as opposed to the first time when I compiled and
> inserted it without a reboot.

Did you load "insmod pnpbios" the first time (as opposed to built-in)?

>
> I'm puzzled. Just in case, it's my .config:
> http://www.red-bean.com/~proski/linux/config
>
> Anyway, the result is still the same, just without this message.
>
> > 1) Search for the right two-digit PNP handle for device "0104d041":
>
> this is 01.
>
> > cat /proc/bus/pnb/devices
>
> 01 0104d041 07:01:00 0080
> 02 0105d041 07:00:02 0180
> 06 0007d041 01:02:00 0003
> 08 010cd041 05:00:00 0003
> 09 0000d041 08:00:01 0003
> 0a 0001d041 08:02:01 0003
> 0b 000bd041 08:03:01 0003
> 0c 0303d041 09:00:00 000b
> 0d 040cd041 0b:01:00 0003
> 0e 0002d041 08:01:01 0003
> 0f 0008d041 08:80:00 0003
> 10 030ad041 06:04:00 0003
> 11 020cd041 08:80:ff 0003
>
> > 2) Send cat /proc/bus/pnp/01 | od -tx1
>
> 0000000 2a 00 00 22 80 00 47 01 78 03 78 03 00 08 47 01
^^
This is "NO DMA" (we map this in parport to -1, which means Unknown).
Your PNPBIOS is buggy, this should be "08" for dma=3


> 0000020 78 07 78 07 00 08 79 00 30 2a 0a 00 22 80 00 47
^^
Possible settings are: 08|02 i.e. dma=3|1
> 0000040 01 bc 03 bc 03 00 03 47 01 bc 07 bc 07 00 03 30
> 0000060 2a 0a 00 22 80 00 47 01 78 03 78 03 00 08 47 01
> 0000100 78 07 78 07 00 08 30 2a 0a 00 22 20 00 47 01 78
> 0000120 02 78 02 00 08 47 01 78 06 78 06 00 08 38 79 00
> 0000140 79 00
>
> Settings:
> Parallel port mode: ECP+EPP
> ECP DMA select: 3

Try to get an update for your BIOS or file a bug report to your
mainboard vendor else.