android_kernel_xiaomi_sm8350/arch/sparc64/kernel
David S. Miller 4f0234f4f9 [SPARC64]: Initial LDOM cpu hotplug support.
Only adding cpus is supports at the moment, removal
will come next.

When new cpus are configured, the machine description is
updated.  When we get the configure request we pass in a
cpu mask of to-be-added cpus to the mdesc CPU node parser
so it only fetches information for those cpus.  That code
also proceeds to update the SMT/multi-core scheduling bitmaps.

cpu_up() does all the work and we return the status back
over the DS channel.

CPUs via dr-cpu need to be booted straight out of the
hypervisor, and this requires:

1) A new trampoline mechanism.  CPUs are booted straight
   out of the hypervisor with MMU disabled and running in
   physical addresses with no mappings installed in the TLB.

   The new hvtramp.S code sets up the critical cpu state,
   installs the locked TLB mappings for the kernel, and
   turns the MMU on.  It then proceeds to follow the logic
   of the existing trampoline.S SMP cpu bringup code.

2) All calls into OBP have to be disallowed when domaining
   is enabled.  Since cpus boot straight into the kernel from
   the hypervisor, OBP has no state about that cpu and therefore
   cannot handle being invoked on that cpu.

   Luckily it's only a handful of interfaces which can be called
   after the OBP device tree is obtained.  For example, rebooting,
   halting, powering-off, and setting options node variables.

CPU removal support will require some infrastructure changes
here.  Namely we'll have to process the requests via a true
kernel thread instead of in a workqueue.  workqueues run on
a per-cpu thread, but when unconfiguring we might need to
force the thread to execute on another cpu if the current cpu
is the one being removed.  Removal of a cpu also causes the kernel
to destroy that cpu's workqueue running thread.

Another issue on removal is that we may have interrupts still
pointing to the cpu-to-be-removed.  So new code will be needed
to walk the active INO list and retarget those cpus as-needed.

Signed-off-by: David S. Miller <davem@davemloft.net>
2007-07-16 04:04:40 -07:00
..
asm-offsets.c
audit.c [PATCH] audit signal recipients 2007-05-11 05:38:25 -04:00
auxio.c
binfmt_aout32.c
binfmt_elf32.c
central.c [SPARC64]: Fix section mismatch warnings in arch/sparc64/kernel/console.c 2007-05-07 00:00:37 -07:00
chmc.c [SPARC64]: constify of_get_property return: arch/sparc64 2007-04-26 01:54:24 -07:00
compat_audit.c [PATCH] add SIGNAL syscall class (v3) 2007-05-11 05:38:25 -04:00
cpu.c
ds.c [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
dtlb_miss.S
dtlb_prot.S
ebus.c [SPARC64]: Kill asm-sparc64/pbm.h 2007-05-08 16:43:08 -07:00
entry.S [SPARC64]: Fix args to sun4v_ldc_revoke(). 2007-06-13 00:01:27 -07:00
etrap.S
head.S [SPARC64]: Fix two bugs wrt. kernel 4MB TSB. 2007-05-29 02:51:38 -07:00
hvapi.c [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
hvtramp.S [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
idprom.c
init_task.c
iommu_common.c
iommu_common.h
irq.c [SPARC64]: Do not ACK an INO if it is disabled or inprogress. 2007-07-16 04:04:05 -07:00
isa.c [SPARC64] isa: Convert to use pci_device_to_OF_node(). 2007-04-26 01:55:05 -07:00
itlb_miss.S [SPARC64]: Fix _PAGE_EXEC_4U check in sun4u I-TLB miss handler. 2007-05-29 02:50:15 -07:00
kprobes.c [SPARC64]: Optimize fault kprobe handling just like powerpc. 2007-05-08 18:25:14 -07:00
ktlb.S
ldc.c [SPARC64]: Abstract out mdesc accesses for better MD update handling. 2007-07-16 04:04:28 -07:00
Makefile [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
mdesc.c [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
module.c
of_device.c [SPARC64]: Handle PCI bridges without 'ranges' property. 2007-06-07 21:59:44 -07:00
pci_common.c [SPARC64]: Fix IO/MEM space sizing for PCI. 2007-06-13 00:01:19 -07:00
pci_fire.c [SPARC64]: Correct FIRE_IOMMU_FLUSHINV register offset. 2007-05-11 21:39:26 -07:00
pci_impl.h [SPARC64] PCI: Consolidate PCI access code into pci_common.c 2007-05-09 02:35:27 -07:00
pci_iommu.c [SPARC64]: Spelling fixes. 2007-05-11 21:39:21 -07:00
pci_psycho.c [SPARC64] PCI: Consolidate PCI access code into pci_common.c 2007-05-09 02:35:27 -07:00
pci_sabre.c [SPARC64]: Fix 2 bugs in PCI Sabre bus scanning. 2007-06-07 16:59:46 -07:00
pci_schizo.c [SPARC64] PCI: Consolidate PCI access code into pci_common.c 2007-05-09 02:35:27 -07:00
pci_sun4v_asm.S
pci_sun4v.c [SPARC64]: Negotiate hypervisor API for PCI services. 2007-05-29 02:49:34 -07:00
pci_sun4v.h
pci.c PCI: read revision ID by default 2007-07-11 16:02:09 -07:00
power.c [SPARC64]: Export powerd facilities for external entities. 2007-07-16 04:04:16 -07:00
process.c [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
prom.c [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
ptrace.c
rtrap.S
sbus.c [SPARC64]: Fix SBUS IRQ regression caused by PCI-E driver. 2007-06-07 16:59:51 -07:00
semaphore.c
setup.c [SPARC64]: Move topology init code into new file, sysfs.c 2007-06-04 21:49:50 -07:00
signal32.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
signal.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
smp.c [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
sparc64_ksyms.c [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
sstate.c [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
stacktrace.c simplify the stacktrace code 2007-05-08 11:14:58 -07:00
starfire.c
sun4v_ivec.S [SPARC64]: Use machine description and OBP properly for cpu probing. 2007-05-29 02:49:41 -07:00
sun4v_tlb_miss.S
sunos_ioctl32.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sys32.S [SPARC64]: Fix arg passing to compat_sys_ipc(). 2007-04-13 13:27:08 -07:00
sys_sparc32.c [SPARC]: Wire up utimensat syscall. 2007-05-08 17:50:14 -07:00
sys_sparc.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sys_sunos32.c
sysfs.c [SPARC64]: Provide mmu statistics via sysfs. 2007-06-04 21:49:57 -07:00
systbls.S [SPARC]: Wire up signalfd/timerfd/eventfd syscalls. 2007-05-11 22:06:51 -07:00
time.c [SPARC64]: Fill holes in hypervisor APIs and fix KTSB registry. 2007-05-29 02:52:15 -07:00
trampoline.S
traps.c [SPARC64]: Use machine description and OBP properly for cpu probing. 2007-05-29 02:49:41 -07:00
tsb.S
ttable.S [SPARC64]: Unify timer interrupt handler. 2007-04-26 01:54:11 -07:00
una_asm.S
unaligned.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
us2e_cpufreq.c
us3_cpufreq.c
vio.c [SPARC64]: Fix MD property lifetime bugs. 2007-07-16 04:04:33 -07:00
viohs.c [SPARC64]: Abstract out mdesc accesses for better MD update handling. 2007-07-16 04:04:28 -07:00
visemul.c
vmlinux.lds.S sparc64: fix alignment bug in linker definition script 2007-05-29 21:29:00 +02:00
winfixup.S