#define MAX_IOC 2/* per Ike. Pluto/Astro only have 1. */ #define ROPES_PER_IOC 8/* per Ike half or Pluto/Astro */
struct ioc { void __iomem *ioc_hpa; /* I/O MMU base address */ char *res_map; /* resource map, bit == pdir entry */
__le64 *pdir_base; /* physical base address */ unsignedlong ibase; /* pdir IOV Space base - shared w/lba_pci */ unsignedlong imask; /* pdir IOV Space mask - shared w/lba_pci */ #ifdef ZX1_SUPPORT unsignedlong iovp_mask; /* help convert IOVA to IOVP */ #endif unsignedlong *res_hint; /* next avail IOVP - circular search */
spinlock_t res_lock; unsignedint res_bitshift; /* from the LEFT! */ unsignedint res_size; /* size of resource map in bytes */ #ifdef SBA_HINT_SUPPORT /* FIXME : DMA HINTs not used */ unsignedlong hint_mask_pdir; /* bits used for DMA hints */ unsignedint hint_shift_pdir; #endif #if DELAYED_RESOURCE_CNT > 0 int saved_cnt; struct sba_dma_pair {
dma_addr_t iova;
size_t size;
} saved[DELAYED_RESOURCE_CNT]; #endif
#ifdef SBA_COLLECT_STATS #define SBA_SEARCH_SAMPLE 0x100 unsignedlong avg_search[SBA_SEARCH_SAMPLE]; unsignedlong avg_idx; /* current index into avg_search */ unsignedlong used_pages; unsignedlong msingle_calls; unsignedlong msingle_pages; unsignedlong msg_calls; unsignedlong msg_pages; unsignedlong usingle_calls; unsignedlong usingle_pages; unsignedlong usg_calls; unsignedlong usg_pages; #endif /* STUFF We don't need in performance path */ unsignedint pdir_size; /* in bytes, determined by IOV Space size */
};
struct sba_device { struct sba_device *next; /* list of SBA's in system */ struct parisc_device *dev; /* dev found in bus walk */ constchar *name; void __iomem *sba_hpa; /* base address */
spinlock_t sba_lock; unsignedint flags; /* state/functionality enabled */ unsignedint hw_rev; /* HW revision of chip */
struct resource chip_resv; /* MMIO reserved for chip */ struct resource iommu_resv; /* MMIO reserved for iommu */
unsignedint num_ioc; /* number of on-board IOC's */ struct ioc ioc[MAX_IOC];
};
/* list of SBA's in system, see drivers/parisc/sba_iommu.c */ externstruct sba_device *sba_list;
/* FIXME: ignore DMA Hint stuff until we can measure performance */ #define LBA_HINT_CFG 0x0310 #define LBA_HINT_BASE 0x0380 /* 14 registers at every 8 bytes. */
#define LBA_IOSAPIC_BASE 0x800 /* Offset of IRQ logic */
#endif/*_ASM_PARISC_ROPES_H_*/
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet am 2026-10-01)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.