Commit 9a22c80d authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://bk.arm.linux.org.uk/linux-2.6-rmk

into home.osdl.org:/home/torvalds/v2.5/linux
parents 124b69b2 733b8cab
...@@ -239,8 +239,7 @@ config DISCONTIGMEM ...@@ -239,8 +239,7 @@ config DISCONTIGMEM
# Now handle the bus types # Now handle the bus types
config PCI config PCI
bool bool "PCI support" if ARCH_INTEGRATOR
default PCI_INTEGRATOR if !ARCH_FTVPCI && !ARCH_SHARK && !FOOTBRIDGE_HOST && !ARCH_IOP3XX && ARCH_INTEGRATOR
default y if ARCH_FTVPCI || ARCH_SHARK || FOOTBRIDGE_HOST || ARCH_IOP3XX default y if ARCH_FTVPCI || ARCH_SHARK || FOOTBRIDGE_HOST || ARCH_IOP3XX
help help
Find out whether you have a PCI motherboard. PCI is the name of a Find out whether you have a PCI motherboard. PCI is the name of a
...@@ -253,20 +252,6 @@ config PCI ...@@ -253,20 +252,6 @@ config PCI
information about which PCI hardware does work under Linux and which information about which PCI hardware does work under Linux and which
doesn't. doesn't.
config PCI_INTEGRATOR
bool "PCI support"
depends on !ARCH_FTVPCI && !ARCH_SHARK && !FOOTBRIDGE_HOST && !ARCH_IOP3XX && ARCH_INTEGRATOR
help
Find out whether you have a PCI motherboard. PCI is the name of a
bus system, i.e. the way the CPU talks to the other stuff inside
your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
VESA. If you have PCI, say Y, otherwise N.
The PCI-HOWTO, available from
<http://www.tldp.org/docs.html#howto>, contains valuable
information about which PCI hardware does work under Linux and which
doesn't.
# Select the host bridge type # Select the host bridge type
config PCI_HOST_PLX90X0 config PCI_HOST_PLX90X0
bool bool
......
...@@ -20,11 +20,15 @@ ...@@ -20,11 +20,15 @@
static int debug_pci; static int debug_pci;
void pcibios_report_status(u_int status_mask, int warn) /*
* We can't use pci_find_device() here since we are
* called from interrupt context.
*/
static void pcibios_bus_report_status(struct pci_bus *bus, u_int status_mask, int warn)
{ {
struct pci_dev *dev = NULL; struct pci_dev *dev;
while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { list_for_each_entry(dev, &bus->devices, bus_list) {
u16 status; u16 status;
/* /*
...@@ -47,6 +51,21 @@ void pcibios_report_status(u_int status_mask, int warn) ...@@ -47,6 +51,21 @@ void pcibios_report_status(u_int status_mask, int warn)
if (warn) if (warn)
printk("(%s: %04X) ", pci_name(dev), status); printk("(%s: %04X) ", pci_name(dev), status);
} }
list_for_each_entry(dev, &bus->devices, bus_list)
if (dev->subordinate)
pcibios_bus_report_status(dev->subordinate, status_mask, warn);
}
void pcibios_report_status(u_int status_mask, int warn)
{
struct list_head *l;
list_for_each(l, &pci_root_buses) {
struct pci_bus *bus = pci_bus_b(l);
pcibios_bus_report_status(bus, status_mask, warn);
}
} }
/* /*
......
...@@ -67,6 +67,16 @@ static unsigned long dummy_gettimeoffset(void) ...@@ -67,6 +67,16 @@ static unsigned long dummy_gettimeoffset(void)
*/ */
unsigned long (*gettimeoffset)(void) = dummy_gettimeoffset; unsigned long (*gettimeoffset)(void) = dummy_gettimeoffset;
/*
* Scheduler clock - returns current time in nanosec units.
*/
unsigned long long sched_clock(void)
{
unsigned long long this_offset;
return (unsigned long long)jiffies * (1000000000 / HZ);
}
/* /*
* Handle kernel profile stuff... * Handle kernel profile stuff...
*/ */
......
...@@ -321,28 +321,33 @@ static int __init consistent_init(void) ...@@ -321,28 +321,33 @@ static int __init consistent_init(void)
pgd_t *pgd; pgd_t *pgd;
pmd_t *pmd; pmd_t *pmd;
pte_t *pte; pte_t *pte;
int ret = 0;
spin_lock(&init_mm.page_table_lock);
do { do {
pgd = pgd_offset(&init_mm, CONSISTENT_BASE); pgd = pgd_offset(&init_mm, CONSISTENT_BASE);
pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE); pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE);
if (!pmd) { if (!pmd) {
printk(KERN_ERR "consistent_init: out of pmd tables\n"); printk(KERN_ERR "consistent_init: no pmd tables\n");
return -ENOMEM; ret = -ENOMEM;
} break;
if (!pmd_none(*pmd)) {
printk(KERN_ERR "consistent_init: PMD already allocated\n");
return -EINVAL;
} }
WARN_ON(!pmd_none(*pmd));
pte = pte_alloc_kernel(&init_mm, pmd, CONSISTENT_BASE); pte = pte_alloc_kernel(&init_mm, pmd, CONSISTENT_BASE);
if (!pte) { if (!pte) {
printk(KERN_ERR "consistent_init: out of pte tables\n"); printk(KERN_ERR "consistent_init: no pte tables\n");
return -ENOMEM; ret = -ENOMEM;
break;
} }
consistent_pte = pte; consistent_pte = pte;
} while (0); } while (0);
return 0; spin_unlock(&init_mm.page_table_lock);
return ret;
} }
core_initcall(consistent_init); core_initcall(consistent_init);
......
...@@ -56,6 +56,8 @@ static int __init minicache_init(void) ...@@ -56,6 +56,8 @@ static int __init minicache_init(void)
pgd_t *pgd; pgd_t *pgd;
pmd_t *pmd; pmd_t *pmd;
spin_lock(&init_mm.page_table_lock);
pgd = pgd_offset_k(minicache_address); pgd = pgd_offset_k(minicache_address);
pmd = pmd_alloc(&init_mm, pgd, minicache_address); pmd = pmd_alloc(&init_mm, pgd, minicache_address);
if (!pmd) if (!pmd)
...@@ -64,6 +66,8 @@ static int __init minicache_init(void) ...@@ -64,6 +66,8 @@ static int __init minicache_init(void)
if (!minicache_pte) if (!minicache_pte)
BUG(); BUG();
spin_unlock(&init_mm.page_table_lock);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment