x86, k8-gart: Decouple handling of garts and northbridges
Subsystems (5)
PATCH 1/1 x86, k8-gart: Decouple handling of garts and northbridges
From: Andreas Herrmann <[email protected]>
So far we only provide num_k8_northbridges. This is required in different areas (e.g. L3 cache index disable, GART). But not all AMD CPUs provide a GART. Thus it is useful to split off the GART handling from the generic caching of AMD northbridge misc devices.
--- arch/x86/include/asm/k8.h | 13 +++++--- arch/x86/kernel/cpu/intel_cacheinfo.c | 4 +- arch/x86/kernel/k8.c | 52 +++++++++++++++++++-------------- arch/x86/kernel/pci-gart_64.c | 27 +++++++++++------ drivers/char/agp/amd64-agp.c | 33 ++++++++++++++------ drivers/edac/amd64_edac.c | 2 +- 6 files changed, 82 insertions(+), 49 deletions(-)
Please apply.
Thanks,
Andreas
arch/x86/include/asm/k8.h +8 -5
@@ -7,24 +7,27 @@ extern struct pci_device_id k8_nb_ids[];struct bootnode ;extern int early_is_k8_nb (u32 value); -extern struct pci_dev **k8_northbridges; -extern int num_k8_northbridges;extern int cache_k8_northbridges (void );extern void k8_flush_garts (void );extern int k8_get_nodes (struct bootnode *nodes);extern int k8_numa_init (unsigned long start_pfn,unsigned long end_pfn);extern int k8_scan_nodes (void ); +struct k8_northbridge_info { +u16 num; +u8 gart_supported; +struct pci_dev **nb_misc; +}; +extern struct k8_northbridge_info k8_northbridges; +#ifdef CONFIG_K8_NB -extern int num_k8_northbridges;static inline struct pci_dev *node_to_k8_nb_misc (int node) { -return (node < num_k8_northbridges) ? k8_northbridges[node] :NULL ; +return (node < k8_northbridges.num) ? k8_northbridges.nb_misc[node] :NULL ; }#else -#define num_k8_northbridges 0static inline struct pci_dev *node_to_k8_nb_misc (int node) {
arch/x86/kernel/cpu/intel_cacheinfo.c +2 -2
@@ -369,7 +369,7 @@ static void __cpuinit amd_check_l3_disable(struct _cpuid4_info_regs *this_leaf,return ;/* not in virtualized environments */ -if (num_k8_northbridges ==0 ) +if (k8_northbridges.num ==0 )return ;/*
@@ -377,7 +377,7 @@ static void __cpuinit amd_check_l3_disable(struct _cpuid4_info_regs *this_leaf,* never freed but this is done only on shutdown so it doesn't matter. */ if (!l3_caches) { -int size = num_k8_northbridges *sizeof (struct amd_l3_cache *); +int size = k8_northbridges.num *sizeof (struct amd_l3_cache *); l3_caches =kzalloc (size,GFP_ATOMIC );if (!l3_caches)
arch/x86/kernel/k8.c +30 -22
104 lines not on this page · raw message
arch/x86/kernel/pci-gart_64.c +18 -9
@@ -560,8 +560,11 @@ static void enable_gart_translations(void) {int i; -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; +if (!k8_northbridges.gart_supported) +return ; + +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];enable_gart_translation (dev,__pa (agp_gatt_table)); }
@@ -592,10 +595,13 @@ static void gart_fixup_northbridges(struct sys_device *dev)if (!fix_up_north_bridges)return ; +if (!k8_northbridges.gart_supported) +return ; +pr_info ("PCI-DMA: Restoring GART aperture settings\n" ); -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];/* * Don't enable translations just yet. That is the next
@@ -649,8 +655,8 @@ static __init int init_k8_gatt(struct agp_kern_info *info) aper_size = aper_base = info->aper_size =0 ; dev =NULL ; -for (i =0 ; i < num_k8_northbridges; i++) { - dev = k8_northbridges[i]; +for (i =0 ; i < k8_northbridges.num; i++) { + dev = k8_northbridges.nb_misc[i]; new_aper_base =read_aperture (dev, &new_aper_size);if (!new_aper_base) goto nommu;
@@ -718,10 +724,13 @@ static void gart_iommu_shutdown(void)if (!no_agp)return ; -for (i =0 ; i < num_k8_northbridges; i++) { +if (!k8_northbridges.gart_supported) +return ; + +for (i =0 ; i < k8_northbridges.num; i++) {u32 ctl; - dev = k8_northbridges[i]; + dev = k8_northbridges.nb_misc[i];pci_read_config_dword (dev,AMD64_GARTAPERTURECTL , &ctl); ctl &= ~GARTEN ;
@@ -739,7 +748,7 @@ int __init gart_iommu_init(void)unsigned long scratch;long i; -if (num_k8_northbridges ==0 ) +if (!k8_northbridges.gart_supported)return 0 ;#ifndef CONFIG_AGP_AMD64
drivers/char/agp/amd64-agp.c +23 -10
@@ -124,7 +124,7 @@ static int amd64_fetch_size(void)u32 temp;struct aper_size_info_32 *values; - dev = k8_northbridges[0 ]; + dev = k8_northbridges.nb_misc[0 ];if (dev==NULL )return 0 ;
@@ -181,10 +181,14 @@ static int amd_8151_configure(void)unsigned long gatt_bus =virt_to_phys (agp_bridge->gatt_table_real);int i; +if (!k8_northbridges.gart_supported) +return 0 ; +/* Configure AGP regs in each x86-64 host bridge. */ -for (i =0 ; i < num_k8_northbridges; i++) { +for (i =0 ; i < k8_northbridges.num; i++) { agp_bridge->gart_bus_addr = -amd64_configure (k8_northbridges[i], gatt_bus); +amd64_configure (k8_northbridges.nb_misc[i], + gatt_bus); }k8_flush_garts ();return 0 ;
@@ -195,8 +199,12 @@ static void amd64_cleanup(void) {u32 tmp;int i; -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; + +if (!k8_northbridges.gart_supported) +return ; + +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];/* disable gart translation */ pci_read_config_dword (dev,AMD64_GARTAPERTURECTL , &tmp); tmp &= ~AMD64_GARTEN ;
@@ -319,16 +327,19 @@ static __devinit int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp,return 0 ; } -static __devinit int cache_nbs (struct pci_dev *pdev,u32 cap_ptr) +static __devinit int cache_nbs (struct pci_dev *pdev,u32 cap_ptr) {int i;if (cache_k8_northbridges () <0 )return -ENODEV ; +if (!k8_northbridges.gart_supported) +return -ENODEV ; + i =0 ; -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];if (fix_northbridge (dev, pdev, cap_ptr) <0 ) {dev_err (&dev->dev,"no usable aperture found\n" );#ifdef __x86_64__
@@ -405,7 +416,8 @@ static int __devinit uli_agp_init(struct pci_dev *pdev) }/* shadow x86-64 registers into ULi registers */ -pci_read_config_dword (k8_northbridges[0 ],AMD64_GARTAPERTUREBASE , &httfea); +pci_read_config_dword (k8_northbridges.nb_misc[0 ],AMD64_GARTAPERTUREBASE , + &httfea);/* if x86-64 aperture base is beyond 4G, exit here */ if ((httfea &0x7fff ) >> (32 -25 )) {
@@ -472,7 +484,8 @@ static int nforce3_agp_init(struct pci_dev *pdev)pci_write_config_dword (dev1,NVIDIA_X86_64_1_APSIZE , tmp);/* shadow x86-64 registers into NVIDIA registers */ -pci_read_config_dword (k8_northbridges[0 ],AMD64_GARTAPERTUREBASE , &apbase); +pci_read_config_dword (k8_northbridges.nb_misc[0 ],AMD64_GARTAPERTUREBASE , + &apbase);/* if x86-64 aperture base is beyond 4G, exit here */ if ( (apbase &0x7fff ) >> (32 -25 ) ) {
drivers/edac/amd64_edac.c +1 -1
@@ -2937,7 +2937,7 @@ static int __init amd64_edac_init(void)* to finish initialization of the MC instances. */ err = -ENODEV ; -for (nb =0 ; nb < num_k8_northbridges; nb++) { +for (nb =0 ; nb < k8_northbridges.num; nb++) {if (!pvt_lookup[nb])continue ;
Signature · 1 line
1.6.4.4
H. Peter Anvin
reviewerQuoted 18 lines · Andreas Herrmann
From: Andreas Herrmann <[email protected]>
So far we only provide
num_k8_northbridges. This is required in different areas (e.g. L3 cache index disable, GART). But not all AMD CPUs provide a GART. Thus it is useful to split off the GART handling from the generic caching of AMD northbridge misc devices.Signed-off-by Andreas Herrmann <[email protected]>--- arch/x86/include/asm/k8.h | 13 +++++--- arch/x86/kernel/cpu/intel_cacheinfo.c | 4 +- arch/x86/kernel/k8.c | 52 +++++++++++++++++++-------------- arch/x86/kernel/pci-gart_64.c | 27 +++++++++++------ drivers/char/agp/amd64-agp.c | 33 ++++++++++++++------ drivers/edac/amd64_edac.c | 2 +- 6 files changed, 82 insertions(+), 49 deletions(-)
Quoted 4 lines
Please apply.
From just looking at it: isn't this patch going to break compiling with
CONFIG_K8_NB=n?
-hpa
Signature · 2 lines
H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.
Quoted 19 lines · H. Peter Anvin
Quoted 18 lines · Andreas Herrmann
From: Andreas Herrmann <[email protected]>
So far we only provide
num_k8_northbridges. This is required in different areas (e.g. L3 cache index disable, GART). But not all AMD CPUs provide a GART. Thus it is useful to split off the GART handling from the generic caching of AMD northbridge misc devices.Signed-off-by Andreas Herrmann <[email protected]>--- arch/x86/include/asm/k8.h | 13 +++++--- arch/x86/kernel/cpu/intel_cacheinfo.c | 4 +- arch/x86/kernel/k8.c | 52 +++++++++++++++++++-------------- arch/x86/kernel/pci-gart_64.c | 27 +++++++++++------ drivers/char/agp/amd64-agp.c | 33 ++++++++++++++------ drivers/edac/amd64_edac.c | 2 +- 6 files changed, 82 insertions(+), 49 deletions(-)
Quoted 5 lines
Quoted 2 lines
Please apply.
From just looking at it: isn't this patch going to break compiling with
CONFIG_K8_NB=n?
Good catch.
Compiled for me after deselecting CONFIG_CPU_SUP_AMD but deselecting PCI breaks compilation of the L3 cache index disable code. But that stuff requires PCI support.
Will send updated patch(es) to fix this.
Thanks,
Andreas
cover x86: misc K8_NB updates
In reply to Andreas HerrmannFollowing patches are against tip/master as of
v2.6.36-rc3-1233-gf3d0a67
Patch 1 sets the correct dependency to K8_NB for L3 cache index disable code Patch 2 allows separate handling of gart and AMD northbridges
Patch 3 renames k8.[ch] and CONFIG_K8_NB to the more appropriate amd_nb.[ch] and CONFIG_AMD_NB
Please apply.
Thanks,
Andreas
PATCH 1/3 x86, cacheinfo: Fix dependency of AMD L3 CID
From: Andreas Herrmann <[email protected]>
L3 cache index disable code uses PCI accesses to AMD northbridge functions. Currently the code is compiled #ifdef CONFIG_CPU_SUP_AMD.
But its real dependency is #if (defined(CONFIG_CPU_SUP_AMD) && defined(CONFIG_PCI)) which in the end is a dependency to CONFIG_K8_NB.
--- arch/x86/kernel/cpu/intel_cacheinfo.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
arch/x86/kernel/cpu/intel_cacheinfo.c +4 -4
@@ -306,7 +306,7 @@ struct _cache_attr {ssize_t (*store)(struct _cpuid4_info *,const char *,size_t count); }; -#ifdef CONFIG_CPU_SUP_AMD +#ifdef CONFIG_K8_NB /* * L3 cache descriptors
@@ -556,12 +556,12 @@ static struct _cache_attr cache_disable_0 = __ATTR(cache_disable_0, 0644,static struct _cache_attr cache_disable_1 =__ATTR (cache_disable_1,0644 , show_cache_disable_1, store_cache_disable_1); -#else /* CONFIG_CPU_SUP_AMD */ +#else /* CONFIG_K8_NB */ static void __cpuinit amd_check_l3_disable (struct _cpuid4_info_regs *this_leaf,int index) { }; -#endif /* CONFIG_CPU_SUP_AMD */ +#endif /* CONFIG_K8_NB */ static int __cpuinit cpuid4_cache_lookup_regs(int index,
@@ -1000,7 +1000,7 @@ static struct attribute *default_attrs[] = {static struct attribute *default_l3_attrs[] = {DEFAULT_SYSFS_CACHE_ATTRS , -#ifdef CONFIG_CPU_SUP_AMD +#ifdef CONFIG_K8_NB &cache_disable_0.attr, &cache_disable_1.attr, #endif
Signature · 1 line
1.6.4.4
PATCH 2/3 x86, k8-gart: Decouple handling of garts and northbridges
In reply to Andreas HerrmannFrom: Andreas Herrmann <[email protected]>
So far we only provide num_k8_northbridges. This is required in different areas (e.g. L3 cache index disable, GART). But not all AMD CPUs provide a GART. Thus it is useful to split off the GART handling from the generic caching of AMD northbridge misc devices.
--- arch/x86/include/asm/k8.h | 13 +++++--- arch/x86/kernel/cpu/intel_cacheinfo.c | 4 +- arch/x86/kernel/k8.c | 52 +++++++++++++++++++-------------- arch/x86/kernel/pci-gart_64.c | 27 +++++++++++------ drivers/char/agp/amd64-agp.c | 33 ++++++++++++++------ drivers/edac/amd64_edac.c | 2 +- 6 files changed, 82 insertions(+), 49 deletions(-)
arch/x86/include/asm/k8.h +8 -5
@@ -7,24 +7,27 @@ extern struct pci_device_id k8_nb_ids[];struct bootnode ;extern int early_is_k8_nb (u32 value); -extern struct pci_dev **k8_northbridges; -extern int num_k8_northbridges;extern int cache_k8_northbridges (void );extern void k8_flush_garts (void );extern int k8_get_nodes (struct bootnode *nodes);extern int k8_numa_init (unsigned long start_pfn,unsigned long end_pfn);extern int k8_scan_nodes (void ); +struct k8_northbridge_info { +u16 num; +u8 gart_supported; +struct pci_dev **nb_misc; +}; +extern struct k8_northbridge_info k8_northbridges; +#ifdef CONFIG_K8_NB -extern int num_k8_northbridges;static inline struct pci_dev *node_to_k8_nb_misc (int node) { -return (node < num_k8_northbridges) ? k8_northbridges[node] :NULL ; +return (node < k8_northbridges.num) ? k8_northbridges.nb_misc[node] :NULL ; }#else -#define num_k8_northbridges 0static inline struct pci_dev *node_to_k8_nb_misc (int node) {
arch/x86/kernel/cpu/intel_cacheinfo.c +2 -2
@@ -369,7 +369,7 @@ static void __cpuinit amd_check_l3_disable(struct _cpuid4_info_regs *this_leaf,return ;/* not in virtualized environments */ -if (num_k8_northbridges ==0 ) +if (k8_northbridges.num ==0 )return ;/*
@@ -377,7 +377,7 @@ static void __cpuinit amd_check_l3_disable(struct _cpuid4_info_regs *this_leaf,* never freed but this is done only on shutdown so it doesn't matter. */ if (!l3_caches) { -int size = num_k8_northbridges *sizeof (struct amd_l3_cache *); +int size = k8_northbridges.num *sizeof (struct amd_l3_cache *); l3_caches =kzalloc (size,GFP_ATOMIC );if (!l3_caches)
arch/x86/kernel/k8.c +30 -22
104 lines not on this page · raw message
arch/x86/kernel/pci-gart_64.c +18 -9
@@ -560,8 +560,11 @@ static void enable_gart_translations(void) {int i; -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; +if (!k8_northbridges.gart_supported) +return ; + +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];enable_gart_translation (dev,__pa (agp_gatt_table)); }
@@ -592,10 +595,13 @@ static void gart_fixup_northbridges(struct sys_device *dev)if (!fix_up_north_bridges)return ; +if (!k8_northbridges.gart_supported) +return ; +pr_info ("PCI-DMA: Restoring GART aperture settings\n" ); -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];/* * Don't enable translations just yet. That is the next
@@ -649,8 +655,8 @@ static __init int init_k8_gatt(struct agp_kern_info *info) aper_size = aper_base = info->aper_size =0 ; dev =NULL ; -for (i =0 ; i < num_k8_northbridges; i++) { - dev = k8_northbridges[i]; +for (i =0 ; i < k8_northbridges.num; i++) { + dev = k8_northbridges.nb_misc[i]; new_aper_base =read_aperture (dev, &new_aper_size);if (!new_aper_base) goto nommu;
@@ -718,10 +724,13 @@ static void gart_iommu_shutdown(void)if (!no_agp)return ; -for (i =0 ; i < num_k8_northbridges; i++) { +if (!k8_northbridges.gart_supported) +return ; + +for (i =0 ; i < k8_northbridges.num; i++) {u32 ctl; - dev = k8_northbridges[i]; + dev = k8_northbridges.nb_misc[i];pci_read_config_dword (dev,AMD64_GARTAPERTURECTL , &ctl); ctl &= ~GARTEN ;
@@ -739,7 +748,7 @@ int __init gart_iommu_init(void)unsigned long scratch;long i; -if (num_k8_northbridges ==0 ) +if (!k8_northbridges.gart_supported)return 0 ;#ifndef CONFIG_AGP_AMD64
drivers/char/agp/amd64-agp.c +23 -10
@@ -124,7 +124,7 @@ static int amd64_fetch_size(void)u32 temp;struct aper_size_info_32 *values; - dev = k8_northbridges[0 ]; + dev = k8_northbridges.nb_misc[0 ];if (dev==NULL )return 0 ;
@@ -181,10 +181,14 @@ static int amd_8151_configure(void)unsigned long gatt_bus =virt_to_phys (agp_bridge->gatt_table_real);int i; +if (!k8_northbridges.gart_supported) +return 0 ; +/* Configure AGP regs in each x86-64 host bridge. */ -for (i =0 ; i < num_k8_northbridges; i++) { +for (i =0 ; i < k8_northbridges.num; i++) { agp_bridge->gart_bus_addr = -amd64_configure (k8_northbridges[i], gatt_bus); +amd64_configure (k8_northbridges.nb_misc[i], + gatt_bus); }k8_flush_garts ();return 0 ;
@@ -195,8 +199,12 @@ static void amd64_cleanup(void) {u32 tmp;int i; -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; + +if (!k8_northbridges.gart_supported) +return ; + +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];/* disable gart translation */ pci_read_config_dword (dev,AMD64_GARTAPERTURECTL , &tmp); tmp &= ~AMD64_GARTEN ;
@@ -319,16 +327,19 @@ static __devinit int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp,return 0 ; } -static __devinit int cache_nbs (struct pci_dev *pdev,u32 cap_ptr) +static __devinit int cache_nbs (struct pci_dev *pdev,u32 cap_ptr) {int i;if (cache_k8_northbridges () <0 )return -ENODEV ; +if (!k8_northbridges.gart_supported) +return -ENODEV ; + i =0 ; -for (i =0 ; i < num_k8_northbridges; i++) { -struct pci_dev *dev = k8_northbridges[i]; +for (i =0 ; i < k8_northbridges.num; i++) { +struct pci_dev *dev = k8_northbridges.nb_misc[i];if (fix_northbridge (dev, pdev, cap_ptr) <0 ) {dev_err (&dev->dev,"no usable aperture found\n" );#ifdef __x86_64__
@@ -405,7 +416,8 @@ static int __devinit uli_agp_init(struct pci_dev *pdev) }/* shadow x86-64 registers into ULi registers */ -pci_read_config_dword (k8_northbridges[0 ],AMD64_GARTAPERTUREBASE , &httfea); +pci_read_config_dword (k8_northbridges.nb_misc[0 ],AMD64_GARTAPERTUREBASE , + &httfea);/* if x86-64 aperture base is beyond 4G, exit here */ if ((httfea &0x7fff ) >> (32 -25 )) {
@@ -472,7 +484,8 @@ static int nforce3_agp_init(struct pci_dev *pdev)pci_write_config_dword (dev1,NVIDIA_X86_64_1_APSIZE , tmp);/* shadow x86-64 registers into NVIDIA registers */ -pci_read_config_dword (k8_northbridges[0 ],AMD64_GARTAPERTUREBASE , &apbase); +pci_read_config_dword (k8_northbridges.nb_misc[0 ],AMD64_GARTAPERTUREBASE , + &apbase);/* if x86-64 aperture base is beyond 4G, exit here */ if ( (apbase &0x7fff ) >> (32 -25 ) ) {
drivers/edac/amd64_edac.c +1 -1
@@ -2927,7 +2927,7 @@ static int __init amd64_edac_init(void)* to finish initialization of the MC instances. */ err = -ENODEV ; -for (nb =0 ; nb < num_k8_northbridges; nb++) { +for (nb =0 ; nb < k8_northbridges.num; nb++) {if (!pvt_lookup[nb])continue ;
Signature · 1 line
1.6.4.4
PATCH 3/3 x86, k8: Rename k8.[ch] to amd_nb.[ch] and CONFIG_K8_NB to CONFIG_AMD_NB
In reply to Andreas HerrmannFrom: Andreas Herrmann <[email protected]>
The file names are somehow misleading as the code is not specific to AMD K8 CPUs anymore. The files accomodate code for other AMD CPU northbridges as well.
Same is true for the config option which is valid for AMD CPU northbridges in general and not specific to K8.
--- arch/x86/Kconfig | 4 +- arch/x86/include/asm/amd_nb.h | 39 +++++++++ arch/x86/include/asm/k8.h | 39 --------- arch/x86/kernel/Makefile | 2 +- arch/x86/kernel/amd_nb.c | 145 +++++++++++++++++++++++++++++++++ arch/x86/kernel/aperture_64.c | 2 +- arch/x86/kernel/cpu/intel_cacheinfo.c | 10 +- arch/x86/kernel/k8.c | 145 --------------------------------- arch/x86/kernel/pci-gart_64.c | 2 +- arch/x86/kernel/setup.c | 2 +- arch/x86/mm/k8topology_64.c | 2 +- arch/x86/mm/numa_64.c | 2 +- drivers/char/agp/Kconfig | 2 +- drivers/char/agp/amd64-agp.c | 2 +- drivers/edac/Kconfig | 2 +- drivers/edac/amd64_edac.c | 2 +- 16 files changed, 201 insertions(+), 201 deletions(-) create mode 100644 arch/x86/include/asm/amd_nb.h delete mode 100644 arch/x86/include/asm/k8.h create mode 100644 arch/x86/kernel/amd_nb.c delete mode 100644 arch/x86/kernel/k8.c
arch/x86/Kconfig +2 -2
@@ -640,7 +640,7 @@ config GART_IOMMU bool "GART IOMMU support" if EMBEDDED default y select SWIOTLB - depends on X86_64 && PCI && K8_NB + depends on X86_64 && PCI && AMD_NB ---help--- Support for full DMA access of devices with 32bit memory access only on systems with more than 3GB. This is usually needed for USB,
@@ -2055,7 +2055,7 @@ config OLPC_OPENFIRMWARE endif # X86_32 -config K8_NB +config AMD_NB def_bool y depends on CPU_SUP_AMD && PCI
arch/x86/include/asm/amd_nb.h new file +39 -0
@@ -0,0 +1,39 @@ +#ifndef _ASM_X86_AMD_NB_H +#define _ASM_X86_AMD_NB_H + +#include <linux/pci.h> + +extern struct pci_device_id k8_nb_ids[]; +struct bootnode ; + +extern int early_is_k8_nb (u32 value); +extern int cache_k8_northbridges (void ); +extern void k8_flush_garts (void ); +extern int k8_get_nodes (struct bootnode *nodes); +extern int k8_numa_init (unsigned long start_pfn,unsigned long end_pfn); +extern int k8_scan_nodes (void ); + +struct k8_northbridge_info { +u16 num; +u8 gart_supported; +struct pci_dev **nb_misc; +}; +extern struct k8_northbridge_info k8_northbridges; + +#ifdef CONFIG_AMD_NB + +static inline struct pci_dev *node_to_k8_nb_misc (int node) +{ +return (node < k8_northbridges.num) ? k8_northbridges.nb_misc[node] :NULL ; +} + +#else + +static inline struct pci_dev *node_to_k8_nb_misc (int node) +{ +return NULL ; +} +#endif + + +#endif /* _ASM_X86_AMD_NB_H */
arch/x86/include/asm/k8.h deleted +0 -39
@@ -1,39 +0,0 @@ -#ifndef _ASM_X86_K8_H -#define _ASM_X86_K8_H - -#include <linux/pci.h> - -extern struct pci_device_id k8_nb_ids[]; -struct bootnode ; - -extern int early_is_k8_nb (u32 value); -extern int cache_k8_northbridges (void ); -extern void k8_flush_garts (void ); -extern int k8_get_nodes (struct bootnode *nodes); -extern int k8_numa_init (unsigned long start_pfn,unsigned long end_pfn); -extern int k8_scan_nodes (void ); - -struct k8_northbridge_info { -u16 num; -u8 gart_supported; -struct pci_dev **nb_misc; -}; -extern struct k8_northbridge_info k8_northbridges; - -#ifdef CONFIG_K8_NB - -static inline struct pci_dev *node_to_k8_nb_misc (int node) -{ -return (node < k8_northbridges.num) ? k8_northbridges.nb_misc[node] :NULL ; -} - -#else - -static inline struct pci_dev *node_to_k8_nb_misc (int node) -{ -return NULL ; -} -#endif - - -#endif /* _ASM_X86_K8_H */
arch/x86/kernel/Makefile +1 -1
@@ -87,7 +87,7 @@ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_HPET_TIMER) += hpet.o obj-$(CONFIG_APB_TIMER) += apb_timer.o -obj-$(CONFIG_K8_NB) += k8.o +obj-$(CONFIG_AMD_NB) += amd_nb.o obj-$(CONFIG_DEBUG_RODATA_TEST) += test_rodata.o obj-$(CONFIG_DEBUG_NX_TEST) += test_nx.o
arch/x86/kernel/amd_nb.c new file +145 -0
145 lines not on this page · raw message
arch/x86/kernel/aperture_64.c +1 -1
@@ -27,7 +27,7 @@#include <asm/gart.h> #include <asm/pci-direct.h> #include <asm/dma.h> -#include <asm/k8.h> +#include <asm/amd_nb.h> #include <asm/x86_init.h> int gart_iommu_aperture;
arch/x86/kernel/cpu/intel_cacheinfo.c +5 -5
@@ -17,7 +17,7 @@#include <asm/processor.h> #include <linux/smp.h> -#include <asm/k8.h> +#include <asm/amd_nb.h> #include <asm/smp.h> #define LVL_1_INST 1
@@ -306,7 +306,7 @@ struct _cache_attr {ssize_t (*store)(struct _cpuid4_info *,const char *,size_t count); }; -#ifdef CONFIG_K8_NB +#ifdef CONFIG_AMD_NB /* * L3 cache descriptors
@@ -556,12 +556,12 @@ static struct _cache_attr cache_disable_0 = __ATTR(cache_disable_0, 0644,static struct _cache_attr cache_disable_1 =__ATTR (cache_disable_1,0644 , show_cache_disable_1, store_cache_disable_1); -#else /* CONFIG_K8_NB */ +#else /* CONFIG_AMD_NB */ static void __cpuinit amd_check_l3_disable (struct _cpuid4_info_regs *this_leaf,int index) { }; -#endif /* CONFIG_K8_NB */ +#endif /* CONFIG_AMD_NB */ static int __cpuinit cpuid4_cache_lookup_regs(int index,
@@ -1000,7 +1000,7 @@ static struct attribute *default_attrs[] = {static struct attribute *default_l3_attrs[] = {DEFAULT_SYSFS_CACHE_ATTRS , -#ifdef CONFIG_K8_NB +#ifdef CONFIG_AMD_NB &cache_disable_0.attr, &cache_disable_1.attr, #endif
arch/x86/kernel/k8.c deleted +0 -145
145 lines not on this page · raw message
arch/x86/kernel/pci-gart_64.c +1 -1
@@ -39,7 +39,7 @@#include <asm/cacheflush.h> #include <asm/swiotlb.h> #include <asm/dma.h> -#include <asm/k8.h> +#include <asm/amd_nb.h> #include <asm/x86_init.h> static unsigned long iommu_bus_base;/* GART remapping area (physical) */
arch/x86/kernel/setup.c +1 -1
@@ -107,7 +107,7 @@#include <asm/percpu.h> #include <asm/topology.h> #include <asm/apicdef.h> -#include <asm/k8.h> +#include <asm/amd_nb.h> #ifdef CONFIG_X86_64 #include <asm/numa_64.h> #endif
arch/x86/mm/k8topology_64.c +1 -1
@@ -24,7 +24,7 @@#include <asm/numa.h> #include <asm/mpspec.h> #include <asm/apic.h> -#include <asm/k8.h> +#include <asm/amd_nb.h> static struct bootnode __initdata nodes[8 ];static nodemask_t __initdata nodes_parsed =NODE_MASK_NONE ;
arch/x86/mm/numa_64.c +1 -1
@@ -19,7 +19,7 @@#include <asm/dma.h> #include <asm/numa.h> #include <asm/acpi.h> -#include <asm/k8.h> +#include <asm/amd_nb.h> struct pglist_data *node_data[MAX_NUMNODES ]__read_mostly ;EXPORT_SYMBOL (node_data);
drivers/char/agp/Kconfig +1 -1
@@ -57,7 +57,7 @@ config AGP_AMD config AGP_AMD64 tristate "AMD Opteron/Athlon64 on-CPU GART support" - depends on AGP && X86 && K8_NB + depends on AGP && X86 && AMD_NB help This option gives you AGP support for the GLX component of X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs.
drivers/char/agp/amd64-agp.c +1 -1
@@ -15,7 +15,7 @@#include <linux/mmzone.h> #include <asm/page.h> /* PAGE_SIZE */ #include <asm/e820.h> -#include <asm/k8.h> +#include <asm/amd_nb.h> #include <asm/gart.h> #include "agp.h"
drivers/edac/Kconfig +1 -1
@@ -66,7 +66,7 @@ config EDAC_MCE config EDAC_AMD64 tristate "AMD64 (Opteron, Athlon64) K8, F10h, F11h" - depends on EDAC_MM_EDAC && K8_NB && X86_64 && PCI && EDAC_DECODE_MCE + depends on EDAC_MM_EDAC && AMD_NB && X86_64 && PCI && EDAC_DECODE_MCE help Support for error detection and correction on the AMD 64 Families of Memory Controllers (K8, F10h and F11h)
drivers/edac/amd64_edac.c +1 -1
@@ -1,5 +1,5 @@#include "amd64_edac.h" -#include <asm/k8.h> +#include <asm/amd_nb.h> static struct edac_pci_ctl_info *amd64_ctl_pci;
Signature · 1 line
1.6.4.4