Bug 50416 - qla1280 driver is stopped when insmod it
Summary: qla1280 driver is stopped when insmod it
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: kernel   
(Show other bugs)
Version: 7.1
Hardware: ia64
OS: Linux
Target Milestone: ---
Assignee: Arjan van de Ven
QA Contact: Brock Organ
Depends On:
TreeView+ depends on / blocked
Reported: 2001-07-31 01:40 UTC by Shinya Narahara
Modified: 2007-04-18 16:35 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2003-06-09 12:46:35 UTC
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

Description Shinya Narahara 2001-07-31 01:40:28 UTC
From Bugzilla Helper:
User-Agent: Mozilla/4.75 [ja] (WinNT; U)

Description of problem:
Many insmod and rmmod qla1280 driver causes hanging up of system.
We discovered it on "shutdown and reboot" test. We have qla12160,
on kernel 2.4.3-12smp.

How reproducible:

Steps to Reproduce:
1.Make shellscript like below:
    while [ 1 ]; do
        insmod qla1280
        if [ $? != 0 ]; then
            exit 1
        rmmod qla1280
        if [ $? != 0 ]; then
            exit 1
2.Run it.
3.Wait for 24 hr or so. Very rare case, but you must see this.

Actual Results:  Stopped at the message below:

Loading qla1280 module
qla1x160:Surported Device Found
              VIO=1077 DID=1216 SSVID=1077 SSDID=7
SCSI(0)=Determing if RISC is loaded ...
SCSI(0)=Verifying chip....

Expected Results:  The shellscript works good forever.

Additional info:

The stopped function is in qla1280_debounce_register() called from qla_chip_diag().
        ret = RD_REG_WORD(addr);
        ret2 = RD_REG_WORD(addr);
    } while (ret != ret2);
This might be infinite loop. So, we guess this is just a issue of read/write register timing.
if we add usleep() function into this loop, the problem won't appear no more.
And more, if we compile the module without -O2 switch, hard to reproduce it.

We can see this issue on both up/smp kernel.

Comment 1 Shinya Narahara 2001-08-08 11:37:06 UTC
We confirmed that the qla1280 driver which we patched cleared the test of
insmod/rmmod loop for 48hours. The patch is very easy and sily, just add the
lines which contain routine similar to usleep(), into qla1280_chip_diag()

We suppose this is just a timing issue. Writing/reading data to/from chip,
the driver must wait until the chip is ready.

Comment 2 Arjan van de Ven 2001-09-07 12:26:02 UTC
This bug appears to be slightly different. The qla1280 driver does not use
the ioremap() and readl()/writel() functions but tries to access PCI space
directly, bypassing the architecture access functions. This breaks on IA64 in
subtle ways due to caching/bursting effects of the PCI controller (which is a
good thing in itself, but only if you use the proper access methods)

Comment 3 Alan Cox 2003-06-09 12:46:35 UTC
7.1 ia64 is no longer supported. Closing

Note You need to log in before you can comment on or make changes to this bug.