Lines Matching +full:pci +full:- +full:sig
1 // SPDX-License-Identifier: GPL-2.0
3 * BIOS32 and PCI BIOS handling.
6 #include <linux/pci.h>
14 #include <asm/pci-functions.h>
20 /* PCI signature: "PCI " */
23 /* PCI service signature: "$PCI" */
26 /* PCI BIOS hardware mechanism flags */
38 * We could make the 0xe0000-0x100000 range rox, but this can break
48 set_memory_x(PAGE_OFFSET + BIOS_BEGIN, (BIOS_END - BIOS_BEGIN) >> PAGE_SHIFT); in set_bios_x()
50 printk(KERN_INFO "PCI: PCI BIOS area is rw and x. Use pci=nobios if you want it NX.\n"); in set_bios_x()
56 * Standard BIOS 32-bit Service Directory Proposal
60 * and the PCI BIOS specification.
117 printk(KERN_WARNING "bios32_service(0x%lx): returned 0x%x -- BIOS bug!\n", in bios32_service()
163 DBG("PCI: BIOS probe returned s=%02x hw=%02x ver=%02x.%02x l=%02x\n", in check_pcibios()
166 printk (KERN_ERR "PCI: BIOS BUG #%x[%08x] found\n", in check_pcibios()
170 printk(KERN_INFO "PCI: PCI BIOS revision %x.%02x entry at 0x%lx, last bus=%d\n", in check_pcibios()
193 return -EINVAL; in pci_bios_read()
222 * Zero-extend the result beyond 8 or 16 bits, do not trust the in pci_bios_read()
243 return -EINVAL; in pci_bios_write()
286 * Try to find PCI BIOS.
304 long sig; in pci_find_bios() local
305 if (get_kernel_nofault(sig, &check->fields.signature)) in pci_find_bios()
308 if (check->fields.signature != BIOS32_SIGNATURE) in pci_find_bios()
310 length = check->fields.length * 16; in pci_find_bios()
315 sum += check->chars[i]; in pci_find_bios()
318 if (check->fields.revision != 0) { in pci_find_bios()
319 printk("PCI: unsupported BIOS32 revision %d at 0x%p\n", in pci_find_bios()
320 check->fields.revision, check); in pci_find_bios()
323 DBG("PCI: BIOS32 Service Directory structure at 0x%p\n", check); in pci_find_bios()
324 if (check->fields.entry >= 0x100000) { in pci_find_bios()
325 printk("PCI: BIOS32 entry (0x%p) in high memory, " in pci_find_bios()
329 unsigned long bios32_entry = check->fields.entry; in pci_find_bios()
330 DBG("PCI: BIOS32 Service Directory entry at 0x%lx\n", in pci_find_bios()
369 DBG("PCI: Fetching IRQ routing table... "); in pcibios_get_irq_routing_table()
389 printk(KERN_ERR "PCI: Error %02x when fetching IRQ routing table.\n", (ret >> 8) & 0xff); in pcibios_get_irq_routing_table()
394 rt->size = opt.size + sizeof(struct irq_routing_table); in pcibios_get_irq_routing_table()
395 rt->exclusive_irqs = map; in pcibios_get_irq_routing_table()
396 memcpy(rt->slots, (void *) page, opt.size); in pcibios_get_irq_routing_table()
397 printk(KERN_INFO "PCI: Using BIOS Interrupt Routing Table\n"); in pcibios_get_irq_routing_table()
415 "b" ((dev->bus->number << 8) | dev->devfn), in pcibios_set_irq_routing()