Re: Bisecting tip/auto-x86-next?

Ingo Molnar
2008-06-23T11:13:21Z

* Kevin Winchester <kjwinchester@gmail.com> wrote:

>> please try attached patch...
>
> Thanks for the patch. it fixes the problem for me. tip/master was
> indeed showing the problem as well, but it does not once your patch is
> applied.
>
> So you can add a:
>
> Tested-by: Kevin Winchester <kjwinchester@gmail.com>
>
> to the patch if you want.

applied to tip/x86/gart - thanks a lot Kevin for bisecting this. I have
attached the commit below.

Ingo

----------------->
commit 0754557d72c1fbfc5fcfd5235e7c23ae6f77248c
Author: Yinghai Lu <yhlu.kernel@gmail.com>
Date: Sat Jun 21 03:50:47 2008 -0700

x86: change early_gart_iommu_check() back to any_mapped

Kevin Winchester reported a GART related direct rendering failure against
linux-next-20080611, which shows up via these log entries:

PCI: Using ACPI for IRQ routing
PCI: Cannot allocate resource region 0 of device 0000:00:00.0
agpgart: Detected AGP bridge 0
agpgart: Aperture conflicts with PCI mapping.
agpgart: Aperture from AGP @ e0000000 size 128 MB
agpgart: Aperture conflicts with PCI mapping.
agpgart: No usable aperture found.
agpgart: Consider rebooting with iommu=memaper=2 to get a good aperture.

instead of the expected:

PCI: Using ACPI for IRQ routing
agpgart: Detected AGP bridge 0
agpgart: Aperture from AGP @ e0000000 size 128 MB

Kevin bisected it down to this change in tip/x86/gart:
"x86: checking aperture size order".

agp check is using request_mem_region(), and could fail if e820 is reserved...

change it back to e820_any_mapped().

Reported-and-bisected-by: "Kevin Winchester" <kjwinchester@gmail.com>
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Tested-by: Kevin Winchester <kjwinchester@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index 3409abb..e819362 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -324,8 +324,8 @@ void __init early_gart_iommu_check(void)
fix = 1;

if (gart_fix_e820 && !fix && aper_enabled) {
- if (!e820_all_mapped(aper_base, aper_base + aper_size,
- E820_RESERVED)) {
+ if (e820_any_mapped(aper_base, aper_base + aper_size,
+ E820_RAM)) {
/* reserve it, so we can reuse it in second kernel */
printk(KERN_INFO "update e820 for GART\n");
add_memory_region(aper_base, aper_size, E820_RESERVED);