Bug 76691 - HP zx1 AGP GART no longer detected - BISECTED REGRESSION - Linux 3.11-rc1
Summary: HP zx1 AGP GART no longer detected - BISECTED REGRESSION - Linux 3.11-rc1
Status: CLOSED PATCH_ALREADY_AVAILABLE
Alias: None
Product: ACPI
Classification: Unclassified
Component: Config-Other (show other bugs)
Hardware: IA-64 Linux
: P1 normal
Assignee: Rafael J. Wysocki
URL: http://http://marc.info/?l=linux-ia64...
Keywords:
Depends on:
Blocks:
 
Reported: 2014-05-21 22:01 UTC by Émeric Maschino
Modified: 2015-07-21 19:31 UTC (History)
6 users (show)

See Also:
Kernel Version: 3.11
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments
ACPI / ia64 / sba_iommu: Defer initialization (3.49 KB, patch)
2014-06-06 23:32 UTC, Rafael J. Wysocki
Details | Diff

Description Émeric Maschino 2014-05-21 22:01:00 UTC
(originally first reported on the linux-ia64 list)

I'm running Linux/ia64 on a hp workstation zx6000 that came with an ATI FireGL X1 AGP graphics adapter.

Up to kernel 3.10.40, zx1 AGP GART was successfully detected:
[   15.896075] Linux agpgart interface v0.103
[   17.272674] agpgart: HP ZX1 IOC: IOPDIR shared with sba_iommu
[   17.272980]  (null): AGP aperture is 512M @ 0x60000000
[   17.273015] agpgart: Detected HP ZX1 HWP0003 AGP chipset (ioc=fed01000, lba=f
ed28000)
<snip>
[   29.602989] radeon 0000:80:00.0: putting AGP V2 device into 2x mode
[   29.603306] radeon 0000:80:00.0: GTT: 512M 0x60000000 - 0x7FFFFFFF
[   29.603399] [drm] Generation 1 PCI interface in multifunction mode

Starting with kernel 3.11-rc1, zx1 AGP GART is no more detected. Furthermore, the graphics adapter is set to PCI mode:
[    5.442563] Linux agpgart interface v0.103
[    5.937458] agpgart: HP ZX1 IOC: IOPDIR shared with sba_iommu
[    5.937491] agpgart: No reserved IO PDIR entry found; GART disabled
<snip>
[    6.028511] [drm:radeon_agp_init] *ERROR* Unable to acquire AGP: -19
[    6.028543] [drm] Forcing AGP to PCI mode
[    6.028631] [drm] Generation 1 PCI interface in multifunction mode

Remark: Nevermind the timing, timer frequency wasn't the same between the two runs (250 Hz vs 1000 Hz).

I've managed to nearly bisect the regression. I say nearly, because some commits made the kernel unbuildable and must be skipped.

So, the offending candidates are:
- 66345d5f79fcfa0214f5d98763643d4ee8e6965d (ACPI / ia64 / sba_iommu: Use ACPI scan handler for device discovery);
- 24071f472d813fccacc1ef7356b1f41422a1b968 (ACPI / scan: Do not bind ACPI drivers to objects with scan handlers);
- d9e455f53f6fb93c764de2399c3894bbdfd2caa7 (ACPI / scan: Simplify ACPI driver probing).
These were merged with 8e9914d5efe460600f5948da7ae4c1b6c038a4c0 (Merge branch 'acpi-scan').

I bet that the culprit is 66345d5f79fcfa0214f5d98763643d4ee8e6965d as it is zx1 specific, but I can't verify for sure as reverting it makes the kernel panics:
IOC IOMMU Driver: probe of HWP0001:00 failed with error -22
Kernel panic - not syncinc: Unable to find SBA IOMMU: Try a generic or DIG kernel
(Yep, I'm running HP-zx1/sx1000, i.e. CONFIG_IA64_HP_ZX1=y kernel).

What's your opinion Linux/ia64 gurus? How to fix the breakage with the zx1 AGP GART detection?

Thanks,

     Émeric
Comment 1 Émeric Maschino 2014-05-21 22:04:42 UTC
Hi,

I've looked at this issue deeper: the problem seems to rely in the initialization of the PCI resources.

Instrumenting the ioc_iova_init function in arch/ia64/hp/common/sba_iommu.c most notably gives for working kernel 3.10.40:
[    3.730289] for_each_pci_dev(0xe000004080245000)
[    3.730442] for_each_pci_dev(0xe000004080245800)
[    3.730594] for_each_pci_dev(0xe000004080246000)
[    3.730745] for_each_pci_dev(0xe000004080246800)
[    3.730897] for_each_pci_dev(0xe000004080247000)
[    3.731034] for_each_pci_dev(0xe000004080247800)
[    3.731281] for_each_pci_dev(0xe000004080248000)
[    3.731528] for_each_pci_dev(0xe000004080248800)
[    3.731918] for_each_pci_dev(0xe000004080249000)
[    3.732133] for_each_pci_dev(0xe000004080249800)
[    3.732336] for_each_pci_dev(0xe00000408024a000)
[    3.732532] for_each_pci_dev(0xe00000408024a800)

Whereas with broken kernel 3.11-rc1, the same function instrumentation outputs nothing, i.e. for_each_pci_dev(device) immediately returns NULL (see below). The agp_found variable is thus still 0 and the corresponding AGP GART initialization path is not taken:

	/*
	** If an AGP device is present, only use half of the IOV space
	** for PCI DMA.  Unfortunately we can't know ahead of time
	** whether GART support will actually be used, for now we
	** can just key on an AGP device found in the system.
	** We program the next pdir index after we stop w/ a key for
	** the GART code to handshake on.
	*/
	for_each_pci_dev(device)	
		agp_found |= pci_find_capability(device, PCI_CAP_ID_AGP);

	if (agp_found && reserve_sba_gart) {
		printk(KERN_INFO PFX "reserving %dMb of IOVA space at 0x%lx for agpgart\n",
		      ioc->iov_size/2 >> 20, ioc->ibase + ioc->iov_size/2);
		ioc->pdir_size /= 2;
		((u64 *)ioc->pdir_base)[PDIR_INDEX(ioc->iov_size/2)] = ZX1_SBA_IOMMU_COOKIE;
	}

Where should I look for now?

     Émeric
Comment 2 Émeric Maschino 2014-05-21 22:06:16 UTC
Again,

I'm now quite confident that the regression comes from commit 66345d5f79fcfa0214f5d98763643d4ee8e6965d as the description talks about an ordering issue on hp rx2600 between the SBA I/O MMU driver and the container scan handler.

First, I'm running on hp zx6000 that's a rx2600 with an AGP slot.
Then, defining DEBUG_SBA_INIT in sba_iommu.c clearly shows in dmesg logs that, for working kernel 3.10.40, ioc_init (and thus ioc_iova_init) is called once the ACPI/PCI resources (is this the right terminology?) have been parsed, whereas for non-working kernel 3.11-rc1, ioc_init is called at the very beginning.

For working kernel 3.10.40, I get:
[    0.167176] ACPI: Using IOSAPIC for interrupt routing
[    1.655483] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-1f])
[    1.809485] acpi HWP0002:00: host bridge window [io  0x0000-0x03af]
[    1.809521] acpi HWP0002:00: host bridge window [io  0x03e0-0x1fff]
[    1.809555] acpi HWP0002:00: host bridge window [mem 0x80000000-0x8fffffff]
[    1.809590] acpi HWP0002:00: host bridge window [mem
0x80004000000-0x80103fffffe]
[    1.809661] PCI host bridge to bus 0000:00
[    1.809693] pci_bus 0000:00: root bus resource [bus 00-1f]
[    1.809726] pci_bus 0000:00: root bus resource [io  0x0000-0x03af]
[    1.809760] pci_bus 0000:00: root bus resource [io  0x03e0-0x1fff]
[    1.809794] pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff]
[    1.809828] pci_bus 0000:00: root bus resource [mem
0x80004000000-0x80103fffffe]
[    1.810100] pci 0000:00:01.0: [1033:0035] type 00 class 0x0c0310
[    1.810503] pci 0000:00:01.0: reg 10: [mem 0x80023000-0x80023fff]
[    1.812250] pci 0000:00:01.0: supports D1 D2
[    1.812253] pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot
[    1.812690] pci 0000:00:01.1: [1033:0035] type 00 class 0x0c0310
[    1.813097] pci 0000:00:01.1: reg 10: [mem 0x80022000-0x80022fff]
[    1.814796] pci 0000:00:01.1: supports D1 D2
[    1.814799] pci 0000:00:01.1: PME# supported from D0 D1 D2 D3hot
[    1.815255] pci 0000:00:01.2: [1033:00e0] type 00 class 0x0c0320
[    1.815655] pci 0000:00:01.2: reg 10: [mem 0x80021000-0x800210ff]
[    1.817370] pci 0000:00:01.2: supports D1 D2
[    1.817373] pci 0000:00:01.2: PME# supported from D0 D1 D2 D3hot
[    1.817957] pci 0000:00:02.0: [1095:0649] type 00 class 0x01018f
[    1.818340] pci 0000:00:02.0: reg 10: [io  0x0d58-0x0d5f]
[    1.818557] pci 0000:00:02.0: reg 14: [io  0x0d64-0x0d67]
[    1.818774] pci 0000:00:02.0: reg 18: [io  0x0d50-0x0d57]
[    1.819005] pci 0000:00:02.0: reg 1c: [io  0x0d60-0x0d63]
[    1.819221] pci 0000:00:02.0: reg 20: [io  0x0d40-0x0d4f]
[    1.820126] pci 0000:00:02.0: supports D1 D2
[    1.820495] pci 0000:00:03.0: [8086:1229] type 00 class 0x020000
[    1.820898] pci 0000:00:03.0: reg 10: [mem 0x80020000-0x80020fff]
[    1.821097] pci 0000:00:03.0: reg 14: [io  0x0d00-0x0d3f]
[    1.821314] pci 0000:00:03.0: reg 18: [mem 0x80000000-0x8001ffff]
[    1.822614] pci 0000:00:03.0: supports D1 D2
[    1.822617] pci 0000:00:03.0: PME# supported from D0 D1 D2 D3hot D3cold
[    1.823685] acpi HWP0002:00: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    1.823722] acpi HWP0002:00: Unable to request _OSC control (_OSC
support mask: 0x08)
[    1.905478] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 20-3f])
[    2.061482] acpi HWP0002:01: host bridge window [mem 0xff5e0000-0xff5e0007]
[    2.061518] acpi HWP0002:01: host bridge window [mem 0xff5e2000-0xff5e2007]
[    2.061555] acpi HWP0002:01: host bridge window [io  0x2000-0x2fff]
[    2.061589] acpi HWP0002:01: host bridge window [mem 0x90000000-0x97ffffff]
[    2.061624] acpi HWP0002:01: host bridge window [mem
0x90004000000-0x90103fffffe]
[    2.061696] PCI host bridge to bus 0000:20
[    2.061727] pci_bus 0000:20: root bus resource [bus 20-3f]
[    2.061760] pci_bus 0000:20: root bus resource [io  0x2000-0x2fff]
[    2.061794] pci_bus 0000:20: root bus resource [mem 0x90000000-0x97ffffff]
[    2.061829] pci_bus 0000:20: root bus resource [mem
0x90004000000-0x90103fffffe]
[    2.062224] pci 0000:20:01.0: [1000:0030] type 00 class 0x010000
[    2.062769] pci 0000:20:01.0: reg 10: [io  0x2100-0x21ff]
[    2.063149] pci 0000:20:01.0: reg 14: [mem 0x90840000-0x9084ffff 64bit]
[    2.063550] pci 0000:20:01.0: reg 1c: [mem 0x90830000-0x9083ffff 64bit]
[    2.064077] pci 0000:20:01.0: reg 30: [mem 0x90400000-0x907fffff pref]
[    2.064731] pci 0000:20:01.0: supports D1 D2
[    2.065344] pci 0000:20:01.1: [1000:0030] type 00 class 0x010000
[    2.065889] pci 0000:20:01.1: reg 10: [io  0x2000-0x20ff]
[    2.066294] pci 0000:20:01.1: reg 14: [mem 0x90820000-0x9082ffff 64bit]
[    2.066694] pci 0000:20:01.1: reg 1c: [mem 0x90810000-0x9081ffff 64bit]
[    2.067185] pci 0000:20:01.1: reg 30: [mem 0x90000000-0x903fffff pref]
[    2.067839] pci 0000:20:01.1: supports D1 D2
[    2.068798] pci 0000:20:02.0: [14e4:1645] type 00 class 0x020000
[    2.069403] pci 0000:20:02.0: reg 10: [mem 0x90800000-0x9080ffff 64bit]
[    2.071438] pci 0000:20:02.0: PME# supported from D3hot D3cold
[    2.072877] acpi HWP0002:01: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    2.072913] acpi HWP0002:01: Unable to request _OSC control (_OSC
support mask: 0x08)
[    2.156480] ACPI: PCI Root Bridge [PCI2] (domain 0000 [bus 40-5f])
[    2.300482] acpi HWP0002:02: host bridge window [io  0x3000-0x5fff]
[    2.300517] acpi HWP0002:02: host bridge window [mem 0x98000000-0xafffffff]
[    2.300553] acpi HWP0002:02: host bridge window [mem
0xa0004000000-0xa0103fffffe]
[    2.300642] PCI host bridge to bus 0000:40
[    2.300674] pci_bus 0000:40: root bus resource [bus 40-5f]
[    2.300707] pci_bus 0000:40: root bus resource [io  0x3000-0x5fff]
[    2.300740] pci_bus 0000:40: root bus resource [mem 0x98000000-0xafffffff]
[    2.300775] pci_bus 0000:40: root bus resource [mem
0xa0004000000-0xa0103fffffe]
[    2.301138] pci 0000:40:01.0: [1319:0801] type 00 class 0x040100
[    2.301705] pci 0000:40:01.0: reg 10: [io  0x3000-0x307f]
[    2.304134] pci 0000:40:01.0: supports D2
[    2.336435] pci 0000:40:01.1: [1319:0802] type 00 class 0x098000
[    2.336959] pci 0000:40:01.1: reg 10: [io  0x3080-0x308f]
[    2.339393] pci 0000:40:01.1: supports D1
[    2.339396] pci 0000:40:01.1: PME# supported from D1 D3hot
[    2.373701] acpi HWP0002:02: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    2.373737] acpi HWP0002:02: Unable to request _OSC control (_OSC
support mask: 0x08)
[    2.509483] ACPI: PCI Root Bridge [PCI3] (domain 0000 [bus 60-7f])
[    2.645481] acpi HWP0002:03: host bridge window [io  0x6000-0x7fff]
[    2.645516] acpi HWP0002:03: host bridge window [mem 0xb0000000-0xc7ffffff]
[    2.645551] acpi HWP0002:03: host bridge window [mem
0xb0004000000-0xb0103fffffe]
[    2.645641] PCI host bridge to bus 0000:60
[    2.645672] pci_bus 0000:60: root bus resource [bus 60-7f]
[    2.645705] pci_bus 0000:60: root bus resource [io  0x6000-0x7fff]
[    2.645739] pci_bus 0000:60: root bus resource [mem 0xb0000000-0xc7ffffff]
[    2.645773] pci_bus 0000:60: root bus resource [mem
0xb0004000000-0xb0103fffffe]
[    2.647348] acpi HWP0002:03: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    2.647383] acpi HWP0002:03: Unable to request _OSC control (_OSC
support mask: 0x08)
[    2.801485] ACPI: PCI Root Bridge [PCI4] (domain 0000 [bus 80-bf])
[    2.973489] acpi HWP0003:00: host bridge window [io  0x03b0-0x03df]
[    2.973525] acpi HWP0003:00: host bridge window [io  0x8000-0xbfff]
[    2.973560] acpi HWP0003:00: host bridge window [mem 0x000a0000-0x000fffff]
[    2.973595] acpi HWP0003:00: host bridge window [mem 0xc8000000-0xdfffffff]
[    2.973630] acpi HWP0003:00: host bridge window [mem
0xc0004000000-0xc0103fffffe]
[    2.973719] PCI host bridge to bus 0000:80
[    2.973751] pci_bus 0000:80: root bus resource [bus 80-bf]
[    2.973784] pci_bus 0000:80: root bus resource [io  0x03b0-0x03df]
[    2.973818] pci_bus 0000:80: root bus resource [io  0x8000-0xbfff]
[    2.973852] pci_bus 0000:80: root bus resource [mem 0x000a0000-0x000fffff]
[    2.973886] pci_bus 0000:80: root bus resource [mem 0xc8000000-0xdfffffff]
[    2.973921] pci_bus 0000:80: root bus resource [mem
0xc0004000000-0xc0103fffffe]
[    2.974453] pci 0000:80:00.0: [1002:4e47] type 00 class 0x030000
[    2.975282] pci 0000:80:00.0: reg 10: [mem 0xd0000000-0xd7ffffff pref]
[    2.975672] pci 0000:80:00.0: reg 14: [io  0x8000-0x80ff]
[    2.976060] pci 0000:80:00.0: reg 18: [mem 0xd8030000-0xd803ffff]
[    2.977613] pci 0000:80:00.0: reg 30: [mem 0xd8000000-0xd801ffff pref]
[    2.977784] pci 0000:80:00.0: Boot video device
[    2.978777] pci 0000:80:00.0: supports D1 D2
[    3.011504] pci 0000:80:00.1: [1002:4e67] type 00 class 0x038000
[    3.012172] pci 0000:80:00.1: reg 10: [mem 0xc8000000-0xcfffffff pref]
[    3.012562] pci 0000:80:00.1: reg 14: [mem 0xd8020000-0xd802ffff]
[    3.015281] pci 0000:80:00.1: supports D1 D2
[    3.050175] acpi HWP0003:00: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    3.050211] acpi HWP0003:00: Unable to request _OSC control (_OSC
support mask: 0x08)
[    3.185479] ACPI: PCI Root Bridge [PCI6] (domain 0000 [bus c0-df])
[    3.321485] acpi HWP0002:04: host bridge window [io  0xc000-0xdfff]
[    3.321520] acpi HWP0002:04: host bridge window [mem 0xe0000000-0xefffffff]
[    3.321555] acpi HWP0002:04: host bridge window [mem
0xe0004000000-0xe0103fffffe]
[    3.321651] PCI host bridge to bus 0000:c0
[    3.321682] pci_bus 0000:c0: root bus resource [bus c0-df]
[    3.321715] pci_bus 0000:c0: root bus resource [io  0xc000-0xdfff]
[    3.321749] pci_bus 0000:c0: root bus resource [mem 0xe0000000-0xefffffff]
[    3.321784] pci_bus 0000:c0: root bus resource [mem
0xe0004000000-0xe0103fffffe]
[    3.323828] acpi HWP0002:04: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    3.323864] acpi HWP0002:04: Unable to request _OSC control (_OSC
support mask: 0x08)
[    3.388232] ACPI: Enabled 1 GPEs in block 10 to 1F
[    3.388302] acpi root: \_SB_.SBA0.PCI0 notify handler is installed
[    3.388305] acpi root: \_SB_.SBA0.PCI1 notify handler is installed
[    3.388310] acpi root: \_SB_.SBA0.PCI2 notify handler is installed
[    3.388319] acpi root: \_SB_.SBA0.PCI3 notify handler is installed
[    3.388327] acpi root: \_SB_.SBA0.PCI4 notify handler is installed
[    3.388335] acpi root: \_SB_.SBA0.PCI6 notify handler is installed
[    3.388352] Found 6 acpi root devices
<snip>
[    3.730064] ioc_init: PAGE_SIZE 16K, iovp_size 16K
[    3.730098] ioc_iova_init() hpa c0000000fed01000 IOV base
0x40000000 mask 0xffffffffc0000000 (1024MB)
[    3.730255] ioc_iova_init() IOV page size 16K pdir e000004080300000
size 80000
[    3.732784] IOC: reserving 512Mb of IOVA space at 0x60000000 for agpgart
[    3.732818] ioc_resource_init() res_size 0x1000
[    3.732850] ioc_resource_init() res_map 1000 e000004080268000
[    3.733006] IOC: zx1 2.3 HPA 0xfed01000 IOVA space 1024Mb at 0x40000000

Whereas for non-working kernel 3.11-rc1, I get:
[    0.167172] ACPI: Using IOSAPIC for interrupt routing
[    1.912145] ioc_init: PAGE_SIZE 16K, iovp_size 16K
[    1.912207] ioc_iova_init() hpa c0000000fed01000 IOV base
0x40000000 mask 0xffffffffc0000000 (1024MB)
[    1.912470] ioc_iova_init() IOV page size 16K pdir e000004080280000
size 80000
[    1.912506] ioc_resource_init() res_size 0x2000
[    1.912541] ioc_resource_init() res_map 2000 e00000408021c000
[    1.912575] IOC: zx1 2.3 HPA 0xfed01000 IOVA space 1024Mb at 0x40000000
[    1.997482] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-1f])
[    1.997521] acpi HWP0002:00: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    1.997556] acpi HWP0002:00: Unable to request _OSC control (_OSC
support mask: 0x08)
[    2.151479] acpi HWP0002:00: host bridge window [io  0x0000-0x03af]
[    2.151516] acpi HWP0002:00: host bridge window [io  0x03e0-0x1fff]
[    2.151550] acpi HWP0002:00: host bridge window [mem 0x80000000-0x8fffffff]
[    2.151585] acpi HWP0002:00: host bridge window [mem
0x80004000000-0x80103fffffe]
[    2.151657] PCI host bridge to bus 0000:00
[    2.151689] pci_bus 0000:00: root bus resource [io  0x0000-0x03af]
[    2.151723] pci_bus 0000:00: root bus resource [io  0x03e0-0x1fff]
[    2.151757] pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff]
[    2.151792] pci_bus 0000:00: root bus resource [mem
0x80004000000-0x80103fffffe]
[    2.151828] pci_bus 0000:00: root bus resource [bus 00-1f]
[    2.152100] pci 0000:00:01.0: [1033:0035] type 00 class 0x0c0310
[    2.152505] pci 0000:00:01.0: reg 0x10: [mem 0x80023000-0x80023fff]
[    2.154250] pci 0000:00:01.0: supports D1 D2
[    2.154253] pci 0000:00:01.0: PME# supported from D0 D1 D2 D3hot
[    2.154698] pci 0000:00:01.1: [1033:0035] type 00 class 0x0c0310
[    2.155097] pci 0000:00:01.1: reg 0x10: [mem 0x80022000-0x80022fff]
[    2.156797] pci 0000:00:01.1: supports D1 D2
[    2.156800] pci 0000:00:01.1: PME# supported from D0 D1 D2 D3hot
[    2.157252] pci 0000:00:01.2: [1033:00e0] type 00 class 0x0c0320
[    2.157651] pci 0000:00:01.2: reg 0x10: [mem 0x80021000-0x800210ff]
[    2.159370] pci 0000:00:01.2: supports D1 D2
[    2.159374] pci 0000:00:01.2: PME# supported from D0 D1 D2 D3hot
[    2.159958] pci 0000:00:02.0: [1095:0649] type 00 class 0x01018f
[    2.160370] pci 0000:00:02.0: reg 0x10: [io  0x0d58-0x0d5f]
[    2.160588] pci 0000:00:02.0: reg 0x14: [io  0x0d64-0x0d67]
[    2.160805] pci 0000:00:02.0: reg 0x18: [io  0x0d50-0x0d57]
[    2.161005] pci 0000:00:02.0: reg 0x1c: [io  0x0d60-0x0d63]
[    2.161222] pci 0000:00:02.0: reg 0x20: [io  0x0d40-0x0d4f]
[    2.162126] pci 0000:00:02.0: supports D1 D2
[    2.162496] pci 0000:00:03.0: [8086:1229] type 00 class 0x020000
[    2.162899] pci 0000:00:03.0: reg 0x10: [mem 0x80020000-0x80020fff]
[    2.163127] pci 0000:00:03.0: reg 0x14: [io  0x0d00-0x0d3f]
[    2.163344] pci 0000:00:03.0: reg 0x18: [mem 0x80000000-0x8001ffff]
[    2.164614] pci 0000:00:03.0: supports D1 D2
[    2.164617] pci 0000:00:03.0: PME# supported from D0 D1 D2 D3hot D3cold
[    2.247481] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 20-3f])
[    2.247517] acpi HWP0002:01: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    2.247553] acpi HWP0002:01: Unable to request _OSC control (_OSC
support mask: 0x08)
[    2.403487] acpi HWP0002:01: host bridge window [mem 0xff5e0000-0xff5e0007]
[    2.403522] acpi HWP0002:01: host bridge window [mem 0xff5e2000-0xff5e2007]
[    2.403558] acpi HWP0002:01: host bridge window [io  0x2000-0x2fff]
[    2.403593] acpi HWP0002:01: host bridge window [mem 0x90000000-0x97ffffff]
[    2.403628] acpi HWP0002:01: host bridge window [mem
0x90004000000-0x90103fffffe]
[    2.403699] PCI host bridge to bus 0000:20
[    2.403731] pci_bus 0000:20: root bus resource [io  0x2000-0x2fff]
[    2.403765] pci_bus 0000:20: root bus resource [mem 0x90000000-0x97ffffff]
[    2.403799] pci_bus 0000:20: root bus resource [mem
0x90004000000-0x90103fffffe]
[    2.403834] pci_bus 0000:20: root bus resource [bus 20-3f]
[    2.404224] pci 0000:20:01.0: [1000:0030] type 00 class 0x010000
[    2.404769] pci 0000:20:01.0: reg 0x10: [io  0x2100-0x21ff]
[    2.405186] pci 0000:20:01.0: reg 0x14: [mem 0x90840000-0x9084ffff 64bit]
[    2.405587] pci 0000:20:01.0: reg 0x1c: [mem 0x90830000-0x9083ffff 64bit]
[    2.406078] pci 0000:20:01.0: reg 0x30: [mem 0x90400000-0x907fffff pref]
[    2.406731] pci 0000:20:01.0: supports D1 D2
[    2.407351] pci 0000:20:01.1: [1000:0030] type 00 class 0x010000
[    2.407896] pci 0000:20:01.1: reg 0x10: [io  0x2000-0x20ff]
[    2.408294] pci 0000:20:01.1: reg 0x14: [mem 0x90820000-0x9082ffff 64bit]
[    2.408695] pci 0000:20:01.1: reg 0x1c: [mem 0x90810000-0x9081ffff 64bit]
[    2.409186] pci 0000:20:01.1: reg 0x30: [mem 0x90000000-0x903fffff pref]
[    2.409840] pci 0000:20:01.1: supports D1 D2
[    2.410799] pci 0000:20:02.0: [14e4:1645] type 00 class 0x020000
[    2.411438] pci 0000:20:02.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    2.413474] pci 0000:20:02.0: PME# supported from D3hot D3cold
[    2.498480] ACPI: PCI Root Bridge [PCI2] (domain 0000 [bus 40-5f])
[    2.498516] acpi HWP0002:02: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    2.498552] acpi HWP0002:02: Unable to request _OSC control (_OSC
support mask: 0x08)
[    2.642482] acpi HWP0002:02: host bridge window [io  0x3000-0x5fff]
[    2.642517] acpi HWP0002:02: host bridge window [mem 0x98000000-0xafffffff]
[    2.642552] acpi HWP0002:02: host bridge window [mem
0xa0004000000-0xa0103fffffe]
[    2.675146] PCI host bridge to bus 0000:40
[    2.675178] pci_bus 0000:40: root bus resource [io  0x3000-0x5fff]
[    2.675212] pci_bus 0000:40: root bus resource [mem 0x98000000-0xafffffff]
[    2.675247] pci_bus 0000:40: root bus resource [mem
0xa0004000000-0xa0103fffffe]
[    2.675282] pci_bus 0000:40: root bus resource [bus 40-5f]
[    2.675665] pci 0000:40:01.0: [1319:0801] type 00 class 0x040100
[    2.676223] pci 0000:40:01.0: reg 0x10: [io  0x3000-0x307f]
[    2.678655] pci 0000:40:01.0: supports D2
[    2.711436] pci 0000:40:01.1: [1319:0802] type 00 class 0x098000
[    2.711960] pci 0000:40:01.1: reg 0x10: [io  0x3080-0x308f]
[    2.714394] pci 0000:40:01.1: supports D1
[    2.714397] pci 0000:40:01.1: PME# supported from D1 D3hot
[    2.884480] ACPI: PCI Root Bridge [PCI3] (domain 0000 [bus 60-7f])
[    2.884517] acpi HWP0002:03: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    2.884553] acpi HWP0002:03: Unable to request _OSC control (_OSC
support mask: 0x08)
[    3.020484] acpi HWP0002:03: host bridge window [io  0x6000-0x7fff]
[    3.020519] acpi HWP0002:03: host bridge window [mem 0xb0000000-0xc7ffffff]
[    3.020554] acpi HWP0002:03: host bridge window [mem
0xb0004000000-0xb0103fffffe]
[    3.053151] PCI host bridge to bus 0000:60
[    3.053183] pci_bus 0000:60: root bus resource [io  0x6000-0x7fff]
[    3.053217] pci_bus 0000:60: root bus resource [mem 0xb0000000-0xc7ffffff]
[    3.053252] pci_bus 0000:60: root bus resource [mem
0xb0004000000-0xb0103fffffe]
[    3.053287] pci_bus 0000:60: root bus resource [bus 60-7f]
[    3.208478] ACPI: PCI Root Bridge [PCI4] (domain 0000 [bus 80-bf])
[    3.208514] acpi HWP0003:00: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    3.208550] acpi HWP0003:00: Unable to request _OSC control (_OSC
support mask: 0x08)
[    3.380483] acpi HWP0003:00: host bridge window [io  0x03b0-0x03df]
[    3.380519] acpi HWP0003:00: host bridge window [io  0x8000-0xbfff]
[    3.380553] acpi HWP0003:00: host bridge window [mem 0x000a0000-0x000fffff]
[    3.380588] acpi HWP0003:00: host bridge window [mem 0xc8000000-0xdfffffff]
[    3.380624] acpi HWP0003:00: host bridge window [mem
0xc0004000000-0xc0103fffffe]
[    3.413142] PCI host bridge to bus 0000:80
[    3.413174] pci_bus 0000:80: root bus resource [io  0x03b0-0x03df]
[    3.413208] pci_bus 0000:80: root bus resource [io  0x8000-0xbfff]
[    3.413241] pci_bus 0000:80: root bus resource [mem 0x000a0000-0x000fffff]
[    3.413276] pci_bus 0000:80: root bus resource [mem 0xc8000000-0xdfffffff]
[    3.413311] pci_bus 0000:80: root bus resource [mem
0xc0004000000-0xc0103fffffe]
[    3.413346] pci_bus 0000:80: root bus resource [bus 80-bf]
[    3.413880] pci 0000:80:00.0: [1002:4e47] type 00 class 0x030000
[    3.414669] pci 0000:80:00.0: reg 0x10: [mem 0xd0000000-0xd7ffffff pref]
[    3.415116] pci 0000:80:00.0: reg 0x14: [io  0x8000-0x80ff]
[    3.415507] pci 0000:80:00.0: reg 0x18: [mem 0xd8030000-0xd803ffff]
[    3.417061] pci 0000:80:00.0: reg 0x30: [mem 0xd8000000-0xd801ffff pref]
[    3.417232] pci 0000:80:00.0: Boot video device
[    3.418225] pci 0000:80:00.0: supports D1 D2
[    3.451505] pci 0000:80:00.1: [1002:4e67] type 00 class 0x038000
[    3.452172] pci 0000:80:00.1: reg 0x10: [mem 0xc8000000-0xcfffffff pref]
[    3.452563] pci 0000:80:00.1: reg 0x14: [mem 0xd8020000-0xd802ffff]
[    3.455281] pci 0000:80:00.1: supports D1 D2
[    3.625486] ACPI: PCI Root Bridge [PCI6] (domain 0000 [bus c0-df])
[    3.625522] acpi HWP0002:04: ACPI _OSC support notification failed,
disabling PCIe ASPM
[    3.625558] acpi HWP0002:04: Unable to request _OSC control (_OSC
support mask: 0x08)
[    3.761486] acpi HWP0002:04: host bridge window [io  0xc000-0xdfff]
[    3.761521] acpi HWP0002:04: host bridge window [mem 0xe0000000-0xefffffff]
[    3.761556] acpi HWP0002:04: host bridge window [mem
0xe0004000000-0xe0103fffffe]
[    3.794165] PCI host bridge to bus 0000:c0
[    3.794198] pci_bus 0000:c0: root bus resource [io  0xc000-0xdfff]
[    3.794232] pci_bus 0000:c0: root bus resource [mem 0xe0000000-0xefffffff]
[    3.794266] pci_bus 0000:c0: root bus resource [mem
0xe0004000000-0xe0103fffffe]
[    3.794302] pci_bus 0000:c0: root bus resource [bus c0-df]
[    3.869180] ACPI: Enabled 1 GPEs in block 10 to 1F
[    3.869249] ACPI: \_SB_.SBA0.PCI0: notify handler is installed
[    3.869253] ACPI: \_SB_.SBA0.PCI1: notify handler is installed
[    3.869258] ACPI: \_SB_.SBA0.PCI2: notify handler is installed
[    3.869267] ACPI: \_SB_.SBA0.PCI3: notify handler is installed
[    3.869276] ACPI: \_SB_.SBA0.PCI4: notify handler is installed
[    3.869286] ACPI: \_SB_.SBA0.PCI6: notify handler is installed
[    3.869302] Found 6 acpi root devices

Please notice how the call to ioc_init is reversed (w.r.t. ACPI/PCI resource discovery and handler installation) between the two dmesg excerpts.

Gang, I really need your help and expertise there, as this issue completely breaks AGP, preventing me from contributing further to GNOME stabilization Effort on Gentoo/ia64.

Thanks,

     Émeric
Comment 3 Zhang Rui 2014-06-05 02:07:01 UTC
does reverting commit 66345d5f79fcfa0214f5d98763643d4ee8e6965d fix the problem for you?

Rafael,
would you please take a look at this problem?
Comment 4 Rafael J. Wysocki 2014-06-05 11:43:44 UTC
I will.  I asked Emeric to file this bug, actually.
Comment 5 Émeric Maschino 2014-06-06 10:24:22 UTC
(In reply to Zhang Rui from comment #3)
> does reverting commit 66345d5f79fcfa0214f5d98763643d4ee8e6965d fix the
> problem for you?

Well, I can't say for sure because, as I was stating in my original post, reverting it makes the kernel panics early in the boot process:

IOC IOMMU Driver: probe of HWP0001:00 failed with error -22
Kernel panic - not syncinc: Unable to find SBA IOMMU: Try a generic or DIG kernel

(I'm running HP-zx1/sx1000, i.e. CONFIG_IA64_HP_ZX1=y kernel).

So, this specific commit probably also depends on the two others. Rafael?

     Émeric
Comment 6 Rafael J. Wysocki 2014-06-06 23:32:54 UTC
Created attachment 138441 [details]
ACPI / ia64 / sba_iommu: Defer initialization

Can you please try this patch (totally untested, so please be careful)?
Comment 7 Émeric Maschino 2014-06-11 22:07:43 UTC
(In reply to Rafael J. Wysocki from comment #6)
> Created attachment 138441 [details]
> ACPI / ia64 / sba_iommu: Defer initialization
> 
> Can you please try this patch (totally untested, so please be careful)?

Seems to work fine when applied to kernel 3.15-rc5 here. Thanks :-)

Do you need dmesg output or something else?

     Émeric
Comment 8 Rafael J. Wysocki 2014-06-11 22:56:46 UTC
(In reply to Émeric Maschino from comment #7)
> (In reply to Rafael J. Wysocki from comment #6)
> > Created attachment 138441 [details]
> > ACPI / ia64 / sba_iommu: Defer initialization
> > 
> > Can you please try this patch (totally untested, so please be careful)?
> 
> Seems to work fine when applied to kernel 3.15-rc5 here. Thanks :-)

Awesome, thanks for testing!

> Do you need dmesg output or something else?

No, thanks.

I'll prepare an official patch submission and send it to the mailing lists.
Comment 9 Rafael J. Wysocki 2014-06-11 23:18:14 UTC
Patch: https://patchwork.kernel.org/patch/4338651/
Comment 10 Len Brown 2015-07-21 19:31:14 UTC
in 3.16-rc2:

commit 12e27b115472ad0f3b142ddf59d3998305984408
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Jun 13 01:17:03 2014 +0200

    ACPI / ia64 / sba_iommu: Restore the working initialization ordering

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