ism               211 drivers/s390/net/ism.h static inline void __ism_read_cmd(struct ism_dev *ism, void *data,
ism               214 drivers/s390/net/ism.h 	struct zpci_dev *zdev = to_zpci(ism->pdev);
ism               225 drivers/s390/net/ism.h static inline void __ism_write_cmd(struct ism_dev *ism, void *data,
ism               228 drivers/s390/net/ism.h 	struct zpci_dev *zdev = to_zpci(ism->pdev);
ism               235 drivers/s390/net/ism.h static inline int __ism_move(struct ism_dev *ism, u64 dmb_req, void *data,
ism               238 drivers/s390/net/ism.h 	struct zpci_dev *zdev = to_zpci(ism->pdev);
ism                36 drivers/s390/net/ism_drv.c static int ism_cmd(struct ism_dev *ism, void *cmd)
ism                41 drivers/s390/net/ism_drv.c 	__ism_write_cmd(ism, req + 1, sizeof(*req), req->len - sizeof(*req));
ism                42 drivers/s390/net/ism_drv.c 	__ism_write_cmd(ism, req, 0, sizeof(*req));
ism                46 drivers/s390/net/ism_drv.c 	__ism_read_cmd(ism, resp, 0, sizeof(*resp));
ism                52 drivers/s390/net/ism_drv.c 	__ism_read_cmd(ism, resp + 1, sizeof(*resp), resp->len - sizeof(*resp));
ism                57 drivers/s390/net/ism_drv.c static int ism_cmd_simple(struct ism_dev *ism, u32 cmd_code)
ism                65 drivers/s390/net/ism_drv.c 	return ism_cmd(ism, &cmd);
ism                68 drivers/s390/net/ism_drv.c static int query_info(struct ism_dev *ism)
ism                76 drivers/s390/net/ism_drv.c 	if (ism_cmd(ism, &cmd))
ism                85 drivers/s390/net/ism_drv.c static int register_sba(struct ism_dev *ism)
ism                91 drivers/s390/net/ism_drv.c 	sba = dma_alloc_coherent(&ism->pdev->dev, PAGE_SIZE, &dma_handle,
ism               101 drivers/s390/net/ism_drv.c 	if (ism_cmd(ism, &cmd)) {
ism               102 drivers/s390/net/ism_drv.c 		dma_free_coherent(&ism->pdev->dev, PAGE_SIZE, sba, dma_handle);
ism               106 drivers/s390/net/ism_drv.c 	ism->sba = sba;
ism               107 drivers/s390/net/ism_drv.c 	ism->sba_dma_addr = dma_handle;
ism               112 drivers/s390/net/ism_drv.c static int register_ieq(struct ism_dev *ism)
ism               118 drivers/s390/net/ism_drv.c 	ieq = dma_alloc_coherent(&ism->pdev->dev, PAGE_SIZE, &dma_handle,
ism               129 drivers/s390/net/ism_drv.c 	if (ism_cmd(ism, &cmd)) {
ism               130 drivers/s390/net/ism_drv.c 		dma_free_coherent(&ism->pdev->dev, PAGE_SIZE, ieq, dma_handle);
ism               134 drivers/s390/net/ism_drv.c 	ism->ieq = ieq;
ism               135 drivers/s390/net/ism_drv.c 	ism->ieq_idx = -1;
ism               136 drivers/s390/net/ism_drv.c 	ism->ieq_dma_addr = dma_handle;
ism               141 drivers/s390/net/ism_drv.c static int unregister_sba(struct ism_dev *ism)
ism               145 drivers/s390/net/ism_drv.c 	if (!ism->sba)
ism               148 drivers/s390/net/ism_drv.c 	ret = ism_cmd_simple(ism, ISM_UNREG_SBA);
ism               152 drivers/s390/net/ism_drv.c 	dma_free_coherent(&ism->pdev->dev, PAGE_SIZE,
ism               153 drivers/s390/net/ism_drv.c 			  ism->sba, ism->sba_dma_addr);
ism               155 drivers/s390/net/ism_drv.c 	ism->sba = NULL;
ism               156 drivers/s390/net/ism_drv.c 	ism->sba_dma_addr = 0;
ism               161 drivers/s390/net/ism_drv.c static int unregister_ieq(struct ism_dev *ism)
ism               165 drivers/s390/net/ism_drv.c 	if (!ism->ieq)
ism               168 drivers/s390/net/ism_drv.c 	ret = ism_cmd_simple(ism, ISM_UNREG_IEQ);
ism               172 drivers/s390/net/ism_drv.c 	dma_free_coherent(&ism->pdev->dev, PAGE_SIZE,
ism               173 drivers/s390/net/ism_drv.c 			  ism->ieq, ism->ieq_dma_addr);
ism               175 drivers/s390/net/ism_drv.c 	ism->ieq = NULL;
ism               176 drivers/s390/net/ism_drv.c 	ism->ieq_dma_addr = 0;
ism               181 drivers/s390/net/ism_drv.c static int ism_read_local_gid(struct ism_dev *ism)
ism               190 drivers/s390/net/ism_drv.c 	ret = ism_cmd(ism, &cmd);
ism               194 drivers/s390/net/ism_drv.c 	ism->smcd->local_gid = cmd.response.gid;
ism               202 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = smcd->priv;
ism               213 drivers/s390/net/ism_drv.c 	return ism_cmd(ism, &cmd);
ism               216 drivers/s390/net/ism_drv.c static void ism_free_dmb(struct ism_dev *ism, struct smcd_dmb *dmb)
ism               218 drivers/s390/net/ism_drv.c 	clear_bit(dmb->sba_idx, ism->sba_bitmap);
ism               219 drivers/s390/net/ism_drv.c 	dma_free_coherent(&ism->pdev->dev, dmb->dmb_len,
ism               223 drivers/s390/net/ism_drv.c static int ism_alloc_dmb(struct ism_dev *ism, struct smcd_dmb *dmb)
ism               227 drivers/s390/net/ism_drv.c 	if (PAGE_ALIGN(dmb->dmb_len) > dma_get_max_seg_size(&ism->pdev->dev))
ism               231 drivers/s390/net/ism_drv.c 		bit = find_next_zero_bit(ism->sba_bitmap, ISM_NR_DMBS,
ism               239 drivers/s390/net/ism_drv.c 	    test_and_set_bit(dmb->sba_idx, ism->sba_bitmap))
ism               242 drivers/s390/net/ism_drv.c 	dmb->cpu_addr = dma_alloc_coherent(&ism->pdev->dev, dmb->dmb_len,
ism               246 drivers/s390/net/ism_drv.c 		clear_bit(dmb->sba_idx, ism->sba_bitmap);
ism               253 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = smcd->priv;
ism               257 drivers/s390/net/ism_drv.c 	ret = ism_alloc_dmb(ism, dmb);
ism               272 drivers/s390/net/ism_drv.c 	ret = ism_cmd(ism, &cmd);
ism               274 drivers/s390/net/ism_drv.c 		ism_free_dmb(ism, dmb);
ism               284 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = smcd->priv;
ism               294 drivers/s390/net/ism_drv.c 	ret = ism_cmd(ism, &cmd);
ism               298 drivers/s390/net/ism_drv.c 	ism_free_dmb(ism, dmb);
ism               305 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = smcd->priv;
ism               314 drivers/s390/net/ism_drv.c 	return ism_cmd(ism, &cmd);
ism               319 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = smcd->priv;
ism               328 drivers/s390/net/ism_drv.c 	return ism_cmd(ism, &cmd);
ism               344 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = smcd->priv;
ism               356 drivers/s390/net/ism_drv.c 	return ism_cmd(ism, &cmd);
ism               368 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = smcd->priv;
ism               378 drivers/s390/net/ism_drv.c 		ret = __ism_move(ism, dmb_req, data, bytes);
ism               390 drivers/s390/net/ism_drv.c static void ism_handle_event(struct ism_dev *ism)
ism               394 drivers/s390/net/ism_drv.c 	while ((ism->ieq_idx + 1) != READ_ONCE(ism->ieq->header.idx)) {
ism               395 drivers/s390/net/ism_drv.c 		if (++(ism->ieq_idx) == ARRAY_SIZE(ism->ieq->entry))
ism               396 drivers/s390/net/ism_drv.c 			ism->ieq_idx = 0;
ism               398 drivers/s390/net/ism_drv.c 		entry = &ism->ieq->entry[ism->ieq_idx];
ism               400 drivers/s390/net/ism_drv.c 		smcd_handle_event(ism->smcd, entry);
ism               406 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = data;
ism               410 drivers/s390/net/ism_drv.c 	bv = (void *) &ism->sba->dmb_bits[ISM_DMB_WORD_OFFSET];
ism               411 drivers/s390/net/ism_drv.c 	end = sizeof(ism->sba->dmb_bits) * BITS_PER_BYTE - ISM_DMB_BIT_OFFSET;
ism               413 drivers/s390/net/ism_drv.c 	spin_lock(&ism->lock);
ism               414 drivers/s390/net/ism_drv.c 	ism->sba->s = 0;
ism               422 drivers/s390/net/ism_drv.c 		ism->sba->dmbe_mask[bit + ISM_DMB_BIT_OFFSET] = 0;
ism               424 drivers/s390/net/ism_drv.c 		smcd_handle_irq(ism->smcd, bit + ISM_DMB_BIT_OFFSET);
ism               427 drivers/s390/net/ism_drv.c 	if (ism->sba->e) {
ism               428 drivers/s390/net/ism_drv.c 		ism->sba->e = 0;
ism               430 drivers/s390/net/ism_drv.c 		ism_handle_event(ism);
ism               432 drivers/s390/net/ism_drv.c 	spin_unlock(&ism->lock);
ism               448 drivers/s390/net/ism_drv.c static int ism_dev_init(struct ism_dev *ism)
ism               450 drivers/s390/net/ism_drv.c 	struct pci_dev *pdev = ism->pdev;
ism               458 drivers/s390/net/ism_drv.c 			  pci_name(pdev), ism);
ism               462 drivers/s390/net/ism_drv.c 	ret = register_sba(ism);
ism               466 drivers/s390/net/ism_drv.c 	ret = register_ieq(ism);
ism               470 drivers/s390/net/ism_drv.c 	ret = ism_read_local_gid(ism);
ism               474 drivers/s390/net/ism_drv.c 	ret = smcd_register_dev(ism->smcd);
ism               478 drivers/s390/net/ism_drv.c 	query_info(ism);
ism               482 drivers/s390/net/ism_drv.c 	unregister_ieq(ism);
ism               484 drivers/s390/net/ism_drv.c 	unregister_sba(ism);
ism               486 drivers/s390/net/ism_drv.c 	free_irq(pci_irq_vector(pdev, 0), ism);
ism               495 drivers/s390/net/ism_drv.c 	struct ism_dev *ism;
ism               498 drivers/s390/net/ism_drv.c 	ism = kzalloc(sizeof(*ism), GFP_KERNEL);
ism               499 drivers/s390/net/ism_drv.c 	if (!ism)
ism               502 drivers/s390/net/ism_drv.c 	spin_lock_init(&ism->lock);
ism               503 drivers/s390/net/ism_drv.c 	dev_set_drvdata(&pdev->dev, ism);
ism               504 drivers/s390/net/ism_drv.c 	ism->pdev = pdev;
ism               522 drivers/s390/net/ism_drv.c 	ism->smcd = smcd_alloc_dev(&pdev->dev, dev_name(&pdev->dev), &ism_ops,
ism               524 drivers/s390/net/ism_drv.c 	if (!ism->smcd) {
ism               529 drivers/s390/net/ism_drv.c 	ism->smcd->priv = ism;
ism               530 drivers/s390/net/ism_drv.c 	ret = ism_dev_init(ism);
ism               537 drivers/s390/net/ism_drv.c 	smcd_free_dev(ism->smcd);
ism               543 drivers/s390/net/ism_drv.c 	kfree(ism);
ism               548 drivers/s390/net/ism_drv.c static void ism_dev_exit(struct ism_dev *ism)
ism               550 drivers/s390/net/ism_drv.c 	struct pci_dev *pdev = ism->pdev;
ism               552 drivers/s390/net/ism_drv.c 	smcd_unregister_dev(ism->smcd);
ism               553 drivers/s390/net/ism_drv.c 	unregister_ieq(ism);
ism               554 drivers/s390/net/ism_drv.c 	unregister_sba(ism);
ism               555 drivers/s390/net/ism_drv.c 	free_irq(pci_irq_vector(pdev, 0), ism);
ism               561 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = dev_get_drvdata(&pdev->dev);
ism               563 drivers/s390/net/ism_drv.c 	ism_dev_exit(ism);
ism               565 drivers/s390/net/ism_drv.c 	smcd_free_dev(ism->smcd);
ism               569 drivers/s390/net/ism_drv.c 	kfree(ism);
ism               574 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = dev_get_drvdata(dev);
ism               576 drivers/s390/net/ism_drv.c 	ism_dev_exit(ism);
ism               582 drivers/s390/net/ism_drv.c 	struct ism_dev *ism = dev_get_drvdata(dev);
ism               584 drivers/s390/net/ism_drv.c 	return ism_dev_init(ism);
ism               397 net/sched/sch_hfsc.c seg_y2x(u64 y, u64 ism)
ism               403 net/sched/sch_hfsc.c 	else if (ism == HT_INFINITY)
ism               406 net/sched/sch_hfsc.c 		x = (y >> ISM_SHIFT) * ism
ism               407 net/sched/sch_hfsc.c 		    + (((y & ISM_MASK) * ism) >> ISM_SHIFT);
ism               428 net/sched/sch_hfsc.c 	u64 ism;
ism               431 net/sched/sch_hfsc.c 		ism = HT_INFINITY;
ism               433 net/sched/sch_hfsc.c 		ism = ((u64)PSCHED_TICKS_PER_SEC << ISM_SHIFT);
ism               434 net/sched/sch_hfsc.c 		ism += m - 1;
ism               435 net/sched/sch_hfsc.c 		do_div(ism, m);
ism               437 net/sched/sch_hfsc.c 	return ism;