Commit 5f48b338 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: ARRAY_SIZE() cleanup
  [SPARC64]: small Makefile cleanups
  [SPARC64]: Stop using __do_IRQ().
  [SPARC64]: Update defconfig.
parents f09cc910 29f139ce
...@@ -72,6 +72,10 @@ config ARCH_NO_VIRT_TO_BUS ...@@ -72,6 +72,10 @@ config ARCH_NO_VIRT_TO_BUS
config OF config OF
def_bool y def_bool y
config GENERIC_HARDIRQS_NO__DO_IRQ
bool
def_bool y
choice choice
prompt "Kernel page size" prompt "Kernel page size"
default SPARC64_PAGE_SIZE_8KB default SPARC64_PAGE_SIZE_8KB
......
...@@ -18,8 +18,6 @@ NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow) ...@@ -18,8 +18,6 @@ NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow)
NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi)
UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; )
export NEW_GCC
ifneq ($(NEW_GAS),y) ifneq ($(NEW_GAS),y)
AS = sparc64-linux-as AS = sparc64-linux-as
LD = sparc64-linux-ld LD = sparc64-linux-ld
...@@ -58,8 +56,6 @@ core-y += arch/sparc64/kernel/ arch/sparc64/mm/ ...@@ -58,8 +56,6 @@ core-y += arch/sparc64/kernel/ arch/sparc64/mm/
core-$(CONFIG_SOLARIS_EMUL) += arch/sparc64/solaris/ core-$(CONFIG_SOLARIS_EMUL) += arch/sparc64/solaris/
core-y += arch/sparc64/math-emu/ core-y += arch/sparc64/math-emu/
libs-y += arch/sparc64/prom/ arch/sparc64/lib/ libs-y += arch/sparc64/prom/ arch/sparc64/lib/
# FIXME: is drivers- right?
drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/ drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
boot := arch/sparc64/boot boot := arch/sparc64/boot
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.23 # Linux kernel version: 2.6.23
# Sat Oct 13 21:53:54 2007 # Sun Oct 21 19:57:44 2007
# #
CONFIG_SPARC=y CONFIG_SPARC=y
CONFIG_SPARC64=y CONFIG_SPARC64=y
...@@ -49,6 +49,10 @@ CONFIG_POSIX_MQUEUE=y ...@@ -49,6 +49,10 @@ CONFIG_POSIX_MQUEUE=y
# CONFIG_AUDIT is not set # CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set # CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_BUF_SHIFT=18
# CONFIG_CGROUPS is not set
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAIR_USER_SCHED=y
# CONFIG_FAIR_CGROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y CONFIG_RELAY=y
# CONFIG_BLK_DEV_INITRD is not set # CONFIG_BLK_DEV_INITRD is not set
...@@ -145,7 +149,10 @@ CONFIG_SELECT_MEMORY_MODEL=y ...@@ -145,7 +149,10 @@ CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_STATIC=y # CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=0 CONFIG_ZONE_DMA_FLAG=0
...@@ -275,10 +282,6 @@ CONFIG_VLAN_8021Q=m ...@@ -275,10 +282,6 @@ CONFIG_VLAN_8021Q=m
# CONFIG_LAPB is not set # CONFIG_LAPB is not set
# CONFIG_ECONET is not set # CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set # CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
# #
...@@ -372,8 +375,6 @@ CONFIG_IDEPCI_PCIBUS_ORDER=y ...@@ -372,8 +375,6 @@ CONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_GENERIC is not set # CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_ONLYDISK=y
# CONFIG_BLK_DEV_AEC62XX is not set # CONFIG_BLK_DEV_AEC62XX is not set
CONFIG_BLK_DEV_ALI15X3=y CONFIG_BLK_DEV_ALI15X3=y
# CONFIG_WDC_ALI15X3 is not set # CONFIG_WDC_ALI15X3 is not set
...@@ -401,6 +402,7 @@ CONFIG_BLK_DEV_ALI15X3=y ...@@ -401,6 +402,7 @@ CONFIG_BLK_DEV_ALI15X3=y
# CONFIG_BLK_DEV_TC86C001 is not set # CONFIG_BLK_DEV_TC86C001 is not set
# CONFIG_IDE_ARM is not set # CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y CONFIG_BLK_DEV_IDEDMA=y
CONFIG_IDE_ARCH_OBSOLETE_INIT=y
# CONFIG_BLK_DEV_HD is not set # CONFIG_BLK_DEV_HD is not set
# #
...@@ -441,6 +443,7 @@ CONFIG_SCSI_FC_ATTRS=y ...@@ -441,6 +443,7 @@ CONFIG_SCSI_FC_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=m CONFIG_SCSI_ISCSI_ATTRS=m
# CONFIG_SCSI_SAS_ATTRS is not set # CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set # CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m CONFIG_ISCSI_TCP=m
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
...@@ -492,14 +495,8 @@ CONFIG_DM_MIRROR=m ...@@ -492,14 +495,8 @@ CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m CONFIG_DM_ZERO=m
# CONFIG_DM_MULTIPATH is not set # CONFIG_DM_MULTIPATH is not set
# CONFIG_DM_DELAY is not set # CONFIG_DM_DELAY is not set
# CONFIG_DM_UEVENT is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set # CONFIG_FUSION is not set
# CONFIG_FUSION_SPI is not set
# CONFIG_FUSION_FC is not set
# CONFIG_FUSION_SAS is not set
# #
# IEEE 1394 (FireWire) support # IEEE 1394 (FireWire) support
...@@ -638,7 +635,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y ...@@ -638,7 +635,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set # CONFIG_INPUT_EVBUG is not set
...@@ -714,11 +710,9 @@ CONFIG_SERIAL_CORE_CONSOLE=y ...@@ -714,11 +710,9 @@ CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
# CONFIG_IPMI_HANDLER is not set # CONFIG_IPMI_HANDLER is not set
# CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set # CONFIG_APPLICOM is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set # CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set # CONFIG_TCG_TPM is not set
CONFIG_DEVPORT=y CONFIG_DEVPORT=y
...@@ -786,8 +780,6 @@ CONFIG_I2C_ALGOBIT=y ...@@ -786,8 +780,6 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_POWER_SUPPLY is not set # CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set # CONFIG_HWMON_VID is not set
# CONFIG_SENSORS_ABITUGURU is not set
# CONFIG_SENSORS_ABITUGURU3 is not set
# CONFIG_SENSORS_AD7418 is not set # CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1025 is not set
...@@ -795,12 +787,12 @@ CONFIG_HWMON=y ...@@ -795,12 +787,12 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1029 is not set # CONFIG_SENSORS_ADM1029 is not set
# CONFIG_SENSORS_ADM1031 is not set # CONFIG_SENSORS_ADM1031 is not set
# CONFIG_SENSORS_ADM9240 is not set # CONFIG_SENSORS_ADM9240 is not set
# CONFIG_SENSORS_ASB100 is not set # CONFIG_SENSORS_ADT7470 is not set
# CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_FSCHER is not set # CONFIG_SENSORS_F71882FG is not set
# CONFIG_SENSORS_FSCPOS is not set # CONFIG_SENSORS_F75375S is not set
# CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set # CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_IT87 is not set
...@@ -836,6 +828,7 @@ CONFIG_HWMON=y ...@@ -836,6 +828,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set # CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_WATCHDOG is not set
# #
# Sonics Silicon Backplane # Sonics Silicon Backplane
...@@ -858,12 +851,7 @@ CONFIG_SSB_POSSIBLE=y ...@@ -858,12 +851,7 @@ CONFIG_SSB_POSSIBLE=y
# #
# Graphics support # Graphics support
# #
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set # CONFIG_DRM is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_VGASTATE is not set # CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set
CONFIG_FB=y CONFIG_FB=y
...@@ -872,6 +860,7 @@ CONFIG_FB_DDC=y ...@@ -872,6 +860,7 @@ CONFIG_FB_DDC=y
CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set # CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set # CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set # CONFIG_FB_SYS_IMAGEBLIT is not set
...@@ -890,6 +879,7 @@ CONFIG_FB_TILEBLITTING=y ...@@ -890,6 +879,7 @@ CONFIG_FB_TILEBLITTING=y
# CONFIG_FB_PM2 is not set # CONFIG_FB_PM2 is not set
# CONFIG_FB_ASILIANT is not set # CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set # CONFIG_FB_IMSTT is not set
# CONFIG_FB_UVESA is not set
# CONFIG_FB_SBUS is not set # CONFIG_FB_SBUS is not set
# CONFIG_FB_XVR500 is not set # CONFIG_FB_XVR500 is not set
# CONFIG_FB_XVR2500 is not set # CONFIG_FB_XVR2500 is not set
...@@ -915,6 +905,12 @@ CONFIG_FB_RADEON_I2C=y ...@@ -915,6 +905,12 @@ CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_ARK is not set # CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set # CONFIG_FB_PM3 is not set
# CONFIG_FB_VIRTUAL is not set # CONFIG_FB_VIRTUAL is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
# #
# Console display driver support # Console display driver support
...@@ -1066,6 +1062,7 @@ CONFIG_AC97_BUS=m ...@@ -1066,6 +1062,7 @@ CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y CONFIG_HID_SUPPORT=y
CONFIG_HID=y CONFIG_HID=y
# CONFIG_HID_DEBUG is not set # CONFIG_HID_DEBUG is not set
# CONFIG_HIDRAW is not set
# #
# USB Input Devices # USB Input Devices
...@@ -1186,19 +1183,6 @@ CONFIG_USB_STORAGE=m ...@@ -1186,19 +1183,6 @@ CONFIG_USB_STORAGE=m
# CONFIG_INFINIBAND is not set # CONFIG_INFINIBAND is not set
# CONFIG_RTC_CLASS is not set # CONFIG_RTC_CLASS is not set
#
# DMA Engine support
#
# CONFIG_DMA_ENGINE is not set
#
# DMA Clients
#
#
# DMA Devices
#
# #
# Userspace I/O # Userspace I/O
# #
...@@ -1275,7 +1259,6 @@ CONFIG_TMPFS=y ...@@ -1275,7 +1259,6 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set # CONFIG_TMPFS_POSIX_ACL is not set
CONFIG_HUGETLBFS=y CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y CONFIG_HUGETLB_PAGE=y
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set # CONFIG_CONFIGFS_FS is not set
# #
...@@ -1295,10 +1278,7 @@ CONFIG_RAMFS=y ...@@ -1295,10 +1278,7 @@ CONFIG_RAMFS=y
# CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set # CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set # CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
#
# Network File Systems
#
# CONFIG_NFS_FS is not set # CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set # CONFIG_NFSD is not set
# CONFIG_SMB_FS is not set # CONFIG_SMB_FS is not set
...@@ -1313,10 +1293,6 @@ CONFIG_RAMFS=y ...@@ -1313,10 +1293,6 @@ CONFIG_RAMFS=y
# CONFIG_PARTITION_ADVANCED is not set # CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y CONFIG_MSDOS_PARTITION=y
CONFIG_SUN_PARTITION=y CONFIG_SUN_PARTITION=y
#
# Native Language Support
#
CONFIG_NLS=m CONFIG_NLS=m
CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set # CONFIG_NLS_CODEPAGE_437 is not set
...@@ -1357,18 +1333,12 @@ CONFIG_NLS_DEFAULT="iso8859-1" ...@@ -1357,18 +1333,12 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set # CONFIG_NLS_UTF8 is not set
#
# Distributed Lock Manager
#
# CONFIG_DLM is not set # CONFIG_DLM is not set
CONFIG_INSTRUMENTATION=y
#
# Instrumentation Support
#
CONFIG_PROFILING=y CONFIG_PROFILING=y
CONFIG_OPROFILE=m CONFIG_OPROFILE=m
CONFIG_KPROBES=y CONFIG_KPROBES=y
# CONFIG_MARKERS is not set
# #
# Kernel hacking # Kernel hacking
...@@ -1402,9 +1372,11 @@ CONFIG_DEBUG_BUGVERBOSE=y ...@@ -1402,9 +1372,11 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_LIST is not set
CONFIG_FORCED_INLINING=y CONFIG_FORCED_INLINING=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_LKDTM is not set # CONFIG_LKDTM is not set
# CONFIG_FAULT_INJECTION is not set # CONFIG_FAULT_INJECTION is not set
# CONFIG_SAMPLES is not set
# CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_DCFLUSH is not set # CONFIG_DEBUG_DCFLUSH is not set
# CONFIG_STACK_DEBUG is not set # CONFIG_STACK_DEBUG is not set
...@@ -1417,6 +1389,7 @@ CONFIG_FORCED_INLINING=y ...@@ -1417,6 +1389,7 @@ CONFIG_FORCED_INLINING=y
CONFIG_KEYS=y CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set # CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY is not set # CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_XOR_BLOCKS=m CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_MEMCPY=m CONFIG_ASYNC_MEMCPY=m
......
...@@ -39,12 +39,3 @@ else ...@@ -39,12 +39,3 @@ else
obj-y += sys_sunos32.o sunos_ioctl32.o obj-y += sys_sunos32.o sunos_ioctl32.o
endif endif
endif endif
ifneq ($(NEW_GCC),y)
CMODEL_CFLAG := -mmedlow
else
CMODEL_CFLAG := -m64 -mcmodel=medlow
endif
head.o: head.S ttable.S itlb_miss.S dtlb_miss.S ktlb.S tsb.S \
etrap.S rtrap.S winfixup.S entry.S
...@@ -257,8 +257,8 @@ struct irq_handler_data { ...@@ -257,8 +257,8 @@ struct irq_handler_data {
unsigned long imap; unsigned long imap;
void (*pre_handler)(unsigned int, void *, void *); void (*pre_handler)(unsigned int, void *, void *);
void *pre_handler_arg1; void *arg1;
void *pre_handler_arg2; void *arg2;
}; };
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
...@@ -346,7 +346,7 @@ static void sun4u_irq_disable(unsigned int virt_irq) ...@@ -346,7 +346,7 @@ static void sun4u_irq_disable(unsigned int virt_irq)
} }
} }
static void sun4u_irq_end(unsigned int virt_irq) static void sun4u_irq_eoi(unsigned int virt_irq)
{ {
struct irq_handler_data *data = get_irq_chip_data(virt_irq); struct irq_handler_data *data = get_irq_chip_data(virt_irq);
struct irq_desc *desc = irq_desc + virt_irq; struct irq_desc *desc = irq_desc + virt_irq;
...@@ -401,7 +401,7 @@ static void sun4v_irq_disable(unsigned int virt_irq) ...@@ -401,7 +401,7 @@ static void sun4v_irq_disable(unsigned int virt_irq)
"err(%d)\n", ino, err); "err(%d)\n", ino, err);
} }
static void sun4v_irq_end(unsigned int virt_irq) static void sun4v_irq_eoi(unsigned int virt_irq)
{ {
unsigned int ino = virt_irq_table[virt_irq].dev_ino; unsigned int ino = virt_irq_table[virt_irq].dev_ino;
struct irq_desc *desc = irq_desc + virt_irq; struct irq_desc *desc = irq_desc + virt_irq;
...@@ -478,7 +478,7 @@ static void sun4v_virq_disable(unsigned int virt_irq) ...@@ -478,7 +478,7 @@ static void sun4v_virq_disable(unsigned int virt_irq)
dev_handle, dev_ino, err); dev_handle, dev_ino, err);
} }
static void sun4v_virq_end(unsigned int virt_irq) static void sun4v_virq_eoi(unsigned int virt_irq)
{ {
struct irq_desc *desc = irq_desc + virt_irq; struct irq_desc *desc = irq_desc + virt_irq;
unsigned long dev_handle, dev_ino; unsigned long dev_handle, dev_ino;
...@@ -498,33 +498,11 @@ static void sun4v_virq_end(unsigned int virt_irq) ...@@ -498,33 +498,11 @@ static void sun4v_virq_end(unsigned int virt_irq)
dev_handle, dev_ino, err); dev_handle, dev_ino, err);
} }
static void run_pre_handler(unsigned int virt_irq)
{
struct irq_handler_data *data = get_irq_chip_data(virt_irq);
unsigned int ino;
ino = virt_irq_table[virt_irq].dev_ino;
if (likely(data->pre_handler)) {
data->pre_handler(ino,
data->pre_handler_arg1,
data->pre_handler_arg2);
}
}
static struct irq_chip sun4u_irq = { static struct irq_chip sun4u_irq = {
.typename = "sun4u", .typename = "sun4u",
.enable = sun4u_irq_enable, .enable = sun4u_irq_enable,
.disable = sun4u_irq_disable, .disable = sun4u_irq_disable,
.end = sun4u_irq_end, .eoi = sun4u_irq_eoi,
.set_affinity = sun4u_set_affinity,
};
static struct irq_chip sun4u_irq_ack = {
.typename = "sun4u+ack",
.enable = sun4u_irq_enable,
.disable = sun4u_irq_disable,
.ack = run_pre_handler,
.end = sun4u_irq_end,
.set_affinity = sun4u_set_affinity, .set_affinity = sun4u_set_affinity,
}; };
...@@ -532,7 +510,7 @@ static struct irq_chip sun4v_irq = { ...@@ -532,7 +510,7 @@ static struct irq_chip sun4v_irq = {
.typename = "sun4v", .typename = "sun4v",
.enable = sun4v_irq_enable, .enable = sun4v_irq_enable,
.disable = sun4v_irq_disable, .disable = sun4v_irq_disable,
.end = sun4v_irq_end, .eoi = sun4v_irq_eoi,
.set_affinity = sun4v_set_affinity, .set_affinity = sun4v_set_affinity,
}; };
...@@ -540,31 +518,33 @@ static struct irq_chip sun4v_virq = { ...@@ -540,31 +518,33 @@ static struct irq_chip sun4v_virq = {
.typename = "vsun4v", .typename = "vsun4v",
.enable = sun4v_virq_enable, .enable = sun4v_virq_enable,
.disable = sun4v_virq_disable, .disable = sun4v_virq_disable,
.end = sun4v_virq_end, .eoi = sun4v_virq_eoi,
.set_affinity = sun4v_virt_set_affinity, .set_affinity = sun4v_virt_set_affinity,
}; };
static void fastcall pre_flow_handler(unsigned int virt_irq,
struct irq_desc *desc)
{
struct irq_handler_data *data = get_irq_chip_data(virt_irq);
unsigned int ino = virt_irq_table[virt_irq].dev_ino;
data->pre_handler(ino, data->arg1, data->arg2);
handle_fasteoi_irq(virt_irq, desc);
}
void irq_install_pre_handler(int virt_irq, void irq_install_pre_handler(int virt_irq,
void (*func)(unsigned int, void *, void *), void (*func)(unsigned int, void *, void *),
void *arg1, void *arg2) void *arg1, void *arg2)
{ {
struct irq_handler_data *data = get_irq_chip_data(virt_irq); struct irq_handler_data *data = get_irq_chip_data(virt_irq);
struct irq_chip *chip = get_irq_chip(virt_irq); struct irq_desc *desc = irq_desc + virt_irq;
if (WARN_ON(chip == &sun4v_irq || chip == &sun4v_virq)) {
printk(KERN_ERR "IRQ: Trying to install pre-handler on "
"sun4v irq %u\n", virt_irq);
return;
}
data->pre_handler = func; data->pre_handler = func;
data->pre_handler_arg1 = arg1; data->arg1 = arg1;
data->pre_handler_arg2 = arg2; data->arg2 = arg2;
if (chip == &sun4u_irq_ack)
return;
set_irq_chip(virt_irq, &sun4u_irq_ack); desc->handle_irq = pre_flow_handler;
} }
unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
...@@ -582,7 +562,10 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) ...@@ -582,7 +562,10 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
if (!virt_irq) { if (!virt_irq) {
virt_irq = virt_irq_alloc(0, ino); virt_irq = virt_irq_alloc(0, ino);
bucket_set_virt_irq(__pa(bucket), virt_irq); bucket_set_virt_irq(__pa(bucket), virt_irq);
set_irq_chip(virt_irq, &sun4u_irq); set_irq_chip_and_handler_name(virt_irq,
&sun4u_irq,
handle_fasteoi_irq,
"IVEC");
} }
data = get_irq_chip_data(virt_irq); data = get_irq_chip_data(virt_irq);
...@@ -617,7 +600,9 @@ static unsigned int sun4v_build_common(unsigned long sysino, ...@@ -617,7 +600,9 @@ static unsigned int sun4v_build_common(unsigned long sysino,
if (!virt_irq) { if (!virt_irq) {
virt_irq = virt_irq_alloc(0, sysino); virt_irq = virt_irq_alloc(0, sysino);
bucket_set_virt_irq(__pa(bucket), virt_irq); bucket_set_virt_irq(__pa(bucket), virt_irq);
set_irq_chip(virt_irq, chip); set_irq_chip_and_handler_name(virt_irq, chip,
handle_fasteoi_irq,
"IVEC");
} }
data = get_irq_chip_data(virt_irq); data = get_irq_chip_data(virt_irq);
...@@ -665,7 +650,10 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino) ...@@ -665,7 +650,10 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
virt_irq = virt_irq_alloc(devhandle, devino); virt_irq = virt_irq_alloc(devhandle, devino);
bucket_set_virt_irq(__pa(bucket), virt_irq); bucket_set_virt_irq(__pa(bucket), virt_irq);
set_irq_chip(virt_irq, &sun4v_virq);
set_irq_chip_and_handler_name(virt_irq, &sun4v_virq,
handle_fasteoi_irq,
"IVEC");
data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
if (unlikely(!data)) if (unlikely(!data))
...@@ -724,6 +712,7 @@ void handler_irq(int irq, struct pt_regs *regs) ...@@ -724,6 +712,7 @@ void handler_irq(int irq, struct pt_regs *regs)
: "memory"); : "memory");
while (bucket_pa) { while (bucket_pa) {
struct irq_desc *desc;
unsigned long next_pa; unsigned long next_pa;
unsigned int virt_irq; unsigned int virt_irq;
...@@ -731,7 +720,9 @@ void handler_irq(int irq, struct pt_regs *regs) ...@@ -731,7 +720,9 @@ void handler_irq(int irq, struct pt_regs *regs)
virt_irq = bucket_get_virt_irq(bucket_pa); virt_irq = bucket_get_virt_irq(bucket_pa);
bucket_clear_chain_pa(bucket_pa); bucket_clear_chain_pa(bucket_pa);
__do_IRQ(virt_irq); desc = irq_desc + virt_irq;
desc->handle_irq(virt_irq, desc);
bucket_pa = next_pa; bucket_pa = next_pa;
} }
......
...@@ -207,8 +207,7 @@ static struct { ...@@ -207,8 +207,7 @@ static struct {
{ "SUNW,sun4v-pci", sun4v_pci_init }, { "SUNW,sun4v-pci", sun4v_pci_init },
{ "pciex108e,80f0", fire_pci_init }, { "pciex108e,80f0", fire_pci_init },
}; };
#define PCI_NUM_CONTROLLER_TYPES (sizeof(pci_controller_table) / \ #define PCI_NUM_CONTROLLER_TYPES ARRAY_SIZE(pci_controller_table)
sizeof(pci_controller_table[0]))
static int __init pci_controller_init(const char *model_name, int namelen, struct device_node *dp) static int __init pci_controller_init(const char *model_name, int namelen, struct device_node *dp)
{ {
......
...@@ -28,8 +28,15 @@ static irqreturn_t sparc64_msiq_interrupt(int irq, void *cookie) ...@@ -28,8 +28,15 @@ static irqreturn_t sparc64_msiq_interrupt(int irq, void *cookie)
unsigned long msi; unsigned long msi;
err = ops->dequeue_msi(pbm, msiqid, &head, &msi); err = ops->dequeue_msi(pbm, msiqid, &head, &msi);
if (likely(err > 0)) if (likely(err > 0)) {
__do_IRQ(pbm->msi_irq_table[msi - pbm->msi_first]); struct irq_desc *desc;
unsigned int virt_irq;
virt_irq = pbm->msi_irq_table[msi - pbm->msi_first];
desc = irq_desc + virt_irq;
desc->handle_irq(virt_irq, desc);
}
if (unlikely(err < 0)) if (unlikely(err < 0))
goto err_dequeue; goto err_dequeue;
...@@ -128,7 +135,8 @@ int sparc64_setup_msi_irq(unsigned int *virt_irq_p, ...@@ -128,7 +135,8 @@ int sparc64_setup_msi_irq(unsigned int *virt_irq_p,
if (!*virt_irq_p) if (!*virt_irq_p)
goto out_err; goto out_err;
set_irq_chip(*virt_irq_p, &msi_irq); set_irq_chip_and_handler_name(*virt_irq_p, &msi_irq,
handle_simple_irq, "MSI");
err = alloc_msi(pbm); err = alloc_msi(pbm);
if (unlikely(err < 0)) if (unlikely(err < 0))
......
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
obj-y := math.o obj-y := math.o
EXTRA_CFLAGS = -I. -Iinclude/math-emu -w EXTRA_CFLAGS = -Iinclude/math-emu -w
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment