Lines Matching defs:pmbe
145 struct pmb_entry *pmbe, *iter;
151 pmbe = &pmb_entry_list[i];
156 if ((vaddr < pmbe->vpn) || (vaddr >= (pmbe->vpn + pmbe->size)))
158 if ((phys < pmbe->ppn) || (phys >= (pmbe->ppn + pmbe->size)))
164 if (size <= pmbe->size) {
169 span = pmbe->size;
175 for (iter = pmbe->link; iter; iter = iter->link)
239 struct pmb_entry *pmbe;
263 pmbe = &pmb_entry_list[pos];
265 memset(pmbe, 0, sizeof(struct pmb_entry));
267 raw_spin_lock_init(&pmbe->lock);
269 pmbe->vpn = vpn;
270 pmbe->ppn = ppn;
271 pmbe->flags = flags;
272 pmbe->entry = pos;
274 return pmbe;
281 static void pmb_free(struct pmb_entry *pmbe)
283 __clear_bit(pmbe->entry, pmb_map);
285 pmbe->entry = PMB_NO_ENTRY;
286 pmbe->link = NULL;
292 static void __set_pmb_entry(struct pmb_entry *pmbe)
296 addr = mk_pmb_addr(pmbe->entry);
297 data = mk_pmb_data(pmbe->entry);
302 __raw_writel(pmbe->vpn | PMB_V, addr);
303 __raw_writel(pmbe->ppn | pmbe->flags | PMB_V, data);
308 static void __clear_pmb_entry(struct pmb_entry *pmbe)
313 addr = mk_pmb_addr(pmbe->entry);
314 data = mk_pmb_data(pmbe->entry);
325 static void set_pmb_entry(struct pmb_entry *pmbe)
329 raw_spin_lock_irqsave(&pmbe->lock, flags);
330 __set_pmb_entry(pmbe);
331 raw_spin_unlock_irqrestore(&pmbe->lock, flags);
338 struct pmb_entry *pmbp, *pmbe;
363 pmbe = pmb_alloc(vaddr, phys, pmb_flags |
365 if (IS_ERR(pmbe)) {
367 return PTR_ERR(pmbe);
370 raw_spin_lock_irqsave(&pmbe->lock, flags);
372 pmbe->size = pmb_sizes[i].size;
374 __set_pmb_entry(pmbe);
376 phys += pmbe->size;
377 vaddr += pmbe->size;
378 size -= pmbe->size;
387 pmbp->link = pmbe;
391 pmbp = pmbe;
401 raw_spin_unlock_irqrestore(&pmbe->lock, flags);
463 struct pmb_entry *pmbe = NULL;
471 pmbe = &pmb_entry_list[i];
472 if (pmbe->vpn == vaddr) {
482 pmb_unmap_entry(pmbe, NR_PMB_ENTRIES);
489 static void __pmb_unmap_entry(struct pmb_entry *pmbe, int depth)
492 struct pmb_entry *pmblink = pmbe;
504 __clear_pmb_entry(pmbe);
506 flush_cache_vunmap(pmbe->vpn, pmbe->vpn + pmbe->size);
508 pmbe = pmblink->link;
511 } while (pmbe && --depth);
514 static void pmb_unmap_entry(struct pmb_entry *pmbe, int depth)
518 if (unlikely(!pmbe))
522 __pmb_unmap_entry(pmbe, depth);
535 struct pmb_entry *pmbe;
540 pmbe = &pmb_entry_list[i];
543 pmbe->vpn >> PAGE_SHIFT, pmbe->ppn >> PAGE_SHIFT,
544 pmbe->size >> 20, (pmbe->flags & PMB_C) ? "" : "un");
582 struct pmb_entry *pmbe;
624 pmbe = pmb_alloc(vpn, ppn, flags, i);
625 if (IS_ERR(pmbe)) {
630 raw_spin_lock_irqsave(&pmbe->lock, irqflags);
634 pmbe->size = pmb_sizes[j].size;
644 if (pmb_can_merge(pmbp, pmbe))
645 pmbp->link = pmbe;
649 pmbp = pmbe;
651 raw_spin_unlock_irqrestore(&pmbe->lock, irqflags);
703 struct pmb_entry *pmbe;
708 pmbe = &pmb_entry_list[i];
713 if (!pmbe->link)
720 if (pmbe->size == SZ_512M)
723 pmb_merge(pmbe);
744 struct pmb_entry *pmbe;
750 pmbe = &pmb_entry_list[i];
752 if (pmbe->vpn != uncached_start)
758 raw_spin_lock_irqsave(&pmbe->lock, flags);
760 pmbe->size = SZ_16M;
761 pmbe->flags &= ~PMB_SZ_MASK;
762 pmbe->flags |= pmb_size_to_flags(pmbe->size);
764 uncached_resize(pmbe->size);
766 __set_pmb_entry(pmbe);
768 raw_spin_unlock_irqrestore(&pmbe->lock, flags);
873 struct pmb_entry *pmbe;
880 pmbe = &pmb_entry_list[i];
881 set_pmb_entry(pmbe);