Merge branch 'merge'
authorPaul Mackerras <paulus@samba.org>
Sat, 22 Apr 2006 09:47:24 +0000 (19:47 +1000)
committerPaul Mackerras <paulus@samba.org>
Sat, 22 Apr 2006 09:47:24 +0000 (19:47 +1000)
25 files changed:
arch/powerpc/kernel/crash.c
arch/powerpc/kernel/iomap.c
arch/powerpc/kernel/pci_64.c
arch/powerpc/kernel/time.c
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/mem.c
arch/powerpc/mm/numa.c
arch/powerpc/oprofile/common.c
arch/powerpc/platforms/iseries/mf.c
arch/powerpc/platforms/iseries/pci.c
arch/powerpc/platforms/iseries/setup.c
arch/powerpc/platforms/maple/pci.c
arch/powerpc/platforms/maple/setup.c
arch/powerpc/platforms/powermac/feature.c
arch/powerpc/platforms/powermac/pci.c
arch/powerpc/platforms/pseries/eeh_driver.c
arch/powerpc/platforms/pseries/eeh_event.c
arch/powerpc/platforms/pseries/rtasd.c
arch/powerpc/platforms/pseries/setup.c
arch/powerpc/platforms/pseries/xics.c
drivers/char/hvsi.c
drivers/net/ibmveth.c
include/asm-powerpc/eeh.h
include/asm-powerpc/eeh_event.h
include/asm-powerpc/io.h

index 778f22f..dbcb859 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/elf.h>
 #include <linux/elfcore.h>
 #include <linux/init.h>
+#include <linux/irq.h>
 #include <linux/types.h>
 
 #include <asm/processor.h>
@@ -174,6 +175,8 @@ static void crash_kexec_prepare_cpus(void)
 
 void default_machine_crash_shutdown(struct pt_regs *regs)
 {
+       unsigned int irq;
+
        /*
         * This function is only called after the system
         * has paniced or is otherwise in a critical state.
@@ -186,6 +189,16 @@ void default_machine_crash_shutdown(struct pt_regs *regs)
         */
        local_irq_disable();
 
+       for_each_irq(irq) {
+               struct irq_desc *desc = irq_descp(irq);
+
+               if (desc->status & IRQ_INPROGRESS)
+                       desc->handler->end(irq);
+
+               if (!(desc->status & IRQ_DISABLED))
+                       desc->handler->disable(irq);
+       }
+
        if (ppc_md.kexec_cpu_down)
                ppc_md.kexec_cpu_down(1, 0);
 
index fd8214c..a13a93d 100644 (file)
@@ -106,8 +106,6 @@ EXPORT_SYMBOL(iowrite32_rep);
 
 void __iomem *ioport_map(unsigned long port, unsigned int len)
 {
-       if (!_IO_IS_VALID(port))
-               return NULL;
        return (void __iomem *) (port+pci_io_base);
 }
 
index 4c4449b..e1b3b3e 100644 (file)
 unsigned long pci_probe_only = 1;
 int pci_assign_all_buses = 0;
 
-/*
- * legal IO pages under MAX_ISA_PORT.  This is to ensure we don't touch
- * devices we don't have access to.
- */
-unsigned long io_page_mask;
-
-EXPORT_SYMBOL(io_page_mask);
-
 #ifdef CONFIG_PPC_MULTIPLATFORM
 static void fixup_resource(struct resource *res, struct pci_dev *dev);
 static void do_bus_setup(struct pci_bus *bus);
@@ -605,7 +597,7 @@ static int __init pcibios_init(void)
        iSeries_pcibios_init(); 
 #endif
 
-       printk("PCI: Probing PCI hardware\n");
+       printk(KERN_DEBUG "PCI: Probing PCI hardware\n");
 
        /* Scan all of the recorded PCI controllers.  */
        list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
@@ -630,14 +622,14 @@ static int __init pcibios_init(void)
        /* Cache the location of the ISA bridge (if we have one) */
        ppc64_isabridge_dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL);
        if (ppc64_isabridge_dev != NULL)
-               printk("ISA bridge at %s\n", pci_name(ppc64_isabridge_dev));
+               printk(KERN_DEBUG "ISA bridge at %s\n", pci_name(ppc64_isabridge_dev));
 
 #ifdef CONFIG_PPC_MULTIPLATFORM
        /* map in PCI I/O space */
        phbs_remap_io();
 #endif
 
-       printk("PCI: Probing PCI hardware done\n");
+       printk(KERN_DEBUG "PCI: Probing PCI hardware done\n");
 
        return 0;
 }
@@ -804,7 +796,7 @@ static pgprot_t __pci_mmap_set_pgprot(struct pci_dev *dev, struct resource *rp,
        else
                prot |= _PAGE_GUARDED;
 
-       printk("PCI map for %s:%lx, prot: %lx\n", pci_name(dev), rp->start,
+       printk(KERN_DEBUG "PCI map for %s:%lx, prot: %lx\n", pci_name(dev), rp->start,
               prot);
 
        return __pgprot(prot);
@@ -1104,8 +1096,6 @@ void __init pci_setup_phb_io(struct pci_controller *hose, int primary)
                        pci_process_ISA_OF_ranges(isa_dn, hose->io_base_phys,
                                                hose->io_base_virt);
                        of_node_put(isa_dn);
-                       /* Allow all IO */
-                       io_page_mask = -1;
                }
        }
 
@@ -1212,7 +1202,7 @@ int remap_bus_range(struct pci_bus *bus)
                return 1;
        if (start_phys == 0)
                return 1;
-       printk("mapping IO %lx -> %lx, size: %lx\n", start_phys, start_virt, size);
+       printk(KERN_DEBUG "mapping IO %lx -> %lx, size: %lx\n", start_phys, start_virt, size);
        if (__ioremap_explicit(start_phys, start_virt, size,
                               _PAGE_NO_CACHE | _PAGE_GUARDED))
                return 1;
@@ -1232,27 +1222,13 @@ static void phbs_remap_io(void)
 static void __devinit fixup_resource(struct resource *res, struct pci_dev *dev)
 {
        struct pci_controller *hose = pci_bus_to_host(dev->bus);
-       unsigned long start, end, mask, offset;
+       unsigned long offset;
 
        if (res->flags & IORESOURCE_IO) {
                offset = (unsigned long)hose->io_base_virt - pci_io_base;
 
-               start = res->start += offset;
-               end = res->end += offset;
-
-               /* Need to allow IO access to pages that are in the
-                  ISA range */
-               if (start < MAX_ISA_PORT) {
-                       if (end > MAX_ISA_PORT)
-                               end = MAX_ISA_PORT;
-
-                       start >>= PAGE_SHIFT;
-                       end >>= PAGE_SHIFT;
-
-                       /* get the range of pages for the map */
-                       mask = ((1 << (end+1)) - 1) ^ ((1 << start) - 1);
-                       io_page_mask |= mask;
-               }
+               res->start += offset;
+               res->end += offset;
        } else if (res->flags & IORESOURCE_MEM) {
                res->start += hose->pci_mem_offset;
                res->end += hose->pci_mem_offset;
index 24e3ad7..528e7f8 100644 (file)
@@ -76,7 +76,6 @@
 
 /* keep track of when we need to update the rtc */
 time_t last_rtc_update;
-extern int piranha_simulator;
 #ifdef CONFIG_PPC_ISERIES
 unsigned long iSeries_recal_titan = 0;
 unsigned long iSeries_recal_tb = 0; 
@@ -945,9 +944,9 @@ void __init time_init(void)
        } else {
                /* Normal PowerPC with timebase register */
                ppc_md.calibrate_decr();
-               printk(KERN_INFO "time_init: decrementer frequency = %lu.%.6lu MHz\n",
+               printk(KERN_DEBUG "time_init: decrementer frequency = %lu.%.6lu MHz\n",
                       ppc_tb_freq / 1000000, ppc_tb_freq % 1000000);
-               printk(KERN_INFO "time_init: processor frequency   = %lu.%.6lu MHz\n",
+               printk(KERN_DEBUG "time_init: processor frequency   = %lu.%.6lu MHz\n",
                       ppc_proc_freq / 1000000, ppc_proc_freq % 1000000);
                tb_last_stamp = tb_last_jiffy = get_tb();
        }
@@ -1010,10 +1009,7 @@ void __init time_init(void)
        tb_to_ns_scale = scale;
        tb_to_ns_shift = shift;
 
-#ifdef CONFIG_PPC_ISERIES
-       if (!piranha_simulator)
-#endif
-               tm = get_boot_time();
+       tm = get_boot_time();
 
        write_seqlock_irqsave(&xtime_lock, flags);
 
index c006d90..b43ed92 100644 (file)
@@ -319,7 +319,7 @@ static void __init htab_init_page_sizes(void)
                mmu_virtual_psize = MMU_PAGE_64K;
 #endif
 
-       printk(KERN_INFO "Page orders: linear mapping = %d, others = %d\n",
+       printk(KERN_DEBUG "Page orders: linear mapping = %d, others = %d\n",
               mmu_psize_defs[mmu_linear_psize].shift,
               mmu_psize_defs[mmu_virtual_psize].shift);
 
index 741dd88..69f3b9a 100644 (file)
@@ -299,9 +299,9 @@ void __init paging_init(void)
        kmap_prot = PAGE_KERNEL;
 #endif /* CONFIG_HIGHMEM */
 
-       printk(KERN_INFO "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
+       printk(KERN_DEBUG "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
               top_of_ram, total_ram);
-       printk(KERN_INFO "Memory hole size: %ldMB\n",
+       printk(KERN_DEBUG "Memory hole size: %ldMB\n",
               (top_of_ram - total_ram) >> 20);
        /*
         * All pages are DMA-able so we put them all in the DMA zone.
@@ -380,7 +380,7 @@ void __init mem_init(void)
                        totalhigh_pages++;
                }
                totalram_pages += totalhigh_pages;
-               printk(KERN_INFO "High memory: %luk\n",
+               printk(KERN_DEBUG "High memory: %luk\n",
                       totalhigh_pages << (PAGE_SHIFT-10));
        }
 #endif /* CONFIG_HIGHMEM */
index 0a335f3..ea816c6 100644 (file)
@@ -465,9 +465,9 @@ static void __init setup_nonnuma(void)
        unsigned long total_ram = lmb_phys_mem_size();
        unsigned int i;
 
-       printk(KERN_INFO "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
+       printk(KERN_DEBUG "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
               top_of_ram, total_ram);
-       printk(KERN_INFO "Memory hole size: %ldMB\n",
+       printk(KERN_DEBUG "Memory hole size: %ldMB\n",
               (top_of_ram - total_ram) >> 20);
 
        for (i = 0; i < lmb.memory.cnt; ++i)
@@ -485,7 +485,7 @@ void __init dump_numa_cpu_topology(void)
                return;
 
        for_each_online_node(node) {
-               printk(KERN_INFO "Node %d CPUs:", node);
+               printk(KERN_DEBUG "Node %d CPUs:", node);
 
                count = 0;
                /*
@@ -521,7 +521,7 @@ static void __init dump_numa_memory_topology(void)
        for_each_online_node(node) {
                unsigned long i;
 
-               printk(KERN_INFO "Node %d Memory:", node);
+               printk(KERN_DEBUG "Node %d Memory:", node);
 
                count = 0;
 
index 5b1de7e..38a2f9c 100644 (file)
@@ -162,7 +162,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
        ops->stop = op_powerpc_stop;
        ops->backtrace = op_powerpc_backtrace;
 
-       printk(KERN_INFO "oprofile: using %s performance monitoring.\n",
+       printk(KERN_DEBUG "oprofile: using %s performance monitoring.\n",
               ops->cpu_type);
 
        return 0;
index d771b8e..1a2c2a5 100644 (file)
@@ -45,7 +45,6 @@
 
 #include "setup.h"
 
-extern int piranha_simulator;
 static int mf_initialized;
 
 /*
@@ -658,7 +657,7 @@ static void mf_clear_src(void)
 
 void __init mf_display_progress(u16 value)
 {
-       if (piranha_simulator || !mf_initialized)
+       if (!mf_initialized)
                return;
 
        if (0xFFFF == value)
@@ -1295,9 +1294,6 @@ __initcall(mf_proc_init);
  */
 void iSeries_get_rtc_time(struct rtc_time *rtc_tm)
 {
-       if (piranha_simulator)
-               return;
-
        mf_get_rtc(rtc_tm);
        rtc_tm->tm_mon--;
 }
@@ -1316,9 +1312,6 @@ unsigned long iSeries_get_boot_time(void)
 {
        struct rtc_time tm;
 
-       if (piranha_simulator)
-               return 0;
-
        mf_get_boot_rtc(&tm);
        return mktime(tm.tm_year + 1900, tm.tm_mon, tm.tm_mday,
                      tm.tm_hour, tm.tm_min, tm.tm_sec);
index a19833b..5a61c6f 100644 (file)
@@ -45,8 +45,6 @@
 #include "call_pci.h"
 #include "iommu.h"
 
-extern unsigned long io_page_mask;
-
 /*
  * Forward declares of prototypes.
  */
@@ -277,7 +275,6 @@ void iSeries_pcibios_init(void)
 {
        iomm_table_initialize();
        find_and_init_phbs();
-       io_page_mask = -1;
 }
 
 /*
index a6fd9be..3c51448 100644 (file)
@@ -81,9 +81,6 @@ extern void iSeries_pci_final_fixup(void);
 static void iSeries_pci_final_fixup(void) { }
 #endif
 
-/* Global Variables */
-int piranha_simulator;
-
 extern int rd_size;            /* Defined in drivers/block/rd.c */
 extern unsigned long embedded_sysmap_start;
 extern unsigned long embedded_sysmap_end;
@@ -340,8 +337,6 @@ static void __init iSeries_init_early(void)
 #ifdef CONFIG_SMP
        smp_init_iSeries();
 #endif
-       if (itLpNaca.xPirEnvironMode == 0)
-               piranha_simulator = 1;
 
        /* Associate Lp Event Queue 0 with processor 0 */
        HvCallEvent_setLpEventQueueInterruptProc(0, 0);
@@ -536,10 +531,10 @@ static void __init iSeries_setup_arch(void)
 {
        if (get_lppaca()->shared_proc) {
                ppc_md.idle_loop = iseries_shared_idle;
-               printk(KERN_INFO "Using shared processor idle loop\n");
+               printk(KERN_DEBUG "Using shared processor idle loop\n");
        } else {
                ppc_md.idle_loop = iseries_dedicated_idle;
-               printk(KERN_INFO "Using dedicated idle loop\n");
+               printk(KERN_DEBUG "Using dedicated idle loop\n");
        }
 
        /* Setup the Lp Event Queue */
index 85d6c93..9a4efc0 100644 (file)
@@ -437,9 +437,6 @@ void __init maple_pci_init(void)
 
        /* Tell pci.c to not change any resource allocations.  */
        pci_probe_only = 1;
-       
-       /* Allow all IO */
-       io_page_mask = -1;
 }
 
 int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel)
index 24c0aef..a0505ea 100644 (file)
@@ -189,7 +189,7 @@ void __init maple_setup_arch(void)
        conswitchp = &dummy_con;
 #endif
 
-       printk(KERN_INFO "Using native/NAP idle loop\n");
+       printk(KERN_DEBUG "Using native/NAP idle loop\n");
 }
 
 /* 
index a5063cd..85e00cb 100644 (file)
@@ -2510,7 +2510,7 @@ found:
                if (get_property(np, "flush-on-lock", NULL))
                        break;
                powersave_nap = 1;
-               printk(KERN_INFO "Processor NAP mode on idle enabled.\n");
+               printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n");
                break;
        }
 
index f5d8d15..3212618 100644 (file)
@@ -1068,9 +1068,6 @@ void __init pmac_pci_init(void)
        /* Tell pci.c to not use the common resource allocation mechanism */
        pci_probe_only = 1;
 
-       /* Allow all IO */
-       io_page_mask = -1;
-
 #else /* CONFIG_PPC64 */
        init_p2pbridge();
        fixup_nec_usb2();
index 1fba695..2a9eb26 100644 (file)
@@ -23,9 +23,8 @@
  *
  */
 #include <linux/delay.h>
-#include <linux/irq.h>
 #include <linux/interrupt.h>
-#include <linux/notifier.h>
+#include <linux/irq.h>
 #include <linux/pci.h>
 #include <asm/eeh.h>
 #include <asm/eeh_event.h>
@@ -250,7 +249,7 @@ static int eeh_reset_device (struct pci_dn *pe_dn, struct pci_bus *bus)
  */
 #define MAX_WAIT_FOR_RECOVERY 15
 
-void handle_eeh_events (struct eeh_event *event)
+struct pci_dn * handle_eeh_events (struct eeh_event *event)
 {
        struct device_node *frozen_dn;
        struct pci_dn *frozen_pdn;
@@ -265,7 +264,7 @@ void handle_eeh_events (struct eeh_event *event)
        if (!frozen_dn) {
                printk(KERN_ERR "EEH: Error: Cannot find partition endpoint for %s\n",
                        pci_name(event->dev));
-               return;
+               return NULL;
        }
 
        /* There are two different styles for coming up with the PE.
@@ -280,7 +279,7 @@ void handle_eeh_events (struct eeh_event *event)
        if (!frozen_bus) {
                printk(KERN_ERR "EEH: Cannot find PCI bus for %s\n",
                        frozen_dn->full_name);
-               return;
+               return NULL;
        }
 
 #if 0
@@ -355,7 +354,7 @@ void handle_eeh_events (struct eeh_event *event)
        /* Tell all device drivers that they can resume operations */
        pci_walk_bus(frozen_bus, eeh_report_resume, NULL);
 
-       return;
+       return frozen_pdn;
        
 excess_failures:
        /*
@@ -384,6 +383,8 @@ perm_error:
 
        /* Shut down the device drivers for good. */
        pcibios_remove_pci_devices(frozen_bus);
+
+       return NULL;
 }
 
 /* ---------- end of file ---------- */
index a1bda6f..a0b3964 100644 (file)
@@ -18,6 +18,7 @@
  * Copyright (c) 2005 Linas Vepstas <linas@linas.org>
  */
 
+#include <linux/delay.h>
 #include <linux/list.h>
 #include <linux/mutex.h>
 #include <linux/pci.h>
@@ -56,38 +57,43 @@ static int eeh_event_handler(void * dummy)
 {
        unsigned long flags;
        struct eeh_event        *event;
+       struct pci_dn *pdn;
 
        daemonize ("eehd");
+       set_current_state(TASK_INTERRUPTIBLE);
 
-       while (1) {
-               set_current_state(TASK_INTERRUPTIBLE);
+       spin_lock_irqsave(&eeh_eventlist_lock, flags);
+       event = NULL;
 
-               spin_lock_irqsave(&eeh_eventlist_lock, flags);
-               event = NULL;
+       /* Unqueue the event, get ready to process. */
+       if (!list_empty(&eeh_eventlist)) {
+               event = list_entry(eeh_eventlist.next, struct eeh_event, list);
+               list_del(&event->list);
+       }
+       spin_unlock_irqrestore(&eeh_eventlist_lock, flags);
 
-               /* Unqueue the event, get ready to process. */
-               if (!list_empty(&eeh_eventlist)) {
-                       event = list_entry(eeh_eventlist.next, struct eeh_event, list);
-                       list_del(&event->list);
-               }
-               spin_unlock_irqrestore(&eeh_eventlist_lock, flags);
+       if (event == NULL)
+               return 0;
 
-               if (event == NULL)
-                       break;
+       /* Serialize processing of EEH events */
+       mutex_lock(&eeh_event_mutex);
+       eeh_mark_slot(event->dn, EEH_MODE_RECOVERING);
 
-               /* Serialize processing of EEH events */
-               mutex_lock(&eeh_event_mutex);
-               eeh_mark_slot(event->dn, EEH_MODE_RECOVERING);
+       printk(KERN_INFO "EEH: Detected PCI bus error on device %s\n",
+              pci_name(event->dev));
 
-               printk(KERN_INFO "EEH: Detected PCI bus error on device %s\n",
-                      pci_name(event->dev));
+       pdn = handle_eeh_events(event);
 
-               handle_eeh_events(event);
+       eeh_clear_slot(event->dn, EEH_MODE_RECOVERING);
+       pci_dev_put(event->dev);
+       kfree(event);
+       mutex_unlock(&eeh_event_mutex);
 
-               eeh_clear_slot(event->dn, EEH_MODE_RECOVERING);
-               pci_dev_put(event->dev);
-               kfree(event);
-               mutex_unlock(&eeh_event_mutex);
+       /* If there are no new errors after an hour, clear the counter. */
+       if (pdn && pdn->eeh_freeze_count>0) {
+               msleep_interruptible (3600*1000);
+               if (pdn->eeh_freeze_count>0)
+                       pdn->eeh_freeze_count--;
        }
 
        return 0;
index e0000ce..2e4e040 100644 (file)
@@ -348,7 +348,7 @@ static int enable_surveillance(int timeout)
                return 0;
 
        if (error == -EINVAL) {
-               printk(KERN_INFO "rtasd: surveillance not supported\n");
+               printk(KERN_DEBUG "rtasd: surveillance not supported\n");
                return 0;
        }
 
@@ -440,7 +440,7 @@ static int rtasd(void *unused)
                goto error;
        }
 
-       printk(KERN_INFO "RTAS daemon started\n");
+       printk(KERN_DEBUG "RTAS daemon started\n");
 
        DEBUG("will sleep for %d milliseconds\n", (30000/rtas_event_scan_rate));
 
@@ -487,7 +487,7 @@ static int __init rtas_init(void)
 
        /* No RTAS */
        if (rtas_token("event-scan") == RTAS_UNKNOWN_SERVICE) {
-               printk(KERN_INFO "rtasd: no event-scan on system\n");
+               printk(KERN_DEBUG "rtasd: no event-scan on system\n");
                return -ENODEV;
        }
 
index 5eb55ef..9118d79 100644 (file)
@@ -235,14 +235,14 @@ static void __init pSeries_setup_arch(void)
        if (firmware_has_feature(FW_FEATURE_SPLPAR)) {
                vpa_init(boot_cpuid);
                if (get_lppaca()->shared_proc) {
-                       printk(KERN_INFO "Using shared processor idle loop\n");
+                       printk(KERN_DEBUG "Using shared processor idle loop\n");
                        ppc_md.power_save = pseries_shared_idle_sleep;
                } else {
-                       printk(KERN_INFO "Using dedicated idle loop\n");
+                       printk(KERN_DEBUG "Using dedicated idle loop\n");
                        ppc_md.power_save = pseries_dedicated_idle_sleep;
                }
        } else {
-               printk(KERN_INFO "Using default idle loop\n");
+               printk(KERN_DEBUG "Using default idle loop\n");
        }
 
        if (firmware_has_feature(FW_FEATURE_LPAR))
index 2d60ea3..b14f9b5 100644 (file)
@@ -522,7 +522,7 @@ nextnode:
 
        np = of_find_node_by_type(NULL, "interrupt-controller");
        if (!np) {
-               printk(KERN_WARNING "xics: no ISA interrupt controller\n");
+               printk(KERN_DEBUG "xics: no ISA interrupt controller\n");
                xics_irq_8259_cascade_real = -1;
                xics_irq_8259_cascade = -1;
        } else {
@@ -641,23 +641,26 @@ void xics_teardown_cpu(int secondary)
        ops->cppr_info(cpu, 0x00);
        iosync();
 
+       /* Clear IPI */
+       ops->qirr_info(cpu, 0xff);
+
+       /*
+        * we need to EOI the IPI if we got here from kexec down IPI
+        *
+        * probably need to check all the other interrupts too
+        * should we be flagging idle loop instead?
+        * or creating some task to be scheduled?
+        */
+       ops->xirr_info_set(cpu, XICS_IPI);
+
        /*
         * Some machines need to have at least one cpu in the GIQ,
         * so leave the master cpu in the group.
         */
-       if (secondary) {
-               /*
-                * we need to EOI the IPI if we got here from kexec down IPI
-                *
-                * probably need to check all the other interrupts too
-                * should we be flagging idle loop instead?
-                * or creating some task to be scheduled?
-                */
-               ops->xirr_info_set(cpu, XICS_IPI);
+       if (secondary)
                rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE,
                        (1UL << interrupt_server_size) - 1 -
                        default_distrib_server, 0);
-       }
 }
 
 #ifdef CONFIG_HOTPLUG_CPU
index a952218..a0370ed 100644 (file)
@@ -1179,7 +1179,7 @@ static int __init hvsi_init(void)
        if (tty_register_driver(hvsi_driver))
                panic("Couldn't register hvsi console driver\n");
 
-       printk(KERN_INFO "HVSI: registered %i devices\n", hvsi_count);
+       printk(KERN_DEBUG "HVSI: registered %i devices\n", hvsi_count);
 
        return 0;
 }
index 52d0102..37965dc 100644 (file)
@@ -61,7 +61,7 @@
 #undef DEBUG
 
 #define ibmveth_printk(fmt, args...) \
-  printk(KERN_INFO "%s: " fmt, __FILE__, ## args)
+  printk(KERN_DEBUG "%s: " fmt, __FILE__, ## args)
 
 #define ibmveth_error_printk(fmt, args...) \
   printk(KERN_ERR "(%s:%3.3d ua:%x) ERROR: " fmt, __FILE__, __LINE__ , adapter->vdev->unit_address, ## args)
index 868c713..2c3dc4a 100644 (file)
@@ -293,8 +293,6 @@ static inline void eeh_memcpy_toio(volatile void __iomem *dest, const void *src,
 static inline u8 eeh_inb(unsigned long port)
 {
        u8 val;
-       if (!_IO_IS_VALID(port))
-               return ~0;
        val = in_8((u8 __iomem *)(port+pci_io_base));
        if (EEH_POSSIBLE_ERROR(val, u8))
                return eeh_check_failure((void __iomem *)(port), val);
@@ -303,15 +301,12 @@ static inline u8 eeh_inb(unsigned long port)
 
 static inline void eeh_outb(u8 val, unsigned long port)
 {
-       if (_IO_IS_VALID(port))
-               out_8((u8 __iomem *)(port+pci_io_base), val);
+       out_8((u8 __iomem *)(port+pci_io_base), val);
 }
 
 static inline u16 eeh_inw(unsigned long port)
 {
        u16 val;
-       if (!_IO_IS_VALID(port))
-               return ~0;
        val = in_le16((u16 __iomem *)(port+pci_io_base));
        if (EEH_POSSIBLE_ERROR(val, u16))
                return eeh_check_failure((void __iomem *)(port), val);
@@ -320,15 +315,12 @@ static inline u16 eeh_inw(unsigned long port)
 
 static inline void eeh_outw(u16 val, unsigned long port)
 {
-       if (_IO_IS_VALID(port))
-               out_le16((u16 __iomem *)(port+pci_io_base), val);
+       out_le16((u16 __iomem *)(port+pci_io_base), val);
 }
 
 static inline u32 eeh_inl(unsigned long port)
 {
        u32 val;
-       if (!_IO_IS_VALID(port))
-               return ~0;
        val = in_le32((u32 __iomem *)(port+pci_io_base));
        if (EEH_POSSIBLE_ERROR(val, u32))
                return eeh_check_failure((void __iomem *)(port), val);
@@ -337,8 +329,7 @@ static inline u32 eeh_inl(unsigned long port)
 
 static inline void eeh_outl(u32 val, unsigned long port)
 {
-       if (_IO_IS_VALID(port))
-               out_le32((u32 __iomem *)(port+pci_io_base), val);
+       out_le32((u32 __iomem *)(port+pci_io_base), val);
 }
 
 /* in-string eeh macros */
index 93d55a2..dc6bf0f 100644 (file)
@@ -18,8 +18,8 @@
  * Copyright (c) 2005 Linas Vepstas <linas@linas.org>
  */
 
-#ifndef ASM_PPC64_EEH_EVENT_H
-#define ASM_PPC64_EEH_EVENT_H
+#ifndef ASM_POWERPC_EEH_EVENT_H
+#define ASM_POWERPC_EEH_EVENT_H
 #ifdef __KERNEL__
 
 /** EEH event -- structure holding pci controller data that describes
@@ -39,7 +39,7 @@ struct eeh_event {
  * @dev pci device
  *
  * This routine builds a PCI error event which will be delivered
- * to all listeners on the peh_notifier_chain.
+ * to all listeners on the eeh_notifier_chain.
  *
  * This routine can be called within an interrupt context;
  * the actual event will be delivered in a normal context
@@ -51,7 +51,7 @@ int eeh_send_failure_event (struct device_node *dn,
                             int time_unavail);
 
 /* Main recovery function */
-void handle_eeh_events (struct eeh_event *);
+struct pci_dn * handle_eeh_events (struct eeh_event *);
 
 #endif /* __KERNEL__ */
-#endif /* ASM_PPC64_EEH_EVENT_H */
+#endif /* ASM_POWERPC_EEH_EVENT_H */
index 68efbea..4840fbf 100644 (file)
 
 extern unsigned long isa_io_base;
 extern unsigned long pci_io_base;
-extern unsigned long io_page_mask;
-
-#define MAX_ISA_PORT 0x10000
-
-#define _IO_IS_VALID(port) ((port) >= MAX_ISA_PORT || (1 << (port>>PAGE_SHIFT)) \
-                           & io_page_mask)
 
 #ifdef CONFIG_PPC_ISERIES
 /* __raw_* accessors aren't supported on iSeries */