Lines Matching +full:8 +full:- +full:cpu
1 // SPDX-License-Identifier: GPL-2.0
7 * Code common to all MCbus-PCI Adaptor core logic chipsets
27 * NOTE: Herein lie back-to-back mb instructions. They are magic.
33 * BIOS32-style PCI interface:
54 * 3 2|1 0 9 8|7 6 5 4|3 2 1 0|9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0
55 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
57 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
60 * 10:8 Function number
66 * 3 2|1 0 9 8|7 6 5 4|3 2 1 0|9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0
67 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
69 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
72 * 23:16 bus number (8 bits = 128 possible buses)
74 * 10:8 function number
78 * The function number selects which function of a multi-function device
91 unsigned long mid = MCPCIA_HOSE2MID(hose->index); in conf_read()
92 unsigned int stat0, value, cpu; in conf_read() local
94 cpu = smp_processor_id(); in conf_read()
110 mcheck_expected(cpu) = 1; in conf_read()
111 mcheck_taken(cpu) = 0; in conf_read()
112 mcheck_extra(cpu) = mid; in conf_read()
120 if (mcheck_taken(cpu)) { in conf_read()
121 mcheck_taken(cpu) = 0; in conf_read()
125 mcheck_expected(cpu) = 0; in conf_read()
139 unsigned long mid = MCPCIA_HOSE2MID(hose->index); in conf_write()
140 unsigned int stat0, cpu; in conf_write() local
142 cpu = smp_processor_id(); in conf_write()
153 mcheck_expected(cpu) = 1; in conf_write()
154 mcheck_extra(cpu) = mid; in conf_write()
162 mcheck_expected(cpu) = 0; in conf_write()
174 u8 bus = pbus->number; in mk_conf_addr()
179 bus, devfn, hose->index, where, pci_addr, type1)); in mk_conf_addr()
184 if (!pbus->parent) /* No parent means peer PCI bus. */ in mk_conf_addr()
186 addr = (bus << 16) | (devfn << 8) | (where); in mk_conf_addr()
188 addr |= hose->config_space_base; in mk_conf_addr()
199 struct pci_controller *hose = bus->sysdata; in mcpcia_read_config()
206 addr |= (size - 1) * 8; in mcpcia_read_config()
226 struct pci_controller *hose = bus->sysdata; in mcpcia_write_config()
233 addr |= (size - 1) * 8; in mcpcia_write_config()
249 *(vuip)MCPCIA_SG_TBIA(MCPCIA_HOSE2MID(hose->index)) = 0; in mcpcia_pci_tbi()
256 int cpu = smp_processor_id(); in mcpcia_probe_hose() local
267 mcheck_expected(cpu) = 2; /* indicates probing */ in mcpcia_probe_hose()
268 mcheck_taken(cpu) = 0; in mcpcia_probe_hose()
269 mcheck_extra(cpu) = mid; in mcpcia_probe_hose()
277 if (mcheck_taken(cpu)) { in mcpcia_probe_hose()
278 mcheck_taken(cpu) = 0; in mcpcia_probe_hose()
282 mcheck_expected(cpu) = 0; in mcpcia_probe_hose()
302 hose->io_space = io; in mcpcia_new_hose()
303 hose->mem_space = hae_mem; in mcpcia_new_hose()
304 hose->sparse_mem_base = MCPCIA_SPARSE(mid) - IDENT_ADDR; in mcpcia_new_hose()
305 hose->dense_mem_base = MCPCIA_DENSE(mid) - IDENT_ADDR; in mcpcia_new_hose()
306 hose->sparse_io_base = MCPCIA_IO(mid) - IDENT_ADDR; in mcpcia_new_hose()
307 hose->dense_io_base = 0; in mcpcia_new_hose()
308 hose->config_space_base = MCPCIA_CONF(mid); in mcpcia_new_hose()
309 hose->index = h; in mcpcia_new_hose()
311 io->start = MCPCIA_IO(mid) - MCPCIA_IO_BIAS; in mcpcia_new_hose()
312 io->end = io->start + 0xffff; in mcpcia_new_hose()
313 io->name = pci_io_names[h]; in mcpcia_new_hose()
314 io->flags = IORESOURCE_IO; in mcpcia_new_hose()
316 mem->start = MCPCIA_DENSE(mid) - MCPCIA_MEM_BIAS; in mcpcia_new_hose()
317 mem->end = mem->start + 0xffffffff; in mcpcia_new_hose()
318 mem->name = pci_mem_names[h]; in mcpcia_new_hose()
319 mem->flags = IORESOURCE_MEM; in mcpcia_new_hose()
321 hae_mem->start = mem->start; in mcpcia_new_hose()
322 hae_mem->end = mem->start + MCPCIA_MEM_MASK; in mcpcia_new_hose()
323 hae_mem->name = pci_hae0_name; in mcpcia_new_hose()
324 hae_mem->flags = IORESOURCE_MEM; in mcpcia_new_hose()
340 *(vuip)MCPCIA_CAP_ERR(mid); /* Re-read for force write. */ in mcpcia_pci_clr_err()
346 int mid = MCPCIA_HOSE2MID(hose->index); in mcpcia_startup_hose()
361 * Set up the PCI->physical memory translation windows. in mcpcia_startup_hose()
363 * Window 0 is scatter-gather 8MB at 8MB (for isa) in mcpcia_startup_hose()
364 * Window 1 is scatter-gather (up to) 1GB at 1GB (for pci) in mcpcia_startup_hose()
367 hose->sg_isa = iommu_arena_new(hose, 0x00800000, 0x00800000, in mcpcia_startup_hose()
369 hose->sg_pci = iommu_arena_new(hose, 0x40000000, in mcpcia_startup_hose()
376 *(vuip)MCPCIA_W0_BASE(mid) = hose->sg_isa->dma_base | 3; in mcpcia_startup_hose()
377 *(vuip)MCPCIA_W0_MASK(mid) = (hose->sg_isa->size - 1) & 0xfff00000; in mcpcia_startup_hose()
378 *(vuip)MCPCIA_T0_BASE(mid) = virt_to_phys(hose->sg_isa->ptes) >> 8; in mcpcia_startup_hose()
380 *(vuip)MCPCIA_W1_BASE(mid) = hose->sg_pci->dma_base | 3; in mcpcia_startup_hose()
381 *(vuip)MCPCIA_W1_MASK(mid) = (hose->sg_pci->size - 1) & 0xfff00000; in mcpcia_startup_hose()
382 *(vuip)MCPCIA_T1_BASE(mid) = virt_to_phys(hose->sg_pci->ptes) >> 8; in mcpcia_startup_hose()
385 *(vuip)MCPCIA_W2_MASK(mid) = (__direct_map_size - 1) & 0xfff00000; in mcpcia_startup_hose()
390 mcpcia_pci_tbi(hose, 0, -1); in mcpcia_startup_hose()
440 for (hose = hose_head; hose; hose = hose->next) in mcpcia_init_hoses()
450 frame = &logout->procdata; in mcpcia_print_uncorrectable()
454 printk(" paltmp[%d-%d] = %16lx %16lx\n", in mcpcia_print_uncorrectable()
455 i, i+1, frame->paltemp[i], frame->paltemp[i+1]); in mcpcia_print_uncorrectable()
457 for (i = 0; i < 8; i += 2) { in mcpcia_print_uncorrectable()
458 printk(" shadow[%d-%d] = %16lx %16lx\n", in mcpcia_print_uncorrectable()
459 i, i+1, frame->shadow[i], in mcpcia_print_uncorrectable()
460 frame->shadow[i+1]); in mcpcia_print_uncorrectable()
463 frame->exc_addr); in mcpcia_print_uncorrectable()
465 frame->exc_sum); in mcpcia_print_uncorrectable()
467 frame->exc_mask); in mcpcia_print_uncorrectable()
469 frame->pal_base); in mcpcia_print_uncorrectable()
471 frame->isr); in mcpcia_print_uncorrectable()
473 frame->icsr); in mcpcia_print_uncorrectable()
474 printk(" I-CACHE Reg %s parity error = %16lx\n", in mcpcia_print_uncorrectable()
475 (frame->ic_perr_stat & 0x800L) ? in mcpcia_print_uncorrectable()
477 frame->ic_perr_stat); in mcpcia_print_uncorrectable()
478 printk(" D-CACHE error Reg = %16lx\n", in mcpcia_print_uncorrectable()
479 frame->dc_perr_stat); in mcpcia_print_uncorrectable()
480 if (frame->dc_perr_stat & 0x2) { in mcpcia_print_uncorrectable()
481 switch (frame->dc_perr_stat & 0x03c) { in mcpcia_print_uncorrectable()
482 case 8: in mcpcia_print_uncorrectable()
497 frame->va); in mcpcia_print_uncorrectable()
498 printk(" Reason for D-stream = %16lx\n", in mcpcia_print_uncorrectable()
499 frame->mm_stat); in mcpcia_print_uncorrectable()
501 frame->sc_addr); in mcpcia_print_uncorrectable()
503 frame->sc_stat); in mcpcia_print_uncorrectable()
505 frame->bc_tag_addr); in mcpcia_print_uncorrectable()
507 frame->ei_addr); in mcpcia_print_uncorrectable()
509 frame->fill_syndrome); in mcpcia_print_uncorrectable()
511 frame->ei_stat); in mcpcia_print_uncorrectable()
513 frame->ld_lock); in mcpcia_print_uncorrectable()
549 iodpp = (struct IOD_subpacket *) (la_ptr + frame->sys_offset); in mcpcia_print_system_area()
551 for (hose = hose_head; hose; hose = hose->next, iodpp++) { in mcpcia_print_system_area()
553 printk("IOD %d Register Subpacket - Bridge Base Address %16lx\n", in mcpcia_print_system_area()
554 hose->index, iodpp->base); in mcpcia_print_system_area()
555 printk(" WHOAMI = %8x\n", iodpp->whoami); in mcpcia_print_system_area()
556 printk(" PCI_REV = %8x\n", iodpp->pci_rev); in mcpcia_print_system_area()
557 printk(" CAP_CTRL = %8x\n", iodpp->cap_ctrl); in mcpcia_print_system_area()
558 printk(" HAE_MEM = %8x\n", iodpp->hae_mem); in mcpcia_print_system_area()
559 printk(" HAE_IO = %8x\n", iodpp->hae_io); in mcpcia_print_system_area()
560 printk(" INT_CTL = %8x\n", iodpp->int_ctl); in mcpcia_print_system_area()
561 printk(" INT_REG = %8x\n", iodpp->int_reg); in mcpcia_print_system_area()
562 printk(" INT_MASK0 = %8x\n", iodpp->int_mask0); in mcpcia_print_system_area()
563 printk(" INT_MASK1 = %8x\n", iodpp->int_mask1); in mcpcia_print_system_area()
564 printk(" MC_ERR0 = %8x\n", iodpp->mc_err0); in mcpcia_print_system_area()
565 printk(" MC_ERR1 = %8x\n", iodpp->mc_err1); in mcpcia_print_system_area()
566 printk(" CAP_ERR = %8x\n", iodpp->cap_err); in mcpcia_print_system_area()
567 printk(" PCI_ERR1 = %8x\n", iodpp->pci_err1); in mcpcia_print_system_area()
568 printk(" MDPA_STAT = %8x\n", iodpp->mdpa_stat); in mcpcia_print_system_area()
569 printk(" MDPA_SYN = %8x\n", iodpp->mdpa_syn); in mcpcia_print_system_area()
570 printk(" MDPB_STAT = %8x\n", iodpp->mdpb_stat); in mcpcia_print_system_area()
571 printk(" MDPB_SYN = %8x\n", iodpp->mdpb_syn); in mcpcia_print_system_area()
579 unsigned int cpu = smp_processor_id(); in mcpcia_machine_check() local
583 expected = mcheck_expected(cpu); in mcpcia_machine_check()
595 for (hose = hose_head; hose; hose = hose->next) in mcpcia_machine_check()
596 mcpcia_pci_clr_err(MCPCIA_HOSE2MID(hose->index)); in mcpcia_machine_check()
600 mcpcia_pci_clr_err(mcheck_extra(cpu)); in mcpcia_machine_check()