linux-uconsole/drivers/char/agp
Borislav Petkov 4515b172cd x86, k8 nb: Fix boot crash: enable k8_northbridges unconditionally on AMD systems
commit 0e152cd7c1 upstream.

de957628ce changed setting of the
x86_init.iommu.iommu_init function ptr only when GART IOMMU is
found.

One side effect of it is that num_k8_northbridges
is not initialized anymore if not explicitly
called. This resulted in uninitialized pointers in
<arch/x86/kernel/cpu/intel_cacheinfo.c:amd_calc_l3_indices()>,
for example, which uses the num_k8_northbridges thing through
node_to_k8_nb_misc().

Fix that through an initcall that runs right after the PCI
subsystem and does all the scanning. Then, remove initialization
in gart_iommu_init() which is a rootfs_initcall and we're
running before that.

What is more, since num_k8_northbridges is being used in other
places beside GART IOMMU, include it whenever we add AMD CPU
support. The previous dependency chain in kconfig contained

K8_NB depends on AGP_AMD64|GART_IOMMU

which was clearly incorrect. The more natural way in terms of
hardware dependency should be

AGP_AMD64|GART_IOMMU depends on K8_NB depends on CPU_SUP_AMD &&
PCI. Make it so Number One!

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Joerg Roedel <joerg.roedel@amd.com>
LKML-Reference: <20100312144303.GA29262@aftab>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Tested-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-05-12 14:57:06 -07:00
..
agp.h const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
ali-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
alpha-agp.c const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
amd-k7-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
amd64-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
ati-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
backend.c mm: replace various uses of num_physpages by totalram_pages 2009-09-22 07:17:38 -07:00
compat_ioctl.c agp: more boolean conversions. 2008-06-19 10:42:17 +10:00
compat_ioctl.h agp: add chipset flushing support to AGP interface 2008-02-05 14:33:32 +10:00
efficeon-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
frontend.c Merge commit 'v2.6.26' into bkl-removal 2008-07-14 15:29:34 -06:00
generic.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
hp-agp.c agp/hp: fixup hp agp after ACPI changes 2010-04-26 07:41:32 -07:00
i460-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
intel-agp.c intel-agp: Switch to wbinvd_on_all_cpus 2010-04-26 07:41:27 -07:00
isoch.c agp: use dev_printk when possible 2008-08-12 10:13:38 +10:00
Kconfig x86, k8 nb: Fix boot crash: enable k8_northbridges unconditionally on AMD systems 2010-05-12 14:57:06 -07:00
Makefile [AGPGART] Fix modular agpgart ia64 allmodconfig 2007-02-20 14:18:01 -05:00
nvidia-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
parisc-agp.c agp: parisc-agp.c - use correct page_mask function 2009-10-03 01:27:56 -04:00
sgi-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
sis-agp.c agp: enable optimized agp_alloc_pages methods 2008-08-22 06:07:33 +02:00
sworks-agp.c agp: kill phys_to_gart() and gart_to_phys() 2009-08-03 09:05:00 +01:00
uninorth-agp.c trivial: fix typo "to to" in multiple files 2009-09-21 15:14:55 +02:00
via-agp.c Update email addresses. 2008-10-20 12:50:03 -07:00