Lines Matching refs:sys_addr
311 static bool base_limit_match(struct amd64_pvt *pvt, u64 sys_addr, u8 nid) in base_limit_match() argument
321 addr = sys_addr & 0x000000ffffffffffull; in base_limit_match()
334 u64 sys_addr) in find_mc_by_sys_addr() argument
355 if (base_limit_match(pvt, sys_addr, node_id)) in find_mc_by_sys_addr()
368 bits = (((u32) sys_addr) >> 12) & intlv_en; in find_mc_by_sys_addr()
379 if (unlikely(!base_limit_match(pvt, sys_addr, node_id))) { in find_mc_by_sys_addr()
382 __func__, sys_addr, node_id); in find_mc_by_sys_addr()
391 (unsigned long)sys_addr); in find_mc_by_sys_addr()
883 static u64 sys_addr_to_dram_addr(struct mem_ctl_info *mci, u64 sys_addr) in sys_addr_to_dram_addr() argument
893 if ((sys_addr >= (1ULL << 32)) && in sys_addr_to_dram_addr()
894 (sys_addr < ((1ULL << 32) + hole_size))) { in sys_addr_to_dram_addr()
896 dram_addr = sys_addr - hole_offset; in sys_addr_to_dram_addr()
899 (unsigned long)sys_addr, in sys_addr_to_dram_addr()
915 dram_addr = (sys_addr & GENMASK_ULL(39, 0)) - dram_base; in sys_addr_to_dram_addr()
918 (unsigned long)sys_addr, (unsigned long)dram_addr); in sys_addr_to_dram_addr()
965 static u64 sys_addr_to_input_addr(struct mem_ctl_info *mci, u64 sys_addr) in sys_addr_to_input_addr() argument
970 dram_addr_to_input_addr(mci, sys_addr_to_dram_addr(mci, sys_addr)); in sys_addr_to_input_addr()
973 (unsigned long)sys_addr, (unsigned long)input_addr); in sys_addr_to_input_addr()
994 static int sys_addr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr) in sys_addr_to_csrow() argument
998 csrow = input_addr_to_csrow(mci, sys_addr_to_input_addr(mci, sys_addr)); in sys_addr_to_csrow()
1002 "address 0x%lx\n", (unsigned long)sys_addr); in sys_addr_to_csrow()
1076 static int umc_normaddr_to_sysaddr(u64 norm_addr, u16 nid, u8 umc, u64 *sys_addr) in umc_normaddr_to_sysaddr() argument
1274 *sys_addr = ctx.ret_addr; in umc_normaddr_to_sysaddr()
1889 static void k8_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, in k8_map_sysaddr_to_csrow() argument
1894 error_address_to_page_and_offset(sys_addr, err); in k8_map_sysaddr_to_csrow()
1900 err->src_mci = find_mc_by_sys_addr(mci, sys_addr); in k8_map_sysaddr_to_csrow()
1903 (unsigned long)sys_addr); in k8_map_sysaddr_to_csrow()
1909 err->csrow = sys_addr_to_csrow(err->src_mci, sys_addr); in k8_map_sysaddr_to_csrow()
1939 err->channel = ((sys_addr & BIT(3)) != 0); in k8_map_sysaddr_to_csrow()
2306 static u8 f15_m30h_determine_channel(struct amd64_pvt *pvt, u64 sys_addr, in f15_m30h_determine_channel() argument
2317 select = (sys_addr >> 8) & 0x3; in f15_m30h_determine_channel()
2323 channel = (sys_addr >> 8) & 0x3; in f15_m30h_determine_channel()
2326 channel = (sys_addr >> 9) & 0x3; in f15_m30h_determine_channel()
2337 static u8 f1x_determine_channel(struct amd64_pvt *pvt, u64 sys_addr, in f1x_determine_channel() argument
2356 return sys_addr >> 6 & 1; in f1x_determine_channel()
2360 u32 temp = hweight_long((u32) ((sys_addr >> 16) & 0x1F)) & 1; in f1x_determine_channel()
2362 return ((sys_addr >> shift) & 1) ^ temp; in f1x_determine_channel()
2368 return (sys_addr >> shift) & 1; in f1x_determine_channel()
2371 return (sys_addr >> (12 + hweight8(intlv_en))) & 1; in f1x_determine_channel()
2382 u64 sys_addr, bool hi_rng, in f1x_get_norm_dct_addr() argument
2405 (sys_addr >= BIT_64(32))) in f1x_get_norm_dct_addr()
2419 if (dhar_valid(pvt) && (sys_addr >= BIT_64(32))) in f1x_get_norm_dct_addr()
2425 return (sys_addr & GENMASK_ULL(47,6)) - (chan_off & GENMASK_ULL(47,23)); in f1x_get_norm_dct_addr()
2506 static u64 f1x_swap_interleaved_region(struct amd64_pvt *pvt, u64 sys_addr) in f1x_swap_interleaved_region() argument
2513 return sys_addr; in f1x_swap_interleaved_region()
2519 return sys_addr; in f1x_swap_interleaved_region()
2524 tmp_addr = sys_addr >> 27; in f1x_swap_interleaved_region()
2526 if (!(sys_addr >> 34) && in f1x_swap_interleaved_region()
2530 return sys_addr ^ (u64)swap_base << 27; in f1x_swap_interleaved_region()
2532 return sys_addr; in f1x_swap_interleaved_region()
2537 u64 sys_addr, int *chan_sel) in f1x_match_to_this_node() argument
2550 range, sys_addr, get_dram_limit(pvt, range)); in f1x_match_to_this_node()
2553 dhar_base(pvt) <= sys_addr && in f1x_match_to_this_node()
2554 sys_addr < BIT_64(32)) { in f1x_match_to_this_node()
2556 sys_addr); in f1x_match_to_this_node()
2560 if (intlv_en && (intlv_sel != ((sys_addr >> 12) & intlv_en))) in f1x_match_to_this_node()
2563 sys_addr = f1x_swap_interleaved_region(pvt, sys_addr); in f1x_match_to_this_node()
2573 ((sys_addr >> 27) >= (dct_sel_base >> 11))) in f1x_match_to_this_node()
2576 channel = f1x_determine_channel(pvt, sys_addr, high_range, intlv_en); in f1x_match_to_this_node()
2578 chan_addr = f1x_get_norm_dct_addr(pvt, range, sys_addr, in f1x_match_to_this_node()
2617 u64 sys_addr, int *chan_sel) in f15_m30h_match_to_this_node() argument
2638 range, sys_addr, get_dram_limit(pvt, range)); in f15_m30h_match_to_this_node()
2640 if (!(get_dram_base(pvt, range) <= sys_addr) && in f15_m30h_match_to_this_node()
2641 !(get_dram_limit(pvt, range) >= sys_addr)) in f15_m30h_match_to_this_node()
2645 dhar_base(pvt) <= sys_addr && in f15_m30h_match_to_this_node()
2646 sys_addr < BIT_64(32)) { in f15_m30h_match_to_this_node()
2648 sys_addr); in f15_m30h_match_to_this_node()
2657 !(dct_base <= (sys_addr >> 27) && in f15_m30h_match_to_this_node()
2658 dct_limit >= (sys_addr >> 27))) in f15_m30h_match_to_this_node()
2668 channel = f1x_determine_channel(pvt, sys_addr, false, intlv_en); in f15_m30h_match_to_this_node()
2670 channel = f15_m30h_determine_channel(pvt, sys_addr, intlv_en, in f15_m30h_match_to_this_node()
2680 if (leg_mmio_hole && (sys_addr >= BIT_64(32))) in f15_m30h_match_to_this_node()
2685 chan_addr = sys_addr - chan_offset; in f15_m30h_match_to_this_node()
2739 u64 sys_addr, in f1x_translate_sysaddr_to_cs() argument
2751 sys_addr, in f1x_translate_sysaddr_to_cs()
2754 else if ((get_dram_base(pvt, range) <= sys_addr) && in f1x_translate_sysaddr_to_cs()
2755 (get_dram_limit(pvt, range) >= sys_addr)) { in f1x_translate_sysaddr_to_cs()
2757 sys_addr, chan_sel); in f1x_translate_sysaddr_to_cs()
2772 static void f1x_map_sysaddr_to_csrow(struct mem_ctl_info *mci, u64 sys_addr, in f1x_map_sysaddr_to_csrow() argument
2777 error_address_to_page_and_offset(sys_addr, err); in f1x_map_sysaddr_to_csrow()
2779 err->csrow = f1x_translate_sysaddr_to_cs(pvt, sys_addr, &err->channel); in f1x_map_sysaddr_to_csrow()
3225 u64 sys_addr; in decode_bus_error() local
3244 sys_addr = get_error_address(pvt, m); in decode_bus_error()
3249 pvt->ops->map_sysaddr_to_csrow(mci, sys_addr, &err); in decode_bus_error()
3274 u64 sys_addr; in decode_umc_error() local
3305 if (umc_normaddr_to_sysaddr(m->addr, pvt->mc_node_id, err.channel, &sys_addr)) { in decode_umc_error()
3310 error_address_to_page_and_offset(sys_addr, &err); in decode_umc_error()