Lines Matching refs:baser

2306 static u64 its_read_baser(struct its_node *its, struct its_baser *baser)
2308 u32 idx = baser - its->tables;
2313 static void its_write_baser(struct its_node *its, struct its_baser *baser,
2316 u32 idx = baser - its->tables;
2319 baser->val = its_read_baser(its, baser);
2322 static int its_setup_baser(struct its_node *its, struct its_baser *baser,
2325 u64 val = its_read_baser(its, baser);
2333 psz = baser->psz;
2390 its_write_baser(its, baser, val);
2391 tmp = baser->val;
2416 baser->order = order;
2417 baser->base = base;
2418 baser->psz = psz;
2432 struct its_baser *baser,
2435 u64 tmp = its_read_baser(its, baser);
2440 u32 psz = baser->psz;
2449 its_write_baser(its, baser, val | GITS_BASER_INDIRECT);
2450 indirect = !!(baser->val & GITS_BASER_INDIRECT);
2523 u64 baser;
2535 baser = its->tables[2].val;
2536 if (!(baser & GITS_BASER_VALID))
2558 static int its_probe_baser_psz(struct its_node *its, struct its_baser *baser)
2565 val = its_read_baser(its, baser);
2584 its_write_baser(its, baser, val);
2586 if (FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser->val) == gpsz)
2602 baser->psz = psz;
2622 struct its_baser *baser = its->tables + i;
2623 u64 val = its_read_baser(its, baser);
2631 if (its_probe_baser_psz(its, baser)) {
2636 order = get_order(baser->psz);
2640 indirect = its_parse_indirect_baser(its, baser, &order,
2650 *baser = sibling->tables[2];
2651 its_write_baser(its, baser, baser->val);
2656 indirect = its_parse_indirect_baser(its, baser, &order,
2661 err = its_setup_baser(its, baser, cache, shr, order, indirect);
2668 cache = baser->val & GITS_BASER_CACHEABILITY_MASK;
2669 shr = baser->val & GITS_BASER_SHAREABILITY_MASK;
2685 u64 baser, addr;
2697 baser = its->tables[2].val;
2698 if (!(baser & GITS_BASER_VALID))
2705 if (baser & GITS_BASER_INDIRECT)
2708 FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser));
2709 switch (FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser)) {
2711 addr = GITS_BASER_ADDR_48_to_52(baser);
2714 addr = baser & GENMASK_ULL(47, 12);
2720 FIELD_GET(GITS_BASER_SHAREABILITY_MASK, baser));
2722 FIELD_GET(GITS_BASER_INNER_CACHEABILITY_MASK, baser));
2724 val |= FIELD_PREP(GICR_VPROPBASER_4_1_SIZE, GITS_BASER_NR_PAGES(baser) - 1);
3311 struct its_baser *baser, u32 id)
3318 esz = GITS_BASER_ENTRY_SIZE(baser->val);
3319 if (!(baser->val & GITS_BASER_INDIRECT))
3320 return (id < (PAGE_ORDER_TO_SIZE(baser->order) / esz));
3323 idx = id >> ilog2(baser->psz / esz);
3324 if (idx >= (PAGE_ORDER_TO_SIZE(baser->order) / GITS_LVL1_ENTRY_SIZE))
3327 table = baser->base;
3332 get_order(baser->psz));
3337 if (!(baser->val & GITS_BASER_SHAREABILITY_MASK))
3338 gic_flush_dcache_to_poc(page_address(page), baser->psz);
3343 if (!(baser->val & GITS_BASER_SHAREABILITY_MASK))
3355 struct its_baser *baser;
3357 baser = its_get_baser(its, GITS_BASER_TYPE_DEVICE);
3360 if (!baser)
3363 return its_alloc_table_entry(its, baser, dev_id);
3379 struct its_baser *baser;
3384 baser = its_get_baser(its, GITS_BASER_TYPE_VCPU);
3385 if (!baser)
3388 if (!its_alloc_table_entry(its, baser, vpe_id))
4931 struct its_baser *baser = &its->tables[i];
4933 if (!(baser->val & GITS_BASER_VALID))
4936 its_write_baser(its, baser, baser->val);
5093 u64 baser, tmp;
5147 baser = (virt_to_phys(its->cmd_base) |
5153 gits_write_cbaser(baser, its->base + GITS_CBASER);
5159 if ((tmp ^ baser) & GITS_CBASER_SHAREABILITY_MASK) {
5166 baser &= ~(GITS_CBASER_SHAREABILITY_MASK |
5168 baser |= GITS_CBASER_nC;
5169 gits_write_cbaser(baser, its->base + GITS_CBASER);