Lines Matching refs:baser
2270 static u64 its_read_baser(struct its_node *its, struct its_baser *baser) in its_read_baser() argument
2272 u32 idx = baser - its->tables; in its_read_baser()
2277 static void its_write_baser(struct its_node *its, struct its_baser *baser, in its_write_baser() argument
2280 u32 idx = baser - its->tables; in its_write_baser()
2283 baser->val = its_read_baser(its, baser); in its_write_baser()
2286 static int its_setup_baser(struct its_node *its, struct its_baser *baser, in its_setup_baser() argument
2289 u64 val = its_read_baser(its, baser); in its_setup_baser()
2298 psz = baser->psz; in its_setup_baser()
2355 its_write_baser(its, baser, val); in its_setup_baser()
2356 tmp = baser->val; in its_setup_baser()
2392 baser->order = order; in its_setup_baser()
2393 baser->base = base; in its_setup_baser()
2394 baser->psz = psz; in its_setup_baser()
2408 struct its_baser *baser, in its_parse_indirect_baser() argument
2411 u64 tmp = its_read_baser(its, baser); in its_parse_indirect_baser()
2416 u32 psz = baser->psz; in its_parse_indirect_baser()
2425 its_write_baser(its, baser, val | GITS_BASER_INDIRECT); in its_parse_indirect_baser()
2426 indirect = !!(baser->val & GITS_BASER_INDIRECT); in its_parse_indirect_baser()
2499 u64 baser; in find_sibling_its() local
2511 baser = its->tables[2].val; in find_sibling_its()
2512 if (!(baser & GITS_BASER_VALID)) in find_sibling_its()
2534 static int its_probe_baser_psz(struct its_node *its, struct its_baser *baser) in its_probe_baser_psz() argument
2541 val = its_read_baser(its, baser); in its_probe_baser_psz()
2560 its_write_baser(its, baser, val); in its_probe_baser_psz()
2562 if (FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser->val) == gpsz) in its_probe_baser_psz()
2578 baser->psz = psz; in its_probe_baser_psz()
2593 struct its_baser *baser = its->tables + i; in its_alloc_tables() local
2594 u64 val = its_read_baser(its, baser); in its_alloc_tables()
2602 if (its_probe_baser_psz(its, baser)) { in its_alloc_tables()
2607 order = get_order(baser->psz); in its_alloc_tables()
2611 indirect = its_parse_indirect_baser(its, baser, &order, in its_alloc_tables()
2621 *baser = sibling->tables[2]; in its_alloc_tables()
2622 its_write_baser(its, baser, baser->val); in its_alloc_tables()
2627 indirect = its_parse_indirect_baser(its, baser, &order, in its_alloc_tables()
2632 err = its_setup_baser(its, baser, cache, shr, order, indirect); in its_alloc_tables()
2639 cache = baser->val & GITS_BASER_CACHEABILITY_MASK; in its_alloc_tables()
2640 shr = baser->val & GITS_BASER_SHAREABILITY_MASK; in its_alloc_tables()
2656 u64 baser, addr; in inherit_vpe_l1_table_from_its() local
2668 baser = its->tables[2].val; in inherit_vpe_l1_table_from_its()
2669 if (!(baser & GITS_BASER_VALID)) in inherit_vpe_l1_table_from_its()
2676 if (baser & GITS_BASER_INDIRECT) in inherit_vpe_l1_table_from_its()
2679 FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser)); in inherit_vpe_l1_table_from_its()
2680 switch (FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser)) { in inherit_vpe_l1_table_from_its()
2682 addr = GITS_BASER_ADDR_48_to_52(baser); in inherit_vpe_l1_table_from_its()
2685 addr = baser & GENMASK_ULL(47, 12); in inherit_vpe_l1_table_from_its()
2690 FIELD_GET(GITS_BASER_SHAREABILITY_MASK, baser)); in inherit_vpe_l1_table_from_its()
2692 FIELD_GET(GITS_BASER_INNER_CACHEABILITY_MASK, baser)); in inherit_vpe_l1_table_from_its()
2693 val |= FIELD_PREP(GICR_VPROPBASER_4_1_SIZE, GITS_BASER_NR_PAGES(baser) - 1); in inherit_vpe_l1_table_from_its()
3287 struct its_baser *baser, u32 id) in its_alloc_table_entry() argument
3294 esz = GITS_BASER_ENTRY_SIZE(baser->val); in its_alloc_table_entry()
3295 if (!(baser->val & GITS_BASER_INDIRECT)) in its_alloc_table_entry()
3296 return (id < (PAGE_ORDER_TO_SIZE(baser->order) / esz)); in its_alloc_table_entry()
3299 idx = id >> ilog2(baser->psz / esz); in its_alloc_table_entry()
3300 if (idx >= (PAGE_ORDER_TO_SIZE(baser->order) / GITS_LVL1_ENTRY_SIZE)) in its_alloc_table_entry()
3303 table = baser->base; in its_alloc_table_entry()
3312 get_order(baser->psz)); in its_alloc_table_entry()
3317 if (!(baser->val & GITS_BASER_SHAREABILITY_MASK)) in its_alloc_table_entry()
3318 gic_flush_dcache_to_poc(page_address(page), baser->psz); in its_alloc_table_entry()
3323 if (!(baser->val & GITS_BASER_SHAREABILITY_MASK)) in its_alloc_table_entry()
3335 struct its_baser *baser; in its_alloc_device_table() local
3337 baser = its_get_baser(its, GITS_BASER_TYPE_DEVICE); in its_alloc_device_table()
3340 if (!baser) in its_alloc_device_table()
3343 return its_alloc_table_entry(its, baser, dev_id); in its_alloc_device_table()
3359 struct its_baser *baser; in its_alloc_vpe_table() local
3364 baser = its_get_baser(its, GITS_BASER_TYPE_VCPU); in its_alloc_vpe_table()
3365 if (!baser) in its_alloc_vpe_table()
3368 if (!its_alloc_table_entry(its, baser, vpe_id)) in its_alloc_vpe_table()
4879 struct its_baser *baser = &its->tables[i]; in its_restore_enable() local
4881 if (!(baser->val & GITS_BASER_VALID)) in its_restore_enable()
4884 its_write_baser(its, baser, baser->val); in its_restore_enable()
5015 u64 baser, tmp, typer; in its_probe_one() local
5112 baser = (virt_to_phys(its->cmd_base) | in its_probe_one()
5118 gits_write_cbaser(baser, its->base + GITS_CBASER); in its_probe_one()
5127 if ((tmp ^ baser) & GITS_CBASER_SHAREABILITY_MASK) { in its_probe_one()
5134 baser &= ~(GITS_CBASER_SHAREABILITY_MASK | in its_probe_one()
5136 baser |= GITS_CBASER_nC; in its_probe_one()
5137 gits_write_cbaser(baser, its->base + GITS_CBASER); in its_probe_one()