amd_nb.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef _ASM_X86_AMD_NB_H
  2. #define _ASM_X86_AMD_NB_H
  3. #include <linux/ioport.h>
  4. #include <linux/pci.h>
  5. struct amd_nb_bus_dev_range {
  6. u8 bus;
  7. u8 dev_base;
  8. u8 dev_limit;
  9. };
  10. extern const struct pci_device_id amd_nb_misc_ids[];
  11. extern const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[];
  12. extern bool early_is_amd_nb(u32 value);
  13. extern struct resource *amd_get_mmconfig_range(struct resource *res);
  14. extern int amd_cache_northbridges(void);
  15. extern void amd_flush_garts(void);
  16. extern int amd_numa_init(void);
  17. extern int amd_get_subcaches(int);
  18. extern int amd_set_subcaches(int, int);
  19. struct amd_l3_cache {
  20. unsigned indices;
  21. u8 subcaches[4];
  22. };
  23. struct threshold_block {
  24. unsigned int block;
  25. unsigned int bank;
  26. unsigned int cpu;
  27. u32 address;
  28. u16 interrupt_enable;
  29. bool interrupt_capable;
  30. u16 threshold_limit;
  31. struct kobject kobj;
  32. struct list_head miscj;
  33. };
  34. struct threshold_bank {
  35. struct kobject *kobj;
  36. struct threshold_block *blocks;
  37. /* initialized to the number of CPUs on the node sharing this bank */
  38. atomic_t cpus;
  39. };
  40. struct amd_northbridge {
  41. struct pci_dev *misc;
  42. struct pci_dev *link;
  43. struct amd_l3_cache l3_cache;
  44. struct threshold_bank *bank4;
  45. };
  46. struct amd_northbridge_info {
  47. u16 num;
  48. u64 flags;
  49. struct amd_northbridge *nb;
  50. };
  51. extern struct amd_northbridge_info amd_northbridges;
  52. #define AMD_NB_GART BIT(0)
  53. #define AMD_NB_L3_INDEX_DISABLE BIT(1)
  54. #define AMD_NB_L3_PARTITIONING BIT(2)
  55. #ifdef CONFIG_AMD_NB
  56. static inline u16 amd_nb_num(void)
  57. {
  58. return amd_northbridges.num;
  59. }
  60. static inline bool amd_nb_has_feature(unsigned feature)
  61. {
  62. return ((amd_northbridges.flags & feature) == feature);
  63. }
  64. static inline struct amd_northbridge *node_to_amd_nb(int node)
  65. {
  66. return (node < amd_northbridges.num) ? &amd_northbridges.nb[node] : NULL;
  67. }
  68. #else
  69. #define amd_nb_num(x) 0
  70. #define amd_nb_has_feature(x) false
  71. #define node_to_amd_nb(x) NULL
  72. #endif
  73. #endif /* _ASM_X86_AMD_NB_H */