From: Marin Mitov <mitov@issp.bas.bg>
To: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: linux-kernel@vger.kernel.org
Subject: [BUG] agpgart-amd64 not initialized in 2.6.33-rc5 if iommu=allowed in kernel command line
Date: Sat, 23 Jan 2010 23:14:55 +0200 [thread overview]
Message-ID: <201001232314.55425.mitov@issp.bas.bg> (raw)
Hi,
If I start the kernel without command line parameters (4GB RAM)
iommu-swiotlb is used due to quirk in VIA K8T800Pro Host Bridge.
In that case all is OK.
If I put in the kernel command line: iommu=allowed (+other parameters)
I have iommu-gart used but no AGP. dmesg output:
[drm:mga_do_agp_dma_bootstrap] *ERROR* Unable to acquire AGP: -19
For debugging I patched the kernel (mostly prink(), shown at the end)
producing the output in the dmesg:
no command line
MDM: agp_amd64_init entered
MDM: agp_off: false
MDM: agp_bridges_found: 0
MDM: gart_iommu_aperture: 0
MDM: agp_amd64_probe entered
command line: iommu=allowed:
MDM: gart_iommu_init
MDM: before: no_agp = 0
MDM: agp_amd64_init entered
MDM: agp_off: false
MDM: agp_bridges_found: 0
MDM: after: no_agp = 1
MDM: agp_amd64_init() < 0: 1
MDM: agp_copy_info() < 0: -1
MDM: agp_amd64_init entered
MDM: agp_off: false
MDM: agp_bridges_found: 0
One see in the last case ( iommu=allowed) agp_amd64_init()
is executed twice, but agp_amd64_probe() is not executed at all
(agp_bridges_found is incremented only in agp_amd64_probe())
Is this expected behavior?
Thanks,
Marin Mitov
The testing patch:
--- ./drivers/char/agp/amd64-agp.c.orig 2010-01-23 18:46:46.000000000 +0200
+++ ./drivers/char/agp/amd64-agp.c 2010-01-23 22:09:44.000000000 +0200
@@ -498,7 +498,7 @@
struct agp_bridge_data *bridge;
u8 cap_ptr;
int err;
-
+ printk(KERN_DEBUG "MDM: agp_amd64_probe entered\n");
cap_ptr = pci_find_capability(pdev, PCI_CAP_ID_AGP);
if (!cap_ptr)
return -ENODEV;
@@ -725,13 +725,14 @@
int __init agp_amd64_init(void)
{
int err = 0;
-
+ printk(KERN_DEBUG "MDM: agp_amd64_init entered\n");
if (agp_off)
return -EINVAL;
-
+ printk(KERN_DEBUG "MDM: agp_off: false\n");
+ printk(KERN_DEBUG "MDM: agp_bridges_found: %d\n", agp_bridges_found);
if (gart_iommu_aperture)
return agp_bridges_found ? 0 : -ENODEV;
-
+ printk(KERN_DEBUG "MDM: gart_iommu_aperture: %d\n", gart_iommu_aperture);
err = pci_register_driver(&agp_amd64_pci_driver);
if (err < 0)
return err;
--- ./arch/x86/kernel/pci-gart_64.c.orig 2010-01-23 17:07:42.000000000 +0200
+++ ./arch/x86/kernel/pci-gart_64.c 2010-01-23 17:47:22.000000000 +0200
@@ -734,20 +734,25 @@
unsigned long start_pfn, end_pfn;
unsigned long scratch;
long i;
+ int tmp1 = -1, tmp2 = -1;
if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0)
return 0;
+ printk(KERN_DEBUG "MDM: gart_iommu_init\n");
#ifndef CONFIG_AGP_AMD64
no_agp = 1;
#else
/* Makefile puts PCI initialization via subsys_initcall first. */
/* Add other K8 AGP bridge drivers here */
+ printk(KERN_DEBUG "MDM: before: no_agp = %d\n", no_agp);
no_agp = no_agp ||
- (agp_amd64_init() < 0) ||
- (agp_copy_info(agp_bridge, &info) < 0);
+ (tmp1 = (agp_amd64_init() < 0)) ||
+ (tmp2 = (agp_copy_info(agp_bridge, &info) < 0));
#endif
-
+ printk(KERN_DEBUG "MDM: after: no_agp = %d\n", no_agp);
+ printk(KERN_DEBUG "MDM: agp_amd64_init() < 0: %d\n", tmp1);
+ printk(KERN_DEBUG "MDM: agp_copy_info() < 0: %d\n", tmp2);
if (no_iommu ||
(!force_iommu && max_pfn <= MAX_DMA32_PFN) ||
!gart_iommu_aperture ||
next reply other threads:[~2010-01-23 21:16 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-23 21:14 Marin Mitov [this message]
2010-01-25 5:10 ` FUJITA Tomonori
2010-01-25 7:37 ` Marin Mitov
2010-02-02 11:23 ` FUJITA Tomonori
2010-02-02 15:49 ` FUJITA Tomonori
2010-02-03 15:19 ` Marin Mitov
2010-02-04 0:12 ` FUJITA Tomonori
2010-02-03 16:18 ` Marin Mitov
2010-01-31 8:30 ` [tip:x86/urgent] x86/agp: Fix agp_amd64_init regression tip-bot for FUJITA Tomonori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201001232314.55425.mitov@issp.bas.bg \
--to=mitov@issp.bas.bg \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome