All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vincent ETIENNE <ve@vetienne.net>
To: linux-kernel@vger.kernel.org
Subject: AMD64-AGP pb with AGP APERTURE on IWILL DK8N
Date: Tue, 28 Dec 2004 20:49:48 +0000	[thread overview]
Message-ID: <200412282049.48616.ve@vetienne.net> (raw)

Hello ALL,

I have some problem with AGP initialization with my board : IWLL DK8N (Bi 
opteron chipset NFORCE3 ). I use kernel 2.6.10-rc3-mm1, but i have try with 
different kernel always with the same result :

IOMMU reports a 128MB aperture for CPU0 ( that's the value i used in my bios) 
at F0000000 but only 32MB at 4000000 for CPU1 and declare i have no valid 
aperture as show in this dmesg extract. 

Checking aperture...
CPU 0: aperture @ f0000000 size 128 MB
CPU 1: aperture @ 4000000 size 32 MB
Aperture from northbridge cpu 1 too small (32 MB)
AGP bridge at 00:00:00
Aperture from AGP @ f0000000 size 4096 MB (APSIZE 0)
Aperture from AGP bridge too small (0 MB)
Your BIOS doesn't leave a aperture memory hole

So i have forced the value at CPU1 to be the same as CPU0 in 
arch/x86_64/kernel/aperture.c function iommu_hole_init with the following 
code. Don't asked me what i have done i have quite no idea of what is 
involved by this modification. 

I have add 2 var for memorizing value of aperture_size and base of the first 
cpu and set the value of the second one to the value of the first one on case 
they are diferent ( added line marked with a "+" sign ).

void __init iommu_hole_init(void)
{
 int fix, num;
 u32 aper_size, aper_alloc = 0, aper_order;
 u64 aper_base;
+ u32 last_aper_order = 0;
+ u64 last_aper_base = 0;
 int valid_agp = 0;

 if (iommu_aperture_disabled || !fix_aperture)
  return;
 printk("Checking aperture...\n");
 fix = 0;
 for (num = 24; num < 32; num++) {
  char name[30];
  if (read_pci_config(0, num, 3, 0x00) != NB_ID_3)
   continue;

  iommu_aperture = 1;
  aper_order = (read_pci_config(0, num, 3, 0x90) >> 1) & 7;
  aper_size = (32 * 1024 * 1024) << aper_order;
  aper_base = read_pci_config(0, num, 3, 0x94) & 0x7fff;
  aper_base <<= 25;
  printk("CPU %d: aperture @ %Lx size %u MB\n", num-24,
  aper_base, aper_size>>20);
+  if ( last_aper_order )
+ {
+   if ( aper_order != last_aper_order )
+   {
+    printk("Aperture size changed!! use old one (%x,%x)", last_aper_order, 
last_aper_base );
+    write_pci_config(0, num, 3, 0x90, last_aper_order<<1);
+    write_pci_config(0, num, 3, 0x94, last_aper_base>>25);
+    aper_order = last_aper_order;
+    aper_base = last_aper_base;
+    aper_size = (32 * 1024 * 1024) << aper_order;
+   }
+ }
+  last_aper_order = aper_order;
+  last_aper_base = aper_base;

Rest of the code unchanged.

Now agp is enabled 8x, SBA and fast write activated  (as seeen 
in /proc/driver/nvidia/agp/status ) and i'm very pleased but also frustated 
as i have no idea of that i have done.

Do you think it's more a bios problem (something not initialized correctly by 
the bios as it seem ) or could it be a kernel bug ?  Someone could explain 
what value sould be returned ? Is my modification secured (at least for my 
board ) i.e. is this modification could harm some hardware ?

I wish to be personally CC'ed the answers/comment as i'm not a subscriber of a 
list. 

Thanks for your time.

Vincent ETIENNE

             reply	other threads:[~2004-12-28 20:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-28 20:49 Vincent ETIENNE [this message]
2004-12-30 19:09 ` AMD64-AGP pb with AGP APERTURE on IWILL DK8N Andi Kleen
2005-01-02 14:36   ` Alan Cox
2005-01-02 20:25     ` Andi Kleen
2005-01-10 20:49   ` Vincent ETIENNE

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=200412282049.48616.ve@vetienne.net \
    --to=ve@vetienne.net \
    --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 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.