Loading arch/ppc64/Kconfig +0 −1 Original line number Diff line number Diff line Loading @@ -357,7 +357,6 @@ config HOTPLUG_CPU config PROC_DEVICETREE bool "Support for Open Firmware device tree in /proc" depends on !PPC_ISERIES help This option adds a device-tree directory under /proc which contains an image of the device tree that the kernel copies from Open Loading arch/ppc64/kernel/Makefile +2 −2 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ obj-y := setup.o entry.o traps.o irq.o idle.o dma.o \ udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \ ptrace32.o signal32.o rtc.o init_task.o \ lmb.o cputable.o cpu_setup_power4.o idle_power4.o \ iommu.o sysfs.o vdso.o pmc.o firmware.o iommu.o sysfs.o vdso.o pmc.o firmware.o prom.o obj-y += vdso32/ vdso64/ obj-$(CONFIG_PPC_OF) += of_device.o Loading @@ -27,7 +27,7 @@ obj-$(CONFIG_PPC_ISERIES) += HvCall.o HvLpConfig.o LparData.o \ mf.o HvLpEvent.o iSeries_proc.o iSeries_htab.o \ iSeries_iommu.o obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o prom_init.o prom.o obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o prom_init.o obj-$(CONFIG_PPC_PSERIES) += pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o \ pSeries_nvram.o rtasd.o ras.o pSeries_reconfig.o \ Loading arch/ppc64/kernel/head.S +5 −2 Original line number Diff line number Diff line Loading @@ -1364,6 +1364,7 @@ _STATIC(__start_initialization_iSeries) addi r2,r2,0x4000 bl .iSeries_early_setup bl .early_setup /* relocation is on at this point */ Loading Loading @@ -1970,20 +1971,22 @@ _GLOBAL(hmt_start_secondary) blr #endif #if defined(CONFIG_KEXEC) || (defined(CONFIG_SMP) && !defined(CONFIG_PPC_ISERIES)) #if defined(CONFIG_KEXEC) || defined(CONFIG_SMP) _GLOBAL(smp_release_cpus) /* All secondary cpus are spinning on a common * spinloop, release them all now so they can start * to spin on their individual paca spinloops. * For non SMP kernels, the secondary cpus never * get out of the common spinloop. * XXX This does nothing useful on iSeries, secondaries are * already waiting on their paca. */ li r3,1 LOADADDR(r5,__secondary_hold_spinloop) std r3,0(r5) sync blr #endif /* CONFIG_SMP && !CONFIG_PPC_ISERIES */ #endif /* CONFIG_SMP */ /* Loading arch/ppc64/kernel/iSeries_htab.c +19 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,25 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, return (secondary << 3) | (slot & 7); } long iSeries_hpte_bolt_or_insert(unsigned long hpte_group, unsigned long va, unsigned long prpn, unsigned long vflags, unsigned long rflags) { long slot; hpte_t lhpte; slot = HvCallHpt_findValid(&lhpte, va >> PAGE_SHIFT); if (lhpte.v & HPTE_V_VALID) { /* Bolt the existing HPTE */ HvCallHpt_setSwBits(slot, 0x10, 0); HvCallHpt_setPp(slot, PP_RWXX); return 0; } return iSeries_hpte_insert(hpte_group, va, prpn, vflags, rflags); } static unsigned long iSeries_hpte_getword0(unsigned long slot) { hpte_t hpte; Loading arch/ppc64/kernel/iSeries_irq.c +13 −0 Original line number Diff line number Diff line Loading @@ -351,3 +351,16 @@ int __init iSeries_allocate_IRQ(HvBusNumber busNumber, irq_desc[virtirq].handler = &iSeries_IRQ_handler; return virtirq; } int virt_irq_create_mapping(unsigned int real_irq) { BUG(); /* Don't call this on iSeries, yet */ return 0; } void virt_irq_init(void) { return; } Loading
arch/ppc64/Kconfig +0 −1 Original line number Diff line number Diff line Loading @@ -357,7 +357,6 @@ config HOTPLUG_CPU config PROC_DEVICETREE bool "Support for Open Firmware device tree in /proc" depends on !PPC_ISERIES help This option adds a device-tree directory under /proc which contains an image of the device tree that the kernel copies from Open Loading
arch/ppc64/kernel/Makefile +2 −2 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ obj-y := setup.o entry.o traps.o irq.o idle.o dma.o \ udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o \ ptrace32.o signal32.o rtc.o init_task.o \ lmb.o cputable.o cpu_setup_power4.o idle_power4.o \ iommu.o sysfs.o vdso.o pmc.o firmware.o iommu.o sysfs.o vdso.o pmc.o firmware.o prom.o obj-y += vdso32/ vdso64/ obj-$(CONFIG_PPC_OF) += of_device.o Loading @@ -27,7 +27,7 @@ obj-$(CONFIG_PPC_ISERIES) += HvCall.o HvLpConfig.o LparData.o \ mf.o HvLpEvent.o iSeries_proc.o iSeries_htab.o \ iSeries_iommu.o obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o prom_init.o prom.o obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o prom_init.o obj-$(CONFIG_PPC_PSERIES) += pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o \ pSeries_nvram.o rtasd.o ras.o pSeries_reconfig.o \ Loading
arch/ppc64/kernel/head.S +5 −2 Original line number Diff line number Diff line Loading @@ -1364,6 +1364,7 @@ _STATIC(__start_initialization_iSeries) addi r2,r2,0x4000 bl .iSeries_early_setup bl .early_setup /* relocation is on at this point */ Loading Loading @@ -1970,20 +1971,22 @@ _GLOBAL(hmt_start_secondary) blr #endif #if defined(CONFIG_KEXEC) || (defined(CONFIG_SMP) && !defined(CONFIG_PPC_ISERIES)) #if defined(CONFIG_KEXEC) || defined(CONFIG_SMP) _GLOBAL(smp_release_cpus) /* All secondary cpus are spinning on a common * spinloop, release them all now so they can start * to spin on their individual paca spinloops. * For non SMP kernels, the secondary cpus never * get out of the common spinloop. * XXX This does nothing useful on iSeries, secondaries are * already waiting on their paca. */ li r3,1 LOADADDR(r5,__secondary_hold_spinloop) std r3,0(r5) sync blr #endif /* CONFIG_SMP && !CONFIG_PPC_ISERIES */ #endif /* CONFIG_SMP */ /* Loading
arch/ppc64/kernel/iSeries_htab.c +19 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,25 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, return (secondary << 3) | (slot & 7); } long iSeries_hpte_bolt_or_insert(unsigned long hpte_group, unsigned long va, unsigned long prpn, unsigned long vflags, unsigned long rflags) { long slot; hpte_t lhpte; slot = HvCallHpt_findValid(&lhpte, va >> PAGE_SHIFT); if (lhpte.v & HPTE_V_VALID) { /* Bolt the existing HPTE */ HvCallHpt_setSwBits(slot, 0x10, 0); HvCallHpt_setPp(slot, PP_RWXX); return 0; } return iSeries_hpte_insert(hpte_group, va, prpn, vflags, rflags); } static unsigned long iSeries_hpte_getword0(unsigned long slot) { hpte_t hpte; Loading
arch/ppc64/kernel/iSeries_irq.c +13 −0 Original line number Diff line number Diff line Loading @@ -351,3 +351,16 @@ int __init iSeries_allocate_IRQ(HvBusNumber busNumber, irq_desc[virtirq].handler = &iSeries_IRQ_handler; return virtirq; } int virt_irq_create_mapping(unsigned int real_irq) { BUG(); /* Don't call this on iSeries, yet */ return 0; } void virt_irq_init(void) { return; }