* pata_sl82c105 can not reserve IO region
@ 2006-11-30 16:52 Olaf Hering
2006-11-30 17:10 ` Alan
` (3 more replies)
0 siblings, 4 replies; 93+ messages in thread
From: Olaf Hering @ 2006-11-30 16:52 UTC (permalink / raw)
To: linux-ide, linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 459 bytes --]
pata_sl82c105 can be used on the ppc64 POWER4 system p610, p615 and p630
for the onboard IDE CD drive. It could be also used for ppc32 Motorola
PowerStack PReP systems.
Unfortunately, it doesnt work for me on the p630:
PCI: Enabling device: (0000:00:03.1), cmd 141
PCI: Unable to reserve I/O region #6:10@0 for device 0000:00:03.1
pata_sl82c105: probe of 0000:00:03.1 failed with error -16
Any idea how to fix it properly?
dmesg and other info attached.
[-- Attachment #2: winbond-ide.txt --]
[-- Type: text/plain, Size: 31537 bytes --]
Using pSeries machine description
Page orders: linear mapping = 24, virtual = 12, io = 12
Found legacy serial port 0 for /pci@400000000110/isa@3/serial@i3f8
port=3f8, taddr=3fd300003f8, irq=0, clk=1843200, speed=0
Found legacy serial port 1 for /pci@400000000110/isa@3/serial@i2f8
port=2f8, taddr=3fd300002f8, irq=0, clk=1843200, speed=0
Found legacy serial port 2 for /pci@400000000110/isa@3/serial@i898
port=898, taddr=3fd30000898, irq=0, clk=1843200, speed=0
Starting Linux PPC64 #7 SMP Thu Nov 30 15:59:33 CET 2006
-----------------------------------------------------
ppc64_pft_size = 0x0
physicalMemorySize = 0x200000000
ppc64_caches.dcache_line_size = 0x80
ppc64_caches.icache_line_size = 0x80
htab_address = 0xc0000001f0000000
htab_hash_mask = 0xfffff
-----------------------------------------------------
Linux version 2.6.19-ppc64-bug159235 (olaf@pomegranate) (gcc version 4.1.0 (SUSE Linux)) #7 SMP Thu Nov 30 15:59:33 CET 2006
[boot]0012 Setup Arch
Entering add_active_range(0, 0, 2097152) 0 entries of 256 used
No ramdisk, default root is /dev/sda2
EEH: PCI Enhanced I/O Error Handling Enabled
PPC64 nvram contains 81920 bytes
Using default idle loop
Top of RAM: 0x200000000, Total RAM: 0x200000000
Memory hole size: 0MB
Zone PFN ranges:
DMA 0 -> 2097152
Normal 2097152 -> 2097152
early_node_map[1] active PFN ranges
0: 0 -> 2097152
On node 0 totalpages: 2097152
DMA zone: 28672 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 2068480 pages, LIFO batch:31
Normal zone: 0 pages used for memmap
[boot]0015 Setup Done
Built 1 zonelists. Total pages: 2068480
Kernel command line: debug video=matroxfb:1280x1024@85 sysrq=1 panic=32 root=/dev/sdb2
[boot]0020 XICS Init
xics: PCI 8259 intack at 0x000003fffdf091f0
i8259 legacy interrupt controller initialized
[boot]0021 XICS Done
PID hash table entries: 4096 (order: 12, 32768 bytes)
time_init: decrementer frequency = 181.701290 MHz
time_init: processor frequency = 1453.000000 MHz
Console: colour dummy device 80x25
Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
Memory: 8102896k/8388608k available (3508k kernel code, 284972k reserved, 1072k data, 2273k bss, 180k init)
Calibrating delay loop... 362.90 BogoMIPS (lpj=1814528)
Mount-cache hash table entries: 256
Processor 1 found.
Processor 2 found.
Processor 3 found.
Brought up 4 CPUs
migration_cost=0
NET: Registered protocol family 16
PCI: Probing PCI hardware
Failed to request PCI IO region on PCI domain 0000
Using INTC for W82c105 IDE controller.
IOMMU table initialized, virtual merging enabled
ISA bridge at 0000:00:03.0
mapping IO 3fd30000000 -> d000080000000000, size: 100000
mapping IO 3fd50000000 -> d000080000100000, size: 100000
PCI: Probing PCI hardware done
SCSI subsystem initialized
NET: Registered protocol family 2
IP route cache hash table entries: 262144 (order: 9, 2097152 bytes)
TCP established hash table entries: 1048576 (order: 12, 16777216 bytes)
TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
TCP: Hash tables configured (established 1048576 bind 65536)
TCP reno registered
RTAS daemon started
RTAS: event: 188, Type: Internal Device Failure, Severity: 2
io scheduler noop registered (default)
matroxfb: Matrox G450 detected
PInS data found at offset 31168
PInS memtype = 4
matroxfb: 1280x1024x8bpp (virtual: 1280x13107)
matroxfb: framebuffer at 0x3FDEC000000, mapped to 0xd000080080009000, size 16777216
Console: switching to colour frame buffer device 160x64
fb0: MATROX frame buffer device
matroxfb_crtc2: secondary head of fb0 was registered as fb1
Generic RTC Driver v1.07
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250.0: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
serial8250.0: ttyS2 at I/O 0x898 (irq = 10) is a 16550A
loop: loaded (max 8 devices)
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k2-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
PCI: Enabling device: (0000:21:01.0), cmd 143
e100: eth0: e100_probe: addr 0x3fd88030000, irq 85, MAC addr 00:02:55:4F:05:C7
PCI: Enabling device: (0001:21:01.0), cmd 143
e100: eth1: e100_probe: addr 0x3fde8030000, irq 117, MAC addr 00:02:55:4F:05:D7
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
W82C105: IDE controller at PCI slot 0000:00:03.1
PCI: Enabling device: (0000:00:03.1), cmd 141
W82C105: chipset revision 5
W82C105: 100% native mode on irq 86
ide0: BM-DMA at 0xf040-0xf047, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xf048-0xf04f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: LG CD-ROM CRD-8484B, ATAPI CD/DVD-ROM drive
hda: selected PIO 4 (120ns) (0240)
ide0 at 0xf000-0xf007,0xf012 on irq 86
Probing IDE interface ide1...
hda: ATAPI 48X CD-ROM drive, 128kB Cache
Uniform CD-ROM driver Revision: 3.20
PCI: Enabling device: (0000:41:01.0), cmd 143
sym0: <1010-66> rev 0x1 at pci 0000:41:01.0 irq 87
sym0: No NVRAM, ID 7, Fast-80, LVD, parity checking
sym0: SCSI BUS has been reset.
scsi0 : sym-2.2.3
scsi 0:0:8:0: Direct-Access IBM IC35L036UCD210-0 S5BS PQ: 0 ANSI: 3
target0:0:8: tagged command queuing enabled, command queue depth 16.
target0:0:8: Beginning Domain Validation
target0:0:8: asynchronous
target0:0:8: wide asynchronous
target0:0:8: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:8: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:8: Ending Domain Validation
scsi 0:0:9:0: Direct-Access IBM IC35L036UCD210-0 S5BS PQ: 0 ANSI: 3
target0:0:9: tagged command queuing enabled, command queue depth 16.
target0:0:9: Beginning Domain Validation
target0:0:9: asynchronous
target0:0:9: wide asynchronous
target0:0:9: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:9: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:9: Ending Domain Validation
scsi 0:0:15:0: Enclosure IBM HSBPD4E PU3SCSI 0011 PQ: 0 ANSI: 2
target0:0:15: Beginning Domain Validation
scsi 0:0:15:0: phase change 6-7 6@40000fa0 resid=4.
target0:0:15: asynchronous
target0:0:15: Ending Domain Validation
PCI: Enabling device: (0000:41:01.1), cmd 143
sym1: <1010-66> rev 0x1 at pci 0000:41:01.1 irq 88
sym1: No NVRAM, ID 7, Fast-80, SE, parity checking
sym1: SCSI BUS has been reset.
scsi1 : sym-2.2.3
target1:0:0: FAST-20 WIDE SCSI 40.0 MB/s ST (50 ns, offset 31)
scsi 1:0:0:0: Sequential-Access HP IBM-C568303030!D C209 PQ: 0 ANSI: 2
target1:0:0: Beginning Domain Validation
target1:0:0: FAST-20 SCSI 20.0 MB/s ST (50 ns, offset 31)
target1:0:0: FAST-20 WIDE SCSI 40.0 MB/s ST (50 ns, offset 31)
target1:0:0: FAST-20 WIDE SCSI 40.0 MB/s ST (50 ns, offset 31)
target1:0:0: Domain Validation skipping write tests
target1:0:0: Ending Domain Validation
SCSI device sda: 71096640 512-byte hdwr sectors (36401 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write through
SCSI device sda: 71096640 512-byte hdwr sectors (36401 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write through
sda: sda1 sda2 sda3
sd 0:0:8:0: Attached scsi disk sda
SCSI device sdb: 71096640 512-byte hdwr sectors (36401 MB)
sdb: Write Protect is off
sdb: Mode Sense: cb 00 00 08
SCSI device sdb: drive cache: write through
SCSI device sdb: 71096640 512-byte hdwr sectors (36401 MB)
sdb: Write Protect is off
sdb: Mode Sense: cb 00 00 08
SCSI device sdb: drive cache: write through
sdb: sdb1 sdb2
sd 0:0:9:0: Attached scsi disk sdb
sd 0:0:8:0: Attached scsi generic sg0 type 0
sd 0:0:9:0: Attached scsi generic sg1 type 0
scsi 0:0:15:0: Attached scsi generic sg2 type 13
scsi 1:0:0:0: Attached scsi generic sg3 type 1
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /class/input/input0
logips2pp: Detected unknown logitech mouse model 1
input: PS/2 Logitech Mouse as /class/input/input1
ReiserFS: sdb2: found reiserfs format "3.6" with standard journal
ReiserFS: sdb2: using ordered data mode
ReiserFS: sdb2: journal params: device sdb2, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
ReiserFS: sdb2: checking transaction log (sdb2)
ReiserFS: sdb2: Using r5 hash to sort names
VFS: Mounted root (reiserfs filesystem) readonly.
Freeing unused kernel memory: 180k freed
ioctl32(showconsole:353): Unknown cmd fd(0) cmd(40045432){00} arg(ffda1b38) on /dev/console
ioctl32(showconsole:388): Unknown cmd fd(0) cmd(40045432){00} arg(fff67ac8) on /dev/console
ReiserFS: sdb2: warning: acl not supported.
ReiserFS: sdb2: warning: user_xattr not supported.
ReiserFS: sdb2: warning: acl not supported.
ReiserFS: sdb2: warning: user_xattr not supported.
ioctl32(showconsole:958): Unknown cmd fd(0) cmd(40045432){00} arg(ff8fdac8) on /dev/console
ioctl32(showconsole:1130): Unknown cmd fd(0) cmd(40045432){00} arg(ff997ad8) on /dev/console
Adding 1048568k swap on /dev/sda2. Priority:-1 extents:1 across:1048568k
ioctl32(showconsole:1217): Unknown cmd fd(0) cmd(40045432){00} arg(ffe01b18) on /dev/console
e100: eth2: e100_watchdog: link up, 100Mbps, full-duplex
ioctl32(showconsole:2448): Unknown cmd fd(0) cmd(40045432){00} arg(ff821a78) on /dev/tty0
ISO 9660 Extensions: RRIP_1991A
==> /proc/ide <==
==> /proc/interrupts <==
CPU0 CPU1 CPU2 CPU3
1: 3 2 4 3 i8259 Level i8042
12: 28 28 27 26 i8259 Level i8042
16: 442 666 574 337 XICS Level IPI
86: 269 255 236 255 XICS Level ide0
87: 2243 2234 2260 2218 XICS Level sym53c8xx
88: 13 14 13 13 XICS Level sym53c8xx
117: 1714 1736 1727 1752 XICS Level eth2
BAD: 0
==> /proc/iomem <==
3fcc0000000-3fcc00fffff : PCI Bus #61
3fcc0000000-3fcc00fffff : PCI Bus #41
3fcc0000000-3fcc00fffff : PCI Bus #21
3fcc0000000-3fcc00fffff : PCI Bus #01
3fcc0000000-3fcc0007fff : 0000:00:02.6
3fcc0000000-3fcc0007fff : 0000:00:02.4
3fcc0000000-3fcc0007fff : 0000:00:02.2
3fd00000000-3fd000fffff : PCI Bus #61
3fd00000000-3fd000fffff : PCI Bus #21
3fd00000000-3fd000fffff : PCI Bus #01
3fd00000000-3fd00007fff : 0001:00:02.6
3fd00000000-3fd00007fff : 0001:00:02.2
3fd80000000-3fdbfffffff : /pci@400000000110
3fd80000000-3fd87ffffff : PCI Bus #01
3fd88000000-3fd8bffffff : PCI Bus #21
3fd88000000-3fd8801ffff : 0000:21:01.0
3fd88000000-3fd8801ffff : e100
3fd88020000-3fd8802ffff : 0000:21:01.0
3fd88030000-3fd88030fff : 0000:21:01.0
3fd88030000-3fd88030fff : e100
3fd8c000000-3fd8fffffff : PCI Bus #41
3fd8c000000-3fd8c001fff : 0000:41:01.1
3fd8c000000-3fd8c001fff : sym53c8xx
3fd8c002000-3fd8c003fff : 0000:41:01.0
3fd8c002000-3fd8c003fff : sym53c8xx
3fd8c004000-3fd8c0043ff : 0000:41:01.1
3fd8c004000-3fd8c0043ff : sym53c8xx
3fd8c005000-3fd8c0053ff : 0000:41:01.0
3fd8c005000-3fd8c0053ff : sym53c8xx
3fd90000000-3fd97ffffff : PCI Bus #61
3fd90000000-3fd90003fff : 0000:61:01.0
3fd9fff0000-3fd9fff7fff : 0000:00:02.0
3fdb4000000-3fdb7ffffff : 0000:00:01.0
3fdb8000000-3fdbbffffff : 0000:00:01.0
3fdbd700000-3fdbd700fff : 0000:00:01.0
3fdbd800000-3fdbd87ffff : 0000:00:01.0
3fde0000000-3fdffffffff : /pci@400000000112
3fde0000000-3fde7ffffff : PCI Bus #01
3fde0000000-3fde0000fff : 0001:01:01.3
3fde0001000-3fde0001fff : 0001:01:01.2
3fde0002000-3fde0002fff : 0001:01:01.1
3fde0003000-3fde0003fff : 0001:01:01.0
3fde8000000-3fdebffffff : PCI Bus #21
3fde8000000-3fde801ffff : 0001:21:01.0
3fde8000000-3fde801ffff : e100
3fde8020000-3fde802ffff : 0001:21:01.0
3fde8030000-3fde8030fff : 0001:21:01.0
3fde8030000-3fde8030fff : e100
3fdec000000-3fdf3ffffff : PCI Bus #61
3fdec000000-3fdef0fffff : PCI Bus #62
3fdec000000-3fdedffffff : 0001:62:00.0
3fdec000000-3fdedffffff : matroxfb FB
3fdee000000-3fdee7fffff : 0001:62:00.0
3fdee800000-3fdee803fff : 0001:62:00.0
3fdee800000-3fdee803fff : matroxfb MMIO
3fdef000000-3fdef01ffff : 0001:62:00.0
3fdffff0000-3fdffff7fff : 0001:00:02.0
==> /proc/ioports <==
00000000-0000001f : dma1
00000020-00000021 : 8259 (master)
00000040-0000005f : timer
00000060-0000006f : i8042
00000080-0000008f : dma page reg
000000a0-000000a1 : 8259 (slave)
000000c0-000000df : dma2
000002f8-000002ff : serial
000003c0-000003df : matrox
000003f8-000003ff : serial
000004d0-000004d1 : 8259 edge control
00000898-0000089f : serial
0000f000-0000f007 : 0000:00:03.1
0000f000-0000f007 : ide0
0000f010-0000f013 : 0000:00:03.1
0000f012-0000f012 : ide0
0000f020-0000f027 : 0000:00:03.1
0000f030-0000f033 : 0000:00:03.1
0000f040-0000f04f : 0000:00:03.1
0000f040-0000f047 : ide0
0000f048-0000f04f : ide1
00010000-0001ffff : PCI Bus #01
00020000-0002ffff : PCI Bus #21
0002ec00-0002ec3f : 0000:21:01.0
0002ec00-0002ec3f : e100
00030000-0003ffff : PCI Bus #41
0003e800-0003e8ff : 0000:41:01.0
0003e800-0003e8ff : sym53c8xx
0003ec00-0003ecff : 0000:41:01.1
0003ec00-0003ecff : sym53c8xx
00040000-0004ffff : PCI Bus #61
00100000-001fffff : /pci@400000000112
00100000-0010ffff : PCI Bus #01
00110000-0011ffff : PCI Bus #21
0011ec00-0011ec3f : 0001:21:01.0
0011ec00-0011ec3f : e100
00120000-0012ffff : PCI Bus #61
==> /proc/irq <==
00:01.0 Co-processor: IBM Unknown device 00e0 (rev 01) (prog-if ff)
Subsystem: IBM Unknown device 00e1
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B-
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72
Interrupt: pin A routed to IRQ 255
Region 0: Memory at 3fdbd700000 (32-bit, prefetchable) [size=4K]
Region 1: Memory at 3fdbd800000 (32-bit, prefetchable) [size=512K]
Region 2: Memory at 3fdb4000000 (32-bit, prefetchable) [size=64M]
Region 3: Memory at 3fdb8000000 (32-bit, prefetchable) [size=64M]
00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fd9fff0000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=01, subordinate=10, sec-latency=248
I/O behind bridge: 00010000-0001ffff
Memory behind bridge: c0000000-c7ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset+ FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.0 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fcc0000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=21, subordinate=30, sec-latency=248
I/O behind bridge: 00020000-0002ffff
Memory behind bridge: c8000000-cbffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit- 133MHz- SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.2 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:02.4 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fcc0000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=41, subordinate=50, sec-latency=248
I/O behind bridge: 00030000-0003ffff
Memory behind bridge: cc000000-cfffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.4 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fcc0000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=61, subordinate=70, sec-latency=248
I/O behind bridge: 00040000-0004ffff
Memory behind bridge: d0000000-d7ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.6 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:03.0 ISA bridge: Symphony Labs W83C553 (rev 10)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
00:03.1 IDE interface: Symphony Labs SL82c105 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO])
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (500ns min, 10000ns max), Cache Line Size 08
Interrupt: pin A routed to IRQ 86
Region 0: I/O ports at 3fd3000f000 [size=8]
Region 1: I/O ports at 3fd3000f010 [size=4]
Region 2: I/O ports at 3fd3000f020 [size=8]
Region 3: I/O ports at 3fd3000f030 [size=4]
Region 4: I/O ports at 3fd3000f040 [size=16]
Region 5: I/O ports at 3fd30000000 [size=16]
21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
Subsystem: IBM Unknown device 01ff
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (2000ns min, 14000ns max)
Interrupt: pin A routed to IRQ 85
Region 0: Memory at 3fd88030000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at 3fd3002ec00 [size=64]
Region 2: Memory at 3fd88000000 (32-bit, non-prefetchable) [size=128K]
Expansion ROM at 3fd88020000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
41:01.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz Ultra3 SCSI Adapter (rev 01)
Subsystem: LSI Logic / Symbios Logic LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (4250ns min, 4500ns max), Cache Line Size 20
Interrupt: pin A routed to IRQ 87
Region 0: I/O ports at 3fd3003e800 [size=256]
Region 1: Memory at 3fd8c005000 (64-bit, non-prefetchable) [size=1K]
Region 3: Memory at 3fd8c002000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
41:01.1 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz Ultra3 SCSI Adapter (rev 01)
Subsystem: LSI Logic / Symbios Logic LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (4250ns min, 4500ns max), Cache Line Size 20
Interrupt: pin B routed to IRQ 88
Region 0: I/O ports at 3fd3003ec00 [size=256]
Region 1: Memory at 3fd8c004000 (64-bit, non-prefetchable) [size=1K]
Region 3: Memory at 3fd8c000000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
61:01.0 Ethernet controller: Alteon Networks Inc. AceNIC Gigabit Ethernet (rev 01)
Subsystem: IBM Gigabit Ethernet-SX PCI Adapter
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 89
Region 0: Memory at 3fd90000000 (32-bit, non-prefetchable) [disabled] [size=16K]
0001:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fdffff0000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=01, subordinate=10, sec-latency=248
I/O behind bridge: 00000000-0000ffff
Memory behind bridge: e0000000-e7ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:02.0 64bit+ 133MHz+ SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
0001:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fd00000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=21, subordinate=30, sec-latency=248
I/O behind bridge: 00010000-0001ffff
Memory behind bridge: e8000000-ebffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit- 133MHz- SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:02.2 64bit+ 133MHz+ SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
0001:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fd00000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=61, subordinate=70, sec-latency=248
I/O behind bridge: 00020000-0002ffff
Memory behind bridge: ec000000-f3ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:02.6 64bit+ 133MHz+ SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
0001:01:01.0 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin A routed to IRQ 115
Region 0: Memory at 3fde0003000 (32-bit, non-prefetchable) [size=4K]
0001:01:01.1 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin B routed to IRQ 116
Region 0: Memory at 3fde0002000 (32-bit, non-prefetchable) [size=4K]
0001:01:01.2 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin C routed to IRQ 115
Region 0: Memory at 3fde0001000 (32-bit, non-prefetchable) [size=4K]
0001:01:01.3 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin D routed to IRQ 116
Region 0: Memory at 3fde0000000 (32-bit, non-prefetchable) [size=4K]
0001:21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
Subsystem: IBM Unknown device 01ff
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (2000ns min, 14000ns max)
Interrupt: pin A routed to IRQ 117
Region 0: Memory at 3fde8030000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at 3fd5001ec00 [size=64]
Region 2: Memory at 3fde8000000 (32-bit, non-prefetchable) [size=128K]
Expansion ROM at 3fde8020000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
0001:61:01.0 PCI bridge: Hint Corp HB6 Universal PCI-PCI bridge (non-transparent mode) (rev 12) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74, Cache Line Size 08
Bus: primary=61, secondary=62, subordinate=62, sec-latency=128
I/O behind bridge: 01001000-01000fff
Memory behind bridge: ec000000-ef0fffff
Prefetchable memory behind bridge: 0000000001000000-0000000000f00000
Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [80] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [90] #06 [0000]
Capabilities: [a0] Vital Product Data
0001:62:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 82) (prog-if 00 [VGA])
Subsystem: IBM Unknown device 0233
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 121
Region 0: Memory at 3fdec000000 (32-bit, prefetchable) [size=32M]
Region 1: Memory at 3fdee800000 (32-bit, non-prefetchable) [size=16K]
Region 2: Memory at 3fdee000000 (32-bit, non-prefetchable) [size=8M]
Expansion ROM at 3fdef000000 [disabled] [size=128K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [f0] AGP version 2.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2
Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>
[-- Attachment #3: winbond-libata.txt --]
[-- Type: text/plain, Size: 30756 bytes --]
Using pSeries machine description
Page orders: linear mapping = 24, virtual = 12, io = 12
Found legacy serial port 0 for /pci@400000000110/isa@3/serial@i3f8
port=3f8, taddr=3fd300003f8, irq=0, clk=1843200, speed=0
Found legacy serial port 1 for /pci@400000000110/isa@3/serial@i2f8
port=2f8, taddr=3fd300002f8, irq=0, clk=1843200, speed=0
Found legacy serial port 2 for /pci@400000000110/isa@3/serial@i898
port=898, taddr=3fd30000898, irq=0, clk=1843200, speed=0
Starting Linux PPC64 #8 SMP Thu Nov 30 17:33:10 CET 2006
-----------------------------------------------------
ppc64_pft_size = 0x0
physicalMemorySize = 0x200000000
ppc64_caches.dcache_line_size = 0x80
ppc64_caches.icache_line_size = 0x80
htab_address = 0xc0000001f0000000
htab_hash_mask = 0xfffff
-----------------------------------------------------
Linux version 2.6.19-ppc64-bug159235 (olaf@pomegranate) (gcc version 4.1.0 (SUSE Linux)) #8 SMP Thu Nov 30 17:33:10 CET 2006
[boot]0012 Setup Arch
Entering add_active_range(0, 0, 2097152) 0 entries of 256 used
No ramdisk, default root is /dev/sda2
EEH: PCI Enhanced I/O Error Handling Enabled
PPC64 nvram contains 81920 bytes
Using default idle loop
Top of RAM: 0x200000000, Total RAM: 0x200000000
Memory hole size: 0MB
Zone PFN ranges:
DMA 0 -> 2097152
Normal 2097152 -> 2097152
early_node_map[1] active PFN ranges
0: 0 -> 2097152
On node 0 totalpages: 2097152
DMA zone: 28672 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 2068480 pages, LIFO batch:31
Normal zone: 0 pages used for memmap
[boot]0015 Setup Done
Built 1 zonelists. Total pages: 2068480
Kernel command line: debug video=matroxfb:1280x1024@85 sysrq=1 panic=32 root=/dev/sdb2
[boot]0020 XICS Init
xics: PCI 8259 intack at 0x000003fffdf091f0
i8259 legacy interrupt controller initialized
[boot]0021 XICS Done
PID hash table entries: 4096 (order: 12, 32768 bytes)
time_init: decrementer frequency = 181.701788 MHz
time_init: processor frequency = 1453.000000 MHz
Console: colour dummy device 80x25
Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
Memory: 8103028k/8388608k available (3476k kernel code, 284888k reserved, 1060k data, 2236k bss, 176k init)
Calibrating delay loop... 362.90 BogoMIPS (lpj=1814528)
Mount-cache hash table entries: 256
Processor 1 found.
Processor 2 found.
Processor 3 found.
Brought up 4 CPUs
migration_cost=0
NET: Registered protocol family 16
PCI: Probing PCI hardware
Failed to request PCI IO region on PCI domain 0000
Using INTC for W82c105 IDE controller.
IOMMU table initialized, virtual merging enabled
ISA bridge at 0000:00:03.0
mapping IO 3fd30000000 -> d000080000000000, size: 100000
mapping IO 3fd50000000 -> d000080000100000, size: 100000
PCI: Probing PCI hardware done
SCSI subsystem initialized
libata version 2.00 loaded.
NET: Registered protocol family 2
IP route cache hash table entries: 262144 (order: 9, 2097152 bytes)
TCP established hash table entries: 1048576 (order: 12, 16777216 bytes)
TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
TCP: Hash tables configured (established 1048576 bind 65536)
TCP reno registered
RTAS daemon started
RTAS: event: 188, Type: Internal Device Failure, Severity: 2
io scheduler noop registered (default)
matroxfb: Matrox G450 detected
PInS data found at offset 31168
PInS memtype = 4
matroxfb: 1280x1024x8bpp (virtual: 1280x13107)
matroxfb: framebuffer at 0x3FDEC000000, mapped to 0xd000080080009000, size 16777216
Console: switching to colour frame buffer device 160x64
fb0: MATROX frame buffer device
matroxfb_crtc2: secondary head of fb0 was registered as fb1
Generic RTC Driver v1.07
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250.0: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
serial8250.0: ttyS2 at I/O 0x898 (irq = 10) is a 16550A
loop: loaded (max 8 devices)
e100: Intel(R) PRO/100 Network Driver, 3.5.17-k2-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
PCI: Enabling device: (0000:21:01.0), cmd 143
e100: eth0: e100_probe: addr 0x3fd88030000, irq 85, MAC addr 00:02:55:4F:05:C7
PCI: Enabling device: (0001:21:01.0), cmd 143
e100: eth1: e100_probe: addr 0x3fde8030000, irq 117, MAC addr 00:02:55:4F:05:D7
PCI: Enabling device: (0000:41:01.0), cmd 143
sym0: <1010-66> rev 0x1 at pci 0000:41:01.0 irq 87
sym0: No NVRAM, ID 7, Fast-80, LVD, parity checking
sym0: SCSI BUS has been reset.
scsi0 : sym-2.2.3
scsi 0:0:8:0: Direct-Access IBM IC35L036UCD210-0 S5BS PQ: 0 ANSI: 3
target0:0:8: tagged command queuing enabled, command queue depth 16.
target0:0:8: Beginning Domain Validation
target0:0:8: asynchronous
target0:0:8: wide asynchronous
target0:0:8: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:8: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:8: Ending Domain Validation
scsi 0:0:9:0: Direct-Access IBM IC35L036UCD210-0 S5BS PQ: 0 ANSI: 3
target0:0:9: tagged command queuing enabled, command queue depth 16.
target0:0:9: Beginning Domain Validation
target0:0:9: asynchronous
target0:0:9: wide asynchronous
target0:0:9: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:9: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 31)
target0:0:9: Ending Domain Validation
scsi 0:0:15:0: Enclosure IBM HSBPD4E PU3SCSI 0011 PQ: 0 ANSI: 2
target0:0:15: Beginning Domain Validation
scsi 0:0:15:0: phase change 6-7 6@40000fa0 resid=4.
target0:0:15: asynchronous
target0:0:15: Ending Domain Validation
PCI: Enabling device: (0000:41:01.1), cmd 143
sym1: <1010-66> rev 0x1 at pci 0000:41:01.1 irq 88
sym1: No NVRAM, ID 7, Fast-80, SE, parity checking
sym1: SCSI BUS has been reset.
scsi1 : sym-2.2.3
target1:0:0: FAST-20 WIDE SCSI 40.0 MB/s ST (50 ns, offset 31)
scsi 1:0:0:0: Sequential-Access HP IBM-C568303030!D C209 PQ: 0 ANSI: 2
target1:0:0: Beginning Domain Validation
target1:0:0: FAST-20 SCSI 20.0 MB/s ST (50 ns, offset 31)
target1:0:0: FAST-20 WIDE SCSI 40.0 MB/s ST (50 ns, offset 31)
target1:0:0: FAST-20 WIDE SCSI 40.0 MB/s ST (50 ns, offset 31)
target1:0:0: Domain Validation skipping write tests
target1:0:0: Ending Domain Validation
SCSI device sda: 71096640 512-byte hdwr sectors (36401 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write through
SCSI device sda: 71096640 512-byte hdwr sectors (36401 MB)
sda: Write Protect is off
sda: Mode Sense: cb 00 00 08
SCSI device sda: drive cache: write through
sda: sda1 sda2 sda3
sd 0:0:8:0: Attached scsi disk sda
SCSI device sdb: 71096640 512-byte hdwr sectors (36401 MB)
sdb: Write Protect is off
sdb: Mode Sense: cb 00 00 08
SCSI device sdb: drive cache: write through
SCSI device sdb: 71096640 512-byte hdwr sectors (36401 MB)
sdb: Write Protect is off
sdb: Mode Sense: cb 00 00 08
SCSI device sdb: drive cache: write through
sdb: sdb1 sdb2
sd 0:0:9:0: Attached scsi disk sdb
sd 0:0:8:0: Attached scsi generic sg0 type 0
sd 0:0:9:0: Attached scsi generic sg1 type 0
scsi 0:0:15:0: Attached scsi generic sg2 type 13
scsi 1:0:0:0: Attached scsi generic sg3 type 1
PCI: Enabling device: (0000:00:03.1), cmd 141
PCI: Unable to reserve I/O region #6:10@0 for device 0000:00:03.1
pata_sl82c105: probe of 0000:00:03.1 failed with error -16
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /class/input/input0
logips2pp: Detected unknown logitech mouse model 1
input: PS/2 Logitech Mouse as /class/input/input1
ReiserFS: sdb2: found reiserfs format "3.6" with standard journal
ReiserFS: sdb2: using ordered data mode
ReiserFS: sdb2: journal params: device sdb2, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
ReiserFS: sdb2: checking transaction log (sdb2)
ReiserFS: sdb2: Using r5 hash to sort names
VFS: Mounted root (reiserfs filesystem) readonly.
Freeing unused kernel memory: 176k freed
ioctl32(showconsole:355): Unknown cmd fd(0) cmd(40045432){00} arg(ffa32b38) on /dev/console
ioctl32(showconsole:390): Unknown cmd fd(0) cmd(40045432){00} arg(fffb4ac8) on /dev/console
ReiserFS: sdb2: warning: acl not supported.
ReiserFS: sdb2: warning: user_xattr not supported.
ReiserFS: sdb2: warning: acl not supported.
ReiserFS: sdb2: warning: user_xattr not supported.
ioctl32(showconsole:953): Unknown cmd fd(0) cmd(40045432){00} arg(ffc97ac8) on /dev/console
ioctl32(showconsole:1125): Unknown cmd fd(0) cmd(40045432){00} arg(fff9bad8) on /dev/console
Adding 1048568k swap on /dev/sda2. Priority:-1 extents:1 across:1048568k
ioctl32(showconsole:1212): Unknown cmd fd(0) cmd(40045432){00} arg(ffb99b18) on /dev/console
e100: eth2: e100_watchdog: link up, 100Mbps, full-duplex
ioctl32(showconsole:2409): Unknown cmd fd(0) cmd(40045432){00} arg(fff1fa78) on /dev/tty0
==> /proc/interrupts <==
CPU0 CPU1 CPU2 CPU3
1: 3 3 2 4 i8259 Level i8042
12: 26 28 28 27 i8259 Level i8042
16: 254 597 403 583 XICS Level IPI
87: 2088 2071 2092 2088 XICS Level sym53c8xx
88: 13 13 14 13 XICS Level sym53c8xx
117: 490 506 484 489 XICS Level eth2
BAD: 0
==> /proc/iomem <==
3fcc0000000-3fcc00fffff : PCI Bus #61
3fcc0000000-3fcc00fffff : PCI Bus #41
3fcc0000000-3fcc00fffff : PCI Bus #21
3fcc0000000-3fcc00fffff : PCI Bus #01
3fcc0000000-3fcc0007fff : 0000:00:02.6
3fcc0000000-3fcc0007fff : 0000:00:02.4
3fcc0000000-3fcc0007fff : 0000:00:02.2
3fd00000000-3fd000fffff : PCI Bus #61
3fd00000000-3fd000fffff : PCI Bus #21
3fd00000000-3fd000fffff : PCI Bus #01
3fd00000000-3fd00007fff : 0001:00:02.6
3fd00000000-3fd00007fff : 0001:00:02.2
3fd80000000-3fdbfffffff : /pci@400000000110
3fd80000000-3fd87ffffff : PCI Bus #01
3fd88000000-3fd8bffffff : PCI Bus #21
3fd88000000-3fd8801ffff : 0000:21:01.0
3fd88000000-3fd8801ffff : e100
3fd88020000-3fd8802ffff : 0000:21:01.0
3fd88030000-3fd88030fff : 0000:21:01.0
3fd88030000-3fd88030fff : e100
3fd8c000000-3fd8fffffff : PCI Bus #41
3fd8c000000-3fd8c001fff : 0000:41:01.1
3fd8c000000-3fd8c001fff : sym53c8xx
3fd8c002000-3fd8c003fff : 0000:41:01.0
3fd8c002000-3fd8c003fff : sym53c8xx
3fd8c004000-3fd8c0043ff : 0000:41:01.1
3fd8c004000-3fd8c0043ff : sym53c8xx
3fd8c005000-3fd8c0053ff : 0000:41:01.0
3fd8c005000-3fd8c0053ff : sym53c8xx
3fd90000000-3fd97ffffff : PCI Bus #61
3fd90000000-3fd90003fff : 0000:61:01.0
3fd9fff0000-3fd9fff7fff : 0000:00:02.0
3fdb4000000-3fdb7ffffff : 0000:00:01.0
3fdb8000000-3fdbbffffff : 0000:00:01.0
3fdbd700000-3fdbd700fff : 0000:00:01.0
3fdbd800000-3fdbd87ffff : 0000:00:01.0
3fde0000000-3fdffffffff : /pci@400000000112
3fde0000000-3fde7ffffff : PCI Bus #01
3fde0000000-3fde0000fff : 0001:01:01.3
3fde0001000-3fde0001fff : 0001:01:01.2
3fde0002000-3fde0002fff : 0001:01:01.1
3fde0003000-3fde0003fff : 0001:01:01.0
3fde8000000-3fdebffffff : PCI Bus #21
3fde8000000-3fde801ffff : 0001:21:01.0
3fde8000000-3fde801ffff : e100
3fde8020000-3fde802ffff : 0001:21:01.0
3fde8030000-3fde8030fff : 0001:21:01.0
3fde8030000-3fde8030fff : e100
3fdec000000-3fdf3ffffff : PCI Bus #61
3fdec000000-3fdef0fffff : PCI Bus #62
3fdec000000-3fdedffffff : 0001:62:00.0
3fdec000000-3fdedffffff : matroxfb FB
3fdee000000-3fdee7fffff : 0001:62:00.0
3fdee800000-3fdee803fff : 0001:62:00.0
3fdee800000-3fdee803fff : matroxfb MMIO
3fdef000000-3fdef01ffff : 0001:62:00.0
3fdffff0000-3fdffff7fff : 0001:00:02.0
==> /proc/ioports <==
00000000-0000001f : dma1
00000020-00000021 : 8259 (master)
00000040-0000005f : timer
00000060-0000006f : i8042
00000080-0000008f : dma page reg
000000a0-000000a1 : 8259 (slave)
000000c0-000000df : dma2
000002f8-000002ff : serial
000003c0-000003df : matrox
000003f8-000003ff : serial
000004d0-000004d1 : 8259 edge control
00000898-0000089f : serial
0000f000-0000f007 : 0000:00:03.1
0000f010-0000f013 : 0000:00:03.1
0000f020-0000f027 : 0000:00:03.1
0000f030-0000f033 : 0000:00:03.1
0000f040-0000f04f : 0000:00:03.1
00010000-0001ffff : PCI Bus #01
00020000-0002ffff : PCI Bus #21
0002ec00-0002ec3f : 0000:21:01.0
0002ec00-0002ec3f : e100
00030000-0003ffff : PCI Bus #41
0003e800-0003e8ff : 0000:41:01.0
0003e800-0003e8ff : sym53c8xx
0003ec00-0003ecff : 0000:41:01.1
0003ec00-0003ecff : sym53c8xx
00040000-0004ffff : PCI Bus #61
00100000-001fffff : /pci@400000000112
00100000-0010ffff : PCI Bus #01
00110000-0011ffff : PCI Bus #21
0011ec00-0011ec3f : 0001:21:01.0
0011ec00-0011ec3f : e100
00120000-0012ffff : PCI Bus #61
==> /proc/irq <==
00:01.0 Co-processor: IBM Unknown device 00e0 (rev 01) (prog-if ff)
Subsystem: IBM Unknown device 00e1
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B-
Status: Cap- 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72
Interrupt: pin A routed to IRQ 255
Region 0: Memory at 3fdbd700000 (32-bit, prefetchable) [size=4K]
Region 1: Memory at 3fdbd800000 (32-bit, prefetchable) [size=512K]
Region 2: Memory at 3fdb4000000 (32-bit, prefetchable) [size=64M]
Region 3: Memory at 3fdb8000000 (32-bit, prefetchable) [size=64M]
00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fd9fff0000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=01, subordinate=10, sec-latency=248
I/O behind bridge: 00010000-0001ffff
Memory behind bridge: c0000000-c7ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset+ FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.0 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fcc0000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=21, subordinate=30, sec-latency=248
I/O behind bridge: 00020000-0002ffff
Memory behind bridge: c8000000-cbffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit- 133MHz- SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.2 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:02.4 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fcc0000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=41, subordinate=50, sec-latency=248
I/O behind bridge: 00030000-0003ffff
Memory behind bridge: cc000000-cfffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.4 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fcc0000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=61, subordinate=70, sec-latency=248
I/O behind bridge: 00040000-0004ffff
Memory behind bridge: d0000000-d7ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:00.6 64bit+ 133MHz- SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
00:03.0 ISA bridge: Symphony Labs W83C553 (rev 10)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0
00:03.1 IDE interface: Symphony Labs SL82c105 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO])
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 86
Region 0: I/O ports at 3fd3000f000 [size=8]
Region 1: I/O ports at 3fd3000f010 [size=4]
Region 2: I/O ports at 3fd3000f020 [size=8]
Region 3: I/O ports at 3fd3000f030 [size=4]
Region 4: I/O ports at 3fd3000f040 [size=16]
Region 5: I/O ports at 3fd30000000 [size=16]
21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
Subsystem: IBM Unknown device 01ff
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (2000ns min, 14000ns max)
Interrupt: pin A routed to IRQ 85
Region 0: Memory at 3fd88030000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at 3fd3002ec00 [size=64]
Region 2: Memory at 3fd88000000 (32-bit, non-prefetchable) [size=128K]
Expansion ROM at 3fd88020000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
41:01.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz Ultra3 SCSI Adapter (rev 01)
Subsystem: LSI Logic / Symbios Logic LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (4250ns min, 4500ns max), Cache Line Size 20
Interrupt: pin A routed to IRQ 87
Region 0: I/O ports at 3fd3003e800 [size=256]
Region 1: Memory at 3fd8c005000 (64-bit, non-prefetchable) [size=1K]
Region 3: Memory at 3fd8c002000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
41:01.1 SCSI storage controller: LSI Logic / Symbios Logic 53c1010 66MHz Ultra3 SCSI Adapter (rev 01)
Subsystem: LSI Logic / Symbios Logic LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (4250ns min, 4500ns max), Cache Line Size 20
Interrupt: pin B routed to IRQ 88
Region 0: I/O ports at 3fd3003ec00 [size=256]
Region 1: Memory at 3fd8c004000 (64-bit, non-prefetchable) [size=1K]
Region 3: Memory at 3fd8c000000 (64-bit, non-prefetchable) [size=8K]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
61:01.0 Ethernet controller: Alteon Networks Inc. AceNIC Gigabit Ethernet (rev 01)
Subsystem: IBM Gigabit Ethernet-SX PCI Adapter
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 89
Region 0: Memory at 3fd90000000 (32-bit, non-prefetchable) [disabled] [size=16K]
0001:00:02.0 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fdffff0000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=01, subordinate=10, sec-latency=248
I/O behind bridge: 00000000-0000ffff
Memory behind bridge: e0000000-e7ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:02.0 64bit+ 133MHz+ SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
0001:00:02.2 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fd00000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=21, subordinate=30, sec-latency=248
I/O behind bridge: 00010000-0001ffff
Memory behind bridge: e8000000-ebffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit- 133MHz- SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:02.2 64bit+ 133MHz+ SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
0001:00:02.6 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 01) (prog-if 0f)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 248, Cache Line Size 20
BIST result: 00
Region 0: Memory at 3fd00000000 (64-bit, prefetchable) [size=32K]
Bus: primary=00, secondary=61, subordinate=70, sec-latency=248
I/O behind bridge: 00020000-0002ffff
Memory behind bridge: ec000000-f3ffffff
Prefetchable memory behind bridge: 0000000000000000-0000000000000000
Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=slow >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [a0] PCI-X bridge device
Secondary Status: 64bit+ 133MHz+ SCD- USC- SCO- SRD- Freq=conv
Status: Dev=00:02.6 64bit+ 133MHz+ SCD- USC- SCO- SRD-
Upstream: Capacity=0 CommitmentLimit=0
Downstream: Capacity=0 CommitmentLimit=0
Capabilities: [b0] Power Management version 2
Flags: PMEClk+ DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b8] #0c [0000]
0001:01:01.0 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin A routed to IRQ 115
Region 0: Memory at 3fde0003000 (32-bit, non-prefetchable) [size=4K]
0001:01:01.1 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin B routed to IRQ 116
Region 0: Memory at 3fde0002000 (32-bit, non-prefetchable) [size=4K]
0001:01:01.2 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin C routed to IRQ 115
Region 0: Memory at 3fde0001000 (32-bit, non-prefetchable) [size=4K]
0001:01:01.3 USB Controller: Agere Systems USS-344S USB Controller (rev 11) (prog-if 10 [OHCI])
Subsystem: Agere Systems USS-344S USB Controller
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 72 (750ns min, 21500ns max)
Interrupt: pin D routed to IRQ 116
Region 0: Memory at 3fde0000000 (32-bit, non-prefetchable) [size=4K]
0001:21:01.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 0d)
Subsystem: IBM Unknown device 01ff
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74 (2000ns min, 14000ns max)
Interrupt: pin A routed to IRQ 117
Region 0: Memory at 3fde8030000 (32-bit, non-prefetchable) [size=4K]
Region 1: I/O ports at 3fd5001ec00 [size=64]
Region 2: Memory at 3fde8000000 (32-bit, non-prefetchable) [size=128K]
Expansion ROM at 3fde8020000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=2 PME-
0001:61:01.0 PCI bridge: Hint Corp HB6 Universal PCI-PCI bridge (non-transparent mode) (rev 12) (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 74, Cache Line Size 08
Bus: primary=61, secondary=62, subordinate=62, sec-latency=128
I/O behind bridge: 01001000-01000fff
Memory behind bridge: ec000000-ef0fffff
Prefetchable memory behind bridge: 0000000001000000-0000000000f00000
Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [80] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [90] #06 [0000]
Capabilities: [a0] Vital Product Data
0001:62:00.0 VGA compatible controller: Matrox Graphics, Inc. G400/G450 (rev 82) (prog-if 00 [VGA])
Subsystem: IBM Unknown device 0233
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 121
Region 0: Memory at 3fdec000000 (32-bit, prefetchable) [size=32M]
Region 1: Memory at 3fdee800000 (32-bit, non-prefetchable) [size=16K]
Region 2: Memory at 3fdee000000 (32-bit, non-prefetchable) [size=8M]
Expansion ROM at 3fdef000000 [disabled] [size=128K]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [f0] AGP version 2.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x1,x2
Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=<none>
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-11-30 16:52 pata_sl82c105 can not reserve IO region Olaf Hering
@ 2006-11-30 17:10 ` Alan
2006-11-30 18:47 ` Olaf Hering
2006-12-03 17:12 ` Olaf Hering
` (2 subsequent siblings)
3 siblings, 1 reply; 93+ messages in thread
From: Alan @ 2006-11-30 17:10 UTC (permalink / raw)
To: Olaf Hering, linux-ide, linuxppc-dev
On Thu, 30 Nov 2006 17:52:02 +0100 (MET)
Olaf Hering <olaf@aepfle.de> wrote:
>
> pata_sl82c105 can be used on the ppc64 POWER4 system p610, p615 and p630
> for the onboard IDE CD drive. It could be also used for ppc32 Motorola
> PowerStack PReP systems.
>
> Unfortunately, it doesnt work for me on the p630:
>
> PCI: Enabling device: (0000:00:03.1), cmd 141
> PCI: Unable to reserve I/O region #6:10@0 for device 0000:00:03.1
> pata_sl82c105: probe of 0000:00:03.1 failed with error -16
>
> Any idea how to fix it properly?
That looks like a compiler bug.
I/O region #6.
pci_request_regions() and pci_request_selcted_regions() end up in a loop
calling pci_request_region with the values 0 to 5. Never 6.
Can you instrument that code a bit and see wtf is going on first of all.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-11-30 17:10 ` Alan
@ 2006-11-30 18:47 ` Olaf Hering
2006-12-01 18:34 ` Olaf Hering
0 siblings, 1 reply; 93+ messages in thread
From: Olaf Hering @ 2006-11-30 18:47 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, linuxppc-dev
On Thu, Nov 30, Alan wrote:
> I/O region #6.
>
> pci_request_regions() and pci_request_selcted_regions() end up in a loop
> calling pci_request_region with the values 0 to 5. Never 6.
The printk in pci_request_region has 'bar + 1', so 6 should be possible
if i becomes 5.
I see the failure in 2.6.16 and 2.6.18 too, if that matters. Will look
at it tomorrow.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-11-30 18:47 ` Olaf Hering
@ 2006-12-01 18:34 ` Olaf Hering
2006-12-01 18:58 ` Alan
2006-12-01 19:05 ` Sergei Shtylyov
0 siblings, 2 replies; 93+ messages in thread
From: Olaf Hering @ 2006-12-01 18:34 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, linuxppc-dev
On Thu, Nov 30, Olaf Hering wrote:
> On Thu, Nov 30, Alan wrote:
>
> > I/O region #6.
> >
> > pci_request_regions() and pci_request_selcted_regions() end up in a loop
> > calling pci_request_region with the values 0 to 5. Never 6.
>
> The printk in pci_request_region has 'bar + 1', so 6 should be possible
> if i becomes 5.
Does the IO region of the last bar look correct?
00:03.1 IDE interface: Symphony Labs SL82c105 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO])
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 86
Region 0: I/O ports at 3fd3000f000 [size=8]
Region 1: I/O ports at 3fd3000f010 [size=4]
Region 2: I/O ports at 3fd3000f020 [size=8]
Region 3: I/O ports at 3fd3000f030 [size=4]
Region 4: I/O ports at 3fd3000f040 [size=16]
Region 5: I/O ports at 3fd30000000 [size=16]
00: ad 10 05 01 41 01 80 02 05 8f 01 01 08 48 80 00
10: 01 f0 00 00 11 f0 00 00 21 f0 00 00 31 f0 00 00
20: 41 f0 00 00 01 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 56 01 02 28
40: b3 08 ff 00 09 09 00 00 09 09 00 00 09 09 00 00
50: 09 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
name "ide"
linux,phandle 00d5cdc0 (14011840)
assigned-addresses 81001910 00000000 0000f000 00000000 00000008 81001914
00000000 0000f010 00000000 00000004 81001918 00000000
0000f020 00000000 00000008 8100191c 00000000 0000f030
00000000 00000004 81001920 00000000 0000f040 00000000
00000010 81001924 00000000 00000000 00000000 00000010
interrupts 00000003
built-in
#size-cells 00000000
#address-cells 00000001
device_type "ide"
reg 00001900 00000000 00000000 00000000 00000000
41001910 00000000 00000000 00000000 00000008
41001914 00000000 00000000 00000000 00000004
41001918 00000000 00000000 00000000 00000008
4100191c 00000000 00000000 00000000 00000004
41001920 00000000 00000000 00000000 00000010
41001924 00000000 00000000 00000000 00000010
compatible "pci10ad,105"
"pciclass,01018f"
ibm,fw-slot-number 00000000
fast-back-to-back
devsel-speed 00000001
max-latency 00000028 (40)
min-grant 00000002
class-code 0001018f (65935)
revision-id 00000005
device-id 00000105 (261)
vendor-id 000010ad (4269)
ibm,loc-code "U0.1-P1/Q6"
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-01 18:34 ` Olaf Hering
@ 2006-12-01 18:58 ` Alan
2006-12-01 19:05 ` Sergei Shtylyov
1 sibling, 0 replies; 93+ messages in thread
From: Alan @ 2006-12-01 18:58 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
On Fri, 1 Dec 2006 19:34:16 +0100 (MET)
Olaf Hering <olaf@aepfle.de> wrote:
> > The printk in pci_request_region has 'bar + 1', so 6 should be possible
> > if i becomes 5.
>
> Does the IO region of the last bar look correct?
I've no idea. That really depends upon the platform.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-01 18:34 ` Olaf Hering
@ 2006-12-01 19:05 ` Sergei Shtylyov
2006-12-01 19:05 ` Sergei Shtylyov
1 sibling, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-01 19:05 UTC (permalink / raw)
To: Olaf Hering; +Cc: Alan, linux-ide, linuxppc-dev
Olaf Hering wrote:
>>The printk in pci_request_region has 'bar + 1', so 6 should be possible
>>if i becomes 5.
> Does the IO region of the last bar look correct?
I'd say it looks suspicious since it's not adjacent to all the other
regions... In fact, after looking at your /proc/ioports/ I can say that the
BAR is actually unassigned and its *actual* value is 0 which the driver may
not like (the ones that lspci show are the physical memory addresses not the
actual I/O space addresses in this case). That's why the reservation fails.
> 00:03.1 IDE interface: Symphony Labs SL82c105 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO])
> Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
> Interrupt: pin A routed to IRQ 86
> Region 0: I/O ports at 3fd3000f000 [size=8]
> Region 1: I/O ports at 3fd3000f010 [size=4]
> Region 2: I/O ports at 3fd3000f020 [size=8]
> Region 3: I/O ports at 3fd3000f030 [size=4]
> Region 4: I/O ports at 3fd3000f040 [size=16]
> Region 5: I/O ports at 3fd30000000 [size=16]
> 00: ad 10 05 01 41 01 80 02 05 8f 01 01 08 48 80 00
> 10: 01 f0 00 00 11 f0 00 00 21 f0 00 00 31 f0 00 00
> 20: 41 f0 00 00 01 00 00 00 00 00 00 00 00 00 00 00
Well, BAR5 is indeed 0.
> 30: 00 00 00 00 00 00 00 00 00 00 00 00 56 01 02 28
> 40: b3 08 ff 00 09 09 00 00 09 09 00 00 09 09 00 00
> 50: 09 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 70: 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 00
> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>
> name "ide"
> linux,phandle 00d5cdc0 (14011840)
> assigned-addresses 81001910 00000000 0000f000 00000000 00000008 81001914
> 00000000 0000f010 00000000 00000004 81001918 00000000
> 0000f020 00000000 00000008 8100191c 00000000 0000f030
> 00000000 00000004 81001920 00000000 0000f040 00000000
> 00000010 81001924 00000000 00000000 00000000 00000010
Yeah, the device tree has 0 for BAR5 too...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
@ 2006-12-01 19:05 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-01 19:05 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, Alan, linuxppc-dev
Olaf Hering wrote:
>>The printk in pci_request_region has 'bar + 1', so 6 should be possible
>>if i becomes 5.
> Does the IO region of the last bar look correct?
I'd say it looks suspicious since it's not adjacent to all the other
regions... In fact, after looking at your /proc/ioports/ I can say that the
BAR is actually unassigned and its *actual* value is 0 which the driver may
not like (the ones that lspci show are the physical memory addresses not the
actual I/O space addresses in this case). That's why the reservation fails.
> 00:03.1 IDE interface: Symphony Labs SL82c105 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO])
> Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
> Interrupt: pin A routed to IRQ 86
> Region 0: I/O ports at 3fd3000f000 [size=8]
> Region 1: I/O ports at 3fd3000f010 [size=4]
> Region 2: I/O ports at 3fd3000f020 [size=8]
> Region 3: I/O ports at 3fd3000f030 [size=4]
> Region 4: I/O ports at 3fd3000f040 [size=16]
> Region 5: I/O ports at 3fd30000000 [size=16]
> 00: ad 10 05 01 41 01 80 02 05 8f 01 01 08 48 80 00
> 10: 01 f0 00 00 11 f0 00 00 21 f0 00 00 31 f0 00 00
> 20: 41 f0 00 00 01 00 00 00 00 00 00 00 00 00 00 00
Well, BAR5 is indeed 0.
> 30: 00 00 00 00 00 00 00 00 00 00 00 00 56 01 02 28
> 40: b3 08 ff 00 09 09 00 00 09 09 00 00 09 09 00 00
> 50: 09 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 70: 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 00
> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>
> name "ide"
> linux,phandle 00d5cdc0 (14011840)
> assigned-addresses 81001910 00000000 0000f000 00000000 00000008 81001914
> 00000000 0000f010 00000000 00000004 81001918 00000000
> 0000f020 00000000 00000008 8100191c 00000000 0000f030
> 00000000 00000004 81001920 00000000 0000f040 00000000
> 00000010 81001924 00000000 00000000 00000000 00000010
Yeah, the device tree has 0 for BAR5 too...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-01 19:05 ` Sergei Shtylyov
@ 2006-12-01 21:53 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-01 21:53 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: Olaf Hering, linux-ide, Alan, linuxppc-dev
On Fri, 2006-12-01 at 22:05 +0300, Sergei Shtylyov wrote:
> Olaf Hering wrote:
>
> >>The printk in pci_request_region has 'bar + 1', so 6 should be possible
> >>if i becomes 5.
>
> > Does the IO region of the last bar look correct?
I think BAR 5 is unassigned by the firmware, though when OF does that,
it often means that an OF driver for that chip decided that the BAR
wasn't useful.
In fact, the driver doesn't actually use that BAR 5... Only 0 to 4
afaik.
I think the libata code shouldn't request the BARs it doesn't need or
that problem will hit us in other circumstances. It should only request
0 to 4 and let the drivers request 5 themselves if they need it.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
@ 2006-12-01 21:53 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-01 21:53 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: linux-ide, Olaf Hering, Alan, linuxppc-dev
On Fri, 2006-12-01 at 22:05 +0300, Sergei Shtylyov wrote:
> Olaf Hering wrote:
>
> >>The printk in pci_request_region has 'bar + 1', so 6 should be possible
> >>if i becomes 5.
>
> > Does the IO region of the last bar look correct?
I think BAR 5 is unassigned by the firmware, though when OF does that,
it often means that an OF driver for that chip decided that the BAR
wasn't useful.
In fact, the driver doesn't actually use that BAR 5... Only 0 to 4
afaik.
I think the libata code shouldn't request the BARs it doesn't need or
that problem will hit us in other circumstances. It should only request
0 to 4 and let the drivers request 5 themselves if they need it.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-01 21:53 ` Benjamin Herrenschmidt
@ 2006-12-01 22:15 ` Alan
-1 siblings, 0 replies; 93+ messages in thread
From: Alan @ 2006-12-01 22:15 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Sergei Shtylyov, Olaf Hering, linux-ide, linuxppc-dev
On Sat, 02 Dec 2006 08:53:49 +1100
Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> In fact, the driver doesn't actually use that BAR 5... Only 0 to 4
> afaik.
>
> I think the libata code shouldn't request the BARs it doesn't need or
> that problem will hit us in other circumstances. It should only request
> 0 to 4 and let the drivers request 5 themselves if they need it.
I don't think that is the problem. pci_request_regions() handles all
this internally. It is incorrect for me to not request BAR 5
if present as nobody else should use that resource with my driver loaded.
The underlying problem appears to be that PPC64 isn't setting up the
resources properly (at least as viewed by the pci core code). If a
resource is not set up then pci_request_resource() correctly handles
it .. except on PPC64. You have a resource at zero with a length and
type. PPC64 is not reporting to the upper layers that the resource was
not allocated. It is reporting that the resource *was* allocated, and at a
bogus address of zero.
If you trust the firmware that is fine, but you need to report the truth,
at which point pci_request_resources() will work correctly.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
@ 2006-12-01 22:15 ` Alan
0 siblings, 0 replies; 93+ messages in thread
From: Alan @ 2006-12-01 22:15 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linux-ide, Olaf Hering, linuxppc-dev
On Sat, 02 Dec 2006 08:53:49 +1100
Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> In fact, the driver doesn't actually use that BAR 5... Only 0 to 4
> afaik.
>
> I think the libata code shouldn't request the BARs it doesn't need or
> that problem will hit us in other circumstances. It should only request
> 0 to 4 and let the drivers request 5 themselves if they need it.
I don't think that is the problem. pci_request_regions() handles all
this internally. It is incorrect for me to not request BAR 5
if present as nobody else should use that resource with my driver loaded.
The underlying problem appears to be that PPC64 isn't setting up the
resources properly (at least as viewed by the pci core code). If a
resource is not set up then pci_request_resource() correctly handles
it .. except on PPC64. You have a resource at zero with a length and
type. PPC64 is not reporting to the upper layers that the resource was
not allocated. It is reporting that the resource *was* allocated, and at a
bogus address of zero.
If you trust the firmware that is fine, but you need to report the truth,
at which point pci_request_resources() will work correctly.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-01 22:15 ` Alan
@ 2006-12-01 22:19 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-01 22:19 UTC (permalink / raw)
To: Alan; +Cc: Sergei Shtylyov, Olaf Hering, linux-ide, linuxppc-dev
> I don't think that is the problem. pci_request_regions() handles all
> this internally. It is incorrect for me to not request BAR 5
> if present as nobody else should use that resource with my driver loaded.
>
> The underlying problem appears to be that PPC64 isn't setting up the
> resources properly (at least as viewed by the pci core code). If a
> resource is not set up then pci_request_resource() correctly handles
> it .. except on PPC64. You have a resource at zero with a length and
> type. PPC64 is not reporting to the upper layers that the resource was
> not allocated. It is reporting that the resource *was* allocated, and at a
> bogus address of zero.
>
> If you trust the firmware that is fine, but you need to report the truth,
> at which point pci_request_resources() will work correctly.
We don't have a choice but to trust the firmware on those machines. We
can't assign things ourselves on most of them for various reasons (in
many cases, the hypervisor won't let us).
So you suggest that I clear resource->flags in that case ?
I think part of the problem is a firmware bug in that the firmware data
actually decodes to BAR 5 is assigned to address 0 ... I suppose we can
consider that address 0 is never valid on those machines and consider
that as unassigned but it's a bit dodgy.. Or maybe a PCI quirk in the
pSeries code would be best.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
@ 2006-12-01 22:19 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-01 22:19 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, Olaf Hering, linuxppc-dev
> I don't think that is the problem. pci_request_regions() handles all
> this internally. It is incorrect for me to not request BAR 5
> if present as nobody else should use that resource with my driver loaded.
>
> The underlying problem appears to be that PPC64 isn't setting up the
> resources properly (at least as viewed by the pci core code). If a
> resource is not set up then pci_request_resource() correctly handles
> it .. except on PPC64. You have a resource at zero with a length and
> type. PPC64 is not reporting to the upper layers that the resource was
> not allocated. It is reporting that the resource *was* allocated, and at a
> bogus address of zero.
>
> If you trust the firmware that is fine, but you need to report the truth,
> at which point pci_request_resources() will work correctly.
We don't have a choice but to trust the firmware on those machines. We
can't assign things ourselves on most of them for various reasons (in
many cases, the hypervisor won't let us).
So you suggest that I clear resource->flags in that case ?
I think part of the problem is a firmware bug in that the firmware data
actually decodes to BAR 5 is assigned to address 0 ... I suppose we can
consider that address 0 is never valid on those machines and consider
that as unassigned but it's a bit dodgy.. Or maybe a PCI quirk in the
pSeries code would be best.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region)
2006-12-01 22:19 ` Benjamin Herrenschmidt
@ 2006-12-02 14:36 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-02 14:36 UTC (permalink / raw)
To: u-boot-users; +Cc: linuxppc-embedded
Hello.
Benjamin Herrenschmidt wrote:
>>I don't think that is the problem. pci_request_regions() handles all
>>this internally. It is incorrect for me to not request BAR 5
>>if present as nobody else should use that resource with my driver loaded.
>>The underlying problem appears to be that PPC64 isn't setting up the
>>resources properly (at least as viewed by the pci core code). If a
>>resource is not set up then pci_request_resource() correctly handles
>>it .. except on PPC64. You have a resource at zero with a length and
>>type. PPC64 is not reporting to the upper layers that the resource was
>>not allocated. It is reporting that the resource *was* allocated, and at a
>>bogus address of zero.
>>If you trust the firmware that is fine, but you need to report the truth,
>>at which point pci_request_resources() will work correctly.
> We don't have a choice but to trust the firmware on those machines. We
> can't assign things ourselves on most of them for various reasons (in
> many cases, the hypervisor won't let us).
> So you suggest that I clear resource->flags in that case ?
> I think part of the problem is a firmware bug in that the firmware data
> actually decodes to BAR 5 is assigned to address 0 ... I suppose we can
> consider that address 0 is never valid on those machines and consider
> that as unassigned but it's a bit dodgy.. Or maybe a PCI quirk in the
> pSeries code would be best.
Well, I'm having a very related issue with the U-Boot on MPC85xx: recently
I've noticed that it started allocating PCI I/O space from 0 (while the older
versions started from 0x1000). The IDE core can't tolerate this, giving me
such messages on bootup:
PDC20269: inconsistent baseregs (BIOS) for port 0, skipping
when I have Promise Ultra133TX2 card inserted into PCI alone. I've looked thru
the U-Boot sources and commit history but failed to locate the change that led
to this...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* [U-Boot-Users] U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region)
@ 2006-12-02 14:36 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-02 14:36 UTC (permalink / raw)
To: u-boot
Hello.
Benjamin Herrenschmidt wrote:
>>I don't think that is the problem. pci_request_regions() handles all
>>this internally. It is incorrect for me to not request BAR 5
>>if present as nobody else should use that resource with my driver loaded.
>>The underlying problem appears to be that PPC64 isn't setting up the
>>resources properly (at least as viewed by the pci core code). If a
>>resource is not set up then pci_request_resource() correctly handles
>>it .. except on PPC64. You have a resource at zero with a length and
>>type. PPC64 is not reporting to the upper layers that the resource was
>>not allocated. It is reporting that the resource *was* allocated, and at a
>>bogus address of zero.
>>If you trust the firmware that is fine, but you need to report the truth,
>>at which point pci_request_resources() will work correctly.
> We don't have a choice but to trust the firmware on those machines. We
> can't assign things ourselves on most of them for various reasons (in
> many cases, the hypervisor won't let us).
> So you suggest that I clear resource->flags in that case ?
> I think part of the problem is a firmware bug in that the firmware data
> actually decodes to BAR 5 is assigned to address 0 ... I suppose we can
> consider that address 0 is never valid on those machines and consider
> that as unassigned but it's a bit dodgy.. Or maybe a PCI quirk in the
> pSeries code would be best.
Well, I'm having a very related issue with the U-Boot on MPC85xx: recently
I've noticed that it started allocating PCI I/O space from 0 (while the older
versions started from 0x1000). The IDE core can't tolerate this, giving me
such messages on bootup:
PDC20269: inconsistent baseregs (BIOS) for port 0, skipping
when I have Promise Ultra133TX2 card inserted into PCI alone. I've looked thru
the U-Boot sources and commit history but failed to locate the change that led
to this...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region)
2006-12-02 14:36 ` [U-Boot-Users] " Sergei Shtylyov
@ 2006-12-02 16:33 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-02 16:33 UTC (permalink / raw)
To: u-boot-users; +Cc: linuxppc-embedded
Hello.
Sergei Shtylyov wrote:
> Well, I'm having a very related issue with the U-Boot on MPC85xx: recently
> I've noticed that it started allocating PCI I/O space from 0 (while the older
> versions started from 0x1000). The IDE core can't tolerate this, giving me
> such messages on bootup:
> PDC20269: inconsistent baseregs (BIOS) for port 0, skipping
> when I have Promise Ultra133TX2 card inserted into PCI alone. I've looked thru
> the U-Boot sources and commit history but failed to locate the change that led
> to this...
It's actually much worse than just that. When I also plug in some other
PCI card so Ultra133TX2 doesn't get the zero addresses anymore, I'm getting this:
eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin
<saw@saw.sw.com.sg> and others
eth3: Invalid EEPROM checksum 0xfffe, check settings before activating this
device!
eth3: OEM i82557/i82558 10/100 Ethernet, 00:00:00:00:FF:FF, IRQ 52.
[...]
PDC20269: 100% native mode on irq 51
ide2: BM-DMA at 0x0060-0x0067, BIOS settings: hde:pio, hdf:pio
PDC20269: simplex device: DMA disabled
ide3: PDC20269 Bus-Master DMA disabled (BIOS)
I've just verified that both these cards are working OK in x86 box
As for the simplex message, I've encountered this some months ago and it was
caused by invalid programming of the MPC85xx bridge PCI/X outbound translation
address register for the I/O space or at least by the non-zero value of the
bus I/O address in the "ranges" property of the bridge device node in the
device tree... I'm somewhat confused now since I know that the relevant U-Boot
code has been fixed but it looks like that made it only worse -- I was using
the custom patched version of U-Boot before which missed that fix:
http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commitdiff;h=97074ed9655309b64231bc2cee69fe85399f8055
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* [U-Boot-Users] U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region)
@ 2006-12-02 16:33 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-02 16:33 UTC (permalink / raw)
To: u-boot
Hello.
Sergei Shtylyov wrote:
> Well, I'm having a very related issue with the U-Boot on MPC85xx: recently
> I've noticed that it started allocating PCI I/O space from 0 (while the older
> versions started from 0x1000). The IDE core can't tolerate this, giving me
> such messages on bootup:
> PDC20269: inconsistent baseregs (BIOS) for port 0, skipping
> when I have Promise Ultra133TX2 card inserted into PCI alone. I've looked thru
> the U-Boot sources and commit history but failed to locate the change that led
> to this...
It's actually much worse than just that. When I also plug in some other
PCI card so Ultra133TX2 doesn't get the zero addresses anymore, I'm getting this:
eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin
<saw@saw.sw.com.sg> and others
eth3: Invalid EEPROM checksum 0xfffe, check settings before activating this
device!
eth3: OEM i82557/i82558 10/100 Ethernet, 00:00:00:00:FF:FF, IRQ 52.
[...]
PDC20269: 100% native mode on irq 51
ide2: BM-DMA at 0x0060-0x0067, BIOS settings: hde:pio, hdf:pio
PDC20269: simplex device: DMA disabled
ide3: PDC20269 Bus-Master DMA disabled (BIOS)
I've just verified that both these cards are working OK in x86 box
As for the simplex message, I've encountered this some months ago and it was
caused by invalid programming of the MPC85xx bridge PCI/X outbound translation
address register for the I/O space or at least by the non-zero value of the
bus I/O address in the "ranges" property of the bridge device node in the
device tree... I'm somewhat confused now since I know that the relevant U-Boot
code has been fixed but it looks like that made it only worse -- I was using
the custom patched version of U-Boot before which missed that fix:
http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commitdiff;h=97074ed9655309b64231bc2cee69fe85399f8055
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-11-30 16:52 pata_sl82c105 can not reserve IO region Olaf Hering
2006-11-30 17:10 ` Alan
@ 2006-12-03 17:12 ` Olaf Hering
2006-12-03 22:24 ` Olaf Hering
2006-12-03 23:07 ` Alan
2006-12-04 12:38 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
2006-12-04 12:40 ` [PATCH] add delay around sl82c105_reset_engine calls Olaf Hering
3 siblings, 2 replies; 93+ messages in thread
From: Olaf Hering @ 2006-12-03 17:12 UTC (permalink / raw)
To: linux-ide, linuxppc-dev
On Thu, Nov 30, Olaf Hering wrote:
>
> pata_sl82c105 can be used on the ppc64 POWER4 system p610, p615 and p630
> for the onboard IDE CD drive. It could be also used for ppc32 Motorola
> PowerStack PReP systems.
>
> Unfortunately, it doesnt work for me on the p630:
>
> PCI: Enabling device: (0000:00:03.1), cmd 141
> PCI: Unable to reserve I/O region #6:10@0 for device 0000:00:03.1
> pata_sl82c105: probe of 0000:00:03.1 failed with error -16
I modified pci_request_regions to request only the first 5 regions.
Now the detection works, but access to the drive does not work:
[ 175.479288] PCI: Enabling device: (0000:00:03.1), cmd 141
[ 181.533396] ata1: PATA max MWDMA2 cmd 0xF000 ctl 0xF012 bmdma 0xF040 irq 86
[ 175.542281] scsi2 : pata_sl82c105
[ 175.879574] ata1.00: ATAPI, max UDMA/33
[ 176.055641] ata1.00: configured for MWDMA2
[ 176.065579] scsi 2:0:0:0: CD-ROM LG CD-ROM CRD-8484B 2.01 PQ: 0 ANSI: 5
[ 176.077138] sr0: scsi3-mmc drive: 48x/48x cd/rw xa/form2 cdda tray
[ 176.086020] Uniform CD-ROM driver Revision: 3.20
[ 176.094959] sr 2:0:0:0: Attached scsi CD-ROM sr0
[ 176.103932] sr 2:0:0:0: Attached scsi generic sg4 type 5
[ 194.947620] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
[ 194.947628] ata1.00: (BMDMA stat 0x41)
[ 194.947693] ata1.00: tag 0 cmd 0xa0 Emask 0x4 stat 0x40 err 0x0 (timeout)
[ 194.947714] ata1: soft resetting port
[ 195.448133] ata1.00: configured for MWDMA2
[ 195.448157] ata1: EH complete
[ 200.450116] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
[ 200.450124] ata1.00: (BMDMA stat 0x41)
[ 200.450132] ata1.00: tag 0 cmd 0xa0 Emask 0x4 stat 0x40 err 0x0 (timeout)
[ 200.450153] ata1: soft resetting port
[ 200.945670] ata1.00: configured for MWDMA2
[ 200.945695] ata1: EH complete
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-03 17:12 ` Olaf Hering
@ 2006-12-03 22:24 ` Olaf Hering
2006-12-03 23:23 ` Alan
2006-12-03 23:07 ` Alan
1 sibling, 1 reply; 93+ messages in thread
From: Olaf Hering @ 2006-12-03 22:24 UTC (permalink / raw)
To: linux-ide, linuxppc-dev
On Sun, Dec 03, Olaf Hering wrote:
> [ 194.947620] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
> [ 194.947628] ata1.00: (BMDMA stat 0x41)
> [ 194.947693] ata1.00: tag 0 cmd 0xa0 Emask 0x4 stat 0x40 err 0x0 (timeout)
> [ 194.947714] ata1: soft resetting port
> [ 195.448133] ata1.00: configured for MWDMA2
> [ 195.448157] ata1: EH complete
> [ 200.450116] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
> [ 200.450124] ata1.00: (BMDMA stat 0x41)
> [ 200.450132] ata1.00: tag 0 cmd 0xa0 Emask 0x4 stat 0x40 err 0x0 (timeout)
> [ 200.450153] ata1: soft resetting port
> [ 200.945670] ata1.00: configured for MWDMA2
> [ 200.945695] ata1: EH complete
This change seems to fix it, only a single reset occurs. I think that
one is normal when a CD is in the drive during bootup, maybe it leaves
the drive in a confused state.
@@ -167,9 +175,13 @@ static void sl82c105_reset_engine(struct
struct pci_dev *pdev = to_pci_dev(ap->host->dev);
u16 val;
+ udelay(42);
pci_read_config_word(pdev, 0x7E, &val);
+ udelay(10);
pci_write_config_word(pdev, 0x7E, val | 4);
+ udelay(10);
pci_write_config_word(pdev, 0x7E, val & ~4);
+ udelay(42);
}
/**
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-03 17:12 ` Olaf Hering
2006-12-03 22:24 ` Olaf Hering
@ 2006-12-03 23:07 ` Alan
1 sibling, 0 replies; 93+ messages in thread
From: Alan @ 2006-12-03 23:07 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
> I modified pci_request_regions to request only the first 5 regions.
> Now the detection works, but access to the drive does not work:
Some drives do that with the new EH code. Its ATAPI specific and I don't
know why. With the older libata it all works. It may also be a driver bug
but since it also pops up all over the place with the new EH code and not
the old its damn near impossible to debug any PATA problems that look
like this at the moment.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-03 22:24 ` Olaf Hering
@ 2006-12-03 23:23 ` Alan
2006-12-04 0:30 ` Olaf Hering
0 siblings, 1 reply; 93+ messages in thread
From: Alan @ 2006-12-03 23:23 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
On Sun, 3 Dec 2006 23:24:49 +0100 (MET)
Olaf Hering <olaf@aepfle.de> wrote:
> This change seems to fix it, only a single reset occurs. I think that
> one is normal when a CD is in the drive during bootup, maybe it leaves
> the drive in a confused state.
>
> @@ -167,9 +175,13 @@ static void sl82c105_reset_engine(struct
> struct pci_dev *pdev = to_pci_dev(ap->host->dev);
> u16 val;
>
> + udelay(42);
> pci_read_config_word(pdev, 0x7E, &val);
> + udelay(10);
> pci_write_config_word(pdev, 0x7E, val | 4);
> + udelay(10);
> pci_write_config_word(pdev, 0x7E, val & ~4);
> + udelay(42);
> }
Where do you get the delays from ? There is nothing in the documentation
or errata sheets I have here on that subject. Is this guesswork, divine
inspiration or an errata note I don't posess ?
In the absence of documented behaviour its seem to me much more likely
that the delay is actually either moving a race condition in the libata
code, or perhaps just allowing some time for the CD to "recover" in which
case it's perhaps a bit of a delay we need in libata. That would explain
why the old -> new change broke stuff.
Either way its most interesting it makes a difference.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-01 22:19 ` Benjamin Herrenschmidt
@ 2006-12-03 23:39 ` Alan
-1 siblings, 0 replies; 93+ messages in thread
From: Alan @ 2006-12-03 23:39 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Sergei Shtylyov, Olaf Hering, linux-ide, linuxppc-dev
On Sat, 02 Dec 2006 09:19:43 +1100
> We don't have a choice but to trust the firmware on those machines. We
> can't assign things ourselves on most of them for various reasons (in
> many cases, the hypervisor won't let us).
>
> So you suggest that I clear resource->flags in that case ?
That will do the trick yes.
> I think part of the problem is a firmware bug in that the firmware data
> actually decodes to BAR 5 is assigned to address 0 ... I suppose we can
> consider that address 0 is never valid on those machines and consider
> that as unassigned
The core PCI code already "knows" that zero in a resource_start() is
unassigned
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
@ 2006-12-03 23:39 ` Alan
0 siblings, 0 replies; 93+ messages in thread
From: Alan @ 2006-12-03 23:39 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linux-ide, Olaf Hering, linuxppc-dev
On Sat, 02 Dec 2006 09:19:43 +1100
> We don't have a choice but to trust the firmware on those machines. We
> can't assign things ourselves on most of them for various reasons (in
> many cases, the hypervisor won't let us).
>
> So you suggest that I clear resource->flags in that case ?
That will do the trick yes.
> I think part of the problem is a firmware bug in that the firmware data
> actually decodes to BAR 5 is assigned to address 0 ... I suppose we can
> consider that address 0 is never valid on those machines and consider
> that as unassigned
The core PCI code already "knows" that zero in a resource_start() is
unassigned
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-03 23:23 ` Alan
@ 2006-12-04 0:30 ` Olaf Hering
2006-12-04 9:21 ` Olaf Hering
0 siblings, 1 reply; 93+ messages in thread
From: Olaf Hering @ 2006-12-04 0:30 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, linuxppc-dev
On Sun, Dec 03, Alan wrote:
> On Sun, 3 Dec 2006 23:24:49 +0100 (MET)
> Olaf Hering <olaf@aepfle.de> wrote:
>
> > This change seems to fix it, only a single reset occurs. I think that
> > one is normal when a CD is in the drive during bootup, maybe it leaves
> > the drive in a confused state.
> >
> > @@ -167,9 +175,13 @@ static void sl82c105_reset_engine(struct
> > struct pci_dev *pdev = to_pci_dev(ap->host->dev);
> > u16 val;
> >
> > + udelay(42);
> > pci_read_config_word(pdev, 0x7E, &val);
> > + udelay(10);
> > pci_write_config_word(pdev, 0x7E, val | 4);
> > + udelay(10);
> > pci_write_config_word(pdev, 0x7E, val & ~4);
> > + udelay(42);
> > }
>
> Where do you get the delays from ? There is nothing in the documentation
> or errata sheets I have here on that subject. Is this guesswork, divine
> inspiration or an errata note I don't posess ?
Just guessing.
The udelay(10) calls can go, then it still works.
I moved the delays to the callers, which should have been equivalent,
but it failed again.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: pata_sl82c105 can not reserve IO region
2006-12-04 0:30 ` Olaf Hering
@ 2006-12-04 9:21 ` Olaf Hering
0 siblings, 0 replies; 93+ messages in thread
From: Olaf Hering @ 2006-12-04 9:21 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, linuxppc-dev
On Mon, Dec 04, Olaf Hering wrote:
> On Sun, Dec 03, Alan wrote:
>
> > On Sun, 3 Dec 2006 23:24:49 +0100 (MET)
> > Olaf Hering <olaf@aepfle.de> wrote:
> >
> > > This change seems to fix it, only a single reset occurs. I think that
> > > one is normal when a CD is in the drive during bootup, maybe it leaves
> > > the drive in a confused state.
> > >
> > > @@ -167,9 +175,13 @@ static void sl82c105_reset_engine(struct
> > > struct pci_dev *pdev = to_pci_dev(ap->host->dev);
> > > u16 val;
> > >
> > > + udelay(42);
> > > pci_read_config_word(pdev, 0x7E, &val);
> > > + udelay(10);
> > > pci_write_config_word(pdev, 0x7E, val | 4);
> > > + udelay(10);
> > > pci_write_config_word(pdev, 0x7E, val & ~4);
> > > + udelay(42);
> > > }
> >
> > Where do you get the delays from ? There is nothing in the documentation
> > or errata sheets I have here on that subject. Is this guesswork, divine
> > inspiration or an errata note I don't posess ?
>
> Just guessing.
> The udelay(10) calls can go, then it still works.
> I moved the delays to the callers, which should have been equivalent,
> but it failed again.
This patch gives still two resets during the first access, but the
access works ok afterwards:
Index: linux-2.6.19/drivers/ata/pata_sl82c105.c
===================================================================
--- linux-2.6.19.orig/drivers/ata/pata_sl82c105.c
+++ linux-2.6.19/drivers/ata/pata_sl82c105.c
@@ -187,7 +187,9 @@ static void sl82c105_bmdma_start(struct
{
struct ata_port *ap = qc->ap;
+ udelay(50);
sl82c105_reset_engine(ap);
+ udelay(50);
/* Set the clocks for DMA */
sl82c105_configure_dmamode(ap, qc->dev);
@@ -216,6 +218,7 @@ static void sl82c105_bmdma_stop(struct a
ata_bmdma_stop(qc);
sl82c105_reset_engine(ap);
+ udelay(50);
/* This will redo the initial setup of the DMA device to matching
PIO timings */
^ permalink raw reply [flat|nested] 93+ messages in thread
* [PATCH] mark PCI resource with start 0 as unassigned
2006-11-30 16:52 pata_sl82c105 can not reserve IO region Olaf Hering
2006-11-30 17:10 ` Alan
2006-12-03 17:12 ` Olaf Hering
@ 2006-12-04 12:38 ` Olaf Hering
2006-12-04 12:44 ` Segher Boessenkool
2006-12-04 12:47 ` Sergei Shtylyov
2006-12-04 12:40 ` [PATCH] add delay around sl82c105_reset_engine calls Olaf Hering
3 siblings, 2 replies; 93+ messages in thread
From: Olaf Hering @ 2006-12-04 12:38 UTC (permalink / raw)
To: linux-ide, linuxppc-dev
mark pci resources with start 0 as unassigned
libata calls pci_request_regions to claim bar 0 - 5
bar 5 has base 0.
Tested on a p630 in SMP mode with pata_sl82c105
00:03.1 IDE interface: Symphony Labs SL82c105 (rev 05) (prog-if 8f [Master SecP SecO PriP PriO])
Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 86
Region 0: I/O ports at 3fd3000f000 [size=8]
Region 1: I/O ports at 3fd3000f010 [size=4]
Region 2: I/O ports at 3fd3000f020 [size=8]
Region 3: I/O ports at 3fd3000f030 [size=4]
Region 4: I/O ports at 3fd3000f040 [size=16]
Region 5: I/O ports at 3fd30000000 [size=16]
00: ad 10 05 01 41 01 80 02 05 8f 01 01 08 48 80 00
10: 01 f0 00 00 11 f0 00 00 21 f0 00 00 31 f0 00 00
20: 41 f0 00 00 01 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 56 01 02 28
40: b3 08 ff 00 09 09 00 00 09 09 00 00 09 09 00 00
50: 09 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 ff 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
name "ide"
linux,phandle 00d5cdc0 (14011840)
assigned-addresses 81001910 00000000 0000f000 00000000 00000008 81001914
00000000 0000f010 00000000 00000004 81001918 00000000
0000f020 00000000 00000008 8100191c 00000000 0000f030
00000000 00000004 81001920 00000000 0000f040 00000000
00000010 81001924 00000000 00000000 00000000 00000010
interrupts 00000003
built-in
#size-cells 00000000
#address-cells 00000001
device_type "ide"
reg 00001900 00000000 00000000 00000000 00000000
41001910 00000000 00000000 00000000 00000008
41001914 00000000 00000000 00000000 00000004
41001918 00000000 00000000 00000000 00000008
4100191c 00000000 00000000 00000000 00000004
41001920 00000000 00000000 00000000 00000010
41001924 00000000 00000000 00000000 00000010
compatible "pci10ad,105"
"pciclass,01018f"
ibm,fw-slot-number 00000000
fast-back-to-back
devsel-speed 00000001
max-latency 00000028 (40)
min-grant 00000002
class-code 0001018f (65935)
revision-id 00000005
device-id 00000105 (261)
vendor-id 000010ad (4269)
ibm,loc-code "U0.1-P1/Q6"
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
arch/powerpc/kernel/pci_64.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
struct pci_controller *hose = pci_bus_to_host(dev->bus);
unsigned long start, end, mask, offset;
+ /*
+ * tell the core code that this ressource is unassigned
+ * fixes p630 winbond IDE with libata
+ */
+ if (res->start == 0) {
+ res->flags = 0;
+ return;
+ }
if (res->flags & IORESOURCE_IO) {
offset = (unsigned long)hose->io_base_virt - pci_io_base;
^ permalink raw reply [flat|nested] 93+ messages in thread
* [PATCH] add delay around sl82c105_reset_engine calls
2006-11-30 16:52 pata_sl82c105 can not reserve IO region Olaf Hering
` (2 preceding siblings ...)
2006-12-04 12:38 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
@ 2006-12-04 12:40 ` Olaf Hering
2006-12-04 13:02 ` Alan
3 siblings, 1 reply; 93+ messages in thread
From: Olaf Hering @ 2006-12-04 12:40 UTC (permalink / raw)
To: linux-ide, linuxppc-dev
the hald media changed polling does really confuse things.
noone knows why the delays are needed, but they give us access to
the CD.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
drivers/scsi/pata_sl82c105.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/scsi/pata_sl82c105.c
+++ b/drivers/scsi/pata_sl82c105.c
@@ -187,7 +187,9 @@ static void sl82c105_bmdma_start(struct
{
struct ata_port *ap = qc->ap;
+ udelay(50);
sl82c105_reset_engine(ap);
+ udelay(50);
/* Set the clocks for DMA */
sl82c105_configure_dmamode(ap, qc->dev);
@@ -216,6 +218,7 @@ static void sl82c105_bmdma_stop(struct a
ata_bmdma_stop(qc);
sl82c105_reset_engine(ap);
+ udelay(50);
/* This will redo the initial setup of the DMA device to matching
PIO timings */
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 12:38 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
@ 2006-12-04 12:44 ` Segher Boessenkool
2006-12-04 12:50 ` Sergei Shtylyov
2006-12-04 12:56 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
2006-12-04 12:47 ` Sergei Shtylyov
1 sibling, 2 replies; 93+ messages in thread
From: Segher Boessenkool @ 2006-12-04 12:44 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
> --- a/arch/powerpc/kernel/pci_64.c
> +++ b/arch/powerpc/kernel/pci_64.c
> @@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
> struct pci_controller *hose = pci_bus_to_host(dev->bus);
> unsigned long start, end, mask, offset;
>
> + /*
> + * tell the core code that this ressource is unassigned
> + * fixes p630 winbond IDE with libata
> + */
> + if (res->start == 0) {
> + res->flags = 0;
> + return;
> + }
> if (res->flags & IORESOURCE_IO) {
> offset = (unsigned long)hose->io_base_virt - pci_io_base;
Please make this run on pSeries only; on a PowerMac for
example, it's totally normal that the first PCI legacy I/O
BAR in the system gets assigned 0.
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 12:38 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
2006-12-04 12:44 ` Segher Boessenkool
@ 2006-12-04 12:47 ` Sergei Shtylyov
1 sibling, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 12:47 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
Hello.
Olaf Hering wrote:
> mark pci resources with start 0 as unassigned
> libata calls pci_request_regions to claim bar 0 - 5
> bar 5 has base 0.
> Tested on a p630 in SMP mode with pata_sl82c105
[...]
> --- a/arch/powerpc/kernel/pci_64.c
> +++ b/arch/powerpc/kernel/pci_64.c
> @@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
> struct pci_controller *hose = pci_bus_to_host(dev->bus);
> unsigned long start, end, mask, offset;
>
> + /*
> + * tell the core code that this ressource is unassigned
> + * fixes p630 winbond IDE with libata
> + */
> + if (res->start == 0) {
> + res->flags = 0;
Wouldn't it be better to set flags to IORESOURCE_UNSET to get it reassigned?
> + return;
> + }
> if (res->flags & IORESOURCE_IO) {
> offset = (unsigned long)hose->io_base_virt - pci_io_base;
>
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 12:44 ` Segher Boessenkool
@ 2006-12-04 12:50 ` Sergei Shtylyov
2006-12-04 12:56 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
1 sibling, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 12:50 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Olaf Hering, linux-ide, linuxppc-dev
Hello.
Segher Boessenkool wrote:
>>--- a/arch/powerpc/kernel/pci_64.c
>>+++ b/arch/powerpc/kernel/pci_64.c
>>@@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
>> struct pci_controller *hose = pci_bus_to_host(dev->bus);
>> unsigned long start, end, mask, offset;
>>
>>+ /*
>>+ * tell the core code that this ressource is unassigned
>>+ * fixes p630 winbond IDE with libata
>>+ */
>>+ if (res->start == 0) {
>>+ res->flags = 0;
>>+ return;
>>+ }
>> if (res->flags & IORESOURCE_IO) {
>> offset = (unsigned long)hose->io_base_virt - pci_io_base;
>
>
> Please make this run on pSeries only; on a PowerMac for
> example, it's totally normal that the first PCI legacy I/O
> BAR in the system gets assigned 0.
What do you mean by legacy I/O BAR? If you mean IDE controller, that would
drive IDE core mad like this:
W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
> Segher
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2006-12-04 12:50 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 12:50 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linux-ide, Olaf Hering, linuxppc-dev
Hello.
Segher Boessenkool wrote:
>>--- a/arch/powerpc/kernel/pci_64.c
>>+++ b/arch/powerpc/kernel/pci_64.c
>>@@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
>> struct pci_controller *hose = pci_bus_to_host(dev->bus);
>> unsigned long start, end, mask, offset;
>>
>>+ /*
>>+ * tell the core code that this ressource is unassigned
>>+ * fixes p630 winbond IDE with libata
>>+ */
>>+ if (res->start == 0) {
>>+ res->flags = 0;
>>+ return;
>>+ }
>> if (res->flags & IORESOURCE_IO) {
>> offset = (unsigned long)hose->io_base_virt - pci_io_base;
>
>
> Please make this run on pSeries only; on a PowerMac for
> example, it's totally normal that the first PCI legacy I/O
> BAR in the system gets assigned 0.
What do you mean by legacy I/O BAR? If you mean IDE controller, that would
drive IDE core mad like this:
W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
> Segher
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 12:50 ` Sergei Shtylyov
@ 2006-12-04 12:54 ` Segher Boessenkool
-1 siblings, 0 replies; 93+ messages in thread
From: Segher Boessenkool @ 2006-12-04 12:54 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: Olaf Hering, linux-ide, linuxppc-dev
>> Please make this run on pSeries only; on a PowerMac for
>> example, it's totally normal that the first PCI legacy I/O
>> BAR in the system gets assigned 0.
>
> What do you mean by legacy I/O BAR?
Any PCI BAR with bits 1:0 == 0b01.
> If you mean IDE controller, that would drive IDE core mad like this:
>
> W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
So that needs fixing too, then.
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2006-12-04 12:54 ` Segher Boessenkool
0 siblings, 0 replies; 93+ messages in thread
From: Segher Boessenkool @ 2006-12-04 12:54 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: linux-ide, Olaf Hering, linuxppc-dev
>> Please make this run on pSeries only; on a PowerMac for
>> example, it's totally normal that the first PCI legacy I/O
>> BAR in the system gets assigned 0.
>
> What do you mean by legacy I/O BAR?
Any PCI BAR with bits 1:0 == 0b01.
> If you mean IDE controller, that would drive IDE core mad like this:
>
> W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
So that needs fixing too, then.
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 12:44 ` Segher Boessenkool
2006-12-04 12:50 ` Sergei Shtylyov
@ 2006-12-04 12:56 ` Olaf Hering
2006-12-04 13:05 ` Segher Boessenkool
1 sibling, 1 reply; 93+ messages in thread
From: Olaf Hering @ 2006-12-04 12:56 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linux-ide, linuxppc-dev
On Mon, Dec 04, Segher Boessenkool wrote:
> >--- a/arch/powerpc/kernel/pci_64.c
> >+++ b/arch/powerpc/kernel/pci_64.c
> >@@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
> > struct pci_controller *hose = pci_bus_to_host(dev->bus);
> > unsigned long start, end, mask, offset;
> >
> >+ /*
> >+ * tell the core code that this ressource is unassigned
> >+ * fixes p630 winbond IDE with libata
> >+ */
> >+ if (res->start == 0) {
> >+ res->flags = 0;
> >+ return;
> >+ }
> > if (res->flags & IORESOURCE_IO) {
> > offset = (unsigned long)hose->io_base_virt - pci_io_base;
>
> Please make this run on pSeries only; on a PowerMac for
I could just match for winbond an start == 0.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] add delay around sl82c105_reset_engine calls
2006-12-04 12:40 ` [PATCH] add delay around sl82c105_reset_engine calls Olaf Hering
@ 2006-12-04 13:02 ` Alan
2006-12-04 13:12 ` Olaf Hering
2007-01-04 6:42 ` Olaf Hering
0 siblings, 2 replies; 93+ messages in thread
From: Alan @ 2006-12-04 13:02 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
On Mon, 4 Dec 2006 13:40:26 +0100 (MET)
Olaf Hering <olaf@aepfle.de> wrote:
>
>
> the hald media changed polling does really confuse things.
> noone knows why the delays are needed, but they give us access to
> the CD.
Can you tell me what happens if you completely pull the reset out of the
dma_end function. Do you still need delays then.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 12:56 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
@ 2006-12-04 13:05 ` Segher Boessenkool
0 siblings, 0 replies; 93+ messages in thread
From: Segher Boessenkool @ 2006-12-04 13:05 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
>>> --- a/arch/powerpc/kernel/pci_64.c
>>> +++ b/arch/powerpc/kernel/pci_64.c
>>> @@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
>>> struct pci_controller *hose = pci_bus_to_host(dev->bus);
>>> unsigned long start, end, mask, offset;
>>>
>>> + /*
>>> + * tell the core code that this ressource is unassigned
>>> + * fixes p630 winbond IDE with libata
>>> + */
>>> + if (res->start == 0) {
>>> + res->flags = 0;
>>> + return;
>>> + }
>>> if (res->flags & IORESOURCE_IO) {
>>> offset = (unsigned long)hose->io_base_virt - pci_io_base;
>>
>> Please make this run on pSeries only; on a PowerMac for
>
> I could just match for winbond an start == 0.
Why not fix it properly? The "0 means unassigned" thing is
something this specific firmware does, it is not a standard
or anything, and certainly not a property of the winbond
hardware (it _will_ react to legacy I/O at address 0).
So make this new code only run when this firmware is used,
too (perhaps do a check in prom_init and remove this BAR
from the assigned addresses property?)
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 12:54 ` Segher Boessenkool
@ 2006-12-04 13:08 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 13:08 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Olaf Hering, linux-ide, linuxppc-dev
Hello.
Segher Boessenkool wrote:
>>> Please make this run on pSeries only; on a PowerMac for
>>> example, it's totally normal that the first PCI legacy I/O
>>> BAR in the system gets assigned 0.
>> What do you mean by legacy I/O BAR?
> Any PCI BAR with bits 1:0 == 0b01.
>> If you mean IDE controller, that would drive IDE core mad like this:
>>
>> W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
> So that needs fixing too, then.
I'd agree here, that check in the IDE code seems like being too x86
specific. I'm having issues with it as well on MPC85xx/U-Boot...
> Segher
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2006-12-04 13:08 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 13:08 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linux-ide, Olaf Hering, linuxppc-dev
Hello.
Segher Boessenkool wrote:
>>> Please make this run on pSeries only; on a PowerMac for
>>> example, it's totally normal that the first PCI legacy I/O
>>> BAR in the system gets assigned 0.
>> What do you mean by legacy I/O BAR?
> Any PCI BAR with bits 1:0 == 0b01.
>> If you mean IDE controller, that would drive IDE core mad like this:
>>
>> W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
> So that needs fixing too, then.
I'd agree here, that check in the IDE code seems like being too x86
specific. I'm having issues with it as well on MPC85xx/U-Boot...
> Segher
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] add delay around sl82c105_reset_engine calls
2006-12-04 13:02 ` Alan
@ 2006-12-04 13:12 ` Olaf Hering
2007-01-04 6:42 ` Olaf Hering
1 sibling, 0 replies; 93+ messages in thread
From: Olaf Hering @ 2006-12-04 13:12 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, linuxppc-dev
On Mon, Dec 04, Alan wrote:
> On Mon, 4 Dec 2006 13:40:26 +0100 (MET)
> Olaf Hering <olaf@aepfle.de> wrote:
>
> >
> >
> > the hald media changed polling does really confuse things.
> > noone knows why the delays are needed, but they give us access to
> > the CD.
>
> Can you tell me what happens if you completely pull the reset out of the
> dma_end function. Do you still need delays then.
Did you mean like this?
@@ -215,7 +217,10 @@ static void sl82c105_bmdma_stop(struct a
struct ata_port *ap = qc->ap;
ata_bmdma_stop(qc);
+#if 0
sl82c105_reset_engine(ap);
+ udelay(50);
+#endif
/* This will redo the initial setup of the DMA device to matching
PIO timings */
[ 315.923917] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
[ 315.923927] ata1.00: (BMDMA stat 0x41)
[ 315.923935] ata1.00: tag 0 cmd 0xa0 Emask 0x4 stat 0x40 err 0x0 (timeout)
[ 315.924039] ata1: soft resetting port
[ 346.243816] ata1.00: qc timeout (cmd 0xa1)
[ 346.243829] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
[ 346.243882] ata1.00: revalidation failed (errno=-5)
[ 346.243891] ata1: failed to recover some devices, retrying in 5 secs
[ 351.253802] ata1: soft resetting port
[ 381.573813] ata1.00: qc timeout (cmd 0xa1)
[ 381.573823] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
[ 381.573876] ata1.00: revalidation failed (errno=-5)
[ 381.573884] ata1: failed to recover some devices, retrying in 5 secs
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 13:08 ` Sergei Shtylyov
(?)
@ 2006-12-04 13:21 ` Alan
2006-12-04 13:25 ` Segher Boessenkool
2006-12-04 13:27 ` Sergei Shtylyov
-1 siblings, 2 replies; 93+ messages in thread
From: Alan @ 2006-12-04 13:21 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: linux-ide, Olaf Hering, linuxppc-dev
On Mon, 04 Dec 2006 16:08:46 +0300
Sergei Shtylyov <sshtylyov@ru.mvista.com> wrote:
> >> W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
> > So that needs fixing too, then.
Both PCI core and IDE interpret a zero length resource as unassigned.
That is probably better than clearing the flags in retrospect.
> I'd agree here, that check in the IDE code seems like being too x86
> specific. I'm having issues with it as well on MPC85xx/U-Boot...
setup-pci is for SFF8038i devices. It therefore knows that for assigned
resources they must be I/O. It also assumes that zero is not a valid I/O
port just like zero is not a valid IRQ. Stick a real IDE resource at zero
and drivers/ide can't cope.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 13:21 ` Alan
@ 2006-12-04 13:25 ` Segher Boessenkool
2006-12-04 13:27 ` Sergei Shtylyov
1 sibling, 0 replies; 93+ messages in thread
From: Segher Boessenkool @ 2006-12-04 13:25 UTC (permalink / raw)
To: Alan; +Cc: Sergei Shtylyov, Olaf Hering, linux-ide, linuxppc-dev
> setup-pci is for SFF8038i devices. It therefore knows that for
> assigned
> resources they must be I/O. It also assumes that zero is not a
> valid I/O
> port just like zero is not a valid IRQ. Stick a real IDE resource
> at zero
> and drivers/ide can't cope.
But 0 _is_ a valid PCI I/O address. Do we now have to start
using "virtual I/O addresses", analogue to the IRQ situation,
or can these bad assumptions be fixed instead?
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2006-12-04 13:25 ` Segher Boessenkool
0 siblings, 0 replies; 93+ messages in thread
From: Segher Boessenkool @ 2006-12-04 13:25 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, Olaf Hering, linuxppc-dev
> setup-pci is for SFF8038i devices. It therefore knows that for
> assigned
> resources they must be I/O. It also assumes that zero is not a
> valid I/O
> port just like zero is not a valid IRQ. Stick a real IDE resource
> at zero
> and drivers/ide can't cope.
But 0 _is_ a valid PCI I/O address. Do we now have to start
using "virtual I/O addresses", analogue to the IRQ situation,
or can these bad assumptions be fixed instead?
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 13:21 ` Alan
@ 2006-12-04 13:27 ` Sergei Shtylyov
2006-12-04 13:27 ` Sergei Shtylyov
1 sibling, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 13:27 UTC (permalink / raw)
To: Alan; +Cc: Segher Boessenkool, Olaf Hering, linux-ide, linuxppc-dev
Hello.
Alan wrote:
>>>>W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
>>>So that needs fixing too, then.
> Both PCI core and IDE interpret a zero length resource as unassigned.
This is not about 0-length resource, this is about 0-address. Look at
ide_hwif_confiure() in drivers/ide/setup-pci.c...
> That is probably better than clearing the flags in retrospect.
>> I'd agree here, that check in the IDE code seems like being too x86
>>specific. I'm having issues with it as well on MPC85xx/U-Boot...
> setup-pci is for SFF8038i devices. It therefore knows that for assigned
> resources they must be I/O. It also assumes that zero is not a valid I/O
> port just like zero is not a valid IRQ.
You should know that the IRQ assumption is *not* true even for x86 since
IRQ0 is and has always been a perfectly valid IRQ (used by PIT).
> Stick a real IDE resource at zero
> and drivers/ide can't cope.
Yeah, I've noticed. Unfortunately, a lot of PPC platforms (at least) are
doing exactly this...
> Alan
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2006-12-04 13:27 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 13:27 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, Olaf Hering, linuxppc-dev
Hello.
Alan wrote:
>>>>W82C105_IDE: inconsistent baseregs (BIOS) for port 0, skipping
>>>So that needs fixing too, then.
> Both PCI core and IDE interpret a zero length resource as unassigned.
This is not about 0-length resource, this is about 0-address. Look at
ide_hwif_confiure() in drivers/ide/setup-pci.c...
> That is probably better than clearing the flags in retrospect.
>> I'd agree here, that check in the IDE code seems like being too x86
>>specific. I'm having issues with it as well on MPC85xx/U-Boot...
> setup-pci is for SFF8038i devices. It therefore knows that for assigned
> resources they must be I/O. It also assumes that zero is not a valid I/O
> port just like zero is not a valid IRQ.
You should know that the IRQ assumption is *not* true even for x86 since
IRQ0 is and has always been a perfectly valid IRQ (used by PIT).
> Stick a real IDE resource at zero
> and drivers/ide can't cope.
Yeah, I've noticed. Unfortunately, a lot of PPC platforms (at least) are
doing exactly this...
> Alan
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 13:25 ` Segher Boessenkool
(?)
@ 2006-12-04 14:15 ` Alan
-1 siblings, 0 replies; 93+ messages in thread
From: Alan @ 2006-12-04 14:15 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linux-ide, Olaf Hering, linuxppc-dev
On Mon, 4 Dec 2006 14:25:04 +0100
Segher Boessenkool <segher@kernel.crashing.org> wrote:
> But 0 _is_ a valid PCI I/O address. Do we now have to start
> using "virtual I/O addresses", analogue to the IRQ situation,
> or can these bad assumptions be fixed instead?
Send patches to Bartlomiej now he is back in circulation.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 13:27 ` Sergei Shtylyov
(?)
@ 2006-12-04 14:22 ` Alan
2006-12-04 14:34 ` Sergei Shtylyov
2006-12-05 4:41 ` Benjamin Herrenschmidt
-1 siblings, 2 replies; 93+ messages in thread
From: Alan @ 2006-12-04 14:22 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci
On Mon, 04 Dec 2006 16:27:47 +0300
Sergei Shtylyov <sshtylyov@ru.mvista.com> wrote:
> > Both PCI core and IDE interpret a zero length resource as unassigned.
>
> This is not about 0-length resource, this is about 0-address. Look at
> ide_hwif_confiure() in drivers/ide/setup-pci.c...
The discussion I was having was about sl82cxx and handling unassigned
resources. The zero address isn't relevant to that.
> You should know that the IRQ assumption is *not* true even for x86 since
> IRQ0 is and has always been a perfectly valid IRQ (used by PIT).
Please see previous million recyclings of that discussion and Linus
answer.
> > Stick a real IDE resource at zero
> > and drivers/ide can't cope.
>
> Yeah, I've noticed. Unfortunately, a lot of PPC platforms (at least) are
> doing exactly this...
The checks need pushing upwards and removing from their current place -
the pci layer should check the resource length, the isa pnp should I
believe check for zero address etc.
libata makes a similar assumption in ata_resources_present() as someone
(GregKH ???) needs to define what the proper way to encode "resource not
allocated" into the PCI resources should be. If someone on the PCI list
(cc'd) or Greg can give a definitive answer then we can go fix the
offenders now.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 14:22 ` What is the correct way to indicate an unassigned PCI resource ? Alan
@ 2006-12-04 14:34 ` Sergei Shtylyov
2006-12-05 4:41 ` Benjamin Herrenschmidt
1 sibling, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 14:34 UTC (permalink / raw)
To: Alan
Cc: Segher Boessenkool, Olaf Hering, linux-ide, linuxppc-dev, greg,
linux-pci
Hello.
Alan wrote:
>>>Both PCI core and IDE interpret a zero length resource as unassigned.
>> This is not about 0-length resource, this is about 0-address. Look at
>>ide_hwif_confiure() in drivers/ide/setup-pci.c...
> The discussion I was having was about sl82cxx and handling unassigned
> resources. The zero address isn't relevant to that.
You were following up to the particular error message emitted by the IDE
core (which you've now deleted), so I corrected you on its reason, that's all.
>> You should know that the IRQ assumption is *not* true even for x86 since
>>IRQ0 is and has always been a perfectly valid IRQ (used by PIT).
> Please see previous million recyclings of that discussion and Linus
> answer.
When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
this happens, I consider is just an opinion. Forcing every arch but x86 to
remap IRQ0 is an example of the double standards.
>>>Stick a real IDE resource at zero
>> > and drivers/ide can't cope.
>> Yeah, I've noticed. Unfortunately, a lot of PPC platforms (at least) are
>>doing exactly this...
> The checks need pushing upwards and removing from their current place -
> the pci layer should check the resource length, the isa pnp should I
> believe check for zero address etc.
So, it's OK to remove the base *address* check in ide_hwif_confiure()
altogether?
> libata makes a similar assumption in ata_resources_present() as someone
> (GregKH ???) needs to define what the proper way to encode "resource not
> allocated" into the PCI resources should be.
> If someone on the PCI list (cc'd) or Greg can give a definitive answer then we can go fix the
> offenders now.
Well, I thought that was IORESOURCE_UNSET...
> Alan
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-04 14:34 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 14:34 UTC (permalink / raw)
To: Alan; +Cc: Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci
Hello.
Alan wrote:
>>>Both PCI core and IDE interpret a zero length resource as unassigned.
>> This is not about 0-length resource, this is about 0-address. Look at
>>ide_hwif_confiure() in drivers/ide/setup-pci.c...
> The discussion I was having was about sl82cxx and handling unassigned
> resources. The zero address isn't relevant to that.
You were following up to the particular error message emitted by the IDE
core (which you've now deleted), so I corrected you on its reason, that's all.
>> You should know that the IRQ assumption is *not* true even for x86 since
>>IRQ0 is and has always been a perfectly valid IRQ (used by PIT).
> Please see previous million recyclings of that discussion and Linus
> answer.
When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
this happens, I consider is just an opinion. Forcing every arch but x86 to
remap IRQ0 is an example of the double standards.
>>>Stick a real IDE resource at zero
>> > and drivers/ide can't cope.
>> Yeah, I've noticed. Unfortunately, a lot of PPC platforms (at least) are
>>doing exactly this...
> The checks need pushing upwards and removing from their current place -
> the pci layer should check the resource length, the isa pnp should I
> believe check for zero address etc.
So, it's OK to remove the base *address* check in ide_hwif_confiure()
altogether?
> libata makes a similar assumption in ata_resources_present() as someone
> (GregKH ???) needs to define what the proper way to encode "resource not
> allocated" into the PCI resources should be.
> If someone on the PCI list (cc'd) or Greg can give a definitive answer then we can go fix the
> offenders now.
Well, I thought that was IORESOURCE_UNSET...
> Alan
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 14:34 ` Sergei Shtylyov
(?)
@ 2006-12-04 14:44 ` Alan
2006-12-04 15:40 ` Sergei Shtylyov
-1 siblings, 1 reply; 93+ messages in thread
From: Alan @ 2006-12-04 14:44 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci
> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
> this happens, I consider is just an opinion. Forcing every arch but x86 to
> remap IRQ0 is an example of the double standards.
Yawn.. x86 does not expose IRQ 0 outside of arch specific code.
> > The checks need pushing upwards and removing from their current place -
> > the pci layer should check the resource length, the isa pnp should I
> > believe check for zero address etc.
>
> So, it's OK to remove the base *address* check in ide_hwif_confiure()
> altogether?
IFF you move all the other checks, verify their correctness and then get
them tested for a while yes
> > libata makes a similar assumption in ata_resources_present() as someone
> > (GregKH ???) needs to define what the proper way to encode "resource not
> > allocated" into the PCI resources should be.
>
> > If someone on the PCI list (cc'd) or Greg can give a definitive answer then we can go fix the
> > offenders now.
>
> Well, I thought that was IORESOURCE_UNSET...
It seems to depend which line of code you ask - hence the question 8(
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 14:44 ` Alan
@ 2006-12-04 15:40 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 15:40 UTC (permalink / raw)
To: Alan
Cc: Segher Boessenkool, Olaf Hering, linux-ide, linuxppc-dev, greg,
linux-pci
Hello.
Alan wrote:
>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
>>this happens, I consider is just an opinion. Forcing every arch but x86 to
>>remap IRQ0 is an example of the double standards.
> Yawn.. x86 does not expose IRQ 0 outside of arch specific code.
Can you believe, some non-x86 platofrms also don't -- for example, IRQ0
may be internal to SOC, not shareable or routable outside of it, BUT the SOC
device is driven by the standard driver (I'm minding 8250.c here). Yet we're
told that we should remap it, period...
>>>The checks need pushing upwards and removing from their current place -
>>>the pci layer should check the resource length, the isa pnp should I
>>>believe check for zero address etc.
>> So, it's OK to remove the base *address* check in ide_hwif_confiure()
>>altogether?
> IFF you move all the other checks, verify their correctness and then get
> them tested for a while yes
All other checks aren't hindering (at least me ATM). What's probably
worth doing is to check the result of ide_pci_check_iomem() some lines above
the discussed check (it's ignored now).
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-04 15:40 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 15:40 UTC (permalink / raw)
To: Alan; +Cc: Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci
Hello.
Alan wrote:
>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
>>this happens, I consider is just an opinion. Forcing every arch but x86 to
>>remap IRQ0 is an example of the double standards.
> Yawn.. x86 does not expose IRQ 0 outside of arch specific code.
Can you believe, some non-x86 platofrms also don't -- for example, IRQ0
may be internal to SOC, not shareable or routable outside of it, BUT the SOC
device is driven by the standard driver (I'm minding 8250.c here). Yet we're
told that we should remap it, period...
>>>The checks need pushing upwards and removing from their current place -
>>>the pci layer should check the resource length, the isa pnp should I
>>>believe check for zero address etc.
>> So, it's OK to remove the base *address* check in ide_hwif_confiure()
>>altogether?
> IFF you move all the other checks, verify their correctness and then get
> them tested for a while yes
All other checks aren't hindering (at least me ATM). What's probably
worth doing is to check the result of ide_pci_check_iomem() some lines above
the discussed check (it's ignored now).
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 15:40 ` Sergei Shtylyov
@ 2006-12-04 15:55 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 15:55 UTC (permalink / raw)
To: Alan; +Cc: Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci
Hello.
Sergei Shtylyov wrote:
>>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
>>>this happens, I consider is just an opinion. Forcing every arch but x86 to
>>>remap IRQ0 is an example of the double standards.
>>Yawn.. x86 does not expose IRQ 0 outside of arch specific code.
> Can you believe, some non-x86 platofrms also don't -- for example, IRQ0
> may be internal to SOC, not shareable or routable outside of it, BUT the SOC
> device is driven by the standard driver (I'm minding 8250.c here). Yet we're
> told that we should remap it, period...
>>>>The checks need pushing upwards and removing from their current place -
>>>>the pci layer should check the resource length, the isa pnp should I
>>>>believe check for zero address etc.
Although, I'm getting the point -- PCI is likely to return 0 for
unassigned the interrupt line register (this isn't always true though). So,
some mixup is possible in that regard. Well, then we're unlucky, and indeed
remapping IRQ0 has sense...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-04 15:55 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-04 15:55 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, linuxppc-dev, Olaf Hering, linux-pci, greg
Hello.
Sergei Shtylyov wrote:
>>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
>>>this happens, I consider is just an opinion. Forcing every arch but x86 to
>>>remap IRQ0 is an example of the double standards.
>>Yawn.. x86 does not expose IRQ 0 outside of arch specific code.
> Can you believe, some non-x86 platofrms also don't -- for example, IRQ0
> may be internal to SOC, not shareable or routable outside of it, BUT the SOC
> device is driven by the standard driver (I'm minding 8250.c here). Yet we're
> told that we should remap it, period...
>>>>The checks need pushing upwards and removing from their current place -
>>>>the pci layer should check the resource length, the isa pnp should I
>>>>believe check for zero address etc.
Although, I'm getting the point -- PCI is likely to return 0 for
unassigned the interrupt line register (this isn't always true though). So,
some mixup is possible in that regard. Well, then we're unlucky, and indeed
remapping IRQ0 has sense...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 15:55 ` Sergei Shtylyov
@ 2006-12-04 20:53 ` Guennadi Liakhovetski
-1 siblings, 0 replies; 93+ messages in thread
From: Guennadi Liakhovetski @ 2006-12-04 20:53 UTC (permalink / raw)
To: Sergei Shtylyov
Cc: Alan, linux-ide, linuxppc-dev, Olaf Hering, linux-pci, greg
On Mon, 4 Dec 2006, Sergei Shtylyov wrote:
> >>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
> >>>this happens, I consider is just an opinion. Forcing every arch but x86 to
> >>>remap IRQ0 is an example of the double standards.
Can I have a link to that specific answer from Linus, please? Somehow I
missed it.
> Although, I'm getting the point -- PCI is likely to return 0 for
> unassigned the interrupt line register (this isn't always true though). So,
> some mixup is possible in that regard. Well, then we're unlucky, and indeed
> remapping IRQ0 has sense...
Strange, if __PCI__ uses 0 for an unassigned IRQ line, I'd say it's
_internal_ PCI peculiarity, and should be handled by the PCI code, and not
be taken as an enforced definition by all architectures for the whole
system.
Why does one HAVE to remap IRQs if on a specific system it is easy and
natural to use 0 as a valid IRQ number?
Thanks
Guennadi
---
Guennadi Liakhovetski
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-04 20:53 ` Guennadi Liakhovetski
0 siblings, 0 replies; 93+ messages in thread
From: Guennadi Liakhovetski @ 2006-12-04 20:53 UTC (permalink / raw)
To: Sergei Shtylyov
Cc: Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci, Alan
On Mon, 4 Dec 2006, Sergei Shtylyov wrote:
> >>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
> >>>this happens, I consider is just an opinion. Forcing every arch but x86 to
> >>>remap IRQ0 is an example of the double standards.
Can I have a link to that specific answer from Linus, please? Somehow I
missed it.
> Although, I'm getting the point -- PCI is likely to return 0 for
> unassigned the interrupt line register (this isn't always true though). So,
> some mixup is possible in that regard. Well, then we're unlucky, and indeed
> remapping IRQ0 has sense...
Strange, if __PCI__ uses 0 for an unassigned IRQ line, I'd say it's
_internal_ PCI peculiarity, and should be handled by the PCI code, and not
be taken as an enforced definition by all architectures for the whole
system.
Why does one HAVE to remap IRQs if on a specific system it is easy and
natural to use 0 as a valid IRQ number?
Thanks
Guennadi
---
Guennadi Liakhovetski
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 14:22 ` What is the correct way to indicate an unassigned PCI resource ? Alan
@ 2006-12-05 4:41 ` Benjamin Herrenschmidt
2006-12-05 4:41 ` Benjamin Herrenschmidt
1 sibling, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-05 4:41 UTC (permalink / raw)
To: Alan
Cc: Sergei Shtylyov, Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci
On Mon, 2006-12-04 at 14:22 +0000, Alan wrote:
> The discussion I was having was about sl82cxx and handling unassigned
> resources. The zero address isn't relevant to that.
Well, actually, it's unclear to me wether the resource is unassigned or
has been assigned to 0 :-) And in the later case, why claim'ing it
fails.
Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
that PCI bus ?
I have the "gut" feeling that the firmware didn't assign it, but it does
explicitely has an assigned-address property for it with value "0" and a
valid size & set of flags... so it looks like maybe it -really- did
assign it to 0. Either that or it's buggy.
In any case, if we have to do a fixup here, it would be a pSeries
specific fixup and thus would have to sit in a PCI quirk in the pSeries
platform code.
> > You should know that the IRQ assumption is *not* true even for x86 since
> > IRQ0 is and has always been a perfectly valid IRQ (used by PIT).
>
> Please see previous million recyclings of that discussion and Linus
> answer.
Besides, it does make thing easier in the kernel to consider IRQ 0 as
invalid. That's one of the reasons for which I generalized the IRQ
remapping layer in arch/powerpc. Among others, 0 is always invalid and
1...15 are always only ever assigned to a legacy 8259 if any, anything
else gets remapped.
> libata makes a similar assumption in ata_resources_present() as someone
> (GregKH ???) needs to define what the proper way to encode "resource not
> allocated" into the PCI resources should be. If someone on the PCI list
> (cc'd) or Greg can give a definitive answer then we can go fix the
> offenders now.
There is an UNSET flag isn't there ? Though nobody uses it ...
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 4:41 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-05 4:41 UTC (permalink / raw)
To: Alan; +Cc: Olaf Hering, linux-ide, greg, linuxppc-dev, linux-pci
On Mon, 2006-12-04 at 14:22 +0000, Alan wrote:
> The discussion I was having was about sl82cxx and handling unassigned
> resources. The zero address isn't relevant to that.
Well, actually, it's unclear to me wether the resource is unassigned or
has been assigned to 0 :-) And in the later case, why claim'ing it
fails.
Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
that PCI bus ?
I have the "gut" feeling that the firmware didn't assign it, but it does
explicitely has an assigned-address property for it with value "0" and a
valid size & set of flags... so it looks like maybe it -really- did
assign it to 0. Either that or it's buggy.
In any case, if we have to do a fixup here, it would be a pSeries
specific fixup and thus would have to sit in a PCI quirk in the pSeries
platform code.
> > You should know that the IRQ assumption is *not* true even for x86 since
> > IRQ0 is and has always been a perfectly valid IRQ (used by PIT).
>
> Please see previous million recyclings of that discussion and Linus
> answer.
Besides, it does make thing easier in the kernel to consider IRQ 0 as
invalid. That's one of the reasons for which I generalized the IRQ
remapping layer in arch/powerpc. Among others, 0 is always invalid and
1...15 are always only ever assigned to a legacy 8259 if any, anything
else gets remapped.
> libata makes a similar assumption in ata_resources_present() as someone
> (GregKH ???) needs to define what the proper way to encode "resource not
> allocated" into the PCI resources should be. If someone on the PCI list
> (cc'd) or Greg can give a definitive answer then we can go fix the
> offenders now.
There is an UNSET flag isn't there ? Though nobody uses it ...
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-04 20:53 ` Guennadi Liakhovetski
@ 2006-12-05 4:43 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-05 4:43 UTC (permalink / raw)
To: Guennadi Liakhovetski
Cc: Sergei Shtylyov, Olaf Hering, linuxppc-dev, greg, linux-ide,
linux-pci, Alan
On Mon, 2006-12-04 at 21:53 +0100, Guennadi Liakhovetski wrote:
> On Mon, 4 Dec 2006, Sergei Shtylyov wrote:
>
> > >>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
> > >>>this happens, I consider is just an opinion. Forcing every arch but x86 to
> > >>>remap IRQ0 is an example of the double standards.
>
> Can I have a link to that specific answer from Linus, please? Somehow I
> missed it.
That debate is pointless. arch/powerpc now always remaps and 0 is always
illegal as a logical IRQ number, while it's perfectly legal as a HW
number on any PIC, so there is no more problem. Other archs might
probably want to do a similar remapping anyway as it makes loads of
things easier when you have multiple PICs and/or dynamically assigned
numbers.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 4:43 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-05 4:43 UTC (permalink / raw)
To: Guennadi Liakhovetski
Cc: Olaf Hering, linux-ide, greg, linuxppc-dev, linux-pci, Alan
On Mon, 2006-12-04 at 21:53 +0100, Guennadi Liakhovetski wrote:
> On Mon, 4 Dec 2006, Sergei Shtylyov wrote:
>
> > >>> When Linus remaps IRQ0 on x86, I'll follow that code as a testament. Until
> > >>>this happens, I consider is just an opinion. Forcing every arch but x86 to
> > >>>remap IRQ0 is an example of the double standards.
>
> Can I have a link to that specific answer from Linus, please? Somehow I
> missed it.
That debate is pointless. arch/powerpc now always remaps and 0 is always
illegal as a logical IRQ number, while it's perfectly legal as a HW
number on any PIC, so there is no more problem. Other archs might
probably want to do a similar remapping anyway as it makes loads of
things easier when you have multiple PICs and/or dynamically assigned
numbers.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 4:41 ` Benjamin Herrenschmidt
@ 2006-12-05 8:15 ` Olaf Hering
-1 siblings, 0 replies; 93+ messages in thread
From: Olaf Hering @ 2006-12-05 8:15 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Alan, Sergei Shtylyov, linuxppc-dev, greg, linux-ide, linux-pci
On Tue, Dec 05, Benjamin Herrenschmidt wrote:
> Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
> that PCI bus ?
with IDE=y
==> /proc/ioports <==
00000000-0000001f : dma1
00000020-00000021 : 8259 (master)
00000040-0000005f : timer
00000060-0000006f : i8042
00000080-0000008f : dma page reg
000000a0-000000a1 : 8259 (slave)
000000c0-000000df : dma2
000002f8-000002ff : serial
000003c0-000003df : matrox
000003f8-000003ff : serial
000004d0-000004d1 : 8259 edge control
00000898-0000089f : serial
0000f000-0000f007 : 0000:00:03.1
0000f000-0000f007 : ide0
0000f010-0000f013 : 0000:00:03.1
0000f012-0000f012 : ide0
0000f020-0000f027 : 0000:00:03.1
0000f030-0000f033 : 0000:00:03.1
0000f040-0000f04f : 0000:00:03.1
0000f040-0000f047 : ide0
0000f048-0000f04f : ide1
00010000-0001ffff : PCI Bus #01
00020000-0002ffff : PCI Bus #21
0002ec00-0002ec3f : 0000:21:01.0
0002ec00-0002ec3f : e100
00030000-0003ffff : PCI Bus #41
0003e800-0003e8ff : 0000:41:01.0
0003e800-0003e8ff : sym53c8xx
0003ec00-0003ecff : 0000:41:01.1
0003ec00-0003ecff : sym53c8xx
00040000-0004ffff : PCI Bus #61
00100000-001fffff : /pci@400000000112
00100000-0010ffff : PCI Bus #01
00110000-0011ffff : PCI Bus #21
0011ec00-0011ec3f : 0001:21:01.0
0011ec00-0011ec3f : e100
00120000-0012ffff : PCI Bus #61
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 8:15 ` Olaf Hering
0 siblings, 0 replies; 93+ messages in thread
From: Olaf Hering @ 2006-12-05 8:15 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linux-ide, greg, linuxppc-dev, linux-pci, Alan
On Tue, Dec 05, Benjamin Herrenschmidt wrote:
> Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
> that PCI bus ?
with IDE=y
==> /proc/ioports <==
00000000-0000001f : dma1
00000020-00000021 : 8259 (master)
00000040-0000005f : timer
00000060-0000006f : i8042
00000080-0000008f : dma page reg
000000a0-000000a1 : 8259 (slave)
000000c0-000000df : dma2
000002f8-000002ff : serial
000003c0-000003df : matrox
000003f8-000003ff : serial
000004d0-000004d1 : 8259 edge control
00000898-0000089f : serial
0000f000-0000f007 : 0000:00:03.1
0000f000-0000f007 : ide0
0000f010-0000f013 : 0000:00:03.1
0000f012-0000f012 : ide0
0000f020-0000f027 : 0000:00:03.1
0000f030-0000f033 : 0000:00:03.1
0000f040-0000f04f : 0000:00:03.1
0000f040-0000f047 : ide0
0000f048-0000f04f : ide1
00010000-0001ffff : PCI Bus #01
00020000-0002ffff : PCI Bus #21
0002ec00-0002ec3f : 0000:21:01.0
0002ec00-0002ec3f : e100
00030000-0003ffff : PCI Bus #41
0003e800-0003e8ff : 0000:41:01.0
0003e800-0003e8ff : sym53c8xx
0003ec00-0003ecff : 0000:41:01.1
0003ec00-0003ecff : sym53c8xx
00040000-0004ffff : PCI Bus #61
00100000-001fffff : /pci@400000000112
00100000-0010ffff : PCI Bus #01
00110000-0011ffff : PCI Bus #21
0011ec00-0011ec3f : 0001:21:01.0
0011ec00-0011ec3f : e100
00120000-0012ffff : PCI Bus #61
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 4:41 ` Benjamin Herrenschmidt
@ 2006-12-05 10:51 ` Gabriel Paubert
-1 siblings, 0 replies; 93+ messages in thread
From: Gabriel Paubert @ 2006-12-05 10:51 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Alan, Olaf Hering, linux-ide, greg, linuxppc-dev, linux-pci
On Tue, Dec 05, 2006 at 03:41:19PM +1100, Benjamin Herrenschmidt wrote:
> On Mon, 2006-12-04 at 14:22 +0000, Alan wrote:
>
> > The discussion I was having was about sl82cxx and handling unassigned
> > resources. The zero address isn't relevant to that.
>
> Well, actually, it's unclear to me wether the resource is unassigned or
> has been assigned to 0 :-) And in the later case, why claim'ing it
> fails.
Well, I don't have the PCI specification, but I have a device with the
following gem in its errata (name edited and changed to <Device>):
""The <Device> contains two PCI base registers to allow for both greater
flexibility in tightly constrained I/O space as well as the "on the fly"
option to access the <Device> registers from either I/O or memory space.
Both PCI base registers contained in the <Device> will accept the value
of "zero" as a valid and decodable address. This differs from the PCI 2.1
specification, where a zero value being written to the PCI base register
should disable the register space. <Device> will continue to decode for
register accesses using the value "zero" written to the PCI_BS register
as the base address for decoding.""
which makes me suspect that a base address of zero really should mean
unassigned and is a way to disable base registers on a region by region
basis.
Now the fun with this device is that the I/O region occupies 4kB, so
it leads to serious conflicts since there is also an ISA bridge in
the system (no 8259 anymore, serial console dead, etc...). The best
way to make this bug harmless is to write all ones to said base
register (it has 32 bit). This moves it to an address which cannot
be generated by the host bridge (unless you program it in a really
weird way).
Whatever a specification says, you'll always find some device that
has a bug in this area.
Regards,
Gabriel
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 10:51 ` Gabriel Paubert
0 siblings, 0 replies; 93+ messages in thread
From: Gabriel Paubert @ 2006-12-05 10:51 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Olaf Hering, linux-ide, greg, linuxppc-dev, linux-pci, Alan
On Tue, Dec 05, 2006 at 03:41:19PM +1100, Benjamin Herrenschmidt wrote:
> On Mon, 2006-12-04 at 14:22 +0000, Alan wrote:
>
> > The discussion I was having was about sl82cxx and handling unassigned
> > resources. The zero address isn't relevant to that.
>
> Well, actually, it's unclear to me wether the resource is unassigned or
> has been assigned to 0 :-) And in the later case, why claim'ing it
> fails.
Well, I don't have the PCI specification, but I have a device with the
following gem in its errata (name edited and changed to <Device>):
""The <Device> contains two PCI base registers to allow for both greater
flexibility in tightly constrained I/O space as well as the "on the fly"
option to access the <Device> registers from either I/O or memory space.
Both PCI base registers contained in the <Device> will accept the value
of "zero" as a valid and decodable address. This differs from the PCI 2.1
specification, where a zero value being written to the PCI base register
should disable the register space. <Device> will continue to decode for
register accesses using the value "zero" written to the PCI_BS register
as the base address for decoding.""
which makes me suspect that a base address of zero really should mean
unassigned and is a way to disable base registers on a region by region
basis.
Now the fun with this device is that the I/O region occupies 4kB, so
it leads to serious conflicts since there is also an ISA bridge in
the system (no 8259 anymore, serial console dead, etc...). The best
way to make this bug harmless is to write all ones to said base
register (it has 32 bit). This moves it to an address which cannot
be generated by the host bridge (unless you program it in a really
weird way).
Whatever a specification says, you'll always find some device that
has a bug in this area.
Regards,
Gabriel
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 10:51 ` Gabriel Paubert
@ 2006-12-05 12:38 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-05 12:38 UTC (permalink / raw)
To: Gabriel Paubert
Cc: Benjamin Herrenschmidt, Olaf Hering, linux-ide, greg,
linuxppc-dev, linux-pci, Alan
Hello.
Gabriel Paubert wrote:
>>On Mon, 2006-12-04 at 14:22 +0000, Alan wrote:
>>>The discussion I was having was about sl82cxx and handling unassigned
>>>resources. The zero address isn't relevant to that.
>>Well, actually, it's unclear to me wether the resource is unassigned or
>>has been assigned to 0 :-) And in the later case, why claim'ing it
>>fails.
> Well, I don't have the PCI specification, but I have a device with the
Try googling for pdf21.pdf, pdf22.pdf if you need it. :-)
> following gem in its errata (name edited and changed to <Device>):
> ""The <Device> contains two PCI base registers to allow for both greater
> flexibility in tightly constrained I/O space as well as the "on the fly"
> option to access the <Device> registers from either I/O or memory space.
> Both PCI base registers contained in the <Device> will accept the value
> of "zero" as a valid and decodable address. This differs from the PCI 2.1
> specification, where a zero value being written to the PCI base register
> should disable the register space.
I haven't found such words in PCI 2.1 -- it only said that 0 is not a
valid address (those words are gone from 2.2).
> <Device> will continue to decode for
> register accesses using the value "zero" written to the PCI_BS register
> as the base address for decoding.""
I'd say it's absolutely valid bahavior.
> which makes me suspect that a base address of zero really should mean
> unassigned and is a way to disable base registers on a region by region
> basis.
AFAIR, there's never been a provision to enable/disable BARs on an
individual basis in PCI (except the expansion ROM BAR). The decoders are
only controlled via 2 command register bits for I/O and memory space.
> Now the fun with this device is that the I/O region occupies 4kB, so
That's a crappy device indeed, I/O alloction limit is 256 bytes (that's
due to PC-specific limitation actually). Such regions may (and should) be left
unassigned by f/w (and I/O decoder disabled).
> it leads to serious conflicts since there is also an ISA bridge in
> the system (no 8259 anymore, serial console dead, etc...). The best
> way to make this bug harmless is to write all ones to said base
> register (it has 32 bit). This moves it to an address which cannot
> be generated by the host bridge (unless you program it in a really
> weird way).
You may also completely disable the I/O decoder for this device.
> Whatever a specification says, you'll always find some device that
> has a bug in this area.
Yeah. I've already encountered such one...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 12:38 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-05 12:38 UTC (permalink / raw)
To: Gabriel Paubert
Cc: Olaf Hering, linux-ide, linuxppc-dev, greg, linux-pci, Alan
Hello.
Gabriel Paubert wrote:
>>On Mon, 2006-12-04 at 14:22 +0000, Alan wrote:
>>>The discussion I was having was about sl82cxx and handling unassigned
>>>resources. The zero address isn't relevant to that.
>>Well, actually, it's unclear to me wether the resource is unassigned or
>>has been assigned to 0 :-) And in the later case, why claim'ing it
>>fails.
> Well, I don't have the PCI specification, but I have a device with the
Try googling for pdf21.pdf, pdf22.pdf if you need it. :-)
> following gem in its errata (name edited and changed to <Device>):
> ""The <Device> contains two PCI base registers to allow for both greater
> flexibility in tightly constrained I/O space as well as the "on the fly"
> option to access the <Device> registers from either I/O or memory space.
> Both PCI base registers contained in the <Device> will accept the value
> of "zero" as a valid and decodable address. This differs from the PCI 2.1
> specification, where a zero value being written to the PCI base register
> should disable the register space.
I haven't found such words in PCI 2.1 -- it only said that 0 is not a
valid address (those words are gone from 2.2).
> <Device> will continue to decode for
> register accesses using the value "zero" written to the PCI_BS register
> as the base address for decoding.""
I'd say it's absolutely valid bahavior.
> which makes me suspect that a base address of zero really should mean
> unassigned and is a way to disable base registers on a region by region
> basis.
AFAIR, there's never been a provision to enable/disable BARs on an
individual basis in PCI (except the expansion ROM BAR). The decoders are
only controlled via 2 command register bits for I/O and memory space.
> Now the fun with this device is that the I/O region occupies 4kB, so
That's a crappy device indeed, I/O alloction limit is 256 bytes (that's
due to PC-specific limitation actually). Such regions may (and should) be left
unassigned by f/w (and I/O decoder disabled).
> it leads to serious conflicts since there is also an ISA bridge in
> the system (no 8259 anymore, serial console dead, etc...). The best
> way to make this bug harmless is to write all ones to said base
> register (it has 32 bit). This moves it to an address which cannot
> be generated by the host bridge (unless you program it in a really
> weird way).
You may also completely disable the I/O decoder for this device.
> Whatever a specification says, you'll always find some device that
> has a bug in this area.
Yeah. I've already encountered such one...
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 12:38 ` Sergei Shtylyov
@ 2006-12-05 17:37 ` Grant Grundler
-1 siblings, 0 replies; 93+ messages in thread
From: Grant Grundler @ 2006-12-05 17:37 UTC (permalink / raw)
To: Sergei Shtylyov
Cc: Gabriel Paubert, Benjamin Herrenschmidt, Olaf Hering, linux-ide,
greg, linuxppc-dev, linux-pci, Alan
On Tue, Dec 05, 2006 at 03:38:57PM +0300, Sergei Shtylyov wrote:
> >Well, I don't have the PCI specification, but I have a device with the
>
> Try googling for pdf21.pdf, pdf22.pdf if you need it. :-)
I think you meant pci21.pdf/pci22.pdf/pci23.pdf.
And if you find them, trust me when I say whoever is hosting those files
can expect a cease-and-desist letter in the mail shortly there after.
Better to just ask someone with proper access to lookup the parts
you need to know (i.e. ask here). Member companies are listed at:
http://www.pcisig.com/membership/about_us/membership_roster/
if you want to approach someone offlist.
> >following gem in its errata (name edited and changed to <Device>):
>
> >""The <Device> contains two PCI base registers to allow for both greater
> >flexibility in tightly constrained I/O space as well as the "on the fly"
> >option to access the <Device> registers from either I/O or memory space.
> >Both PCI base registers contained in the <Device> will accept the value
> >of "zero" as a valid and decodable address. This differs from the PCI 2.1
> >specification, where a zero value being written to the PCI base register
> >should disable the register space.
>
> I haven't found such words in PCI 2.1 -- it only said that 0 is not a
> valid address (those words are gone from 2.2).
AFAIK, zero is a valid address for IO Port space on several architectures.
But PCI generic code should never use it. See usage of PCIBIOS_MIN_IO
and PCIBIOS_MIN_MEM in the various asm-*/pci.h files.
> ><Device> will continue to decode for
> >register accesses using the value "zero" written to the PCI_BS register
> >as the base address for decoding.""
>
> I'd say it's absolutely valid bahavior.
>
> >which makes me suspect that a base address of zero really should mean
> >unassigned and is a way to disable base registers on a region by region
> >basis.
>
> AFAIR, there's never been a provision to enable/disable BARs on an
> individual basis in PCI (except the expansion ROM BAR). The decoders are
> only controlled via 2 command register bits for I/O and memory space.
One can "disable" a BAR by pointing it at an address that is NOT routed
by the upstream bridge. Ie CPU physical addresses that can never reach
that secondary bus. But I'm not aware of any code to do that currently
and it certainly won't work with all "PCI-like" (think integrated south
bridges) devices. But it might be sufficient for some special need.
hth,
grant
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 17:37 ` Grant Grundler
0 siblings, 0 replies; 93+ messages in thread
From: Grant Grundler @ 2006-12-05 17:37 UTC (permalink / raw)
To: Sergei Shtylyov
Cc: Olaf Hering, linux-ide, linuxppc-dev, greg, linux-pci, Alan
On Tue, Dec 05, 2006 at 03:38:57PM +0300, Sergei Shtylyov wrote:
> >Well, I don't have the PCI specification, but I have a device with the
>
> Try googling for pdf21.pdf, pdf22.pdf if you need it. :-)
I think you meant pci21.pdf/pci22.pdf/pci23.pdf.
And if you find them, trust me when I say whoever is hosting those files
can expect a cease-and-desist letter in the mail shortly there after.
Better to just ask someone with proper access to lookup the parts
you need to know (i.e. ask here). Member companies are listed at:
http://www.pcisig.com/membership/about_us/membership_roster/
if you want to approach someone offlist.
> >following gem in its errata (name edited and changed to <Device>):
>
> >""The <Device> contains two PCI base registers to allow for both greater
> >flexibility in tightly constrained I/O space as well as the "on the fly"
> >option to access the <Device> registers from either I/O or memory space.
> >Both PCI base registers contained in the <Device> will accept the value
> >of "zero" as a valid and decodable address. This differs from the PCI 2.1
> >specification, where a zero value being written to the PCI base register
> >should disable the register space.
>
> I haven't found such words in PCI 2.1 -- it only said that 0 is not a
> valid address (those words are gone from 2.2).
AFAIK, zero is a valid address for IO Port space on several architectures.
But PCI generic code should never use it. See usage of PCIBIOS_MIN_IO
and PCIBIOS_MIN_MEM in the various asm-*/pci.h files.
> ><Device> will continue to decode for
> >register accesses using the value "zero" written to the PCI_BS register
> >as the base address for decoding.""
>
> I'd say it's absolutely valid bahavior.
>
> >which makes me suspect that a base address of zero really should mean
> >unassigned and is a way to disable base registers on a region by region
> >basis.
>
> AFAIR, there's never been a provision to enable/disable BARs on an
> individual basis in PCI (except the expansion ROM BAR). The decoders are
> only controlled via 2 command register bits for I/O and memory space.
One can "disable" a BAR by pointing it at an address that is NOT routed
by the upstream bridge. Ie CPU physical addresses that can never reach
that secondary bus. But I'm not aware of any code to do that currently
and it certainly won't work with all "PCI-like" (think integrated south
bridges) devices. But it might be sufficient for some special need.
hth,
grant
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 17:37 ` Grant Grundler
@ 2006-12-05 19:22 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-05 19:22 UTC (permalink / raw)
To: Grant Grundler
Cc: Gabriel Paubert, Benjamin Herrenschmidt, Olaf Hering, linux-ide,
greg, linuxppc-dev, linux-pci, Alan
Hello.
Grant Grundler wrote:
>>>Well, I don't have the PCI specification, but I have a device with the
>> Try googling for pdf21.pdf, pdf22.pdf if you need it. :-)
> I think you meant pci21.pdf/pci22.pdf/pci23.pdf.
> And if you find them, trust me when I say whoever is hosting those files
> can expect a cease-and-desist letter in the mail shortly there after.
> Better to just ask someone with proper access to lookup the parts
> you need to know (i.e. ask here). Member companies are listed at:
> http://www.pcisig.com/membership/about_us/membership_roster/
> if you want to approach someone offlist.
That's not fun. :-)
>>>following gem in its errata (name edited and changed to <Device>):
>>>""The <Device> contains two PCI base registers to allow for both greater
>>>flexibility in tightly constrained I/O space as well as the "on the fly"
>>>option to access the <Device> registers from either I/O or memory space.
>>>Both PCI base registers contained in the <Device> will accept the value
>>>of "zero" as a valid and decodable address. This differs from the PCI 2.1
>>>specification, where a zero value being written to the PCI base register
>>>should disable the register space.
>> I haven't found such words in PCI 2.1 -- it only said that 0 is not a
>>valid address (those words are gone from 2.2).
> AFAIK, zero is a valid address for IO Port space on several architectures.
> But PCI generic code should never use it. See usage of PCIBIOS_MIN_IO
> and PCIBIOS_MIN_MEM in the various asm-*/pci.h files.
That'd be all good if bootloaders also folllowed this rule... Not all of
them do, hence the thread. :-/
>>>which makes me suspect that a base address of zero really should mean
>>>unassigned and is a way to disable base registers on a region by region
>>>basis.
>> AFAIR, there's never been a provision to enable/disable BARs on an
>>individual basis in PCI (except the expansion ROM BAR). The decoders are
>>only controlled via 2 command register bits for I/O and memory space.
> One can "disable" a BAR by pointing it at an address that is NOT routed
> by the upstream bridge. Ie CPU physical addresses that can never reach
> that secondary bus. But I'm not aware of any code to do that currently
Yeah, that's the trick that Gabriel has already described...
> and it certainly won't work with all "PCI-like" (think integrated south
> bridges) devices.
Well, those are using subtractive decoders, so will only get the R/W
cycles that nobody else cared about. If using I/O ports higher than 0xffff the
trick will still work on x86 even in presence of ISA bridges...
> hth,
> grant
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 19:22 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-05 19:22 UTC (permalink / raw)
To: Grant Grundler
Cc: Olaf Hering, linux-ide, linuxppc-dev, greg, linux-pci, Alan
Hello.
Grant Grundler wrote:
>>>Well, I don't have the PCI specification, but I have a device with the
>> Try googling for pdf21.pdf, pdf22.pdf if you need it. :-)
> I think you meant pci21.pdf/pci22.pdf/pci23.pdf.
> And if you find them, trust me when I say whoever is hosting those files
> can expect a cease-and-desist letter in the mail shortly there after.
> Better to just ask someone with proper access to lookup the parts
> you need to know (i.e. ask here). Member companies are listed at:
> http://www.pcisig.com/membership/about_us/membership_roster/
> if you want to approach someone offlist.
That's not fun. :-)
>>>following gem in its errata (name edited and changed to <Device>):
>>>""The <Device> contains two PCI base registers to allow for both greater
>>>flexibility in tightly constrained I/O space as well as the "on the fly"
>>>option to access the <Device> registers from either I/O or memory space.
>>>Both PCI base registers contained in the <Device> will accept the value
>>>of "zero" as a valid and decodable address. This differs from the PCI 2.1
>>>specification, where a zero value being written to the PCI base register
>>>should disable the register space.
>> I haven't found such words in PCI 2.1 -- it only said that 0 is not a
>>valid address (those words are gone from 2.2).
> AFAIK, zero is a valid address for IO Port space on several architectures.
> But PCI generic code should never use it. See usage of PCIBIOS_MIN_IO
> and PCIBIOS_MIN_MEM in the various asm-*/pci.h files.
That'd be all good if bootloaders also folllowed this rule... Not all of
them do, hence the thread. :-/
>>>which makes me suspect that a base address of zero really should mean
>>>unassigned and is a way to disable base registers on a region by region
>>>basis.
>> AFAIR, there's never been a provision to enable/disable BARs on an
>>individual basis in PCI (except the expansion ROM BAR). The decoders are
>>only controlled via 2 command register bits for I/O and memory space.
> One can "disable" a BAR by pointing it at an address that is NOT routed
> by the upstream bridge. Ie CPU physical addresses that can never reach
> that secondary bus. But I'm not aware of any code to do that currently
Yeah, that's the trick that Gabriel has already described...
> and it certainly won't work with all "PCI-like" (think integrated south
> bridges) devices.
Well, those are using subtractive decoders, so will only get the R/W
cycles that nobody else cared about. If using I/O ports higher than 0xffff the
trick will still work on x86 even in presence of ISA bridges...
> hth,
> grant
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 8:15 ` Olaf Hering
@ 2006-12-05 20:19 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-05 20:19 UTC (permalink / raw)
To: Olaf Hering
Cc: Alan, Sergei Shtylyov, linuxppc-dev, greg, linux-ide, linux-pci
On Tue, 2006-12-05 at 09:15 +0100, Olaf Hering wrote:
> On Tue, Dec 05, Benjamin Herrenschmidt wrote:
>
> > Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
> > that PCI bus ?
>
> with IDE=y
>
> ==> /proc/ioports <==
> 00000000-0000001f : dma1
So it's indeed colliding with the cruft above.
I reckon it's a bug in the firmware of this machine.
Add to pseries/pci.c a quirk for that chipset (don't forget to test for
machine_is(pseries) in the quirk as they get called for all platforms in
a combo kernel. The quirk shall check if resource 6 has a 0 base and
clear the size as Alan suggested (possibly setting the UNSET flag as
well).
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 20:19 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2006-12-05 20:19 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, greg, linuxppc-dev, linux-pci, Alan
On Tue, 2006-12-05 at 09:15 +0100, Olaf Hering wrote:
> On Tue, Dec 05, Benjamin Herrenschmidt wrote:
>
> > Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
> > that PCI bus ?
>
> with IDE=y
>
> ==> /proc/ioports <==
> 00000000-0000001f : dma1
So it's indeed colliding with the cruft above.
I reckon it's a bug in the firmware of this machine.
Add to pseries/pci.c a quirk for that chipset (don't forget to test for
machine_is(pseries) in the quirk as they get called for all platforms in
a combo kernel. The quirk shall check if resource 6 has a 0 base and
clear the size as Alan suggested (possibly setting the UNSET flag as
well).
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 20:19 ` Benjamin Herrenschmidt
@ 2006-12-05 21:26 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-05 21:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Olaf Hering, Alan, linuxppc-dev, greg, linux-ide, linux-pci
Hello.
Benjamin Herrenschmidt wrote:
>>On Tue, Dec 05, Benjamin Herrenschmidt wrote:
>>>Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
>>>that PCI bus ?
>>with IDE=y
>>==> /proc/ioports <==
>>00000000-0000001f : dma1
> So it's indeed colliding with the cruft above.
> I reckon it's a bug in the firmware of this machine.
> Add to pseries/pci.c a quirk for that chipset (don't forget to test for
> machine_is(pseries) in the quirk as they get called for all platforms in
> a combo kernel. The quirk shall check if resource 6 has a 0 base and
> clear the size as Alan suggested (possibly setting the UNSET flag as
> well).
Erm, I suspect it's either one or another -- you probably need to keep the
size intact for resource marked IORESOURCE_UNSET. At least that's what the
other code does...
> Ben.
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2006-12-05 21:26 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-05 21:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Olaf Hering, linuxppc-dev, greg, linux-ide, linux-pci, Alan
Hello.
Benjamin Herrenschmidt wrote:
>>On Tue, Dec 05, Benjamin Herrenschmidt wrote:
>>>Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
>>>that PCI bus ?
>>with IDE=y
>>==> /proc/ioports <==
>>00000000-0000001f : dma1
> So it's indeed colliding with the cruft above.
> I reckon it's a bug in the firmware of this machine.
> Add to pseries/pci.c a quirk for that chipset (don't forget to test for
> machine_is(pseries) in the quirk as they get called for all platforms in
> a combo kernel. The quirk shall check if resource 6 has a 0 base and
> clear the size as Alan suggested (possibly setting the UNSET flag as
> well).
Erm, I suspect it's either one or another -- you probably need to keep the
size intact for resource marked IORESOURCE_UNSET. At least that's what the
other code does...
> Ben.
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [U-Boot-Users] U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region)
2006-12-02 16:33 ` [U-Boot-Users] " Sergei Shtylyov
@ 2006-12-26 20:53 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-26 20:53 UTC (permalink / raw)
To: u-boot-users; +Cc: linuxppc-embedded
Hello, I wrote:
>> Well, I'm having a very related issue with the U-Boot on MPC85xx: recently
>>I've noticed that it started allocating PCI I/O space from 0 (while the older
>>versions started from 0x1000). The IDE core can't tolerate this, giving me
>>such messages on bootup:
>>PDC20269: inconsistent baseregs (BIOS) for port 0, skipping
This is due to U-Boot assigning the PCI resources fram address 0 (which is
BTW illegal according to PCI 2.1). I have a patch for drivers/pci_auto.c
which I'm going to post tomorrow...
>>when I have Promise Ultra133TX2 card inserted into PCI alone. I've looked thru
>>the U-Boot sources and commit history but failed to locate the change that led
>>to this...
> It's actually much worse than just that. When I also plug in some other
> PCI card so Ultra133TX2 doesn't get the zero addresses anymore, I'm getting this:
> eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin
> <saw@saw.sw.com.sg> and others
> eth3: Invalid EEPROM checksum 0xfffe, check settings before activating this
> device!
> eth3: OEM i82557/i82558 10/100 Ethernet, 00:00:00:00:FF:FF, IRQ 52.
> [...]
> PDC20269: 100% native mode on irq 51
> ide2: BM-DMA at 0x0060-0x0067, BIOS settings: hde:pio, hdf:pio
> PDC20269: simplex device: DMA disabled
> ide3: PDC20269 Bus-Master DMA disabled (BIOS)
> I've just verified that both these cards are working OK in x86 box
> As for the simplex message, I've encountered this some months ago and it was
> caused by invalid programming of the MPC85xx bridge PCI/X outbound translation
> address register for the I/O space
No, the programming was valid. I've finally found the ultimate reason of
breakage -- it lies in board/*/init.S files. The patch tomorrow...
> or at least by the non-zero value of the
> bus I/O address in the "ranges" property of the bridge device node in the
> device tree...
It was the real reason -- the arch/powerpc/ kernel just ignores ranges
with non-zero I/O port address.
> I'm somewhat confused now since I know that the relevant U-Boot
> code has been fixed but it looks like that made it only worse -- I was using
> the custom patched version of U-Boot before which missed that fix:
> http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commitdiff;h=97074ed9655309b64231bc2cee69fe85399f8055
It was actually the following patch that broke PCI:
http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=52c7a68b8d587ebcf5a6b051b58b3d3ffa377ddc
There were other places relying on CFG_PCI1_IO_BASE and those weren't
changed... sigh. :-/
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* [U-Boot-Users] U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region)
@ 2006-12-26 20:53 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2006-12-26 20:53 UTC (permalink / raw)
To: u-boot
Hello, I wrote:
>> Well, I'm having a very related issue with the U-Boot on MPC85xx: recently
>>I've noticed that it started allocating PCI I/O space from 0 (while the older
>>versions started from 0x1000). The IDE core can't tolerate this, giving me
>>such messages on bootup:
>>PDC20269: inconsistent baseregs (BIOS) for port 0, skipping
This is due to U-Boot assigning the PCI resources fram address 0 (which is
BTW illegal according to PCI 2.1). I have a patch for drivers/pci_auto.c
which I'm going to post tomorrow...
>>when I have Promise Ultra133TX2 card inserted into PCI alone. I've looked thru
>>the U-Boot sources and commit history but failed to locate the change that led
>>to this...
> It's actually much worse than just that. When I also plug in some other
> PCI card so Ultra133TX2 doesn't get the zero addresses anymore, I'm getting this:
> eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin
> <saw@saw.sw.com.sg> and others
> eth3: Invalid EEPROM checksum 0xfffe, check settings before activating this
> device!
> eth3: OEM i82557/i82558 10/100 Ethernet, 00:00:00:00:FF:FF, IRQ 52.
> [...]
> PDC20269: 100% native mode on irq 51
> ide2: BM-DMA at 0x0060-0x0067, BIOS settings: hde:pio, hdf:pio
> PDC20269: simplex device: DMA disabled
> ide3: PDC20269 Bus-Master DMA disabled (BIOS)
> I've just verified that both these cards are working OK in x86 box
> As for the simplex message, I've encountered this some months ago and it was
> caused by invalid programming of the MPC85xx bridge PCI/X outbound translation
> address register for the I/O space
No, the programming was valid. I've finally found the ultimate reason of
breakage -- it lies in board/*/init.S files. The patch tomorrow...
> or at least by the non-zero value of the
> bus I/O address in the "ranges" property of the bridge device node in the
> device tree...
It was the real reason -- the arch/powerpc/ kernel just ignores ranges
with non-zero I/O port address.
> I'm somewhat confused now since I know that the relevant U-Boot
> code has been fixed but it looks like that made it only worse -- I was using
> the custom patched version of U-Boot before which missed that fix:
> http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commitdiff;h=97074ed9655309b64231bc2cee69fe85399f8055
It was actually the following patch that broke PCI:
http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=52c7a68b8d587ebcf5a6b051b58b3d3ffa377ddc
There were other places relying on CFG_PCI1_IO_BASE and those weren't
changed... sigh. :-/
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] add delay around sl82c105_reset_engine calls
2006-12-04 13:02 ` Alan
2006-12-04 13:12 ` Olaf Hering
@ 2007-01-04 6:42 ` Olaf Hering
2007-01-04 10:53 ` Alan
1 sibling, 1 reply; 93+ messages in thread
From: Olaf Hering @ 2007-01-04 6:42 UTC (permalink / raw)
To: Alan; +Cc: linux-ide, linuxppc-dev
On Mon, Dec 04, Alan wrote:
> On Mon, 4 Dec 2006 13:40:26 +0100 (MET)
> Olaf Hering <olaf@aepfle.de> wrote:
>
> >
> >
> > the hald media changed polling does really confuse things.
> > noone knows why the delays are needed, but they give us access to
> > the CD.
>
> Can you tell me what happens if you completely pull the reset out of the
> dma_end function. Do you still need delays then.
An udelay(50) will give reliable access to the drive, but there is still
one (or more) EH reset. The drive works without EH resets with udelay(100).
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
drivers/ata/pata_sl82c105.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/ata/pata_sl82c105.c
+++ b/drivers/ata/pata_sl82c105.c
@@ -187,7 +187,9 @@ static void sl82c105_bmdma_start(struct
{
struct ata_port *ap = qc->ap;
+ udelay(100);
sl82c105_reset_engine(ap);
+ udelay(100);
/* Set the clocks for DMA */
sl82c105_configure_dmamode(ap, qc->dev);
@@ -216,6 +218,7 @@ static void sl82c105_bmdma_stop(struct a
ata_bmdma_stop(qc);
sl82c105_reset_engine(ap);
+ udelay(100);
/* This will redo the initial setup of the DMA device to matching
PIO timings */
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] add delay around sl82c105_reset_engine calls
2007-01-04 6:42 ` Olaf Hering
@ 2007-01-04 10:53 ` Alan
0 siblings, 0 replies; 93+ messages in thread
From: Alan @ 2007-01-04 10:53 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, linuxppc-dev
On Thu, 4 Jan 2007 07:42:54 +0100
Olaf Hering <olaf@aepfle.de> wrote:
> On Mon, Dec 04, Alan wrote:
>
> > On Mon, 4 Dec 2006 13:40:26 +0100 (MET)
> > Olaf Hering <olaf@aepfle.de> wrote:
> >
> > >
> > >
> > > the hald media changed polling does really confuse things.
> > > noone knows why the delays are needed, but they give us access to
> > > the CD.
> >
> > Can you tell me what happens if you completely pull the reset out of the
> > dma_end function. Do you still need delays then.
>
> An udelay(50) will give reliable access to the drive, but there is still
> one (or more) EH reset. The drive works without EH resets with udelay(100).
>
> Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Alan Cox <alan@redhat.com>
This wants revisiting some day to understand the interaction better but
for now it gets us up and running properly.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2006-12-05 20:19 ` Benjamin Herrenschmidt
(?)
(?)
@ 2007-01-04 17:49 ` Olaf Hering
2007-01-04 21:30 ` Benjamin Herrenschmidt
-1 siblings, 1 reply; 93+ messages in thread
From: Olaf Hering @ 2007-01-04 17:49 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linux-ide, greg, linuxppc-dev, linux-pci, Alan
On Wed, Dec 06, Benjamin Herrenschmidt wrote:
> On Tue, 2006-12-05 at 09:15 +0100, Olaf Hering wrote:
> > On Tue, Dec 05, Benjamin Herrenschmidt wrote:
> >
> > > Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
> > > that PCI bus ?
> >
> > with IDE=y
> >
> > ==> /proc/ioports <==
> > 00000000-0000001f : dma1
>
> So it's indeed colliding with the cruft above.
>
> I reckon it's a bug in the firmware of this machine.
>
> Add to pseries/pci.c a quirk for that chipset (don't forget to test for
> machine_is(pseries) in the quirk as they get called for all platforms in
> a combo kernel. The quirk shall check if resource 6 has a 0 base and
> clear the size as Alan suggested (possibly setting the UNSET flag as
> well).
I will test this change tomorrow:
+++ linux-2.6/arch/powerpc/platforms/pseries/pci.c
@@ -98,6 +98,10 @@ static void fixup_winbond_82c105(struct
if (dev->resource[i].flags & IORESOURCE_IO
&& dev->bus->number == 0 && dev->devfn == 0x81)
dev->resource[i].flags &= ~IORESOURCE_IO;
+ if (dev->resource[i].start == 0) {
+ printk("disable IO resource %d on W82c105 IDE controller\n", i);
+ dev->resource[i].flags = IORESOURCE_DISABLED;
+ }
}
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
Or did you mean 'if (dev->resource[5].start == 0)' ?
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2007-01-04 17:49 ` Olaf Hering
@ 2007-01-04 21:30 ` Benjamin Herrenschmidt
2007-01-05 10:26 ` Olaf Hering
0 siblings, 1 reply; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2007-01-04 21:30 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, greg, linuxppc-dev, linux-pci, Alan
> > Add to pseries/pci.c a quirk for that chipset (don't forget to test for
> > machine_is(pseries) in the quirk as they get called for all platforms in
> > a combo kernel. The quirk shall check if resource 6 has a 0 base and
> > clear the size as Alan suggested (possibly setting the UNSET flag as
> > well).
>
> I will test this change tomorrow:
>
> +++ linux-2.6/arch/powerpc/platforms/pseries/pci.c
> @@ -98,6 +98,10 @@ static void fixup_winbond_82c105(struct
> if (dev->resource[i].flags & IORESOURCE_IO
> && dev->bus->number == 0 && dev->devfn == 0x81)
> dev->resource[i].flags &= ~IORESOURCE_IO;
> + if (dev->resource[i].start == 0) {
> + printk("disable IO resource %d on W82c105 IDE controller\n", i);
> + dev->resource[i].flags = IORESOURCE_DISABLED;
> + }
> }
> }
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
>
>
>
> Or did you mean 'if (dev->resource[5].start == 0)' ?
Nah, but also set resource->end = 0 too and or-in IORESOURCE_UNSET for
flags not (=) (or just set it to 0, I have no problem with completely
clearing the resource, that will keep it out of the way)
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2007-01-04 21:30 ` Benjamin Herrenschmidt
@ 2007-01-05 10:26 ` Olaf Hering
0 siblings, 0 replies; 93+ messages in thread
From: Olaf Hering @ 2007-01-05 10:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Alan, Sergei Shtylyov, linuxppc-dev, greg, linux-ide, linux-pci
On Fri, Jan 05, Benjamin Herrenschmidt wrote:
> Nah, but also set resource->end = 0 too and or-in IORESOURCE_UNSET for
> flags not (=) (or just set it to 0, I have no problem with completely
> clearing the resource, that will keep it out of the way)
I get this output with the change below:
Using INTC for W82c105 IDE controller.
W82c105: bn 0 dfn 19
00: f 0000000000000101 s 000000000000f000 e 000000000000f007
01: f 0000000000000101 s 000000000000f010 e 000000000000f013
02: f 0000000000000101 s 000000000000f020 e 000000000000f027
03: f 0000000000000101 s 000000000000f030 e 000000000000f033
04: f 0000000000000101 s 000000000000f040 e 000000000000f04f
05: f 0000000000000101 s 0000000000000000 e 000000000000000f
05: disable IO resource on W82c105 IDE controller
06: f 0000000000000000 s 0000000000000000 e 0000000000000000
07: f 0000000000000000 s 0000000000000000 e 0000000000000000
08: f 0000000000000000 s 0000000000000000 e 0000000000000000
09: f 0000000000000000 s 0000000000000000 e 0000000000000000
10: f 0000000000000000 s 0000000000000000 e 0000000000000000
11: f 0000000000000000 s 0000000000000000 e 0000000000000000
If thats ok, I will submit a patch without the printk.
@@ -130,11 +130,18 @@ static void fixup_winbond_82c105(struct
/* Enable LEGIRQ to use INTC instead of ISA interrupts */
pci_write_config_dword(dev, 0x40, reg | (1<<11));
+ printk("W82c105: bn %x dfn %x\n", dev->bus->number, dev->devfn);
for (i = 0; i < DEVICE_COUNT_RESOURCE; ++i) {
+ printk("%02d: f %016lx s %016lx e %016lx\n", i, dev->resource[i].flags, dev->resource[i].start, dev->resource[i].end);
/* zap the 2nd function of the winbond chip */
if (dev->resource[i].flags & IORESOURCE_IO
&& dev->bus->number == 0 && dev->devfn == 0x81)
dev->resource[i].flags &= ~IORESOURCE_IO;
+ if (dev->resource[i].start == 0 && dev->resource[i].end) {
+ printk("%02d: disable IO resource on W82c105 IDE controller\n", i);
+ dev->resource[i].flags = 0;
+ dev->resource[i].end = 0;
+ }
}
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2007-01-05 10:26 ` Olaf Hering
0 siblings, 0 replies; 93+ messages in thread
From: Olaf Hering @ 2007-01-05 10:26 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linux-ide, greg, linuxppc-dev, linux-pci, Alan
On Fri, Jan 05, Benjamin Herrenschmidt wrote:
> Nah, but also set resource->end = 0 too and or-in IORESOURCE_UNSET for
> flags not (=) (or just set it to 0, I have no problem with completely
> clearing the resource, that will keep it out of the way)
I get this output with the change below:
Using INTC for W82c105 IDE controller.
W82c105: bn 0 dfn 19
00: f 0000000000000101 s 000000000000f000 e 000000000000f007
01: f 0000000000000101 s 000000000000f010 e 000000000000f013
02: f 0000000000000101 s 000000000000f020 e 000000000000f027
03: f 0000000000000101 s 000000000000f030 e 000000000000f033
04: f 0000000000000101 s 000000000000f040 e 000000000000f04f
05: f 0000000000000101 s 0000000000000000 e 000000000000000f
05: disable IO resource on W82c105 IDE controller
06: f 0000000000000000 s 0000000000000000 e 0000000000000000
07: f 0000000000000000 s 0000000000000000 e 0000000000000000
08: f 0000000000000000 s 0000000000000000 e 0000000000000000
09: f 0000000000000000 s 0000000000000000 e 0000000000000000
10: f 0000000000000000 s 0000000000000000 e 0000000000000000
11: f 0000000000000000 s 0000000000000000 e 0000000000000000
If thats ok, I will submit a patch without the printk.
@@ -130,11 +130,18 @@ static void fixup_winbond_82c105(struct
/* Enable LEGIRQ to use INTC instead of ISA interrupts */
pci_write_config_dword(dev, 0x40, reg | (1<<11));
+ printk("W82c105: bn %x dfn %x\n", dev->bus->number, dev->devfn);
for (i = 0; i < DEVICE_COUNT_RESOURCE; ++i) {
+ printk("%02d: f %016lx s %016lx e %016lx\n", i, dev->resource[i].flags, dev->resource[i].start, dev->resource[i].end);
/* zap the 2nd function of the winbond chip */
if (dev->resource[i].flags & IORESOURCE_IO
&& dev->bus->number == 0 && dev->devfn == 0x81)
dev->resource[i].flags &= ~IORESOURCE_IO;
+ if (dev->resource[i].start == 0 && dev->resource[i].end) {
+ printk("%02d: disable IO resource on W82c105 IDE controller\n", i);
+ dev->resource[i].flags = 0;
+ dev->resource[i].end = 0;
+ }
}
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
2007-01-05 10:26 ` Olaf Hering
@ 2007-01-05 12:05 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2007-01-05 12:05 UTC (permalink / raw)
To: Olaf Hering
Cc: Alan, Sergei Shtylyov, linuxppc-dev, greg, linux-ide, linux-pci
On Fri, 2007-01-05 at 11:26 +0100, Olaf Hering wrote:
> On Fri, Jan 05, Benjamin Herrenschmidt wrote:
>
> > Nah, but also set resource->end = 0 too and or-in IORESOURCE_UNSET for
> > flags not (=) (or just set it to 0, I have no problem with completely
> > clearing the resource, that will keep it out of the way)
>
> I get this output with the change below:
>
> Using INTC for W82c105 IDE controller.
> W82c105: bn 0 dfn 19
> 00: f 0000000000000101 s 000000000000f000 e 000000000000f007
> 01: f 0000000000000101 s 000000000000f010 e 000000000000f013
> 02: f 0000000000000101 s 000000000000f020 e 000000000000f027
> 03: f 0000000000000101 s 000000000000f030 e 000000000000f033
> 04: f 0000000000000101 s 000000000000f040 e 000000000000f04f
> 05: f 0000000000000101 s 0000000000000000 e 000000000000000f
> 05: disable IO resource on W82c105 IDE controller
> 06: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 07: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 08: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 09: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 10: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 11: f 0000000000000000 s 0000000000000000 e 0000000000000000
>
> If thats ok, I will submit a patch without the printk.
If it works, I'm fine with it.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: What is the correct way to indicate an unassigned PCI resource ?
@ 2007-01-05 12:05 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2007-01-05 12:05 UTC (permalink / raw)
To: Olaf Hering; +Cc: linux-ide, greg, linuxppc-dev, linux-pci, Alan
On Fri, 2007-01-05 at 11:26 +0100, Olaf Hering wrote:
> On Fri, Jan 05, Benjamin Herrenschmidt wrote:
>
> > Nah, but also set resource->end = 0 too and or-in IORESOURCE_UNSET for
> > flags not (=) (or just set it to 0, I have no problem with completely
> > clearing the resource, that will keep it out of the way)
>
> I get this output with the change below:
>
> Using INTC for W82c105 IDE controller.
> W82c105: bn 0 dfn 19
> 00: f 0000000000000101 s 000000000000f000 e 000000000000f007
> 01: f 0000000000000101 s 000000000000f010 e 000000000000f013
> 02: f 0000000000000101 s 000000000000f020 e 000000000000f027
> 03: f 0000000000000101 s 000000000000f030 e 000000000000f033
> 04: f 0000000000000101 s 000000000000f040 e 000000000000f04f
> 05: f 0000000000000101 s 0000000000000000 e 000000000000000f
> 05: disable IO resource on W82c105 IDE controller
> 06: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 07: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 08: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 09: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 10: f 0000000000000000 s 0000000000000000 e 0000000000000000
> 11: f 0000000000000000 s 0000000000000000 e 0000000000000000
>
> If thats ok, I will submit a patch without the printk.
If it works, I'm fine with it.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2006-12-04 13:25 ` Segher Boessenkool
@ 2007-08-01 14:22 ` Sergei Shtylyov
-1 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2007-08-01 14:22 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Alan, Olaf Hering, linux-ide, linuxppc-dev
Segher Boessenkool wrote:
>> setup-pci is for SFF8038i devices. It therefore knows that for assigned
>> resources they must be I/O. It also assumes that zero is not a valid I/O
>> port just like zero is not a valid IRQ. Stick a real IDE resource at
>> zero and drivers/ide can't cope.
> But 0 _is_ a valid PCI I/O address. Do we now have to start
I wasn't in PCI 2.1 (later the corresponding passage have disppeared).
> using "virtual I/O addresses", analogue to the IRQ situation,
> or can these bad assumptions be fixed instead?
> Segher
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2007-08-01 14:22 ` Sergei Shtylyov
0 siblings, 0 replies; 93+ messages in thread
From: Sergei Shtylyov @ 2007-08-01 14:22 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linux-ide, Olaf Hering, Alan, linuxppc-dev
Segher Boessenkool wrote:
>> setup-pci is for SFF8038i devices. It therefore knows that for assigned
>> resources they must be I/O. It also assumes that zero is not a valid I/O
>> port just like zero is not a valid IRQ. Stick a real IDE resource at
>> zero and drivers/ide can't cope.
> But 0 _is_ a valid PCI I/O address. Do we now have to start
I wasn't in PCI 2.1 (later the corresponding passage have disppeared).
> using "virtual I/O addresses", analogue to the IRQ situation,
> or can these bad assumptions be fixed instead?
> Segher
WBR, Sergei
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2007-08-01 14:22 ` Sergei Shtylyov
@ 2007-08-01 15:51 ` Alan Cox
-1 siblings, 0 replies; 93+ messages in thread
From: Alan Cox @ 2007-08-01 15:51 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: Segher Boessenkool, Olaf Hering, linux-ide, linuxppc-dev
On Wed, 01 Aug 2007 18:22:36 +0400
Sergei Shtylyov <sshtylyov@ru.mvista.com> wrote:
> Segher Boessenkool wrote:
>
> >> setup-pci is for SFF8038i devices. It therefore knows that for assigned
> >> resources they must be I/O. It also assumes that zero is not a valid I/O
> >> port just like zero is not a valid IRQ. Stick a real IDE resource at
> >> zero and drivers/ide can't cope.
>
> > But 0 _is_ a valid PCI I/O address. Do we now have to start
>
> I wasn't in PCI 2.1 (later the corresponding passage have disppeared).
SFF controllers often use 0 to indicate a channel isn't configured and
present. Libata and old IDE both assume these semantics for an SFF
IDE device reporting address zero. It matches the hardware behaviour.
I would suggest you don't map one at I/O zero on your PCI.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2007-08-01 15:51 ` Alan Cox
0 siblings, 0 replies; 93+ messages in thread
From: Alan Cox @ 2007-08-01 15:51 UTC (permalink / raw)
To: Sergei Shtylyov; +Cc: linux-ide, Olaf Hering, linuxppc-dev
On Wed, 01 Aug 2007 18:22:36 +0400
Sergei Shtylyov <sshtylyov@ru.mvista.com> wrote:
> Segher Boessenkool wrote:
>
> >> setup-pci is for SFF8038i devices. It therefore knows that for assigned
> >> resources they must be I/O. It also assumes that zero is not a valid I/O
> >> port just like zero is not a valid IRQ. Stick a real IDE resource at
> >> zero and drivers/ide can't cope.
>
> > But 0 _is_ a valid PCI I/O address. Do we now have to start
>
> I wasn't in PCI 2.1 (later the corresponding passage have disppeared).
SFF controllers often use 0 to indicate a channel isn't configured and
present. Libata and old IDE both assume these semantics for an SFF
IDE device reporting address zero. It matches the hardware behaviour.
I would suggest you don't map one at I/O zero on your PCI.
Alan
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2007-08-01 15:51 ` Alan Cox
@ 2007-08-06 18:04 ` Segher Boessenkool
-1 siblings, 0 replies; 93+ messages in thread
From: Segher Boessenkool @ 2007-08-06 18:04 UTC (permalink / raw)
To: Alan Cox; +Cc: Olaf Hering, linuxppc-dev, Sergei Shtylyov, linux-ide
>>> But 0 _is_ a valid PCI I/O address. Do we now have to start
>>
>> I wasn't in PCI 2.1 (later the corresponding passage have
>> disppeared).
>
> SFF controllers often use 0 to indicate a channel isn't configured and
> present. Libata and old IDE both assume these semantics for an SFF
> IDE device reporting address zero. It matches the hardware behaviour.
>
> I would suggest you don't map one at I/O zero on your PCI.
That's of course the smarter choice, _if_ we have a choice at
all -- on PowerPC, the PCI setup on certain platforms is done
by the firmware (and we don't want to mess with it for various
reasons), and some _do_ map PCI legacy I/O at 0.
Not in this case though, so let's just ignore that possibility
until it hits us in the face :-)
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2007-08-06 18:04 ` Segher Boessenkool
0 siblings, 0 replies; 93+ messages in thread
From: Segher Boessenkool @ 2007-08-06 18:04 UTC (permalink / raw)
To: Alan Cox; +Cc: linuxppc-dev, Olaf Hering, linux-ide
>>> But 0 _is_ a valid PCI I/O address. Do we now have to start
>>
>> I wasn't in PCI 2.1 (later the corresponding passage have
>> disppeared).
>
> SFF controllers often use 0 to indicate a channel isn't configured and
> present. Libata and old IDE both assume these semantics for an SFF
> IDE device reporting address zero. It matches the hardware behaviour.
>
> I would suggest you don't map one at I/O zero on your PCI.
That's of course the smarter choice, _if_ we have a choice at
all -- on PowerPC, the PCI setup on certain platforms is done
by the firmware (and we don't want to mess with it for various
reasons), and some _do_ map PCI legacy I/O at 0.
Not in this case though, so let's just ignore that possibility
until it hits us in the face :-)
Segher
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2007-08-06 18:04 ` Segher Boessenkool
@ 2007-08-06 19:52 ` Alan Cox
-1 siblings, 0 replies; 93+ messages in thread
From: Alan Cox @ 2007-08-06 19:52 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Olaf Hering, linuxppc-dev, Sergei Shtylyov, linux-ide
O> That's of course the smarter choice, _if_ we have a choice at
> all -- on PowerPC, the PCI setup on certain platforms is done
> by the firmware (and we don't want to mess with it for various
> reasons), and some _do_ map PCI legacy I/O at 0.
>
> Not in this case though, so let's just ignore that possibility
> until it hits us in the face :-)
An SFF controller mapped at I/O is basically not going to work. Take it
up with the firmware
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2007-08-06 19:52 ` Alan Cox
0 siblings, 0 replies; 93+ messages in thread
From: Alan Cox @ 2007-08-06 19:52 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linuxppc-dev, Olaf Hering, linux-ide
O> That's of course the smarter choice, _if_ we have a choice at
> all -- on PowerPC, the PCI setup on certain platforms is done
> by the firmware (and we don't want to mess with it for various
> reasons), and some _do_ map PCI legacy I/O at 0.
>
> Not in this case though, so let's just ignore that possibility
> until it hits us in the face :-)
An SFF controller mapped at I/O is basically not going to work. Take it
up with the firmware
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
2007-08-06 18:04 ` Segher Boessenkool
@ 2007-08-06 22:14 ` Benjamin Herrenschmidt
-1 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2007-08-06 22:14 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Alan Cox, linuxppc-dev, Olaf Hering, linux-ide
On Mon, 2007-08-06 at 20:04 +0200, Segher Boessenkool wrote:
> That's of course the smarter choice, _if_ we have a choice at
> all -- on PowerPC, the PCI setup on certain platforms is done
> by the firmware (and we don't want to mess with it for various
> reasons), and some _do_ map PCI legacy I/O at 0.
>
> Not in this case though, so let's just ignore that possibility
> until it hits us in the face :-)
Agreed. We can always try to remap just that device if it becomes an
issue.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
* Re: [PATCH] mark PCI resource with start 0 as unassigned
@ 2007-08-06 22:14 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 93+ messages in thread
From: Benjamin Herrenschmidt @ 2007-08-06 22:14 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: linuxppc-dev, Olaf Hering, Alan Cox, linux-ide
On Mon, 2007-08-06 at 20:04 +0200, Segher Boessenkool wrote:
> That's of course the smarter choice, _if_ we have a choice at
> all -- on PowerPC, the PCI setup on certain platforms is done
> by the firmware (and we don't want to mess with it for various
> reasons), and some _do_ map PCI legacy I/O at 0.
>
> Not in this case though, so let's just ignore that possibility
> until it hits us in the face :-)
Agreed. We can always try to remap just that device if it becomes an
issue.
Ben.
^ permalink raw reply [flat|nested] 93+ messages in thread
end of thread, other threads:[~2007-08-06 22:14 UTC | newest]
Thread overview: 93+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-30 16:52 pata_sl82c105 can not reserve IO region Olaf Hering
2006-11-30 17:10 ` Alan
2006-11-30 18:47 ` Olaf Hering
2006-12-01 18:34 ` Olaf Hering
2006-12-01 18:58 ` Alan
2006-12-01 19:05 ` Sergei Shtylyov
2006-12-01 19:05 ` Sergei Shtylyov
2006-12-01 21:53 ` Benjamin Herrenschmidt
2006-12-01 21:53 ` Benjamin Herrenschmidt
2006-12-01 22:15 ` Alan
2006-12-01 22:15 ` Alan
2006-12-01 22:19 ` Benjamin Herrenschmidt
2006-12-01 22:19 ` Benjamin Herrenschmidt
2006-12-02 14:36 ` U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region) Sergei Shtylyov
2006-12-02 14:36 ` [U-Boot-Users] " Sergei Shtylyov
2006-12-02 16:33 ` Sergei Shtylyov
2006-12-02 16:33 ` [U-Boot-Users] " Sergei Shtylyov
2006-12-26 20:53 ` Sergei Shtylyov
2006-12-26 20:53 ` Sergei Shtylyov
2006-12-03 23:39 ` pata_sl82c105 can not reserve IO region Alan
2006-12-03 23:39 ` Alan
2006-12-03 17:12 ` Olaf Hering
2006-12-03 22:24 ` Olaf Hering
2006-12-03 23:23 ` Alan
2006-12-04 0:30 ` Olaf Hering
2006-12-04 9:21 ` Olaf Hering
2006-12-03 23:07 ` Alan
2006-12-04 12:38 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
2006-12-04 12:44 ` Segher Boessenkool
2006-12-04 12:50 ` Sergei Shtylyov
2006-12-04 12:50 ` Sergei Shtylyov
2006-12-04 12:54 ` Segher Boessenkool
2006-12-04 12:54 ` Segher Boessenkool
2006-12-04 13:08 ` Sergei Shtylyov
2006-12-04 13:08 ` Sergei Shtylyov
2006-12-04 13:21 ` Alan
2006-12-04 13:25 ` Segher Boessenkool
2006-12-04 13:25 ` Segher Boessenkool
2006-12-04 14:15 ` Alan
2007-08-01 14:22 ` Sergei Shtylyov
2007-08-01 14:22 ` Sergei Shtylyov
2007-08-01 15:51 ` Alan Cox
2007-08-01 15:51 ` Alan Cox
2007-08-06 18:04 ` Segher Boessenkool
2007-08-06 18:04 ` Segher Boessenkool
2007-08-06 19:52 ` Alan Cox
2007-08-06 19:52 ` Alan Cox
2007-08-06 22:14 ` Benjamin Herrenschmidt
2007-08-06 22:14 ` Benjamin Herrenschmidt
2006-12-04 13:27 ` Sergei Shtylyov
2006-12-04 13:27 ` Sergei Shtylyov
2006-12-04 14:22 ` What is the correct way to indicate an unassigned PCI resource ? Alan
2006-12-04 14:34 ` Sergei Shtylyov
2006-12-04 14:34 ` Sergei Shtylyov
2006-12-04 14:44 ` Alan
2006-12-04 15:40 ` Sergei Shtylyov
2006-12-04 15:40 ` Sergei Shtylyov
2006-12-04 15:55 ` Sergei Shtylyov
2006-12-04 15:55 ` Sergei Shtylyov
2006-12-04 20:53 ` Guennadi Liakhovetski
2006-12-04 20:53 ` Guennadi Liakhovetski
2006-12-05 4:43 ` Benjamin Herrenschmidt
2006-12-05 4:43 ` Benjamin Herrenschmidt
2006-12-05 4:41 ` Benjamin Herrenschmidt
2006-12-05 4:41 ` Benjamin Herrenschmidt
2006-12-05 8:15 ` Olaf Hering
2006-12-05 8:15 ` Olaf Hering
2006-12-05 20:19 ` Benjamin Herrenschmidt
2006-12-05 20:19 ` Benjamin Herrenschmidt
2006-12-05 21:26 ` Sergei Shtylyov
2006-12-05 21:26 ` Sergei Shtylyov
2007-01-04 17:49 ` Olaf Hering
2007-01-04 21:30 ` Benjamin Herrenschmidt
2007-01-05 10:26 ` Olaf Hering
2007-01-05 10:26 ` Olaf Hering
2007-01-05 12:05 ` Benjamin Herrenschmidt
2007-01-05 12:05 ` Benjamin Herrenschmidt
2006-12-05 10:51 ` Gabriel Paubert
2006-12-05 10:51 ` Gabriel Paubert
2006-12-05 12:38 ` Sergei Shtylyov
2006-12-05 12:38 ` Sergei Shtylyov
2006-12-05 17:37 ` Grant Grundler
2006-12-05 17:37 ` Grant Grundler
2006-12-05 19:22 ` Sergei Shtylyov
2006-12-05 19:22 ` Sergei Shtylyov
2006-12-04 12:56 ` [PATCH] mark PCI resource with start 0 as unassigned Olaf Hering
2006-12-04 13:05 ` Segher Boessenkool
2006-12-04 12:47 ` Sergei Shtylyov
2006-12-04 12:40 ` [PATCH] add delay around sl82c105_reset_engine calls Olaf Hering
2006-12-04 13:02 ` Alan
2006-12-04 13:12 ` Olaf Hering
2007-01-04 6:42 ` Olaf Hering
2007-01-04 10:53 ` Alan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.