tsb
struct tsb *tcw_get_tsb(struct tcw *tcw);
void tcw_set_tsb(struct tcw *tcw, struct tsb *tsb);
void tsb_init(struct tsb *tsb);
dma64_t tsb;
void tsb_init(struct tsb *tsb, unsigned long size);
struct tsb *tsb;
(mm->context.tsb_block[MM_TSB_HUGE].tsb ?
offsetof(struct tsb_config, tsb)) ||
if (mm->context.tsb_block[MM_TSB_HUGE].tsb)
struct tsb *ent = &swapper_tsb[i];
struct tsb *ent = &swapper_4m_tsb[i];
static inline void tsb_insert(struct tsb *ent, unsigned long tag, unsigned long pte)
if (mm->context.tsb_block[MM_TSB_HUGE].tsb != NULL)
if (likely(tp->tsb == NULL))
struct tsb *tsb = mm->context.tsb_block[tsb_index].tsb;
if (unlikely(!tsb))
tsb += ((address >> tsb_hash_shift) &
tsb_insert(tsb, tag, tte);
extern struct tsb swapper_4m_tsb[KERNEL_TSB4M_NENTRIES];
extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES];
__flush_tsb_one_entry(tsb, v + (i << hash_shift), hash_shift,
unsigned long tsb, unsigned long nentries,
__flush_huge_tsb_one_entry(tsb, tb->vaddrs[i], hash_shift,
base = (unsigned long) mm->context.tsb_block[MM_TSB_BASE].tsb;
else if (mm->context.tsb_block[MM_TSB_HUGE].tsb) {
base = (unsigned long) mm->context.tsb_block[MM_TSB_HUGE].tsb;
base = (unsigned long) mm->context.tsb_block[MM_TSB_BASE].tsb;
else if (mm->context.tsb_block[MM_TSB_HUGE].tsb) {
base = (unsigned long) mm->context.tsb_block[MM_TSB_HUGE].tsb;
extern struct tsb swapper_tsb[KERNEL_TSB_NENTRIES];
tsb_bytes / sizeof(struct tsb);
tsb_paddr = __pa(mm->context.tsb_block[tsb_idx].tsb);
unsigned long num_ents = (new_size / sizeof(struct tsb));
struct tsb *ent = &swapper_tsb[idx];
struct tsb *old_tsb, *new_tsb;
if (mm->context.tsb_block[tsb_index].tsb == NULL &&
if (mm->context.tsb_block[tsb_index].tsb != NULL)
old_tsb = mm->context.tsb_block[tsb_index].tsb;
sizeof(struct tsb));
mm->context.tsb_block[tsb_index].tsb = new_tsb;
mm->context.tsb_block[i].tsb = NULL;
if (unlikely(!mm->context.tsb_block[MM_TSB_BASE].tsb))
if (!tp->tsb)
kmem_cache_free(tsb_caches[cache_index], tp->tsb);
tp->tsb = NULL;
struct tsb *ent = &swapper_tsb[hash];
static void __flush_tsb_one_entry(unsigned long tsb, unsigned long v,
ent = tsb + (hash * sizeof(struct tsb));
unsigned long tsb, unsigned long nentries)
__flush_tsb_one_entry(tsb, tb->vaddrs[i], hash_shift, nentries);
static void __flush_huge_tsb_one_entry(unsigned long tsb, unsigned long v,
struct bcm_tsb *tsb;
if (unlikely(skb_headroom(skb) < sizeof(*tsb))) {
nskb = skb_realloc_headroom(skb, sizeof(*tsb));
tsb = skb_push(skb, sizeof(*tsb));
memset(tsb, 0, sizeof(*tsb));
tsb->pcp_dei_vid = skb_vlan_tag_get_prio(skb) & PCP_DEI_MASK;
tsb->pcp_dei_vid |= (u32)skb_vlan_tag_get_id(skb) << VID_SHIFT;
csum_start = skb_checksum_start_offset(skb) - sizeof(*tsb);
tsb->l4_ptr_dest_map = csum_info;
struct tsb *tsb = NULL;
tsb = tcw_get_tsb(dma32_to_virt(irb->scsw.tm.tcw));
if (tsb && tsb->length == 64 && tsb->flags)
switch (tsb->flags & 0x07) {
sense = tsb->tsa.iostat.sense;
sense = tsb->tsa.ddpc.sense;
struct tsb *tsb;
datasize = 64 + sizeof(struct tcw) + sizeof(struct tsb);
tsb = (struct tsb *) &tcw[1];
tcw->tsb = virt_to_dma64(tsb);
struct tsb *tsb;
tsb = NULL;
tsb = tcw_get_tsb(dma32_to_virt(irb->scsw.tm.tcw));
if (tsb) {
len += sprintf(page + len, "tsb->length %d\n", tsb->length);
len += sprintf(page + len, "tsb->flags %x\n", tsb->flags);
len += sprintf(page + len, "tsb->dcw_offset %d\n", tsb->dcw_offset);
len += sprintf(page + len, "tsb->count %d\n", tsb->count);
residual = tsb->count - 28;
switch (tsb->flags & 0x07) {
tsb->tsa.iostat.dev_time);
tsb->tsa.iostat.def_time);
tsb->tsa.iostat.queue_time);
tsb->tsa.iostat.dev_busy_time);
tsb->tsa.iostat.dev_act_time);
sense = tsb->tsa.iostat.sense;
tsb->tsa.ddpc.rc);
rcq = tsb->tsa.ddpc.rcq;
sense = tsb->tsa.ddpc.sense;
void tcw_set_tsb(struct tcw *tcw, struct tsb *tsb)
tcw->tsb = virt_to_dma64(tsb);
void tsb_init(struct tsb *tsb)
memset(tsb, 0, sizeof(*tsb));
struct tsb *tcw_get_tsb(struct tcw *tcw)
return dma64_to_virt(tcw->tsb);
/* TSB */ sizeof(struct tsb) +
/* TSB */ sizeof(struct tsb) +
chunk = fit_chunk(&start, end, sizeof(struct tsb), 8, 0);
chunk = fit_chunk(&start, end, sizeof(struct tsb), 8, 0);