forked from Minki/linux
e23bba6044
NUMA emulation needs to update node distance information. It did it by remapping apicid to PXM mapping, even when amdtopology is being used. There is no reason to go through such convolution. The generic code has all the information necessary to transform the distance table to the emulated nid space. Implement generic distance table transformation in numa_emulation() and drop private implementations in srat_64 and amdtopology_64. This makes find_node_by_addr() and fake_physnodes() and related functions unnecessary, drop them. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Yinghai Lu <yinghai@kernel.org> Cc: Brian Gerst <brgerst@gmail.com> Cc: Cyrill Gorcunov <gorcunov@gmail.com> Cc: Shaohui Zheng <shaohui.zheng@intel.com> Cc: David Rientjes <rientjes@google.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: H. Peter Anvin <hpa@linux.intel.com>
66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
#ifndef _ASM_X86_AMD_NB_H
|
|
#define _ASM_X86_AMD_NB_H
|
|
|
|
#include <linux/pci.h>
|
|
|
|
struct amd_nb_bus_dev_range {
|
|
u8 bus;
|
|
u8 dev_base;
|
|
u8 dev_limit;
|
|
};
|
|
|
|
extern const struct pci_device_id amd_nb_misc_ids[];
|
|
extern const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[];
|
|
struct bootnode;
|
|
|
|
extern int early_is_amd_nb(u32 value);
|
|
extern int amd_cache_northbridges(void);
|
|
extern void amd_flush_garts(void);
|
|
extern int amd_numa_init(void);
|
|
extern int amd_get_subcaches(int);
|
|
extern int amd_set_subcaches(int, int);
|
|
|
|
struct amd_northbridge {
|
|
struct pci_dev *misc;
|
|
struct pci_dev *link;
|
|
};
|
|
|
|
struct amd_northbridge_info {
|
|
u16 num;
|
|
u64 flags;
|
|
struct amd_northbridge *nb;
|
|
};
|
|
extern struct amd_northbridge_info amd_northbridges;
|
|
|
|
#define AMD_NB_GART 0x1
|
|
#define AMD_NB_L3_INDEX_DISABLE 0x2
|
|
#define AMD_NB_L3_PARTITIONING 0x4
|
|
|
|
#ifdef CONFIG_AMD_NB
|
|
|
|
static inline int amd_nb_num(void)
|
|
{
|
|
return amd_northbridges.num;
|
|
}
|
|
|
|
static inline int amd_nb_has_feature(int feature)
|
|
{
|
|
return ((amd_northbridges.flags & feature) == feature);
|
|
}
|
|
|
|
static inline struct amd_northbridge *node_to_amd_nb(int node)
|
|
{
|
|
return (node < amd_northbridges.num) ? &amd_northbridges.nb[node] : NULL;
|
|
}
|
|
|
|
#else
|
|
|
|
#define amd_nb_num(x) 0
|
|
#define amd_nb_has_feature(x) false
|
|
#define node_to_amd_nb(x) NULL
|
|
|
|
#endif
|
|
|
|
|
|
#endif /* _ASM_X86_AMD_NB_H */
|