android_kernel_motorola_sm6225/arch/sparc64/kernel
David S. Miller b80e699812 [SPARC64]: Use sun4v VIRQ interfaces as intended.
We were simply concatenating the devhandle and devino and using that
as the cookie, which defeats the entire purpose of the VIRQ hypervisor
interfaces.

Now that we use physical addresses for the INO buckets, we can
allocate them dynamically for VIRQs and encode the cookies as
~__pa(bucket).  This allows us to test for and decode the cookie with
a simple:

	brlz	$reg1, 1f
	 xnor	$reg1, %g0, $reg2

sequence.

This works because bit 64 is never set in traditional
INO vectors, and it is also never set in a physical
address.  So xnor'ing the physical address of the bucket
always gives us a negative number, and thus a unique
condition we can test cheaply.

Inspired by ideas from Greg Onufer.

Signed-off-by: David S. Miller <davem@davemloft.net>
2007-10-13 21:53:16 -07:00
..
asm-offsets.c kbuild: frv,m32r,sparc64 introduce fake asm-offsets.h file 2005-09-09 22:47:53 +02:00
audit.c [PATCH] audit signal recipients 2007-05-11 05:38:25 -04:00
auxio.c [SPARC/64]: Move of_platform_driver initialisations: arch/sparc{,64}. 2007-10-13 21:53:12 -07:00
binfmt_aout32.c [SPARC64]: Fix put_user() calls in binfmt_aout32.c 2007-09-30 17:00:34 -07:00
binfmt_elf32.c [PATCH] elf: Always define elf_addr_t in linux/elf.h 2006-12-07 08:39:38 -08:00
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 [SPARC64]: Do not assume sun4v chips have load-twin/store-init support. 2007-08-08 17:33:45 -07:00
ds.c [SPARC64]: Do not flood log with failed DS messages. 2007-07-20 17:14:38 -07:00
dtlb_miss.S [SPARC64]: More TLB/TSB handling fixes. 2006-03-20 01:13:34 -08:00
dtlb_prot.S [SPARC64]: Fix boot failures on SunBlade-150 2005-10-12 12:22:46 -07:00
ebus.c [SPARC]: Fix EBUS use of uninitialized variable. 2007-09-27 13:09:28 -07:00
entry.S [SPARC64]: Access ivector_table[] using physical addresses. 2007-10-13 21:53:15 -07:00
etrap.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head.S [SPARC64]: Fix lockdep, particularly on SMP. 2007-09-16 11:51:15 -07:00
hvapi.c [SPARC64]: Report proper system soft state to the hypervisor. 2007-05-29 02:49:29 -07:00
hvtramp.S [SPARC64]: Fix memory leak when cpu hotplugging. 2007-08-08 17:33:52 -07:00
idprom.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
iommu.c [SPARC64]: Fix conflicts in SBUS/PCI/EBUS/ISA DMA handling. 2007-07-30 00:27:34 -07:00
iommu_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iommu_common.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c [SPARC64]: Use sun4v VIRQ interfaces as intended. 2007-10-13 21:53:16 -07:00
isa.c [SPARC64]: Fix conflicts in SBUS/PCI/EBUS/ISA DMA handling. 2007-07-30 00:27:34 -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 [SPARC64]: Get DEBUG_PAGEALLOC working again. 2007-03-16 17:20:28 -07:00
ldc.c [SPARC64]: Abstract out mdesc accesses for better MD update handling. 2007-07-16 04:04:28 -07:00
Makefile [SPARC64]: Consolidate MSI support code. 2007-10-13 21:53:13 -07:00
mdesc.c [SPARC64]: Warn user if cpu is ignored. 2007-09-16 14:45:06 -07:00
module.c [SPARC]: Handle UNWIND_INFO properly. 2006-05-12 12:45:50 -07:00
of_device.c [SPARC/64]: Prepare to remove of_platform_driver name. 2007-10-13 21:53:11 -07:00
pci.c [SPARC64]: Kill pci_memspace_mask. 2007-10-13 21:53:14 -07:00
pci_common.c [SPARC64]: Temporary workaround for PCI-E slot on T1000. 2007-10-03 21:37:57 -07:00
pci_fire.c [SPARC64]: Kill pci_memspace_mask. 2007-10-13 21:53:14 -07:00
pci_impl.h [SPARC64]: Kill pci_memspace_mask. 2007-10-13 21:53:14 -07:00
pci_msi.c [SPARC64]: Consolidate MSI support code. 2007-10-13 21:53:13 -07:00
pci_psycho.c [SPARC64]: Kill pci_memspace_mask. 2007-10-13 21:53:14 -07:00
pci_sabre.c [SPARC64]: Fix conflicts in SBUS/PCI/EBUS/ISA DMA handling. 2007-07-30 00:27:34 -07:00
pci_schizo.c [SPARC64]: Kill pci_memspace_mask. 2007-10-13 21:53:14 -07:00
pci_sun4v.c [SPARC64]: Kill pci_memspace_mask. 2007-10-13 21:53:14 -07:00
pci_sun4v.h [SPARC64]: Add PCI MSI support on Niagara. 2007-02-10 23:50:37 -08:00
pci_sun4v_asm.S [SPARC64]: Add PCI MSI support on Niagara. 2007-02-10 23:50:37 -08:00
power.c [SPARC/64]: Move of_platform_driver initialisations: arch/sparc{,64}. 2007-10-13 21:53:12 -07:00
process.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
prom.c [SPARC64]: Fix 'niu' complex IRQ probing. 2007-10-04 15:03:35 -07:00
ptrace.c [SPARC{32,64}]: Propagate ptrace_traceme() return value. 2006-12-10 02:40:27 -08:00
rtrap.S [SPARC64]: Add irqtrace/stacktrace/lockdep support. 2006-12-10 02:39:09 -08:00
sbus.c [SPARC64]: Fix conflicts in SBUS/PCI/EBUS/ISA DMA handling. 2007-07-30 00:27:34 -07:00
semaphore.c [SPARC64]: Avoid membar instructions in delay slots. 2005-06-27 15:42:04 -07:00
setup.c [SPARC]: Fix serial console device detection. 2007-07-20 16:59:26 -07:00
signal.c [SPARC64]: Kill bogus set_fs(KERNEL_DS) in do_rt_sigreturn(). 2007-07-17 14:37:54 -07:00
signal32.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
smp.c [SPARC64]: check fork_idle() error 2007-10-04 14:55:59 -07:00
sparc64_ksyms.c [SPARC64]: Do not assume sun4v chips have load-twin/store-init support. 2007-08-08 17:33:45 -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 [SPARC64]: Kill starfire_cookie from SBUS/PCI. 2006-06-29 16:37:08 -07:00
sun4v_ivec.S [SPARC64]: Use sun4v VIRQ interfaces as intended. 2007-10-13 21:53:16 -07:00
sun4v_tlb_miss.S [SPARC64]: Set g4/g5 properly in sun4v dtlb-prot handling. 2007-01-26 18:56:01 -08:00
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_sparc.c [SPARC64]: Fix bugs in SYSV IPC handling in 64-bit processes. 2007-10-13 21:53:12 -07:00
sys_sparc32.c [SPARC]: Add sys_fallocate() entries. 2007-07-19 21:26:47 -07:00
sys_sunos32.c [SPARC]: avoid CHILD_MAX and OPEN_MAX constants 2007-04-12 13:13:42 -07:00
sysfs.c [SPARC64]: More sensible udelay implementation. 2007-07-16 04:05:02 -07:00
systbls.S [SPARC]: Add sys_fallocate() entries. 2007-07-19 21:26:47 -07:00
time.c [SPARC/64]: Move of_platform_driver initialisations: arch/sparc{,64}. 2007-10-13 21:53:12 -07:00
trampoline.S [SPARC64]: Fix lockdep, particularly on SMP. 2007-09-16 11:51:15 -07:00
traps.c [SPARC64]: Access ivector_table[] using physical addresses. 2007-10-13 21:53:15 -07:00
tsb.S [SPARC64]: store-init needs trailing membar. 2007-03-19 13:27:33 -07:00
ttable.S [SPARC64]: Unify timer interrupt handler. 2007-04-26 01:54:11 -07:00
una_asm.S [SPARC64]: Mark __ex_table section correctly. 2006-03-04 23:23:56 -08:00
unaligned.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
us2e_cpufreq.c [CPUFREQ] move policy's governor initialisation out of low-level drivers into cpufreq core 2007-10-04 18:40:57 -04:00
us3_cpufreq.c [SPARC64]: kzalloc() conversion 2006-03-20 01:14:19 -08:00
vio.c [SPARC64]: VIO device addition log message level is too high. 2007-10-03 21:23:40 -07:00
viohs.c viohs: extern on function definition 2007-07-26 11:11:56 -07:00
visemul.c [SPARC64]: Call do_mathemu on illegal instruction traps too. 2006-12-10 02:39:32 -08:00
vmlinux.lds.S [SPARC64]: beautify vmlinux.lds 2007-10-13 21:53:10 -07:00
winfixup.S [SPARC64]: Fix unaligned access winfxup handling on SUN4V. 2006-03-20 01:13:39 -08:00