Merge branch 'parisc-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc update from Helge Deller: - a bugfix for sticon (parisc text console driver) to not crash the 64bit kernel on machines with more than 4GB RAM - added kernel audit support - made udelay() implementation SMP-safe - "make install" now does not depend on vmlinux - added defconfigs for 32- and 64-kernels * 'parisc-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: add generic 32- and 64-bit defconfigs parisc: sticon - unbreak on 64bit kernel parisc: signal fixup - SIGBUS vs. SIGSEGV parisc: implement full version of access_ok() parisc: correctly display number of active CPUs parisc: do not count IPI calls twice parisc: make udelay() SMP-safe parisc: remove duplicate define parisc: make "make install" not depend on vmlinux parisc: add kernel audit feature parisc: provide macro to create exception table entries
This commit is contained in:
Коммит
78d4a42069
|
@ -287,6 +287,9 @@ config SYSVIPC_COMPAT
|
|||
def_bool y
|
||||
depends on COMPAT && SYSVIPC
|
||||
|
||||
config AUDIT_ARCH
|
||||
def_bool y
|
||||
|
||||
config HPUX
|
||||
bool "Support for HP-UX binaries"
|
||||
depends on !64BIT
|
||||
|
|
|
@ -94,7 +94,7 @@ PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \
|
|||
else echo $(obj)/palo.conf; \
|
||||
fi)
|
||||
|
||||
palo: vmlinuz
|
||||
palo lifimage: vmlinuz
|
||||
@if test ! -x "$(PALO)"; then \
|
||||
echo 'ERROR: Please install palo first (apt-get install palo)';\
|
||||
echo 'or build it from source and install it somewhere in your $$PATH';\
|
||||
|
@ -109,16 +109,23 @@ palo: vmlinuz
|
|||
fi
|
||||
$(PALO) -f $(PALOCONF)
|
||||
|
||||
# Shorthands for known targets not supported by parisc, use vmlinux/vmlinuz as default
|
||||
BOOT_TARGETS = zImage Image palo lifimage
|
||||
INSTALL_TARGETS = zinstall install
|
||||
|
||||
PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
|
||||
|
||||
bzImage zImage: vmlinuz
|
||||
Image: vmlinux
|
||||
zImage bzImage: vmlinuz
|
||||
|
||||
vmlinuz: vmlinux
|
||||
@gzip -cf -9 $< > $@
|
||||
|
||||
install: vmlinuz
|
||||
sh $(src)/arch/parisc/install.sh \
|
||||
$(KERNELRELEASE) $< System.map "$(INSTALL_PATH)"
|
||||
install:
|
||||
$(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
|
||||
$(KERNELRELEASE) vmlinux System.map "$(INSTALL_PATH)"
|
||||
zinstall:
|
||||
$(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
|
||||
$(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)"
|
||||
|
||||
CLEAN_FILES += lifimage
|
||||
MRPROPER_FILES += palo.conf
|
||||
|
@ -127,10 +134,11 @@ define archhelp
|
|||
@echo '* vmlinux - Uncompressed kernel image (./vmlinux)'
|
||||
@echo ' vmlinuz - Compressed kernel image (./vmlinuz)'
|
||||
@echo ' palo - Bootable image (./lifimage)'
|
||||
@echo ' install - Install kernel using'
|
||||
@echo ' install - Install uncompressed vmlinux kernel using'
|
||||
@echo ' (your) ~/bin/$(INSTALLKERNEL) or'
|
||||
@echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
|
||||
@echo ' copy to $$(INSTALL_PATH)'
|
||||
@echo ' zinstall - Install compressed vmlinuz kernel'
|
||||
endef
|
||||
|
||||
# we require gcc 3.3 or above to compile the kernel
|
||||
|
|
|
@ -0,0 +1,328 @@
|
|||
CONFIG_LOCALVERSION="-32bit"
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_RD_BZIP2=y
|
||||
CONFIG_RD_LZMA=y
|
||||
CONFIG_RD_LZO=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
# CONFIG_LBDAF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PA7100LC=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_IOMMU_CCIO=y
|
||||
CONFIG_GSC_LASI=y
|
||||
CONFIG_GSC_WAX=y
|
||||
CONFIG_EISA=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_GSC_DINO=y
|
||||
CONFIG_PCI_LBA=y
|
||||
CONFIG_PCCARD=m
|
||||
CONFIG_YENTA=m
|
||||
# CONFIG_PDC_CHASSIS is not set
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM_USER=m
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_DIAG=m
|
||||
CONFIG_LLC2=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
CONFIG_PARPORT=y
|
||||
CONFIG_PARPORT_PC=m
|
||||
CONFIG_PARPORT_1284=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=6144
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_GENERIC=y
|
||||
CONFIG_BLK_DEV_NS87415=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_SCSI_LASI700=y
|
||||
CONFIG_SCSI_SYM53C8XX_2=y
|
||||
CONFIG_SCSI_ZALON=y
|
||||
CONFIG_SCSI_DH=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_MD=m
|
||||
CONFIG_MD_LINEAR=m
|
||||
CONFIG_MD_RAID0=m
|
||||
CONFIG_MD_RAID1=m
|
||||
CONFIG_MD_RAID10=m
|
||||
CONFIG_MD_RAID456=m
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_UEVENT=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_TUN=m
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_ADAPTEC is not set
|
||||
# CONFIG_NET_VENDOR_ALTEON is not set
|
||||
# CONFIG_NET_VENDOR_AMD is not set
|
||||
# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
# CONFIG_NET_CADENCE is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
# CONFIG_NET_VENDOR_CISCO is not set
|
||||
CONFIG_NET_TULIP=y
|
||||
CONFIG_TULIP=y
|
||||
# CONFIG_NET_VENDOR_DLINK is not set
|
||||
# CONFIG_NET_VENDOR_EMULEX is not set
|
||||
# CONFIG_NET_VENDOR_EXAR is not set
|
||||
# CONFIG_NET_VENDOR_HP is not set
|
||||
CONFIG_LASI_82596=y
|
||||
# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
# CONFIG_NET_VENDOR_MICREL is not set
|
||||
# CONFIG_NET_VENDOR_MYRI is not set
|
||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
# CONFIG_NET_VENDOR_NVIDIA is not set
|
||||
# CONFIG_NET_VENDOR_OKI is not set
|
||||
# CONFIG_NET_PACKET_ENGINE is not set
|
||||
# CONFIG_NET_VENDOR_QLOGIC is not set
|
||||
# CONFIG_NET_VENDOR_REALTEK is not set
|
||||
# CONFIG_NET_VENDOR_RDC is not set
|
||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
# CONFIG_NET_VENDOR_SILAN is not set
|
||||
# CONFIG_NET_VENDOR_SIS is not set
|
||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||
# CONFIG_NET_VENDOR_SUN is not set
|
||||
# CONFIG_NET_VENDOR_TEHUTI is not set
|
||||
# CONFIG_NET_VENDOR_TI is not set
|
||||
# CONFIG_NET_VENDOR_VIA is not set
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPPOE=m
|
||||
# CONFIG_WLAN is not set
|
||||
CONFIG_INPUT_POLLDEV=y
|
||||
CONFIG_KEYBOARD_HIL_OLD=m
|
||||
CONFIG_KEYBOARD_HIL=m
|
||||
CONFIG_MOUSE_SERIAL=y
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_UINPUT=m
|
||||
CONFIG_LEGACY_PTY_COUNT=64
|
||||
CONFIG_SERIAL_8250=y
|
||||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=8
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_PRINTER=m
|
||||
CONFIG_PPDEV=m
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_I2C=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_AGP=y
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_FOREIGN_ENDIAN=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_FB_MATROX=m
|
||||
CONFIG_FB_MATROX_G=y
|
||||
CONFIG_FB_VOODOO1=m
|
||||
CONFIG_DUMMY_CONSOLE_COLUMNS=128
|
||||
CONFIG_DUMMY_CONSOLE_ROWS=48
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
CONFIG_SOUND=m
|
||||
CONFIG_SND=m
|
||||
CONFIG_SND_SEQUENCER=m
|
||||
CONFIG_SND_MIXER_OSS=m
|
||||
CONFIG_SND_PCM_OSS=m
|
||||
CONFIG_SND_SEQUENCER_OSS=y
|
||||
CONFIG_SND_DYNAMIC_MINORS=y
|
||||
CONFIG_SND_AD1889=m
|
||||
CONFIG_SND_HARMONY=m
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=m
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_UHCI_HCD=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
CONFIG_LEDS_TRIGGER_IDE_DISK=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_AUXDISPLAY=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_QUOTA=y
|
||||
CONFIG_XFS_RT=y
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
CONFIG_QFMT_V2=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_NFS_FS=m
|
||||
# CONFIG_NFS_V2 is not set
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V3=y
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
||||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
# CONFIG_CIFS_DEBUG is not set
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_737=m
|
||||
CONFIG_NLS_CODEPAGE_775=m
|
||||
CONFIG_NLS_CODEPAGE_850=m
|
||||
CONFIG_NLS_CODEPAGE_852=m
|
||||
CONFIG_NLS_CODEPAGE_855=m
|
||||
CONFIG_NLS_CODEPAGE_857=m
|
||||
CONFIG_NLS_CODEPAGE_860=m
|
||||
CONFIG_NLS_CODEPAGE_861=m
|
||||
CONFIG_NLS_CODEPAGE_862=m
|
||||
CONFIG_NLS_CODEPAGE_863=m
|
||||
CONFIG_NLS_CODEPAGE_864=m
|
||||
CONFIG_NLS_CODEPAGE_865=m
|
||||
CONFIG_NLS_CODEPAGE_866=m
|
||||
CONFIG_NLS_CODEPAGE_869=m
|
||||
CONFIG_NLS_CODEPAGE_936=m
|
||||
CONFIG_NLS_CODEPAGE_950=m
|
||||
CONFIG_NLS_CODEPAGE_932=m
|
||||
CONFIG_NLS_CODEPAGE_949=m
|
||||
CONFIG_NLS_CODEPAGE_874=m
|
||||
CONFIG_NLS_ISO8859_8=m
|
||||
CONFIG_NLS_CODEPAGE_1250=y
|
||||
CONFIG_NLS_CODEPAGE_1251=m
|
||||
CONFIG_NLS_ASCII=m
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_2=m
|
||||
CONFIG_NLS_ISO8859_3=m
|
||||
CONFIG_NLS_ISO8859_4=m
|
||||
CONFIG_NLS_ISO8859_5=m
|
||||
CONFIG_NLS_ISO8859_6=m
|
||||
CONFIG_NLS_ISO8859_7=m
|
||||
CONFIG_NLS_ISO8859_9=m
|
||||
CONFIG_NLS_ISO8859_13=m
|
||||
CONFIG_NLS_ISO8859_14=m
|
||||
CONFIG_NLS_ISO8859_15=m
|
||||
CONFIG_NLS_KOI8_R=m
|
||||
CONFIG_NLS_KOI8_U=m
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_UNUSED_SYMBOLS=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_TIMER_STATS=y
|
||||
CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_RT_MUTEX_TESTER=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
CONFIG_RCU_CPU_STALL_INFO=y
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_LKDTM=m
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_SHA1=y
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_CAST5=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
CONFIG_CRYPTO_DES=y
|
||||
CONFIG_CRYPTO_KHAZAD=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
CONFIG_CRC_CCITT=m
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_FONTS=y
|
|
@ -0,0 +1,346 @@
|
|||
CONFIG_LOCALVERSION="-64bit"
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_IPC_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_NET_NS is not set
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_FORCE_LOAD=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_BLK_DEV_INTEGRITY=y
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
CONFIG_PA8X00=y
|
||||
CONFIG_MLONGCALLS=y
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_HPPB=y
|
||||
CONFIG_IOMMU_CCIO=y
|
||||
CONFIG_GSC_LASI=y
|
||||
CONFIG_GSC_WAX=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_STUB=m
|
||||
CONFIG_PCI_IOV=y
|
||||
CONFIG_GSC_DINO=y
|
||||
CONFIG_PCI_LBA=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM_USER=m
|
||||
CONFIG_XFRM_SUB_POLICY=y
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||
CONFIG_INET_XFRM_MODE_BEET=m
|
||||
CONFIG_INET_LRO=m
|
||||
CONFIG_INET_DIAG=m
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_ADVANCED is not set
|
||||
CONFIG_NETFILTER_NETLINK_LOG=y
|
||||
CONFIG_DCB=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_IDE=y
|
||||
CONFIG_IDE_GD=m
|
||||
CONFIG_IDE_GD_ATAPI=y
|
||||
CONFIG_BLK_DEV_IDECD=m
|
||||
CONFIG_BLK_DEV_NS87415=y
|
||||
CONFIG_BLK_DEV_SIIMAGE=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_SCSI_ISCSI_ATTRS=y
|
||||
CONFIG_SCSI_SRP_ATTRS=y
|
||||
CONFIG_ISCSI_BOOT_SYSFS=y
|
||||
CONFIG_SCSI_MPT2SAS=y
|
||||
CONFIG_SCSI_LASI700=m
|
||||
CONFIG_SCSI_SYM53C8XX_2=y
|
||||
CONFIG_SCSI_ZALON=y
|
||||
CONFIG_SCSI_QLA_ISCSI=m
|
||||
CONFIG_SCSI_DH=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_GENERIC=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_MD_LINEAR=m
|
||||
CONFIG_MD_RAID0=m
|
||||
CONFIG_BLK_DEV_DM=m
|
||||
CONFIG_DM_RAID=m
|
||||
CONFIG_DM_UEVENT=y
|
||||
CONFIG_FUSION=y
|
||||
CONFIG_FUSION_SPI=y
|
||||
CONFIG_FUSION_SAS=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_MACVLAN=m
|
||||
CONFIG_MACVTAP=m
|
||||
CONFIG_NETCONSOLE=m
|
||||
CONFIG_NETCONSOLE_DYNAMIC=y
|
||||
CONFIG_TUN=y
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_ADAPTEC is not set
|
||||
# CONFIG_NET_VENDOR_ALTEON is not set
|
||||
# CONFIG_NET_VENDOR_AMD is not set
|
||||
# CONFIG_NET_VENDOR_ATHEROS is not set
|
||||
# CONFIG_NET_CADENCE is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_BROCADE is not set
|
||||
# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
# CONFIG_NET_VENDOR_CISCO is not set
|
||||
CONFIG_NET_TULIP=y
|
||||
CONFIG_TULIP=y
|
||||
# CONFIG_NET_VENDOR_DLINK is not set
|
||||
# CONFIG_NET_VENDOR_EMULEX is not set
|
||||
# CONFIG_NET_VENDOR_EXAR is not set
|
||||
CONFIG_HP100=m
|
||||
CONFIG_E1000=y
|
||||
CONFIG_LASI_82596=y
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
# CONFIG_NET_VENDOR_MICREL is not set
|
||||
# CONFIG_NET_VENDOR_MYRI is not set
|
||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
# CONFIG_NET_VENDOR_NVIDIA is not set
|
||||
# CONFIG_NET_VENDOR_OKI is not set
|
||||
CONFIG_QLA3XXX=m
|
||||
CONFIG_QLCNIC=m
|
||||
CONFIG_QLGE=m
|
||||
# CONFIG_NET_VENDOR_REALTEK is not set
|
||||
# CONFIG_NET_VENDOR_RDC is not set
|
||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
# CONFIG_NET_VENDOR_SILAN is not set
|
||||
# CONFIG_NET_VENDOR_SIS is not set
|
||||
# CONFIG_NET_VENDOR_SMSC is not set
|
||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||
# CONFIG_NET_VENDOR_SUN is not set
|
||||
# CONFIG_NET_VENDOR_TEHUTI is not set
|
||||
# CONFIG_NET_VENDOR_TI is not set
|
||||
# CONFIG_NET_VENDOR_VIA is not set
|
||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_MARVELL_PHY=m
|
||||
CONFIG_DAVICOM_PHY=m
|
||||
CONFIG_QSEMI_PHY=m
|
||||
CONFIG_LXT_PHY=m
|
||||
CONFIG_CICADA_PHY=m
|
||||
CONFIG_VITESSE_PHY=m
|
||||
CONFIG_SMSC_PHY=m
|
||||
CONFIG_BROADCOM_PHY=m
|
||||
CONFIG_ICPLUS_PHY=m
|
||||
CONFIG_REALTEK_PHY=m
|
||||
CONFIG_NATIONAL_PHY=m
|
||||
CONFIG_STE10XP=m
|
||||
CONFIG_LSI_ET1011C_PHY=m
|
||||
CONFIG_MDIO_BITBANG=m
|
||||
CONFIG_SLIP=m
|
||||
CONFIG_SLIP_COMPRESSED=y
|
||||
CONFIG_SLIP_SMART=y
|
||||
CONFIG_SLIP_MODE_SLIP6=y
|
||||
# CONFIG_WLAN is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_KEYBOARD_HIL_OLD is not set
|
||||
# CONFIG_KEYBOARD_HIL is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_SERIO_SERPORT=m
|
||||
# CONFIG_HP_SDC is not set
|
||||
CONFIG_SERIO_RAW=m
|
||||
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
CONFIG_NOZOMI=m
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=8
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=8
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_JSM=m
|
||||
CONFIG_IPMI_HANDLER=y
|
||||
CONFIG_IPMI_DEVICE_INTERFACE=y
|
||||
CONFIG_IPMI_SI=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_TCG_TPM=m
|
||||
CONFIG_TCG_ATMEL=m
|
||||
CONFIG_PTP_1588_CLOCK=m
|
||||
CONFIG_SENSORS_I5K_AMB=m
|
||||
CONFIG_SENSORS_F71882FG=m
|
||||
CONFIG_SENSORS_PC87427=m
|
||||
CONFIG_SENSORS_VT1211=m
|
||||
CONFIG_SENSORS_VT8231=m
|
||||
CONFIG_SENSORS_W83627EHF=m
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_SOFT_WATCHDOG=m
|
||||
CONFIG_SSB=m
|
||||
CONFIG_SSB_DRIVER_PCICORE=y
|
||||
CONFIG_HTC_PASIC3=m
|
||||
CONFIG_LPC_SCH=m
|
||||
CONFIG_MFD_SM501=m
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=m
|
||||
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
|
||||
CONFIG_MEDIA_SUPPORT=m
|
||||
CONFIG_AGP=y
|
||||
CONFIG_AGP_PARISC=y
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_RADEON=y
|
||||
CONFIG_DRM_RADEON_UMS=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
# CONFIG_BACKLIGHT_GENERIC is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
CONFIG_HID=m
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_HID_DRAGONRISE=m
|
||||
CONFIG_DRAGONRISE_FF=y
|
||||
CONFIG_HID_KYE=m
|
||||
CONFIG_HID_GYRATION=m
|
||||
CONFIG_HID_TWINHAN=m
|
||||
CONFIG_LOGITECH_FF=y
|
||||
CONFIG_LOGIRUMBLEPAD2_FF=y
|
||||
CONFIG_HID_NTRIG=m
|
||||
CONFIG_HID_PANTHERLORD=m
|
||||
CONFIG_PANTHERLORD_FF=y
|
||||
CONFIG_HID_PETALYNX=m
|
||||
CONFIG_HID_SAMSUNG=m
|
||||
CONFIG_HID_SONY=m
|
||||
CONFIG_HID_SUNPLUS=m
|
||||
CONFIG_HID_GREENASIA=m
|
||||
CONFIG_GREENASIA_FF=y
|
||||
CONFIG_HID_SMARTJOYPLUS=m
|
||||
CONFIG_SMARTJOYPLUS_FF=y
|
||||
CONFIG_HID_TOPSEED=m
|
||||
CONFIG_HID_THRUSTMASTER=m
|
||||
CONFIG_THRUSTMASTER_FF=y
|
||||
CONFIG_HID_ZEROPLUS=m
|
||||
CONFIG_ZEROPLUS_FF=y
|
||||
CONFIG_USB_HID=m
|
||||
CONFIG_HID_PID=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEBUG=y
|
||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
CONFIG_USB_DYNAMIC_MINORS=y
|
||||
CONFIG_USB_MON=m
|
||||
CONFIG_USB_WUSB_CBAF=m
|
||||
CONFIG_USB_XHCI_HCD=m
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
CONFIG_USB_R8A66597_HCD=m
|
||||
CONFIG_USB_ACM=m
|
||||
CONFIG_USB_PRINTER=m
|
||||
CONFIG_USB_WDM=m
|
||||
CONFIG_USB_TMC=m
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=y
|
||||
CONFIG_LEDS_TRIGGER_ONESHOT=y
|
||||
CONFIG_LEDS_TRIGGER_IDE_DISK=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
||||
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
|
||||
CONFIG_UIO=y
|
||||
CONFIG_UIO_PDRV_GENIRQ=m
|
||||
CONFIG_UIO_AEC=m
|
||||
CONFIG_UIO_SERCOS3=m
|
||||
CONFIG_UIO_PCI_GENERIC=m
|
||||
CONFIG_STAGING=y
|
||||
# CONFIG_NET_VENDOR_SILICOM is not set
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_BTRFS_FS=m
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
CONFIG_QFMT_V2=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_FUSE_FS=y
|
||||
CONFIG_CUSE=y
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_UDF_FS=y
|
||||
CONFIG_VFAT_FS=m
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_SYSV_FS=y
|
||||
CONFIG_NFS_FS=m
|
||||
CONFIG_NFS_V4=m
|
||||
CONFIG_NFS_V4_1=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_NLS_DEFAULT="utf8"
|
||||
CONFIG_NLS_CODEPAGE_437=m
|
||||
CONFIG_NLS_CODEPAGE_850=m
|
||||
CONFIG_NLS_CODEPAGE_852=m
|
||||
CONFIG_NLS_CODEPAGE_1250=m
|
||||
CONFIG_NLS_CODEPAGE_1251=m
|
||||
CONFIG_NLS_ASCII=m
|
||||
CONFIG_NLS_ISO8859_1=m
|
||||
CONFIG_NLS_ISO8859_2=m
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_UNUSED_SYMBOLS=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_LOCKUP_DETECTOR=y
|
||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
|
||||
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
CONFIG_TIMER_STATS=y
|
||||
CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_FCRYPT=m
|
||||
CONFIG_CRYPTO_DEFLATE=m
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
CONFIG_CRC_CCITT=m
|
||||
CONFIG_LIBCRC32C=y
|
||||
CONFIG_XZ_DEC_X86=y
|
||||
CONFIG_XZ_DEC_POWERPC=y
|
||||
CONFIG_XZ_DEC_IA64=y
|
||||
CONFIG_XZ_DEC_ARM=y
|
||||
CONFIG_XZ_DEC_ARMTHUMB=y
|
||||
CONFIG_XZ_DEC_SPARC=y
|
|
@ -515,5 +515,17 @@
|
|||
nop /* 7 */
|
||||
.endm
|
||||
|
||||
/*
|
||||
* ASM_EXCEPTIONTABLE_ENTRY
|
||||
*
|
||||
* Creates an exception table entry.
|
||||
* Do not convert to a assembler macro. This won't work.
|
||||
*/
|
||||
#define ASM_EXCEPTIONTABLE_ENTRY(fault_addr, except_addr) \
|
||||
.section __ex_table,"aw" ! \
|
||||
ASM_ULONG_INSN fault_addr, except_addr ! \
|
||||
.previous
|
||||
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
#ifndef _PARISC_DELAY_H
|
||||
#define _PARISC_DELAY_H
|
||||
|
||||
#include <asm/special_insns.h> /* for mfctl() */
|
||||
#include <asm/processor.h> /* for boot_cpu_data */
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (C) 1993 Linus Torvalds
|
||||
*
|
||||
* Delay routines
|
||||
*/
|
||||
#ifndef _ASM_PARISC_DELAY_H
|
||||
#define _ASM_PARISC_DELAY_H
|
||||
|
||||
static __inline__ void __delay(unsigned long loops) {
|
||||
asm volatile(
|
||||
|
@ -19,25 +9,14 @@ static __inline__ void __delay(unsigned long loops) {
|
|||
: "=r" (loops) : "0" (loops));
|
||||
}
|
||||
|
||||
static __inline__ void __cr16_delay(unsigned long clocks) {
|
||||
unsigned long start;
|
||||
extern void __udelay(unsigned long usecs);
|
||||
extern void __udelay_bad(unsigned long usecs);
|
||||
|
||||
/*
|
||||
* Note: Due to unsigned math, cr16 rollovers shouldn't be
|
||||
* a problem here. However, on 32 bit, we need to make sure
|
||||
* we don't pass in too big a value. The current default
|
||||
* value of MAX_UDELAY_MS should help prevent this.
|
||||
*/
|
||||
|
||||
start = mfctl(16);
|
||||
while ((mfctl(16) - start) < clocks)
|
||||
;
|
||||
static inline void udelay(unsigned long usecs)
|
||||
{
|
||||
if (__builtin_constant_p(usecs) && (usecs) > 20000)
|
||||
__udelay_bad(usecs);
|
||||
__udelay(usecs);
|
||||
}
|
||||
|
||||
static __inline__ void __udelay(unsigned long usecs) {
|
||||
__cr16_delay(usecs * ((unsigned long)boot_cpu_data.cpu_hz / 1000000UL));
|
||||
}
|
||||
|
||||
#define udelay(n) __udelay(n)
|
||||
|
||||
#endif /* defined(_PARISC_DELAY_H) */
|
||||
#endif /* _ASM_PARISC_DELAY_H */
|
||||
|
|
|
@ -21,7 +21,6 @@ typedef struct {
|
|||
unsigned int irq_stack_usage;
|
||||
#ifdef CONFIG_SMP
|
||||
unsigned int irq_resched_count;
|
||||
unsigned int irq_call_count;
|
||||
#endif
|
||||
unsigned int irq_unaligned_count;
|
||||
unsigned int irq_fpassist_count;
|
||||
|
|
|
@ -19,5 +19,9 @@
|
|||
#define user_stack_pointer(regs) ((regs)->gr[30])
|
||||
unsigned long profile_pc(struct pt_regs *);
|
||||
|
||||
static inline unsigned long regs_return_value(struct pt_regs *regs)
|
||||
{
|
||||
return regs->gr[20];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -59,6 +59,7 @@ struct thread_info {
|
|||
#define TIF_32BIT 4 /* 32 bit binary */
|
||||
#define TIF_MEMDIE 5 /* is terminating due to OOM killer */
|
||||
#define TIF_RESTORE_SIGMASK 6 /* restore saved signal mask */
|
||||
#define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */
|
||||
#define TIF_NOTIFY_RESUME 8 /* callback before returning to user */
|
||||
#define TIF_SINGLESTEP 9 /* single stepping? */
|
||||
#define TIF_BLOCKSTEP 10 /* branch stepping? */
|
||||
|
@ -68,6 +69,7 @@ struct thread_info {
|
|||
#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
|
||||
#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
|
||||
#define _TIF_32BIT (1 << TIF_32BIT)
|
||||
#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
|
||||
#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
|
||||
#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
|
||||
#define _TIF_BLOCKSTEP (1 << TIF_BLOCKSTEP)
|
||||
|
@ -75,7 +77,7 @@ struct thread_info {
|
|||
#define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | \
|
||||
_TIF_NEED_RESCHED)
|
||||
#define _TIF_SYSCALL_TRACE_MASK (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | \
|
||||
_TIF_BLOCKSTEP)
|
||||
_TIF_BLOCKSTEP | _TIF_SYSCALL_AUDIT)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
|
@ -4,11 +4,14 @@
|
|||
/*
|
||||
* User space memory access functions
|
||||
*/
|
||||
#include <asm/processor.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm-generic/uaccess-unaligned.h>
|
||||
|
||||
#include <linux/sched.h>
|
||||
|
||||
#define VERIFY_READ 0
|
||||
#define VERIFY_WRITE 1
|
||||
|
||||
|
@ -33,12 +36,43 @@ extern int __get_user_bad(void);
|
|||
extern int __put_kernel_bad(void);
|
||||
extern int __put_user_bad(void);
|
||||
|
||||
static inline long access_ok(int type, const void __user * addr,
|
||||
unsigned long size)
|
||||
|
||||
/*
|
||||
* Test whether a block of memory is a valid user space address.
|
||||
* Returns 0 if the range is valid, nonzero otherwise.
|
||||
*/
|
||||
static inline int __range_not_ok(unsigned long addr, unsigned long size,
|
||||
unsigned long limit)
|
||||
{
|
||||
return 1;
|
||||
unsigned long __newaddr = addr + size;
|
||||
return (__newaddr < addr || __newaddr > limit || size > limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* access_ok: - Checks if a user space pointer is valid
|
||||
* @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
|
||||
* %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe
|
||||
* to write to a block, it is always safe to read from it.
|
||||
* @addr: User space pointer to start of block to check
|
||||
* @size: Size of block to check
|
||||
*
|
||||
* Context: User context only. This function may sleep.
|
||||
*
|
||||
* Checks if a pointer to a block of memory in user space is valid.
|
||||
*
|
||||
* Returns true (nonzero) if the memory block may be valid, false (zero)
|
||||
* if it is definitely invalid.
|
||||
*
|
||||
* Note that, depending on architecture, this function probably just
|
||||
* checks that the pointer is in the user space range - after calling
|
||||
* this function, memory access functions may still return -EFAULT.
|
||||
*/
|
||||
#define access_ok(type, addr, size) \
|
||||
( __chk_user_ptr(addr), \
|
||||
!__range_not_ok((unsigned long) (__force void *) (addr), \
|
||||
size, user_addr_max()) \
|
||||
)
|
||||
|
||||
#define put_user __put_user
|
||||
#define get_user __get_user
|
||||
|
||||
|
@ -59,12 +93,13 @@ static inline long access_ok(int type, const void __user * addr,
|
|||
/*
|
||||
* The exception table contains two values: the first is an address
|
||||
* for an instruction that is allowed to fault, and the second is
|
||||
* the address to the fixup routine.
|
||||
* the address to the fixup routine. Even on a 64bit kernel we could
|
||||
* use a 32bit (unsigned int) address here.
|
||||
*/
|
||||
|
||||
struct exception_table_entry {
|
||||
unsigned long insn; /* address of insn that is allowed to fault. */
|
||||
long fixup; /* fixup routine */
|
||||
unsigned long insn; /* address of insn that is allowed to fault. */
|
||||
unsigned long fixup; /* fixup routine */
|
||||
};
|
||||
|
||||
#define ASM_EXCEPTIONTABLE_ENTRY( fault_addr, except_addr )\
|
||||
|
@ -218,7 +253,11 @@ extern long lstrnlen_user(const char __user *,long);
|
|||
/*
|
||||
* Complex access routines -- macros
|
||||
*/
|
||||
#define user_addr_max() (~0UL)
|
||||
#ifdef CONFIG_COMPAT
|
||||
#define user_addr_max() (TASK_SIZE)
|
||||
#else
|
||||
#define user_addr_max() (DEFAULT_TASK_SIZE)
|
||||
#endif
|
||||
|
||||
#define strnlen_user lstrnlen_user
|
||||
#define strlen_user(str) lstrnlen_user(str, 0x7fffffffL)
|
||||
|
|
|
@ -19,20 +19,48 @@
|
|||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
verify () {
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "" 1>&2
|
||||
echo " *** Missing file: $1" 1>&2
|
||||
echo ' *** You need to run "make" before "make install".' 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure the files actually exist
|
||||
|
||||
verify "$2"
|
||||
verify "$3"
|
||||
|
||||
# User may have a custom install script
|
||||
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -n "${INSTALLKERNEL}" ]; then
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
fi
|
||||
|
||||
# Default install
|
||||
|
||||
if [ -f $4/vmlinuz ]; then
|
||||
mv $4/vmlinuz $4/vmlinuz.old
|
||||
if [ "$(basename $2)" = "zImage" ]; then
|
||||
# Compressed install
|
||||
echo "Installing compressed kernel"
|
||||
base=vmlinuz
|
||||
else
|
||||
# Normal install
|
||||
echo "Installing normal kernel"
|
||||
base=vmlinux
|
||||
fi
|
||||
|
||||
if [ -f $4/System.map ]; then
|
||||
mv $4/System.map $4/System.old
|
||||
if [ -f $4/$base-$1 ]; then
|
||||
mv $4/$base-$1 $4/$base-$1.old
|
||||
fi
|
||||
cat $2 > $4/$base-$1
|
||||
|
||||
# Install system map file
|
||||
if [ -f $4/System.map-$1 ]; then
|
||||
mv $4/System.map-$1 $4/System.map-$1.old
|
||||
fi
|
||||
cp $3 $4/System.map-$1
|
||||
|
||||
cat $2 > $4/vmlinuz
|
||||
cp $3 $4/System.map
|
||||
|
|
|
@ -29,7 +29,9 @@ obj-$(CONFIG_PCI) += pci.o
|
|||
obj-$(CONFIG_MODULES) += module.o
|
||||
obj-$(CONFIG_64BIT) += binfmt_elf32.o sys_parisc32.o signal32.o
|
||||
obj-$(CONFIG_STACKTRACE)+= stacktrace.o
|
||||
obj-$(CONFIG_AUDIT) += audit.o
|
||||
obj64-$(CONFIG_AUDIT) += compat_audit.o
|
||||
# only supported for PCX-W/U in 64-bit mode at the moment
|
||||
obj-$(CONFIG_64BIT) += perf.o perf_asm.o
|
||||
obj-$(CONFIG_64BIT) += perf.o perf_asm.o $(obj64-y)
|
||||
obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o
|
||||
obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += ftrace.o
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/audit.h>
|
||||
#include <asm/unistd.h>
|
||||
|
||||
static unsigned dir_class[] = {
|
||||
#include <asm-generic/audit_dir_write.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
static unsigned read_class[] = {
|
||||
#include <asm-generic/audit_read.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
static unsigned write_class[] = {
|
||||
#include <asm-generic/audit_write.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
static unsigned chattr_class[] = {
|
||||
#include <asm-generic/audit_change_attr.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
static unsigned signal_class[] = {
|
||||
#include <asm-generic/audit_signal.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
int audit_classify_arch(int arch)
|
||||
{
|
||||
#ifdef CONFIG_COMPAT
|
||||
if (arch == AUDIT_ARCH_PARISC)
|
||||
return 1;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int audit_classify_syscall(int abi, unsigned syscall)
|
||||
{
|
||||
#ifdef CONFIG_COMPAT
|
||||
extern int parisc32_classify_syscall(unsigned);
|
||||
if (abi == AUDIT_ARCH_PARISC)
|
||||
return parisc32_classify_syscall(syscall);
|
||||
#endif
|
||||
switch (syscall) {
|
||||
case __NR_open:
|
||||
return 2;
|
||||
case __NR_openat:
|
||||
return 3;
|
||||
case __NR_execve:
|
||||
return 5;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int __init audit_classes_init(void)
|
||||
{
|
||||
#ifdef CONFIG_COMPAT
|
||||
extern __u32 parisc32_dir_class[];
|
||||
extern __u32 parisc32_write_class[];
|
||||
extern __u32 parisc32_read_class[];
|
||||
extern __u32 parisc32_chattr_class[];
|
||||
extern __u32 parisc32_signal_class[];
|
||||
audit_register_class(AUDIT_CLASS_WRITE_32, parisc32_write_class);
|
||||
audit_register_class(AUDIT_CLASS_READ_32, parisc32_read_class);
|
||||
audit_register_class(AUDIT_CLASS_DIR_WRITE_32, parisc32_dir_class);
|
||||
audit_register_class(AUDIT_CLASS_CHATTR_32, parisc32_chattr_class);
|
||||
audit_register_class(AUDIT_CLASS_SIGNAL_32, parisc32_signal_class);
|
||||
#endif
|
||||
audit_register_class(AUDIT_CLASS_WRITE, write_class);
|
||||
audit_register_class(AUDIT_CLASS_READ, read_class);
|
||||
audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
|
||||
audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
|
||||
audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
|
||||
return 0;
|
||||
}
|
||||
|
||||
__initcall(audit_classes_init);
|
|
@ -0,0 +1,40 @@
|
|||
#include <asm/unistd.h>
|
||||
|
||||
unsigned int parisc32_dir_class[] = {
|
||||
#include <asm-generic/audit_dir_write.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
unsigned int parisc32_chattr_class[] = {
|
||||
#include <asm-generic/audit_change_attr.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
unsigned int parisc32_write_class[] = {
|
||||
#include <asm-generic/audit_write.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
unsigned int parisc32_read_class[] = {
|
||||
#include <asm-generic/audit_read.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
unsigned int parisc32_signal_class[] = {
|
||||
#include <asm-generic/audit_signal.h>
|
||||
~0U
|
||||
};
|
||||
|
||||
int parisc32_classify_syscall(unsigned syscall)
|
||||
{
|
||||
switch (syscall) {
|
||||
case __NR_open:
|
||||
return 2;
|
||||
case __NR_openat:
|
||||
return 3;
|
||||
case __NR_execve:
|
||||
return 5;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
|
@ -179,10 +179,6 @@ int arch_show_interrupts(struct seq_file *p, int prec)
|
|||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_resched_count);
|
||||
seq_puts(p, " Rescheduling interrupts\n");
|
||||
seq_printf(p, "%*s: ", prec, "CAL");
|
||||
for_each_online_cpu(j)
|
||||
seq_printf(p, "%10u ", irq_stats(j)->irq_call_count);
|
||||
seq_puts(p, " Function call interrupts\n");
|
||||
#endif
|
||||
seq_printf(p, "%*s: ", prec, "UAH");
|
||||
for_each_online_cpu(j)
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/security.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/audit.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/pgtable.h>
|
||||
|
@ -267,11 +268,28 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
|
|||
|
||||
long do_syscall_trace_enter(struct pt_regs *regs)
|
||||
{
|
||||
long ret = 0;
|
||||
|
||||
if (test_thread_flag(TIF_SYSCALL_TRACE) &&
|
||||
tracehook_report_syscall_entry(regs))
|
||||
return -1L;
|
||||
ret = -1L;
|
||||
|
||||
return regs->gr[20];
|
||||
#ifdef CONFIG_64BIT
|
||||
if (!is_compat_task())
|
||||
audit_syscall_entry(AUDIT_ARCH_PARISC64,
|
||||
regs->gr[20],
|
||||
regs->gr[26], regs->gr[25],
|
||||
regs->gr[24], regs->gr[23]);
|
||||
else
|
||||
#endif
|
||||
audit_syscall_entry(AUDIT_ARCH_PARISC,
|
||||
regs->gr[20] & 0xffffffff,
|
||||
regs->gr[26] & 0xffffffff,
|
||||
regs->gr[25] & 0xffffffff,
|
||||
regs->gr[24] & 0xffffffff,
|
||||
regs->gr[23] & 0xffffffff);
|
||||
|
||||
return ret ? : regs->gr[20];
|
||||
}
|
||||
|
||||
void do_syscall_trace_exit(struct pt_regs *regs)
|
||||
|
@ -279,6 +297,8 @@ void do_syscall_trace_exit(struct pt_regs *regs)
|
|||
int stepping = test_thread_flag(TIF_SINGLESTEP) ||
|
||||
test_thread_flag(TIF_BLOCKSTEP);
|
||||
|
||||
audit_syscall_exit(regs);
|
||||
|
||||
if (stepping || test_thread_flag(TIF_SYSCALL_TRACE))
|
||||
tracehook_report_syscall_exit(regs, stepping);
|
||||
}
|
||||
|
|
|
@ -318,8 +318,12 @@ static int __init parisc_init(void)
|
|||
pdc_stable_write(0x40, &osid, sizeof(osid));
|
||||
|
||||
processor_init();
|
||||
printk(KERN_INFO "CPU(s): %d x %s at %d.%06d MHz\n",
|
||||
num_present_cpus(),
|
||||
#ifdef CONFIG_SMP
|
||||
pr_info("CPU(s): %d out of %d %s at %d.%06d MHz online\n",
|
||||
num_online_cpus(), num_present_cpus(),
|
||||
#else
|
||||
pr_info("CPU(s): 1 x %s at %d.%06d MHz\n",
|
||||
#endif
|
||||
boot_cpu_data.cpu_name,
|
||||
boot_cpu_data.cpu_hz / 1000000,
|
||||
boot_cpu_data.cpu_hz % 1000000 );
|
||||
|
|
|
@ -125,11 +125,6 @@ ipi_interrupt(int irq, void *dev_id)
|
|||
unsigned long ops;
|
||||
unsigned long flags;
|
||||
|
||||
/* Count this now; we may make a call that never returns. */
|
||||
inc_irq_stat(irq_call_count);
|
||||
|
||||
mb(); /* Order interrupt and bit testing. */
|
||||
|
||||
for (;;) {
|
||||
spinlock_t *lock = &per_cpu(ipi_lock, this_cpu);
|
||||
spin_lock_irqsave(lock, flags);
|
||||
|
|
|
@ -649,10 +649,8 @@ cas_action:
|
|||
/* Two exception table entries, one for the load,
|
||||
the other for the store. Either return -EFAULT.
|
||||
Each of the entries must be relocated. */
|
||||
.section __ex_table,"aw"
|
||||
ASM_ULONG_INSN (1b - linux_gateway_page), (3b - linux_gateway_page)
|
||||
ASM_ULONG_INSN (2b - linux_gateway_page), (3b - linux_gateway_page)
|
||||
.previous
|
||||
ASM_EXCEPTIONTABLE_ENTRY(1b-linux_gateway_page, 3b-linux_gateway_page)
|
||||
ASM_EXCEPTIONTABLE_ENTRY(2b-linux_gateway_page, 3b-linux_gateway_page)
|
||||
|
||||
|
||||
/* Make sure nothing else is placed on this page */
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
#
|
||||
|
||||
lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o \
|
||||
ucmpdi2.o
|
||||
ucmpdi2.o delay.o
|
||||
|
||||
obj-y := iomap.o
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Precise Delay Loops for parisc
|
||||
*
|
||||
* based on code by:
|
||||
* Copyright (C) 1993 Linus Torvalds
|
||||
* Copyright (C) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
||||
* Copyright (C) 2008 Jiri Hladky <hladky _dot_ jiri _at_ gmail _dot_ com>
|
||||
*
|
||||
* parisc implementation:
|
||||
* Copyright (C) 2013 Helge Deller <deller@gmx.de>
|
||||
*/
|
||||
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/preempt.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <asm/processor.h>
|
||||
#include <asm/delay.h>
|
||||
|
||||
#include <asm/special_insns.h> /* for mfctl() */
|
||||
#include <asm/processor.h> /* for boot_cpu_data */
|
||||
|
||||
/* CR16 based delay: */
|
||||
static void __cr16_delay(unsigned long __loops)
|
||||
{
|
||||
/*
|
||||
* Note: Due to unsigned math, cr16 rollovers shouldn't be
|
||||
* a problem here. However, on 32 bit, we need to make sure
|
||||
* we don't pass in too big a value. The current default
|
||||
* value of MAX_UDELAY_MS should help prevent this.
|
||||
*/
|
||||
u32 bclock, now, loops = __loops;
|
||||
int cpu;
|
||||
|
||||
preempt_disable();
|
||||
cpu = smp_processor_id();
|
||||
bclock = mfctl(16);
|
||||
for (;;) {
|
||||
now = mfctl(16);
|
||||
if ((now - bclock) >= loops)
|
||||
break;
|
||||
|
||||
/* Allow RT tasks to run */
|
||||
preempt_enable();
|
||||
asm volatile(" nop\n");
|
||||
barrier();
|
||||
preempt_disable();
|
||||
|
||||
/*
|
||||
* It is possible that we moved to another CPU, and
|
||||
* since CR16's are per-cpu we need to calculate
|
||||
* that. The delay must guarantee that we wait "at
|
||||
* least" the amount of time. Being moved to another
|
||||
* CPU could make the wait longer but we just need to
|
||||
* make sure we waited long enough. Rebalance the
|
||||
* counter for this CPU.
|
||||
*/
|
||||
if (unlikely(cpu != smp_processor_id())) {
|
||||
loops -= (now - bclock);
|
||||
cpu = smp_processor_id();
|
||||
bclock = mfctl(16);
|
||||
}
|
||||
}
|
||||
preempt_enable();
|
||||
}
|
||||
|
||||
|
||||
void __udelay(unsigned long usecs)
|
||||
{
|
||||
__cr16_delay(usecs * ((unsigned long)boot_cpu_data.cpu_hz / 1000000UL));
|
||||
}
|
||||
EXPORT_SYMBOL(__udelay);
|
|
@ -88,9 +88,7 @@ ENDPROC(lclear_user)
|
|||
ldo 1(%r25),%r25
|
||||
.previous
|
||||
|
||||
.section __ex_table,"aw"
|
||||
ASM_ULONG_INSN 1b,2b
|
||||
.previous
|
||||
ASM_EXCEPTIONTABLE_ENTRY(1b,2b)
|
||||
|
||||
.procend
|
||||
|
||||
|
@ -129,10 +127,8 @@ ENDPROC(lstrnlen_user)
|
|||
copy %r24,%r26 /* reset r26 so 0 is returned on fault */
|
||||
.previous
|
||||
|
||||
.section __ex_table,"aw"
|
||||
ASM_ULONG_INSN 1b,3b
|
||||
ASM_ULONG_INSN 2b,3b
|
||||
.previous
|
||||
ASM_EXCEPTIONTABLE_ENTRY(1b,3b)
|
||||
ASM_EXCEPTIONTABLE_ENTRY(2b,3b)
|
||||
|
||||
.procend
|
||||
|
||||
|
|
|
@ -484,7 +484,6 @@ typedef int VOID;
|
|||
* | |G|L|E|U|X|
|
||||
* +-------+-------+-------+-------+-------+-------+-------+-------+
|
||||
*/
|
||||
#define Allexception(object) (object)
|
||||
#define Greaterthanbit(object) Bitfield_extract( 27, 1,object)
|
||||
#define Lessthanbit(object) Bitfield_extract( 28, 1,object)
|
||||
#define Equalbit(object) Bitfield_extract( 29, 1,object)
|
||||
|
|
|
@ -142,6 +142,12 @@ int fixup_exception(struct pt_regs *regs)
|
|||
{
|
||||
const struct exception_table_entry *fix;
|
||||
|
||||
/* If we only stored 32bit addresses in the exception table we can drop
|
||||
* out if we faulted on a 64bit address. */
|
||||
if ((sizeof(regs->iaoq[0]) > sizeof(fix->insn))
|
||||
&& (regs->iaoq[0] >> 32))
|
||||
return 0;
|
||||
|
||||
fix = search_exception_tables(regs->iaoq[0]);
|
||||
if (fix) {
|
||||
struct exception_data *d;
|
||||
|
@ -274,12 +280,22 @@ bad_area:
|
|||
}
|
||||
show_regs(regs);
|
||||
#endif
|
||||
/* FIXME: actually we need to get the signo and code correct */
|
||||
si.si_signo = SIGSEGV;
|
||||
switch (code) {
|
||||
case 15: /* Data TLB miss fault/Data page fault */
|
||||
case 17: /* NA data TLB miss / page fault */
|
||||
case 18: /* Unaligned access - PCXS only */
|
||||
si.si_signo = SIGBUS;
|
||||
si.si_code = BUS_ADRERR;
|
||||
break;
|
||||
case 16: /* Non-access instruction TLB miss fault */
|
||||
case 26: /* PCXL: Data memory access rights trap */
|
||||
default:
|
||||
si.si_signo = SIGSEGV;
|
||||
si.si_code = SEGV_MAPERR;
|
||||
}
|
||||
si.si_errno = 0;
|
||||
si.si_code = SEGV_MAPERR;
|
||||
si.si_addr = (void __user *) address;
|
||||
force_sig_info(SIGSEGV, &si, current);
|
||||
force_sig_info(si.si_signo, &si, current);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* core code for console driver using HP's STI firmware
|
||||
*
|
||||
* Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
|
||||
* Copyright (C) 2001-2003 Helge Deller <deller@gmx.de>
|
||||
* Copyright (C) 2001-2013 Helge Deller <deller@gmx.de>
|
||||
* Copyright (C) 2001-2002 Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
*
|
||||
* TODO:
|
||||
|
@ -30,7 +30,7 @@
|
|||
|
||||
#include "../sticore.h"
|
||||
|
||||
#define STI_DRIVERVERSION "Version 0.9a"
|
||||
#define STI_DRIVERVERSION "Version 0.9b"
|
||||
|
||||
static struct sti_struct *default_sti __read_mostly;
|
||||
|
||||
|
@ -73,28 +73,34 @@ static const struct sti_init_flags default_init_flags = {
|
|||
|
||||
static int sti_init_graph(struct sti_struct *sti)
|
||||
{
|
||||
struct sti_init_inptr_ext inptr_ext = { 0, };
|
||||
struct sti_init_inptr inptr = {
|
||||
.text_planes = 3, /* # of text planes (max 3 for STI) */
|
||||
.ext_ptr = STI_PTR(&inptr_ext)
|
||||
};
|
||||
struct sti_init_outptr outptr = { 0, };
|
||||
struct sti_init_inptr *inptr = &sti->sti_data->init_inptr;
|
||||
struct sti_init_inptr_ext *inptr_ext = &sti->sti_data->init_inptr_ext;
|
||||
struct sti_init_outptr *outptr = &sti->sti_data->init_outptr;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
int ret, err;
|
||||
|
||||
spin_lock_irqsave(&sti->lock, flags);
|
||||
|
||||
ret = STI_CALL(sti->init_graph, &default_init_flags, &inptr,
|
||||
&outptr, sti->glob_cfg);
|
||||
memset(inptr, 0, sizeof(*inptr));
|
||||
inptr->text_planes = 3; /* # of text planes (max 3 for STI) */
|
||||
memset(inptr_ext, 0, sizeof(*inptr_ext));
|
||||
inptr->ext_ptr = STI_PTR(inptr_ext);
|
||||
outptr->errno = 0;
|
||||
|
||||
ret = sti_call(sti, sti->init_graph, &default_init_flags, inptr,
|
||||
outptr, sti->glob_cfg);
|
||||
|
||||
if (ret >= 0)
|
||||
sti->text_planes = outptr->text_planes;
|
||||
err = outptr->errno;
|
||||
|
||||
spin_unlock_irqrestore(&sti->lock, flags);
|
||||
|
||||
if (ret < 0) {
|
||||
printk(KERN_ERR "STI init_graph failed (ret %d, errno %d)\n",ret,outptr.errno);
|
||||
pr_err("STI init_graph failed (ret %d, errno %d)\n", ret, err);
|
||||
return -1;
|
||||
}
|
||||
|
||||
sti->text_planes = outptr.text_planes;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -104,16 +110,18 @@ static const struct sti_conf_flags default_conf_flags = {
|
|||
|
||||
static void sti_inq_conf(struct sti_struct *sti)
|
||||
{
|
||||
struct sti_conf_inptr inptr = { 0, };
|
||||
struct sti_conf_inptr *inptr = &sti->sti_data->inq_inptr;
|
||||
struct sti_conf_outptr *outptr = &sti->sti_data->inq_outptr;
|
||||
unsigned long flags;
|
||||
s32 ret;
|
||||
|
||||
sti->outptr.ext_ptr = STI_PTR(&sti->outptr_ext);
|
||||
outptr->ext_ptr = STI_PTR(&sti->sti_data->inq_outptr_ext);
|
||||
|
||||
do {
|
||||
spin_lock_irqsave(&sti->lock, flags);
|
||||
ret = STI_CALL(sti->inq_conf, &default_conf_flags,
|
||||
&inptr, &sti->outptr, sti->glob_cfg);
|
||||
memset(inptr, 0, sizeof(*inptr));
|
||||
ret = sti_call(sti, sti->inq_conf, &default_conf_flags,
|
||||
inptr, outptr, sti->glob_cfg);
|
||||
spin_unlock_irqrestore(&sti->lock, flags);
|
||||
} while (ret == 1);
|
||||
}
|
||||
|
@ -126,7 +134,8 @@ static const struct sti_font_flags default_font_flags = {
|
|||
void
|
||||
sti_putc(struct sti_struct *sti, int c, int y, int x)
|
||||
{
|
||||
struct sti_font_inptr inptr = {
|
||||
struct sti_font_inptr *inptr = &sti->sti_data->font_inptr;
|
||||
struct sti_font_inptr inptr_default = {
|
||||
.font_start_addr= STI_PTR(sti->font->raw),
|
||||
.index = c_index(sti, c),
|
||||
.fg_color = c_fg(sti, c),
|
||||
|
@ -134,14 +143,15 @@ sti_putc(struct sti_struct *sti, int c, int y, int x)
|
|||
.dest_x = x * sti->font_width,
|
||||
.dest_y = y * sti->font_height,
|
||||
};
|
||||
struct sti_font_outptr outptr = { 0, };
|
||||
struct sti_font_outptr *outptr = &sti->sti_data->font_outptr;
|
||||
s32 ret;
|
||||
unsigned long flags;
|
||||
|
||||
do {
|
||||
spin_lock_irqsave(&sti->lock, flags);
|
||||
ret = STI_CALL(sti->font_unpmv, &default_font_flags,
|
||||
&inptr, &outptr, sti->glob_cfg);
|
||||
*inptr = inptr_default;
|
||||
ret = sti_call(sti, sti->font_unpmv, &default_font_flags,
|
||||
inptr, outptr, sti->glob_cfg);
|
||||
spin_unlock_irqrestore(&sti->lock, flags);
|
||||
} while (ret == 1);
|
||||
}
|
||||
|
@ -156,7 +166,8 @@ void
|
|||
sti_set(struct sti_struct *sti, int src_y, int src_x,
|
||||
int height, int width, u8 color)
|
||||
{
|
||||
struct sti_blkmv_inptr inptr = {
|
||||
struct sti_blkmv_inptr *inptr = &sti->sti_data->blkmv_inptr;
|
||||
struct sti_blkmv_inptr inptr_default = {
|
||||
.fg_color = color,
|
||||
.bg_color = color,
|
||||
.src_x = src_x,
|
||||
|
@ -166,14 +177,15 @@ sti_set(struct sti_struct *sti, int src_y, int src_x,
|
|||
.width = width,
|
||||
.height = height,
|
||||
};
|
||||
struct sti_blkmv_outptr outptr = { 0, };
|
||||
struct sti_blkmv_outptr *outptr = &sti->sti_data->blkmv_outptr;
|
||||
s32 ret;
|
||||
unsigned long flags;
|
||||
|
||||
do {
|
||||
spin_lock_irqsave(&sti->lock, flags);
|
||||
ret = STI_CALL(sti->block_move, &clear_blkmv_flags,
|
||||
&inptr, &outptr, sti->glob_cfg);
|
||||
*inptr = inptr_default;
|
||||
ret = sti_call(sti, sti->block_move, &clear_blkmv_flags,
|
||||
inptr, outptr, sti->glob_cfg);
|
||||
spin_unlock_irqrestore(&sti->lock, flags);
|
||||
} while (ret == 1);
|
||||
}
|
||||
|
@ -182,7 +194,8 @@ void
|
|||
sti_clear(struct sti_struct *sti, int src_y, int src_x,
|
||||
int height, int width, int c)
|
||||
{
|
||||
struct sti_blkmv_inptr inptr = {
|
||||
struct sti_blkmv_inptr *inptr = &sti->sti_data->blkmv_inptr;
|
||||
struct sti_blkmv_inptr inptr_default = {
|
||||
.fg_color = c_fg(sti, c),
|
||||
.bg_color = c_bg(sti, c),
|
||||
.src_x = src_x * sti->font_width,
|
||||
|
@ -192,14 +205,15 @@ sti_clear(struct sti_struct *sti, int src_y, int src_x,
|
|||
.width = width * sti->font_width,
|
||||
.height = height* sti->font_height,
|
||||
};
|
||||
struct sti_blkmv_outptr outptr = { 0, };
|
||||
struct sti_blkmv_outptr *outptr = &sti->sti_data->blkmv_outptr;
|
||||
s32 ret;
|
||||
unsigned long flags;
|
||||
|
||||
do {
|
||||
spin_lock_irqsave(&sti->lock, flags);
|
||||
ret = STI_CALL(sti->block_move, &clear_blkmv_flags,
|
||||
&inptr, &outptr, sti->glob_cfg);
|
||||
*inptr = inptr_default;
|
||||
ret = sti_call(sti, sti->block_move, &clear_blkmv_flags,
|
||||
inptr, outptr, sti->glob_cfg);
|
||||
spin_unlock_irqrestore(&sti->lock, flags);
|
||||
} while (ret == 1);
|
||||
}
|
||||
|
@ -212,7 +226,8 @@ void
|
|||
sti_bmove(struct sti_struct *sti, int src_y, int src_x,
|
||||
int dst_y, int dst_x, int height, int width)
|
||||
{
|
||||
struct sti_blkmv_inptr inptr = {
|
||||
struct sti_blkmv_inptr *inptr = &sti->sti_data->blkmv_inptr;
|
||||
struct sti_blkmv_inptr inptr_default = {
|
||||
.src_x = src_x * sti->font_width,
|
||||
.src_y = src_y * sti->font_height,
|
||||
.dest_x = dst_x * sti->font_width,
|
||||
|
@ -220,14 +235,15 @@ sti_bmove(struct sti_struct *sti, int src_y, int src_x,
|
|||
.width = width * sti->font_width,
|
||||
.height = height* sti->font_height,
|
||||
};
|
||||
struct sti_blkmv_outptr outptr = { 0, };
|
||||
struct sti_blkmv_outptr *outptr = &sti->sti_data->blkmv_outptr;
|
||||
s32 ret;
|
||||
unsigned long flags;
|
||||
|
||||
do {
|
||||
spin_lock_irqsave(&sti->lock, flags);
|
||||
ret = STI_CALL(sti->block_move, &default_blkmv_flags,
|
||||
&inptr, &outptr, sti->glob_cfg);
|
||||
*inptr = inptr_default;
|
||||
ret = sti_call(sti, sti->block_move, &default_blkmv_flags,
|
||||
inptr, outptr, sti->glob_cfg);
|
||||
spin_unlock_irqrestore(&sti->lock, flags);
|
||||
} while (ret == 1);
|
||||
}
|
||||
|
@ -284,7 +300,7 @@ __setup("sti=", sti_setup);
|
|||
|
||||
|
||||
|
||||
static char *font_name[MAX_STI_ROMS] = { "VGA8x16", };
|
||||
static char *font_name[MAX_STI_ROMS];
|
||||
static int font_index[MAX_STI_ROMS],
|
||||
font_height[MAX_STI_ROMS],
|
||||
font_width[MAX_STI_ROMS];
|
||||
|
@ -389,10 +405,10 @@ static void sti_dump_outptr(struct sti_struct *sti)
|
|||
"%d used bits\n"
|
||||
"%d planes\n"
|
||||
"attributes %08x\n",
|
||||
sti->outptr.bits_per_pixel,
|
||||
sti->outptr.bits_used,
|
||||
sti->outptr.planes,
|
||||
sti->outptr.attributes));
|
||||
sti->sti_data->inq_outptr.bits_per_pixel,
|
||||
sti->sti_data->inq_outptr.bits_used,
|
||||
sti->sti_data->inq_outptr.planes,
|
||||
sti->sti_data->inq_outptr.attributes));
|
||||
}
|
||||
|
||||
static int sti_init_glob_cfg(struct sti_struct *sti, unsigned long rom_address,
|
||||
|
@ -402,24 +418,21 @@ static int sti_init_glob_cfg(struct sti_struct *sti, unsigned long rom_address,
|
|||
struct sti_glob_cfg_ext *glob_cfg_ext;
|
||||
void *save_addr;
|
||||
void *sti_mem_addr;
|
||||
const int save_addr_size = 1024; /* XXX */
|
||||
int i;
|
||||
int i, size;
|
||||
|
||||
if (!sti->sti_mem_request)
|
||||
if (sti->sti_mem_request < 256)
|
||||
sti->sti_mem_request = 256; /* STI default */
|
||||
|
||||
glob_cfg = kzalloc(sizeof(*sti->glob_cfg), GFP_KERNEL);
|
||||
glob_cfg_ext = kzalloc(sizeof(*glob_cfg_ext), GFP_KERNEL);
|
||||
save_addr = kzalloc(save_addr_size, GFP_KERNEL);
|
||||
sti_mem_addr = kzalloc(sti->sti_mem_request, GFP_KERNEL);
|
||||
size = sizeof(struct sti_all_data) + sti->sti_mem_request - 256;
|
||||
|
||||
if (!(glob_cfg && glob_cfg_ext && save_addr && sti_mem_addr)) {
|
||||
kfree(glob_cfg);
|
||||
kfree(glob_cfg_ext);
|
||||
kfree(save_addr);
|
||||
kfree(sti_mem_addr);
|
||||
sti->sti_data = kzalloc(size, STI_LOWMEM);
|
||||
if (!sti->sti_data)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
glob_cfg = &sti->sti_data->glob_cfg;
|
||||
glob_cfg_ext = &sti->sti_data->glob_cfg_ext;
|
||||
save_addr = &sti->sti_data->save_addr;
|
||||
sti_mem_addr = &sti->sti_data->sti_mem_addr;
|
||||
|
||||
glob_cfg->ext_ptr = STI_PTR(glob_cfg_ext);
|
||||
glob_cfg->save_addr = STI_PTR(save_addr);
|
||||
|
@ -475,32 +488,31 @@ static int sti_init_glob_cfg(struct sti_struct *sti, unsigned long rom_address,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FB
|
||||
#ifdef CONFIG_FONTS
|
||||
static struct sti_cooked_font *
|
||||
sti_select_fbfont(struct sti_cooked_rom *cooked_rom, const char *fbfont_name)
|
||||
{
|
||||
const struct font_desc *fbfont;
|
||||
const struct font_desc *fbfont = NULL;
|
||||
unsigned int size, bpc;
|
||||
void *dest;
|
||||
struct sti_rom_font *nf;
|
||||
struct sti_cooked_font *cooked_font;
|
||||
|
||||
if (!fbfont_name || !strlen(fbfont_name))
|
||||
return NULL;
|
||||
fbfont = find_font(fbfont_name);
|
||||
if (fbfont_name && strlen(fbfont_name))
|
||||
fbfont = find_font(fbfont_name);
|
||||
if (!fbfont)
|
||||
fbfont = get_default_font(1024,768, ~(u32)0, ~(u32)0);
|
||||
if (!fbfont)
|
||||
return NULL;
|
||||
|
||||
DPRINTK((KERN_DEBUG "selected %dx%d fb-font %s\n",
|
||||
fbfont->width, fbfont->height, fbfont->name));
|
||||
pr_info("STI selected %dx%d framebuffer font %s for sticon\n",
|
||||
fbfont->width, fbfont->height, fbfont->name);
|
||||
|
||||
bpc = ((fbfont->width+7)/8) * fbfont->height;
|
||||
size = bpc * 256;
|
||||
size += sizeof(struct sti_rom_font);
|
||||
|
||||
nf = kzalloc(size, GFP_KERNEL);
|
||||
nf = kzalloc(size, STI_LOWMEM);
|
||||
if (!nf)
|
||||
return NULL;
|
||||
|
||||
|
@ -637,7 +649,7 @@ static void *sti_bmode_font_raw(struct sti_cooked_font *f)
|
|||
unsigned char *n, *p, *q;
|
||||
int size = f->raw->bytes_per_char*256+sizeof(struct sti_rom_font);
|
||||
|
||||
n = kzalloc (4*size, GFP_KERNEL);
|
||||
n = kzalloc(4*size, STI_LOWMEM);
|
||||
if (!n)
|
||||
return NULL;
|
||||
p = n + 3;
|
||||
|
@ -673,7 +685,7 @@ static struct sti_rom *sti_get_bmode_rom (unsigned long address)
|
|||
sti_bmode_rom_copy(address + BMODE_LAST_ADDR_OFFS, sizeof(size), &size);
|
||||
|
||||
size = (size+3) / 4;
|
||||
raw = kmalloc(size, GFP_KERNEL);
|
||||
raw = kmalloc(size, STI_LOWMEM);
|
||||
if (raw) {
|
||||
sti_bmode_rom_copy(address, size, raw);
|
||||
memmove (&raw->res004, &raw->type[0], 0x3c);
|
||||
|
@ -707,7 +719,7 @@ static struct sti_rom *sti_get_wmode_rom(unsigned long address)
|
|||
/* read the ROM size directly from the struct in ROM */
|
||||
size = gsc_readl(address + offsetof(struct sti_rom,last_addr));
|
||||
|
||||
raw = kmalloc(size, GFP_KERNEL);
|
||||
raw = kmalloc(size, STI_LOWMEM);
|
||||
if (raw)
|
||||
sti_rom_copy(address, size, raw);
|
||||
|
||||
|
@ -743,6 +755,10 @@ static int sti_read_rom(int wordmode, struct sti_struct *sti,
|
|||
|
||||
address = (unsigned long) STI_PTR(raw);
|
||||
|
||||
pr_info("STI ROM supports 32 %sbit firmware functions.\n",
|
||||
raw->alt_code_type == ALT_CODE_TYPE_PA_RISC_64
|
||||
? "and 64 " : "");
|
||||
|
||||
sti->font_unpmv = address + (raw->font_unpmv & 0x03ffffff);
|
||||
sti->block_move = address + (raw->block_move & 0x03ffffff);
|
||||
sti->init_graph = address + (raw->init_graph & 0x03ffffff);
|
||||
|
@ -901,7 +917,8 @@ test_rom:
|
|||
sti_dump_globcfg(sti->glob_cfg, sti->sti_mem_request);
|
||||
sti_dump_outptr(sti);
|
||||
|
||||
printk(KERN_INFO " graphics card name: %s\n", sti->outptr.dev_name );
|
||||
pr_info(" graphics card name: %s\n",
|
||||
sti->sti_data->inq_outptr.dev_name);
|
||||
|
||||
sti_roms[num_sti_roms] = sti;
|
||||
num_sti_roms++;
|
||||
|
@ -1073,6 +1090,29 @@ struct sti_struct * sti_get_rom(unsigned int index)
|
|||
}
|
||||
EXPORT_SYMBOL(sti_get_rom);
|
||||
|
||||
|
||||
int sti_call(const struct sti_struct *sti, unsigned long func,
|
||||
const void *flags, void *inptr, void *outptr,
|
||||
struct sti_glob_cfg *glob_cfg)
|
||||
{
|
||||
unsigned long _flags = STI_PTR(flags);
|
||||
unsigned long _inptr = STI_PTR(inptr);
|
||||
unsigned long _outptr = STI_PTR(outptr);
|
||||
unsigned long _glob_cfg = STI_PTR(glob_cfg);
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
/* Check for overflow when using 32bit STI on 64bit kernel. */
|
||||
if (WARN_ONCE(_flags>>32 || _inptr>>32 || _outptr>>32 || _glob_cfg>>32,
|
||||
"Out of 32bit-range pointers!"))
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
ret = pdc_sti_call(func, _flags, _inptr, _outptr, _glob_cfg);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
MODULE_AUTHOR("Philipp Rumpf, Helge Deller, Thomas Bogendoerfer");
|
||||
MODULE_DESCRIPTION("Core STI driver for HP's NGLE series graphics cards in HP PARISC machines");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
#define STI_FONT_HPROMAN8 1
|
||||
#define STI_FONT_KANA8 2
|
||||
|
||||
#define ALT_CODE_TYPE_UNKNOWN 0x00 /* alt code type values */
|
||||
#define ALT_CODE_TYPE_PA_RISC_64 0x01
|
||||
|
||||
/* The latency of the STI functions cannot really be reduced by setting
|
||||
* this to 0; STI doesn't seem to be designed to allow calling a different
|
||||
* function (or the same function with different arguments) after a
|
||||
|
@ -40,14 +43,6 @@
|
|||
|
||||
#define STI_PTR(p) ( virt_to_phys(p) )
|
||||
#define PTR_STI(p) ( phys_to_virt((unsigned long)p) )
|
||||
#define STI_CALL(func, flags, inptr, outptr, glob_cfg) \
|
||||
({ \
|
||||
pdc_sti_call( func, STI_PTR(flags), \
|
||||
STI_PTR(inptr), \
|
||||
STI_PTR(outptr), \
|
||||
STI_PTR(glob_cfg)); \
|
||||
})
|
||||
|
||||
|
||||
#define sti_onscreen_x(sti) (sti->glob_cfg->onscreen_x)
|
||||
#define sti_onscreen_y(sti) (sti->glob_cfg->onscreen_y)
|
||||
|
@ -56,6 +51,12 @@
|
|||
#define sti_font_x(sti) (PTR_STI(sti->font)->width)
|
||||
#define sti_font_y(sti) (PTR_STI(sti->font)->height)
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define STI_LOWMEM (GFP_KERNEL | GFP_DMA)
|
||||
#else
|
||||
#define STI_LOWMEM (GFP_KERNEL)
|
||||
#endif
|
||||
|
||||
|
||||
/* STI function configuration structs */
|
||||
|
||||
|
@ -306,6 +307,34 @@ struct sti_blkmv_outptr {
|
|||
};
|
||||
|
||||
|
||||
/* sti_all_data is an internal struct which needs to be allocated in
|
||||
* low memory (< 4GB) if STI is used with 32bit STI on a 64bit kernel */
|
||||
|
||||
struct sti_all_data {
|
||||
struct sti_glob_cfg glob_cfg;
|
||||
struct sti_glob_cfg_ext glob_cfg_ext;
|
||||
|
||||
struct sti_conf_inptr inq_inptr;
|
||||
struct sti_conf_outptr inq_outptr; /* configuration */
|
||||
struct sti_conf_outptr_ext inq_outptr_ext;
|
||||
|
||||
struct sti_init_inptr_ext init_inptr_ext;
|
||||
struct sti_init_inptr init_inptr;
|
||||
struct sti_init_outptr init_outptr;
|
||||
|
||||
struct sti_blkmv_inptr blkmv_inptr;
|
||||
struct sti_blkmv_outptr blkmv_outptr;
|
||||
|
||||
struct sti_font_inptr font_inptr;
|
||||
struct sti_font_outptr font_outptr;
|
||||
|
||||
/* leave as last entries */
|
||||
unsigned long save_addr[1024 / sizeof(unsigned long)];
|
||||
/* min 256 bytes which is STI default, max sti->sti_mem_request */
|
||||
unsigned long sti_mem_addr[256 / sizeof(unsigned long)];
|
||||
/* do not add something below here ! */
|
||||
};
|
||||
|
||||
/* internal generic STI struct */
|
||||
|
||||
struct sti_struct {
|
||||
|
@ -330,11 +359,9 @@ struct sti_struct {
|
|||
region_t regions[STI_REGION_MAX];
|
||||
unsigned long regions_phys[STI_REGION_MAX];
|
||||
|
||||
struct sti_glob_cfg *glob_cfg;
|
||||
struct sti_cooked_font *font; /* ptr to selected font (cooked) */
|
||||
struct sti_glob_cfg *glob_cfg; /* points into sti_all_data */
|
||||
|
||||
struct sti_conf_outptr outptr; /* configuration */
|
||||
struct sti_conf_outptr_ext outptr_ext;
|
||||
struct sti_cooked_font *font; /* ptr to selected font (cooked) */
|
||||
|
||||
struct pci_dev *pd;
|
||||
|
||||
|
@ -343,6 +370,9 @@ struct sti_struct {
|
|||
|
||||
/* pointer to the fb_info where this STI device is used */
|
||||
struct fb_info *info;
|
||||
|
||||
/* pointer to all internal data */
|
||||
struct sti_all_data *sti_data;
|
||||
};
|
||||
|
||||
|
||||
|
@ -350,6 +380,14 @@ struct sti_struct {
|
|||
|
||||
struct sti_struct *sti_get_rom(unsigned int index); /* 0: default sti */
|
||||
|
||||
|
||||
/* sticore main function to call STI firmware */
|
||||
|
||||
int sti_call(const struct sti_struct *sti, unsigned long func,
|
||||
const void *flags, void *inptr, void *outptr,
|
||||
struct sti_glob_cfg *glob_cfg);
|
||||
|
||||
|
||||
/* functions to call the STI ROM directly */
|
||||
|
||||
void sti_putc(struct sti_struct *sti, int c, int y, int x);
|
||||
|
|
|
@ -1101,6 +1101,7 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)
|
|||
var = &info->var;
|
||||
|
||||
fb->sti = sti;
|
||||
dev_name = sti->sti_data->inq_outptr.dev_name;
|
||||
/* store upper 32bits of the graphics id */
|
||||
fb->id = fb->sti->graphics_id[0];
|
||||
|
||||
|
@ -1114,11 +1115,11 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)
|
|||
Since this driver only supports standard mode, we check
|
||||
if the device name contains the string "DX" and tell the
|
||||
user how to reconfigure the card. */
|
||||
if (strstr(sti->outptr.dev_name, "DX")) {
|
||||
if (strstr(dev_name, "DX")) {
|
||||
printk(KERN_WARNING
|
||||
"WARNING: stifb framebuffer driver does not support '%s' in double-buffer mode.\n"
|
||||
"WARNING: Please disable the double-buffer mode in IPL menu (the PARISC-BIOS).\n",
|
||||
sti->outptr.dev_name);
|
||||
dev_name);
|
||||
goto out_err0;
|
||||
}
|
||||
/* fall though */
|
||||
|
@ -1130,7 +1131,7 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)
|
|||
break;
|
||||
default:
|
||||
printk(KERN_WARNING "stifb: '%s' (id: 0x%08x) not supported.\n",
|
||||
sti->outptr.dev_name, fb->id);
|
||||
dev_name, fb->id);
|
||||
goto out_err0;
|
||||
}
|
||||
|
||||
|
@ -1154,7 +1155,6 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)
|
|||
fb->id = S9000_ID_A1659A;
|
||||
break;
|
||||
case S9000_ID_TIMBER: /* HP9000/710 Any (may be a grayscale device) */
|
||||
dev_name = fb->sti->outptr.dev_name;
|
||||
if (strstr(dev_name, "GRAYSCALE") ||
|
||||
strstr(dev_name, "Grayscale") ||
|
||||
strstr(dev_name, "grayscale"))
|
||||
|
@ -1290,7 +1290,7 @@ static int __init stifb_init_fb(struct sti_struct *sti, int bpp_pref)
|
|||
var->xres,
|
||||
var->yres,
|
||||
var->bits_per_pixel,
|
||||
sti->outptr.dev_name,
|
||||
dev_name,
|
||||
fb->id,
|
||||
fix->mmio_start);
|
||||
|
||||
|
|
|
@ -284,7 +284,7 @@ config AUDIT
|
|||
|
||||
config AUDITSYSCALL
|
||||
bool "Enable system-call auditing support"
|
||||
depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
|
||||
depends on AUDIT && (X86 || PARISC || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
|
||||
default y if SECURITY_SELINUX
|
||||
help
|
||||
Enable low-overhead system-call auditing infrastructure that
|
||||
|
|
Загрузка…
Ссылка в новой задаче