Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

i386/kernel/bios32.c File Reference

#include <linux/config.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/malloc.h>
#include <linux/smp_lock.h>
#include <asm/page.h>
#include <asm/segment.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/smp.h>
#include <asm/spinlock.h>
#include "irq.h"

Include dependency graph for i386/kernel/bios32.c:

Go to the source code of this file.

Defines

#define DBG(x...)
#define PCI_byte_BAD   0
#define PCI_word_BAD   (pos & 1)
#define PCI_dword_BAD   (pos & 3)
#define PCI_STUB(rw, size, type)
#define PCI_PROBE_BIOS   1
#define PCI_PROBE_CONF1   2
#define PCI_PROBE_CONF2   4
#define PCI_NO_SORT   0x100
#define PCI_BIOS_SORT   0x200
#define PCI_NO_CHECKS   0x400
#define PCI_NO_PEER_FIXUP   0x800

Functions

static int pci_stub (void)
int pcibios_present (void)
static void __init pcibios_fixup_io_addr (struct pci_dev *dev, int idx)
static void __init pcibios_fixup_ghosts (struct pci_bus *b)
static void __init pcibios_fixup_peer_bridges (void)
static void __init pci_fixup_peer_bus_scan (unsigned char busno, unsigned char busmax)
static void __init pci_fixup_serverworks (struct pci_dev *d)
static void __init pci_fixup_compaq (struct pci_dev *d)
static void __init pci_fixup_i450nx (struct pci_dev *d)
static void __init pci_fixup_umc_ide (struct pci_dev *d)
static void __init pcibios_scan_buglist (struct pci_bus *b)
static void __init pcibios_fixup_devices (void)
 __initfunc (void pcibios_fixup(void))
 __initfunc (void pcibios_fixup_bus(struct pci_bus *b))
 __initfunc (char *pcibios_setup(char *str))

Variables

spinlock_t pci_lock = SPIN_LOCK_UNLOCKED
static struct pci_access pci_access_none
static struct pci_accessaccess_pci = &pci_access_none
static unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2
static int pci_last_io_addr __initdata = 0x5800
static struct dev_ex __initdata dev_ex_table []
int skip_ioapic_setup


Define Documentation

#define DBG x...   ) 
 

Definition at line 103 of file i386/kernel/bios32.c.

#define PCI_BIOS_SORT   0x200
 

Definition at line 176 of file i386/kernel/bios32.c.

Referenced by __initfunc().

#define PCI_byte_BAD   0
 

Definition at line 149 of file i386/kernel/bios32.c.

#define PCI_dword_BAD   (pos & 3)
 

Definition at line 151 of file i386/kernel/bios32.c.

#define PCI_NO_CHECKS   0x400
 

Definition at line 177 of file i386/kernel/bios32.c.

#define PCI_NO_PEER_FIXUP   0x800
 

Definition at line 178 of file i386/kernel/bios32.c.

Referenced by __initfunc(), pci_fixup_compaq(), pci_fixup_i450nx(), and pci_fixup_serverworks().

#define PCI_NO_SORT   0x100
 

Definition at line 175 of file i386/kernel/bios32.c.

Referenced by __initfunc().

#define PCI_PROBE_BIOS   1
 

Definition at line 172 of file i386/kernel/bios32.c.

#define PCI_PROBE_CONF1   2
 

Definition at line 173 of file i386/kernel/bios32.c.

#define PCI_PROBE_CONF2   4
 

Definition at line 174 of file i386/kernel/bios32.c.

#define PCI_STUB rw,
size,
type   ) 
 

Value:

int pcibios_##rw##_config_##size (u8 bus, u8 dfn, u8 pos, type value) \
{                                                                       \
        int res;                                                        \
        unsigned long flags;                                            \
        if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER;       \
        spin_lock_irqsave(&pci_lock, flags);                            \
        res = access_pci->rw##_config_##size(bus, dfn, pos, value);     \
        spin_unlock_irqrestore(&pci_lock, flags);                       \
        return res;                                                     \
}

Definition at line 153 of file i386/kernel/bios32.c.

#define PCI_word_BAD   (pos & 1)
 

Definition at line 150 of file i386/kernel/bios32.c.


Function Documentation

__initfunc char *  pcibios_setup(char *str)  ) 
 

Definition at line 1286 of file i386/kernel/bios32.c.

References NULL, p, PCI_NO_PEER_FIXUP, PCI_NO_SORT, pci_probe, simple_strtoul(), strcmp, and strncmp().

Here is the call graph for this function:

__initfunc void   pcibios_fixup_bus(struct pci_bus *b)  ) 
 

Definition at line 1252 of file i386/kernel/bios32.c.

References pcibios_fixup_ghosts(), and pcibios_scan_buglist().

Here is the call graph for this function:

__initfunc void   pcibios_fixup(void)  ) 
 

Definition at line 1240 of file i386/kernel/bios32.c.

References PCI_BIOS_SORT, PCI_NO_PEER_FIXUP, PCI_NO_SORT, pci_probe, pcibios_fixup_devices(), and pcibios_fixup_peer_bridges().

Here is the call graph for this function:

static void __init pci_fixup_compaq struct pci_dev *  d  )  [static]
 

Definition at line 1067 of file i386/kernel/bios32.c.

References pci_fixup_peer_bus_scan(), PCI_FUNC, PCI_NO_PEER_FIXUP, pci_probe, pci_read_config_byte, PCI_SLOT, printk, and xc8.

Here is the call graph for this function:

static void __init pci_fixup_i450nx struct pci_dev *  d  )  [static]
 

Definition at line 1081 of file i386/kernel/bios32.c.

References DBG, pci_fixup_peer_bus_scan(), PCI_NO_PEER_FIXUP, pci_probe, pci_read_config_byte, reg, subb, and u8.

Here is the call graph for this function:

static void __init pci_fixup_peer_bus_scan unsigned char  busno,
unsigned char  busmax
[static]
 

Definition at line 1033 of file i386/kernel/bios32.c.

References NULL, pci_root, and pci_scan_peer_bridge().

Referenced by pci_fixup_compaq(), pci_fixup_i450nx(), and pci_fixup_serverworks().

Here is the call graph for this function:

static void __init pci_fixup_serverworks struct pci_dev *  d  )  [static]
 

Definition at line 1053 of file i386/kernel/bios32.c.

References pci_fixup_peer_bus_scan(), PCI_FUNC, PCI_NO_PEER_FIXUP, pci_probe, pci_read_config_byte, PCI_SLOT, printk, and x45.

Here is the call graph for this function:

static void __init pci_fixup_umc_ide struct pci_dev *  d  )  [static]
 

Definition at line 1099 of file i386/kernel/bios32.c.

References PCI_BASE_ADDRESS_SPACE_IO.

static int pci_stub void   )  [static]
 

Definition at line 127 of file i386/kernel/bios32.c.

static void __init pcibios_fixup_devices void   )  [static]
 

Definition at line 1149 of file i386/kernel/bios32.c.

References IO_APIC_get_PCI_irq_vector(), irq, KERN_WARNING, NR_IRQS, PCI_BASE_ADDRESS_IO_MASK, PCI_BASE_ADDRESS_MEM_MASK, PCI_BASE_ADDRESS_SPACE_IO, PCI_CLASS_DISPLAY_VGA, PCI_CLASS_STORAGE_IDE, PCI_COMMAND, PCI_COMMAND_IO, PCI_COMMAND_MEMORY, pci_devices, PCI_INTERRUPT_PIN, pci_read_config_byte, pci_read_config_word, PCI_SLOT, pci_write_config_word, pcibios_fixup_io_addr(), and printk.

Referenced by __initfunc().

Here is the call graph for this function:

static void __init pcibios_fixup_ghosts struct pci_bus *  b  )  [static]
 

Definition at line 927 of file i386/kernel/bios32.c.

References DBG, kfree_s(), memcmp, NULL, PCI_CLASS_BRIDGE_HOST, PCI_DEVFN, pci_devices, printk, and z.

Referenced by __initfunc().

Here is the call graph for this function:

static void __init pcibios_fixup_io_addr struct pci_dev *  dev,
int  idx
[static]
 

Definition at line 866 of file i386/kernel/bios32.c.

References addr, check_region, PCI_BASE_ADDRESS_0, PCI_BASE_ADDRESS_IO_MASK, PCI_BASE_ADDRESS_SPACE_IO, PCI_CLASS_DISPLAY_VGA, PCI_CLASS_STORAGE_IDE, PCI_COMMAND, PCI_COMMAND_IO, pcibios_read_config_dword(), pcibios_read_config_word(), pcibios_write_config_dword(), pcibios_write_config_word(), printk, reg, size, and x100.

Referenced by pcibios_fixup_devices().

Here is the call graph for this function:

static void __init pcibios_fixup_peer_bridges void   )  [static]
 

Definition at line 967 of file i386/kernel/bios32.c.

References b, cnt, DBG, found, l, n, PCI_CLASS_BRIDGE_HOST, PCI_CLASS_DEVICE, PCI_DEVICE_ID, pci_root, pci_scan_peer_bridge(), PCI_VENDOR_ID, pcibios_read_config_word(), printk, u16, u8, xff, and xffff.

Referenced by __initfunc().

Here is the call graph for this function:

int pcibios_present void   ) 
 

Definition at line 144 of file i386/kernel/bios32.c.

References pci_access::pci_present.

static void __init pcibios_scan_buglist struct pci_bus *  b  )  [static]
 

Definition at line 1126 of file i386/kernel/bios32.c.

References dev_ex::comment, dev_ex::device, dev_ex::handler, printk, and dev_ex::vendor.

Referenced by __initfunc().


Variable Documentation

int pci_last_io_addr __initdata = 0x5800 [static]
 

Definition at line 864 of file i386/kernel/bios32.c.

struct pci_access* access_pci = &pci_access_none [static]
 

Definition at line 142 of file i386/kernel/bios32.c.

struct dev_ex __initdata dev_ex_table[] [static]
 

Initial value:

Definition at line 1117 of file i386/kernel/bios32.c.

struct pci_access pci_access_none [static]
 

Initial value:

 {
        0,                              
        (void *) pci_stub,
        (void *) pci_stub,
        (void *) pci_stub,
        (void *) pci_stub,
        (void *) pci_stub,
        (void *) pci_stub
}

Definition at line 132 of file i386/kernel/bios32.c.

spinlock_t pci_lock = SPIN_LOCK_UNLOCKED
 

Definition at line 111 of file i386/kernel/bios32.c.

unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 [static]
 

Definition at line 180 of file i386/kernel/bios32.c.

Referenced by __initfunc(), pci_fixup_compaq(), pci_fixup_i450nx(), and pci_fixup_serverworks().

int skip_ioapic_setup
 

Definition at line 138 of file i386/kernel/smp.c.

Referenced by ioapic_setup(), smp_boot_cpus(), and smp_read_mpc().