Lines Matching refs:baser
2292 static u64 its_read_baser(struct its_node *its, struct its_baser *baser)
2294 u32 idx = baser - its->tables;
2299 static void its_write_baser(struct its_node *its, struct its_baser *baser,
2302 u32 idx = baser - its->tables;
2305 baser->val = its_read_baser(its, baser);
2308 static int its_setup_baser(struct its_node *its, struct its_baser *baser,
2311 u64 val = its_read_baser(its, baser);
2319 psz = baser->psz;
2373 its_write_baser(its, baser, val);
2374 tmp = baser->val;
2400 baser->order = order;
2401 baser->base = base;
2402 baser->psz = psz;
2416 struct its_baser *baser,
2419 u64 tmp = its_read_baser(its, baser);
2424 u32 psz = baser->psz;
2433 its_write_baser(its, baser, val | GITS_BASER_INDIRECT);
2434 indirect = !!(baser->val & GITS_BASER_INDIRECT);
2507 u64 baser;
2519 baser = its->tables[2].val;
2520 if (!(baser & GITS_BASER_VALID))
2542 static int its_probe_baser_psz(struct its_node *its, struct its_baser *baser)
2549 val = its_read_baser(its, baser);
2568 its_write_baser(its, baser, val);
2570 if (FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser->val) == gpsz)
2586 baser->psz = psz;
2601 struct its_baser *baser = its->tables + i;
2602 u64 val = its_read_baser(its, baser);
2610 if (its_probe_baser_psz(its, baser)) {
2615 order = get_order(baser->psz);
2619 indirect = its_parse_indirect_baser(its, baser, &order,
2629 *baser = sibling->tables[2];
2630 its_write_baser(its, baser, baser->val);
2635 indirect = its_parse_indirect_baser(its, baser, &order,
2640 err = its_setup_baser(its, baser, cache, shr, order, indirect);
2647 cache = baser->val & GITS_BASER_CACHEABILITY_MASK;
2648 shr = baser->val & GITS_BASER_SHAREABILITY_MASK;
2664 u64 baser, addr;
2676 baser = its->tables[2].val;
2677 if (!(baser & GITS_BASER_VALID))
2684 if (baser & GITS_BASER_INDIRECT)
2687 FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser));
2688 switch (FIELD_GET(GITS_BASER_PAGE_SIZE_MASK, baser)) {
2690 addr = GITS_BASER_ADDR_48_to_52(baser);
2693 addr = baser & GENMASK_ULL(47, 12);
2698 FIELD_GET(GITS_BASER_SHAREABILITY_MASK, baser));
2700 FIELD_GET(GITS_BASER_INNER_CACHEABILITY_MASK, baser));
2701 val |= FIELD_PREP(GICR_VPROPBASER_4_1_SIZE, GITS_BASER_NR_PAGES(baser) - 1);
3271 struct its_baser *baser, u32 id)
3278 esz = GITS_BASER_ENTRY_SIZE(baser->val);
3279 if (!(baser->val & GITS_BASER_INDIRECT))
3280 return (id < (PAGE_ORDER_TO_SIZE(baser->order) / esz));
3283 idx = id >> ilog2(baser->psz / esz);
3284 if (idx >= (PAGE_ORDER_TO_SIZE(baser->order) / GITS_LVL1_ENTRY_SIZE))
3287 table = baser->base;
3292 get_order(baser->psz));
3297 if (!(baser->val & GITS_BASER_SHAREABILITY_MASK))
3298 gic_flush_dcache_to_poc(page_address(page), baser->psz);
3303 if (!(baser->val & GITS_BASER_SHAREABILITY_MASK))
3315 struct its_baser *baser;
3317 baser = its_get_baser(its, GITS_BASER_TYPE_DEVICE);
3320 if (!baser)
3323 return its_alloc_table_entry(its, baser, dev_id);
3339 struct its_baser *baser;
3344 baser = its_get_baser(its, GITS_BASER_TYPE_VCPU);
3345 if (!baser)
3348 if (!its_alloc_table_entry(its, baser, vpe_id))
4825 struct its_baser *baser = &its->tables[i];
4827 if (!(baser->val & GITS_BASER_VALID))
4830 its_write_baser(its, baser, baser->val);
4961 u64 baser, tmp, typer;
5054 baser = (virt_to_phys(its->cmd_base) |
5060 gits_write_cbaser(baser, its->base + GITS_CBASER);
5063 if ((tmp ^ baser) & GITS_CBASER_SHAREABILITY_MASK) {
5070 baser &= ~(GITS_CBASER_SHAREABILITY_MASK |
5072 baser |= GITS_CBASER_nC;
5073 gits_write_cbaser(baser, its->base + GITS_CBASER);