linux_dsm_epyc7002/include/asm-sparc64
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
..
a.out.h [SPARC]: Add unsigned to unused bit field in a.out.h 2007-04-02 14:26:21 -07:00
agp.h [PATCH] AGP fix for Xen VMM 2005-06-07 12:35:43 -07:00
apb.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
asi.h [SPARC64]: Sun4v specific ASI defines. 2006-03-20 01:11:43 -08:00
atomic.h atomic.h: atomic_add_unless as inline. Remove system.h atomic.h circular dependency 2007-05-08 11:15:20 -07:00
auxio.h [SPARC64]: Get rid of fast IRQ feature. 2005-06-27 17:04:45 -07:00
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
bbc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bitops.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
bpp.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bsderrno.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bug.h [PATCH] remove all kernel BUGs 2005-05-01 08:59:01 -07:00
bugs.h [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
byteorder.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cache.h [PATCH] Move read_mostly definition to asm/cache.h 2006-03-23 07:38:10 -08:00
cacheflush.h [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
chafsr.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
checksum.h [NET]: SPARC64 checksum annotations and cleanups. 2006-12-02 21:23:23 -08:00
chmctrl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cmt.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat_signal.h Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
compat.h [SPARC64]: 8-byte align return value from compat_alloc_user_space() 2006-10-22 21:53:30 -07:00
cpudata.h [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
cputime.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
current.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dcr.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dcu.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
delay.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
device.h [SPARC64]: Probe PCI bus using OF device tree. 2007-04-26 01:55:06 -07:00
display7seg.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
div64.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dma-mapping.h [SPARC64]: Really fix parport. 2007-06-13 00:01:24 -07:00
dma.h [SPARC64]: Fix floppy build failure. 2007-03-05 13:22:28 -08:00
ebus.h [SPARC64] ebus: Convert to use pci_device_to_OF_node(). 2007-04-26 01:55:04 -07:00
elf.h [SPARC64]: Add HWCAP_SPARC_BLKINIT elf capability flag for Niagara. 2006-03-20 01:13:26 -08:00
emergency-restart.h [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
envctrl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
errno.h [PATCH] add EOWNERDEAD and ENOTRECOVERABLE version 2 2005-05-01 08:59:06 -07:00
estate.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fbio.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fcntl.h [PATCH] Clean up struct flock definitions 2005-09-07 16:57:38 -07:00
fhc.h [SPARC64]: Convert central bus layer to in-kernel PROM device tree. 2006-06-23 23:15:32 -07:00
floppy.h [SPARC64] constify of_get_property return: include 2007-04-26 01:54:30 -07:00
fpumacro.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
futex.h [PATCH] mm: pagefault_{disable,enable}() 2006-12-07 08:39:21 -08:00
hardirq.h [SPARC64]: Move over to GENERIC_HARDIRQS. 2006-06-20 01:23:32 -07:00
head.h [SPARC64]: Add GET_GL_GLOBAL() macro for SUN4V. 2006-03-20 01:13:18 -08:00
hvtramp.h [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
hw_irq.h [SPARC64]: Minor irq handling cleanups. 2006-12-17 14:06:56 -08:00
hypervisor.h [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
ide.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
idprom.h [SPARC]: Clean up idprom header files. 2006-03-20 01:12:08 -08:00
intr_queue.h [SPARC64]: Sun4v interrupt queue register definitions. 2006-03-20 01:11:44 -08:00
io.h [SPARC64]: Internalize pci_memspace_mask. 2007-04-26 01:55:07 -07:00
ioctl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctls.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iommu.h [SPARC64]: SUN4U PCI-E controller support. 2007-05-06 22:44:06 -07:00
ipc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipcbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_regs.h [PATCH] sparc64 pt_regs fixes 2006-10-08 12:32:35 -07:00
irq.h [SPARC64]: Wire up cookie based sun4v interrupt registry. 2007-06-13 00:01:04 -07:00
irqflags.h [SPARC64]: Add irqtrace/stacktrace/lockdep support. 2006-12-10 02:39:09 -08:00
isa.h [SPARC64] isa: Convert to use pci_device_to_OF_node(). 2007-04-26 01:55:05 -07:00
Kbuild consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
kdebug.h [SPARC64]: Kill unused DIE_PAGE_FAULT enum value. 2007-05-29 02:49:14 -07:00
kmap_types.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kprobes.h [SPARC64]: Optimize fault kprobe handling just like powerpc. 2007-05-08 18:25:14 -07:00
ldc.h [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
linkage.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
local.h local_t: sparc64 cleanup 2007-05-08 11:15:20 -07:00
lsu.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
mc146818rtc.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
mdesc.h [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
mman.h [PATCH] IA64,sparc: local DoS with corrupted ELFs 2006-09-08 08:40:46 -07:00
mmu_context.h [PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction 2007-05-02 19:27:14 +02:00
mmu.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
module.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mostek.h [SPARC]: sparc64 gcc-4.2.0 20070317 -Werror failure 2007-03-27 01:13:55 -07:00
msgbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mutex.h [PATCH] mutex subsystem, add default include/asm-*/mutex.h files 2006-01-09 15:59:19 -08:00
namei.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ns87303.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
numnodes.h [SPARC64]: Move over to sparsemem. 2006-03-20 01:14:22 -08:00
of_device.h [SPARC64]: Fix of_iounmap() region release. 2006-12-31 14:06:05 -08:00
openprom.h [SPARC64]: Bump PROMINTR_MAX to 32. 2007-05-10 00:55:59 -07:00
openpromio.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
oplib.h [SPARC64]: Use machine description and OBP properly for cpu probing. 2007-05-29 02:49:41 -07:00
page.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
param.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
parport.h [SPARC64]: Really fix parport. 2007-06-13 00:01:24 -07:00
pci.h PCI: remove pci_dac_dma_... APIs 2007-07-11 16:02:11 -07:00
pconf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
percpu.h [SPARC64]: Use machine description and OBP properly for cpu probing. 2007-05-29 02:49:41 -07:00
perfctr.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pgalloc.h Quicklist support for sparc64 2007-05-07 12:12:54 -07:00
pgtable.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
pil.h [SPARC64]: Send all device interrupts via one PIL. 2006-06-20 01:20:00 -07:00
poll.h Consolidate asm/poll.h 2007-05-11 08:29:34 -07:00
posix_types.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
power.h [SPARC64]: Export powerd facilities for external entities. 2007-07-16 04:04:16 -07:00
processor.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
prom.h [SPARC64]: Use machine description and OBP properly for cpu probing. 2007-05-29 02:49:41 -07:00
psrcompat.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pstate.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
ptrace.h [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
reg.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
resource.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rtc.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rwsem-const.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rwsem.h [SPARC64]: Add irqtrace/stacktrace/lockdep support. 2006-12-10 02:39:09 -08:00
sbus.h [SPARC64]: Kill starfire_cookie from SBUS/PCI. 2006-06-29 16:37:08 -07:00
scatterlist.h PCI: scatterlist.h needs types.h 2007-05-02 19:02:34 -07:00
scratchpad.h [SPARC64]: Sun4v scratchpad register layout. 2006-03-20 01:11:44 -08:00
seccomp.h [SPARC64]: Add missing asm-sparc64/seccomp.h file. 2005-07-11 13:44:56 -07:00
sections.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.h [PATCH] semaphore: Remove __MUTEX_INITIALIZER() 2005-10-30 17:37:27 -08:00
sembuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.h [SPARC64]: Increase command line size to 2048 like other arches. 2007-02-12 15:15:47 -08:00
sfafsr.h consolidate asm/const.h to linux/const.h 2007-05-08 11:15:13 -07:00
sfp-machine.h [SPARC64]: Fix quad-float multiply emulation. 2006-07-27 16:49:21 -07:00
shmbuf.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
shmparam.h Fix exported headers for SPARC, SPARC64 2006-09-21 08:48:27 +01:00
sigcontext.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
siginfo.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
signal.h [SPARC64]: Do not include compat.h from asm-sparc64/signal.h any more. 2006-10-02 14:30:45 -07:00
smp.h [SPARC64]: Initial LDOM cpu hotplug support. 2007-07-16 04:04:40 -07:00
socket.h [NET]: Adding SO_TIMESTAMPNS / SCM_TIMESTAMPNS support 2007-04-25 22:24:21 -07:00
sockios.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
solerrno.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sparsemem.h [SPARC64]: MAX_PHYSADDR_BITS et al. really need to be 42 bits not 41. 2007-04-26 01:55:24 -07:00
spinlock_types.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
spinlock.h [PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks 2006-10-01 00:39:21 -07:00
spitfire.h [SPARC64]: Add 'hypervisor' to ultra_tlb_type enumeration. 2006-03-20 01:11:39 -08:00
sstate.h [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
starfire.h [SPARC64]: Kill starfire_cookie from SBUS/PCI. 2006-06-29 16:37:08 -07:00
stat.h [PATCH] sparc64: Fix stat 2005-04-18 15:13:15 -07:00
statfs.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
string.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sunbpp.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
svr4.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
system.h Remove tas() 2007-05-08 11:15:20 -07:00
termbits.h [PATCH] tty: preparatory structures for termios revamp 2006-12-08 08:28:56 -08:00
termios.h [PATCH] consolidate line discipline number definitions 2007-02-11 10:51:26 -08:00
thread_info.h [SPARC64]: Eliminate NR_CPUS limitations. 2007-05-29 02:49:49 -07:00
timer.h [SPARC64]: Add clocksource/clockevents support. 2007-04-26 01:54:15 -07:00
timex.h [SPARC64]: Define ARCH_HAS_READ_CURRENT_TIMER. 2006-03-20 01:13:29 -08:00
tlb.h [SPARC64]: Add linux/pagemap.h to asm/tlb.h 2007-06-28 21:25:31 -07:00
tlbflush.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-05-06 19:59:18 +01:00
topology.h [SPARC64]: Fix {mc,smt}_capable(). 2007-06-04 21:50:05 -07:00
tsb.h [SPARC64]: Fix two bugs wrt. kernel 4MB TSB. 2007-05-29 02:51:38 -07:00
ttable.h [SPARC64]: Unify timer interrupt handler. 2007-04-26 01:54:11 -07:00
types.h [PATCH] sab: consolidate kmem_bufctl_t 2005-09-05 00:05:48 -07:00
uaccess.h [SPARC64]: __bzero_noasi --> __clear_user 2006-03-20 01:13:28 -08:00
uctx.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unaligned.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unistd.h [SPARC]: Wire up signalfd/timerfd/eventfd syscalls. 2007-05-11 22:06:51 -07:00
upa.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
user.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
utrap.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vga.h [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
vio.h [SPARC64]: Fix MD property lifetime bugs. 2007-07-16 04:04:33 -07:00
visasm.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
watchdog.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xor.h [SPARC64]: Niagara optimized XOR functions for RAID. 2006-03-20 01:14:03 -08:00