1 #ifndef _ASM_X86_AMD_NB_H 2 #define _ASM_X86_AMD_NB_H 3 4 #include <linux/pci.h> 5 6 struct amd_nb_bus_dev_range { 7 u8 bus; 8 u8 dev_base; 9 u8 dev_limit; 10 }; 11 12 extern struct pci_device_id amd_nb_misc_ids[]; 13 extern const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[]; 14 struct bootnode; 15 16 extern int early_is_amd_nb(u32 value); 17 extern int amd_cache_northbridges(void); 18 extern void amd_flush_garts(void); 19 extern int amd_numa_init(unsigned long start_pfn, unsigned long end_pfn); 20 extern int amd_scan_nodes(void); 21 22 #ifdef CONFIG_NUMA_EMU 23 extern void amd_fake_nodes(const struct bootnode *nodes, int nr_nodes); 24 extern void amd_get_nodes(struct bootnode *nodes); 25 #endif 26 27 struct amd_northbridge { 28 struct pci_dev *misc; 29 }; 30 31 struct amd_northbridge_info { 32 u16 num; 33 u64 flags; 34 struct amd_northbridge *nb; 35 }; 36 extern struct amd_northbridge_info amd_northbridges; 37 38 #define AMD_NB_GART 0x1 39 #define AMD_NB_L3_INDEX_DISABLE 0x2 40 41 #ifdef CONFIG_AMD_NB 42 43 static inline int amd_nb_num(void) 44 { 45 return amd_northbridges.num; 46 } 47 48 static inline int amd_nb_has_feature(int feature) 49 { 50 return ((amd_northbridges.flags & feature) == feature); 51 } 52 53 static inline struct amd_northbridge *node_to_amd_nb(int node) 54 { 55 return (node < amd_northbridges.num) ? &amd_northbridges.nb[node] : NULL; 56 } 57 58 #else 59 60 #define amd_nb_num(x) 0 61 #define amd_nb_has_feature(x) false 62 #define node_to_amd_nb(x) NULL 63 64 #endif 65 66 67 #endif /* _ASM_X86_AMD_NB_H */ 68