* Re: [PATCH] PCI: disable decoding while sizing BARs
From: Marcelo Tosatti @ 2002-12-18 12:30 UTC (permalink / raw)
To: Ivan Kokshaysky; +Cc: Bjorn Helgaas, mj, linux-kernel
In-Reply-To: <20021217172925.A15754@jurassic.park.msu.ru>
On Tue, 17 Dec 2002, Ivan Kokshaysky wrote:
> On Mon, Dec 16, 2002 at 05:41:53PM -0700, Bjorn Helgaas wrote:
> > + /* Disable I/O & memory decoding while we size the BARs. */
> > + pci_read_config_word(dev, PCI_COMMAND, &cmd);
> > + pci_write_config_word(dev, PCI_COMMAND,
> > + cmd & ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY));
>
> It's fatal for certain x86 northbridges, that's why the code was
> removed 2 years ago.
>
> Maybe it would be ok with this modification:
>
> pci_read_config_word(dev, PCI_COMMAND, &cmd);
> /* Don't touch northbridges or devices with devfn 0:0 */
> if ((dev->class >> 8) != PCI_CLASS_BRIDGE_HOST && dev->devfn)
> pci_write_config_word(dev, PCI_COMMAND,
> cmd & ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY));
Ok, I've reverted this one.
^ permalink raw reply
* Help...
From: manish @ 2002-12-18 15:23 UTC (permalink / raw)
To: netfilter
Hello
Can any one look up to my problem. The problem is:
I have set up a small lan with both wired and wireless
clients, here i am describing only wired lan.
I am giving you the details, which will help you to
understand my problem.
A----------B----------C
|
|
|
D
Here A is my windows client with IP address
192.168.101.1 Mask 255.255.0.0
Here B is my Linux7.3 Server with IP address
192.168.0.1 Mask 255.255.0.0
B is also connected to Internet with Generic
Serial Modem (ppp0).
Here C is my windows client with IP address
192.168.101.3 Mask 255.255.0.0
Here D is my Linux client with IP address
192.168.80.1 Mask 255.255.0.0.
I am sharing internet to all my client i.e A, C and D.
using this command.
>iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Turn on the IP forwarding
>echo 1 > /proc/sys/net/ipv4/ip_forward
Upto this everything works fine all clients (A, C, D)
share internets.
Now if i wanted to start any chat services i.e Yahoo
Messenger or vat tool the person who has logged on
from A not able to talk to person logged on from C or
D. or even a person who is also online from out of
this network (Somewhere from internet)also not able
to call or do voice chat.
# I had use this command after that
>iptables -t nat -A PREROUTING -i ppp0 -j DNAT
--to-destination 192.168.101.3
This time i am able to call people from outside from
machine C (192.168.101.3)and also able to do voice
conversation in vat. But another side A and D are not
able to talk to that person outside the network. Also
the above command will not work for other hosts A and
D. At a time only one machine is able to make a vat
connection from B.
1) What should i do so A, C, and D all together can
use to call outside and able to do voice
conversation
in vat or vive-versa?
2) what should i do so A can talk to B in yahoo or vat
voice chat?
please let me know that is there any solution for my
problem? Mostly i wanted to run vat?
Thanks
Manish.
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
^ permalink raw reply
* RE: ifconfig: SCC1 enet0 not showing up
From: Allen Curtis @ 2002-12-18 15:24 UTC (permalink / raw)
To: Ricardo Scop, James Don, linuxppc-embedded
In-Reply-To: <200212181320.30854.scop@digitel.com.br>
> > > eth0: CPM ENET Version 0.2 on SCC1, 00:22:2e:ff:67:de
> > > RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
> >
> > 1. cat /proc/net/dev
> > If eth0 is listed then it is installed in the kernel
> >
> > 2. have you tried to configure the ethernet by hand?
> > ifconfig eth0 192.168.1.10
> >
> > Then run ifconfig and see if it shows up.
> >
> > 3. If this works, you can go back and correct your bootline parameters.
> >
>
> Better yet, set CONFIG_IP_PNP in yor kernel configuration and
> recompile it!
Or create an appropriate network configuration script for you installation.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply
* Re: ifconfig: SCC1 enet0 not showing up
From: Hans Feldt @ 2002-12-18 15:27 UTC (permalink / raw)
To: James Don; +Cc: 'linuxppc-embedded@lists.linuxppc.org'
In-Reply-To: <DB0585C9F6F9D411BE8F00D0B7896A4CC05F4E@SNCMAIL>
I think you need to set CONFIG_IP_PNP in your config. Or when using
'make xconfig': Networking Options->IP kernel level autoconfiguration=y
/Hans
On 12/18/02 03:56 PM, James Don wrote:
> Hi,
>
> I have a MPC860 FADS based board running kernel 2.4.
>
> My Ethernet is not showing up ... I have compiled in enet support ... fixed
> my port pins ... but when I do ifconfig I see only:
>
> # ifconfig
> lo Link encap:Local Loopback
> inet addr:127.0.0.1 Mask:255.0.0.0
> UP LOOPBACK RUNNING MTU:16436 Metric:1
> RX packets:0 errors:0 dropped:0 overruns:0 frame:0
> TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
> collisions:0 txqueuelen:0
> RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
>
>
> At start my enet scc is configured properly ... I am pretty sure because I
> see:
> ## Transferring control to Linux (at address 00000000) ...
> Linux version 2.4.20-pre8 ...
> Kernel command line: root=/dev/ram rw
> ip=192.168.104.101:192.168.103.151:192.168.104.1:255.255.255.0:BigMoney::off
> ...
> eth0: CPM ENET Version 0.2 on SCC1, 00:22:2e:ff:67:de
> RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
> loop: loaded (max 8 devices)
> NET4: Linux TCP/IP 1.0 for NET4.0
> IP Protocols: ICMP, UDP, TCP, IGMP
> IP: routing cache hash table of 512 buckets, 4Kbytes
> TCP: Hash tables configured (established 1024 bind 1024)
> NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
> RAMDISK: Compressed image found at block 0
> Freeing initrd memory: 1425k freed
> VFS: Mounted root (ext2 filesystem).
> Freeing unused kernel memory: 44k init
> ....
>
> Am I missing some kernel config (see below)?
>
> Jim
>
> #
> # Automatically generated by make menuconfig: don't edit
> #
> # CONFIG_UID16 is not set
> # CONFIG_RWSEM_GENERIC_SPINLOCK is not set
> CONFIG_RWSEM_XCHGADD_ALGORITHM=y
> CONFIG_HAVE_DEC_LOCK=y
>
> #
> # Code maturity level options
> #
> CONFIG_EXPERIMENTAL=y
>
> #
> # Loadable module support
> #
> # CONFIG_MODULES is not set
>
> #
> # Platform support
> #
> CONFIG_PPC=y
> CONFIG_PPC32=y
> # CONFIG_6xx is not set
> # CONFIG_4xx is not set
> # CONFIG_POWER3 is not set
> # CONFIG_POWER4 is not set
> CONFIG_8xx=y
> # CONFIG_PPC_STD_MMU is not set
> CONFIG_SERIAL_CONSOLE=y
> # CONFIG_RPXLITE is not set
> # CONFIG_RPXCLASSIC is not set
> # CONFIG_BSEIP is not set
> CONFIG_FADS=y
> # CONFIG_TQM823L is not set
> # CONFIG_TQM850L is not set
> # CONFIG_TQM855L is not set
> # CONFIG_TQM860L is not set
> # CONFIG_FPS850L is not set
> # CONFIG_TQM860 is not set
> # CONFIG_SPD823TS is not set
> # CONFIG_IVMS8 is not set
> # CONFIG_IVML24 is not set
> # CONFIG_SM850 is not set
> # CONFIG_MBX is not set
> # CONFIG_WINCEPT is not set
> # CONFIG_ALL_PPC is not set
> # CONFIG_SMP is not set
> CONFIG_MATH_EMULATION=y
> CONFIG_EMBEDDEDBOOT=y
>
> #
> # General setup
> #
> # CONFIG_HIGHMEM is not set
> # CONFIG_ISA is not set
> # CONFIG_EISA is not set
> # CONFIG_SBUS is not set
> # CONFIG_MCA is not set
> # CONFIG_PCI_QSPAN is not set
> # CONFIG_PCI is not set
> CONFIG_NET=y
> # CONFIG_SYSCTL is not set
> # CONFIG_SYSVIPC is not set
> # CONFIG_BSD_PROCESS_ACCT is not set
> CONFIG_KCORE_ELF=y
> CONFIG_BINFMT_ELF=y
> CONFIG_KERNEL_ELF=y
> # CONFIG_BINFMT_MISC is not set
> # CONFIG_HOTPLUG is not set
> # CONFIG_PCMCIA is not set
>
> #
> # Parallel port support
> #
> # CONFIG_PARPORT is not set
> # CONFIG_PPC_RTC is not set
> # CONFIG_CMDLINE_BOOL is not set
>
> #
> # Memory Technology Devices (MTD)
> #
> # CONFIG_MTD is not set
>
> #
> # Plug and Play configuration
> #
> # CONFIG_PNP is not set
> # CONFIG_ISAPNP is not set
>
> #
> # Block devices
> #
> # CONFIG_BLK_DEV_FD is not set
> # CONFIG_BLK_DEV_XD is not set
> # CONFIG_PARIDE is not set
> # CONFIG_BLK_CPQ_DA is not set
> # CONFIG_BLK_CPQ_CISS_DA is not set
> # CONFIG_CISS_SCSI_TAPE is not set
> # CONFIG_BLK_DEV_DAC960 is not set
> # CONFIG_BLK_DEV_UMEM is not set
> CONFIG_BLK_DEV_LOOP=y
> CONFIG_BLK_DEV_NBD=y
> CONFIG_BLK_DEV_RAM=y
> CONFIG_BLK_DEV_RAM_SIZE=4096
> CONFIG_BLK_DEV_INITRD=y
> CONFIG_BLK_STATS=y
>
> #
> # Multi-device support (RAID and LVM)
> #
> # CONFIG_MD is not set
> # CONFIG_BLK_DEV_MD is not set
> # CONFIG_MD_LINEAR is not set
> # CONFIG_MD_RAID0 is not set
> # CONFIG_MD_RAID1 is not set
> # CONFIG_MD_RAID5 is not set
> # CONFIG_MD_MULTIPATH is not set
> # CONFIG_BLK_DEV_LVM is not set
>
> #
> # Networking options
> #
> CONFIG_PACKET=y
> # CONFIG_PACKET_MMAP is not set
> # CONFIG_NETLINK_DEV is not set
> # CONFIG_NETFILTER is not set
> # CONFIG_FILTER is not set
> CONFIG_UNIX=y
> CONFIG_INET=y
> CONFIG_IP_MULTICAST=y
> # CONFIG_IP_ADVANCED_ROUTER is not set
> # CONFIG_IP_PNP is not set
> # CONFIG_NET_IPIP is not set
> # CONFIG_NET_IPGRE is not set
> # CONFIG_IP_MROUTE is not set
> # CONFIG_ARPD is not set
> # CONFIG_INET_ECN is not set
> # CONFIG_SYN_COOKIES is not set
> # CONFIG_IPV6 is not set
> # CONFIG_KHTTPD is not set
> # CONFIG_ATM is not set
> # CONFIG_VLAN_8021Q is not set
> # CONFIG_IPX is not set
> # CONFIG_ATALK is not set
>
> #
> # Appletalk devices
> #
> # CONFIG_DEV_APPLETALK is not set
> # CONFIG_DECNET is not set
> # CONFIG_BRIDGE is not set
> # CONFIG_X25 is not set
> # CONFIG_LAPB is not set
> # CONFIG_LLC is not set
> # CONFIG_NET_DIVERT is not set
> # CONFIG_ECONET is not set
> # CONFIG_WAN_ROUTER is not set
> # CONFIG_NET_FASTROUTE is not set
> # CONFIG_NET_HW_FLOWCONTROL is not set
>
> #
> # QoS and/or fair queueing
> #
> # CONFIG_NET_SCHED is not set
>
> #
> # Network testing
> #
> # CONFIG_NET_PKTGEN is not set
>
> #
> # ATA/IDE/MFM/RLL support
> #
> # CONFIG_IDE is not set
> # CONFIG_BLK_DEV_IDE_MODES is not set
> # CONFIG_BLK_DEV_HD is not set
>
> #
> # SCSI support
> #
> # CONFIG_SCSI is not set
>
> #
> # Network device support
> #
> CONFIG_NETDEVICES=y
>
> #
> # ARCnet devices
> #
> # CONFIG_ARCNET is not set
> # CONFIG_DUMMY is not set
> # CONFIG_BONDING is not set
> # CONFIG_EQUALIZER is not set
> # CONFIG_TUN is not set
> # CONFIG_ETHERTAP is not set
>
> #
> # Ethernet (10 or 100Mbit)
> #
> CONFIG_NET_ETHERNET=y
> # CONFIG_MACE is not set
> # CONFIG_BMAC is not set
> # CONFIG_GMAC is not set
> # CONFIG_SUNLANCE is not set
> # CONFIG_SUNBMAC is not set
> # CONFIG_SUNQE is not set
> # CONFIG_SUNGEM is not set
> # CONFIG_NET_VENDOR_3COM is not set
> # CONFIG_LANCE is not set
> # CONFIG_NET_VENDOR_SMC is not set
> # CONFIG_NET_VENDOR_RACAL is not set
> # CONFIG_NET_ISA is not set
> # CONFIG_NET_PCI is not set
> # CONFIG_NET_POCKET is not set
>
> #
> # Ethernet (1000 Mbit)
> #
> # CONFIG_ACENIC is not set
> # CONFIG_DL2K is not set
> # CONFIG_E1000 is not set
> # CONFIG_MYRI_SBUS is not set
> # CONFIG_NS83820 is not set
> # CONFIG_HAMACHI is not set
> # CONFIG_YELLOWFIN is not set
> # CONFIG_SK98LIN is not set
> # CONFIG_TIGON3 is not set
> # CONFIG_FDDI is not set
> # CONFIG_HIPPI is not set
> # CONFIG_PLIP is not set
> # CONFIG_PPP is not set
> # CONFIG_SLIP is not set
>
> #
> # Wireless LAN (non-hamradio)
> #
> CONFIG_NET_RADIO=y
> # CONFIG_STRIP is not set
> # CONFIG_WAVELAN is not set
> # CONFIG_ARLAN is not set
> # CONFIG_AIRONET4500 is not set
> # CONFIG_AIRONET4500_NONCS is not set
> # CONFIG_AIRONET4500_PROC is not set
> CONFIG_HERMES=y
> # CONFIG_NET_WIRELESS is not set
>
> #
> # Token Ring devices
> #
> # CONFIG_TR is not set
> # CONFIG_NET_FC is not set
> # CONFIG_RCPCI is not set
> # CONFIG_SHAPER is not set
>
> #
> # Wan interfaces
> #
> # CONFIG_WAN is not set
>
> #
> # Amateur Radio support
> #
> # CONFIG_HAMRADIO is not set
>
> #
> # IrDA (infrared) support
> #
> # CONFIG_IRDA is not set
>
> #
> # ISDN subsystem
> #
> # CONFIG_ISDN is not set
>
> #
> # Old CD-ROM drivers (not SCSI, not IDE)
> #
> # CONFIG_CD_NO_IDESCSI is not set
>
> #
> # Console drivers
> #
>
> #
> # Frame-buffer support
> #
> # CONFIG_FB is not set
>
> #
> # Input core support
> #
> # CONFIG_INPUT is not set
> # CONFIG_INPUT_KEYBDEV is not set
> # CONFIG_INPUT_MOUSEDEV is not set
> # CONFIG_INPUT_JOYDEV is not set
> # CONFIG_INPUT_EVDEV is not set
>
> #
> # Macintosh device drivers
> #
>
> #
> # Character devices
> #
> CONFIG_VT=y
> CONFIG_VT_CONSOLE=y
> # CONFIG_SERIAL is not set
> # CONFIG_SERIAL_EXTENDED is not set
> # CONFIG_SERIAL_NONSTANDARD is not set
> CONFIG_UNIX98_PTYS=y
> CONFIG_UNIX98_PTY_COUNT=256
>
> #
> # I2C support
> #
> CONFIG_I2C=y
> # CONFIG_I2C_ALGOBIT is not set
> # CONFIG_I2C_ALGOPCF is not set
> # CONFIG_I2C_ALGO8XX is not set
> CONFIG_I2C_CHARDEV=y
> CONFIG_I2C_PROC=y
>
> #
> # Mice
> #
> # CONFIG_BUSMOUSE is not set
> # CONFIG_MOUSE is not set
>
> #
> # Joysticks
> #
> # CONFIG_INPUT_GAMEPORT is not set
> # CONFIG_QIC02_TAPE is not set
>
> #
> # Watchdog Cards
> #
> # CONFIG_WATCHDOG is not set
> # CONFIG_NVRAM is not set
> # CONFIG_RTC is not set
> # CONFIG_DTLK is not set
> # CONFIG_R3964 is not set
> # CONFIG_APPLICOM is not set
>
> #
> # Ftape, the floppy tape device driver
> #
> # CONFIG_FTAPE is not set
> # CONFIG_AGP is not set
> # CONFIG_DRM is not set
>
> #
> # Multimedia devices
> #
> # CONFIG_VIDEO_DEV is not set
>
> #
> # File systems
> #
> # CONFIG_QUOTA is not set
> # CONFIG_AUTOFS_FS is not set
> # CONFIG_AUTOFS4_FS is not set
> # CONFIG_REISERFS_FS is not set
> # CONFIG_REISERFS_CHECK is not set
> # CONFIG_REISERFS_PROC_INFO is not set
> # CONFIG_ADFS_FS is not set
> # CONFIG_ADFS_FS_RW is not set
> # CONFIG_AFFS_FS is not set
> # CONFIG_HFS_FS is not set
> # CONFIG_BEFS_FS is not set
> # CONFIG_BEFS_DEBUG is not set
> # CONFIG_BFS_FS is not set
> # CONFIG_EXT3_FS is not set
> # CONFIG_JBD is not set
> # CONFIG_JBD_DEBUG is not set
> # CONFIG_FAT_FS is not set
> # CONFIG_MSDOS_FS is not set
> # CONFIG_UMSDOS_FS is not set
> # CONFIG_VFAT_FS is not set
> # CONFIG_EFS_FS is not set
> # CONFIG_JFFS_FS is not set
> # CONFIG_JFFS2_FS is not set
> # CONFIG_CRAMFS is not set
> # CONFIG_TMPFS is not set
> CONFIG_RAMFS=y
> # CONFIG_ISO9660_FS is not set
> # CONFIG_JOLIET is not set
> # CONFIG_ZISOFS is not set
> # CONFIG_JFS_FS is not set
> # CONFIG_JFS_DEBUG is not set
> # CONFIG_JFS_STATISTICS is not set
> # CONFIG_MINIX_FS is not set
> # CONFIG_VXFS_FS is not set
> # CONFIG_NTFS_FS is not set
> # CONFIG_NTFS_RW is not set
> # CONFIG_HPFS_FS is not set
> CONFIG_PROC_FS=y
> # CONFIG_DEVFS_FS is not set
> # CONFIG_DEVFS_MOUNT is not set
> # CONFIG_DEVFS_DEBUG is not set
> # CONFIG_DEVPTS_FS is not set
> # CONFIG_QNX4FS_FS is not set
> # CONFIG_QNX4FS_RW is not set
> # CONFIG_ROMFS_FS is not set
> CONFIG_EXT2_FS=y
> # CONFIG_SYSV_FS is not set
> # CONFIG_UDF_FS is not set
> # CONFIG_UDF_RW is not set
> # CONFIG_UFS_FS is not set
> # CONFIG_UFS_FS_WRITE is not set
>
> #
> # Network File Systems
> #
> # CONFIG_CODA_FS is not set
> # CONFIG_INTERMEZZO_FS is not set
> CONFIG_NFS_FS=y
> # CONFIG_NFS_V3 is not set
> # CONFIG_ROOT_NFS is not set
> CONFIG_NFSD=y
> # CONFIG_NFSD_V3 is not set
> # CONFIG_NFSD_TCP is not set
> CONFIG_SUNRPC=y
> CONFIG_LOCKD=y
> # CONFIG_SMB_FS is not set
> # CONFIG_NCP_FS is not set
> # CONFIG_NCPFS_PACKET_SIGNING is not set
> # CONFIG_NCPFS_IOCTL_LOCKING is not set
> # CONFIG_NCPFS_STRONG is not set
> # CONFIG_NCPFS_NFS_NS is not set
> # CONFIG_NCPFS_OS2_NS is not set
> # CONFIG_NCPFS_SMALLDOS is not set
> # CONFIG_NCPFS_NLS is not set
> # CONFIG_NCPFS_EXTRAS is not set
> # CONFIG_ZISOFS_FS is not set
>
> #
> # Partition Types
> #
> CONFIG_PARTITION_ADVANCED=y
> # CONFIG_ACORN_PARTITION is not set
> # CONFIG_OSF_PARTITION is not set
> # CONFIG_AMIGA_PARTITION is not set
> # CONFIG_ATARI_PARTITION is not set
> CONFIG_MAC_PARTITION=y
> CONFIG_MSDOS_PARTITION=y
> # CONFIG_BSD_DISKLABEL is not set
> # CONFIG_MINIX_SUBPARTITION is not set
> # CONFIG_SOLARIS_X86_PARTITION is not set
> # CONFIG_UNIXWARE_DISKLABEL is not set
> # CONFIG_LDM_PARTITION is not set
> # CONFIG_SGI_PARTITION is not set
> # CONFIG_ULTRIX_PARTITION is not set
> # CONFIG_SUN_PARTITION is not set
> # CONFIG_EFI_PARTITION is not set
> # CONFIG_SMB_NLS is not set
> # CONFIG_NLS is not set
>
> #
> # Sound
> #
> # CONFIG_SOUND is not set
>
> #
> # MPC8xx CPM Options
> #
> CONFIG_SCC_ENET=y
> CONFIG_SCC1_ENET=y
> # CONFIG_SCC2_ENET is not set
> # CONFIG_SCC3_ENET is not set
> # CONFIG_FEC_ENET is not set
> # CONFIG_ENET_BIG_BUFFERS is not set
> # CONFIG_SMC2_UART is not set
> # CONFIG_USE_SCC_IO is not set
> # CONFIG_8xx_COPYBACK is not set
> # CONFIG_8xx_CPU6 is not set
> # CONFIG_UCODE_PATCH is not set
>
> #
> # USB support
> #
> # CONFIG_USB is not set
>
> #
> # Bluetooth support
> #
> # CONFIG_BLUEZ is not set
>
> #
> # Library routines
> #
> CONFIG_ZLIB_INFLATE=y
> CONFIG_ZLIB_DEFLATE=y
>
> #
> # Kernel hacking
> #
> # CONFIG_DEBUG_KERNEL is not set
>
>
>
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply
* ibiblio action notice from the `keeper' program
From: keeper @ 2002-12-18 15:29 UTC (permalink / raw)
To: linux-msdos, bart
At about 2002-12-18 15:29:03 UCT, `keeper' moved the following files from
Incoming to system/emulators/dosemu (various versions of the dos emulators):
dosemu-1.1.4.tgz DOS emulation package with support for console, terminal and X-windows.
dosemu.lsm
Thank you for your contribution of time, effort, and creativity.
This message was a form letter generated by keeper 1.55, but replying to
it will reach the human who told keeper what to do. You got this note
because you're listed as a maintainer or author in the archive part involved.
If your package was actually uploaded by someone else, and you know who that
person is, please try to get that person to list him or herself in the LSM.
--
Serena Fenton (ibiblio co-maintainer)
fents@ibiblio.org
^ permalink raw reply
* Re: Invalid PBLK length
From: Matthew Wilcox @ 2002-12-18 15:29 UTC (permalink / raw)
To: Adachi, Kenichi
Cc: willy-8fiUuRrzOP0dnm+yROfE0A,
haug-X6ztD3ggwzuBAmxm6OvjtTjhTm2NLCe8,
acpi-devel-pyega4qmqnRoyOMFzWx49A
In-Reply-To: <4e353e0091944930a0$NiftyInterway-fFkzxiWP14B3+QwDJ9on6Q@public.gmane.org>
On Thu, Dec 19, 2002 at 12:17:40AM +0900, Adachi, Kenichi wrote:
> I didn't check code, but if that said address space type 127 does mean "Functi
> onal Fixed Hardware (0x7F)", then your processor expects that OS processor dri
> ver knows the specific address to control voltage scaling state transition. Us
> ually it's done by accessing MSRs. This has been true for AMD PowerNow! and Tr
> ansmeta LongRun, and Intel's new Geyserville I/F which will be unveiled on Ban
> ias in the near future. These are mostly under NDA, therefore I can't be speci
> fic, however there're several public documents which explain this stuff a bit
> more.
you're right. Andy, could we add something like this?
diff -u -p -r1.6 actypes.h
--- drivers/acpi/include/actypes.h 10 Dec 2002 22:02:09 -0000 1.6
+++ drivers/acpi/include/actypes.h 18 Dec 2002 15:28:47 -0000
@@ -579,6 +579,7 @@ typedef u8
#define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5
#define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6
#define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7
+#define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 127
/*
--
"It's not Hollywood. War is real, war is primarily not about defeat or
victory, it is about death. I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk
-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
^ permalink raw reply
* Re: Invalid PBLK length
From: Adachi, Kenichi @ 2002-12-18 15:32 UTC (permalink / raw)
To: willy-8fiUuRrzOP0dnm+yROfE0A
Cc: haug-X6ztD3ggwzuBAmxm6OvjtTjhTm2NLCe8,
acpi-devel-pyega4qmqnRoyOMFzWx49A
In-Reply-To: <20021218140019.H9994-+pPCBgu9SkPzIGdyhVEDUDl5KyyQGfY2kSSpQ9I8OhVaa/9Udqfwiw@public.gmane.org>
I didn't check code, but if that said address space type 127 does mean "Functi
onal Fixed Hardware (0x7F)", then your processor expects that OS processor dri
ver knows the specific address to control performance state transition. In thi
s context, FFHardware is usually MSR. This has been true for AMD PowerNow! and
Transmeta LongRun, and Intel's new Geyserville I/F which will be unveiled on
Banias in the near future. These are mostly under NDA, therefore I can't be sp
ecific, however there're several public documents which explain this stuff a b
it more.
So if my guess is correct, your BIOS is not bad. To enable processor performan
ce state control on your machine, Linux needs inputs from CPU vendors.
>
> > I also see in dmesg that there's an unsupported address space
> > of 127 in acpi_processor_get_performance_control because
> > reg->space_id != ACPI_ADR_SPACE_SYSTEM_IO. But I don't know
> > enough C to understand where this comes from. Could somebody
> > please give me a hint?
>
> ACPI tells you which address space a given address is in:
>
> #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0
> #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1
> #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2
> #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3
> #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4
> #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5
> #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6
> #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 7
>
> processor.c is telling you it only handles ioport (inb/outb) address
> spaces. But 127 is not a valid address space value, so you're going
> to have to get an updated BIOS from your vendor. There's really no
> reasonable way to fix this.
>
-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
^ permalink raw reply
* would this work as a thin client?
From: james miller @ 2002-12-18 15:32 UTC (permalink / raw)
To: linux-newbie
Hello all. I'm pretty new to Linux and to the LTSP project, but I ran across
something on the web for really cheap ($12.95!) and wondered if it could work
as a thin client. Seems like, if it would, a bit of fiddling would be
involved. Sorry if this is a stupid question. Anyway, here's the link:
http://www.softwareandstuff.com/h_misc_webpal.html . Description follows:
#######################BEGIN PRODUCT DESCRIPTION########################
Product Description: What the heck is a Webpal you ask??!?! This an Internet
Set-top box which was produced for Newcom, Inc.(Now defunct) by
Teknema(Teknema.com) and originally sold for over $400. The WebPal Internet
Box converts a television set (or VGA monitor) into a device that can access
the Internet. The box is operated by its own hand-held remote control unit,
and a wireless keyboard is also included.
WebPal's built-in 33.6Kbps modem lets you surf the net, through a regular
voice grade telephone line. You can use the Internet Service Provider
recommend by Necom(Earthlink) or specify your own PPP/PAP or CHAP provider.
Good for emailing or simple surfing! Works with any ISP that uses one server
for inbound and outbound e-mail. Experience the Internet on Your TV! The
cheapest way to have email or browse the web on your TV! Wireless keyboard and
remote control Included! Originally retailed for over $399.95!
You can either use the device as a Web-TV type device when connected to your
TV OR Computer monitor!..... OR you can hack it and use it as a Linux box!
This little unit has just about enough features to use it as a PC!!
##########################END PRODUCT DESCRIPTION#########################
James
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
^ permalink raw reply
* Re: Invalid PBLK length
From: Jens Haug @ 2002-12-18 15:36 UTC (permalink / raw)
To: ducrot-kk6yZipjEM5g9hUCZPvPmw; +Cc: acpi-devel-pyega4qmqnRoyOMFzWx49A
> > Ok, I can see in the code (processor.c) that in the function
> > acpi_processor_get_inf the value of object.processor.pblk_lenght
> > is checked, and in case it's smaller than 6 this error is thrown.
> > If it's 6 or greater, then addresses for C2 and C3 are assigned.
> > But why can't PBLK be 5 and only C2 be used? Couldn't we just
> > disable C3 and still assign the address for C2 as pblk_address+4?
> > I think it was done that way in prpower.c Revision 32. That gave
> > me a working C2.
>
> Well, specs issue?
Yes, I see. I hadn't found that, but Matthew pointed me to the
right chapter of the specs.
> > BTW, how can I make my FADT human readable? It isn't shown by
> > acpidmp, and I'd like to be able to check some values myself.
>
> ./acpidmp FACS | ./acpitbl
>
> Note that it is FACS (the signature of the table), not FADT (I don't know
> why the sig. and the name of this table are not the same).
But this FACS doesn't give me much information (since it's only
the signature, I guess).
It sais:
Signature: FACS
Length: 64
Hardware Signature: 0x00000000
Firmware Waking Vector: 0x00000000
Global Lock: 0x00000000
Flags: 0x00000000
I'm curious what I'll find in the FADT. I mean, 5 clearly is
neither 0 nor 6, so there might be some other really heavy bugs.
I'll get me the
Jens
--
Jens Haug
IKFF Universität Stuttgart Tel. 0711/685-6422
Pfaffenwaldring 9 Fax 0711/685-6356
70550 Stuttgart haug-X6ztD3ggwzuBAmxm6OvjtTjhTm2NLCe8@public.gmane.org
-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
^ permalink raw reply
* Re: 405LP RTC reset
From: Hollis Blanchard @ 2002-12-18 15:38 UTC (permalink / raw)
To: David Gibson; +Cc: embedded list, Todd Poynor
In-Reply-To: <20021218005542.GC3666@zax.zax>
On Tue, 2002-12-17 at 18:55, David Gibson wrote:
>
> On Tue, Dec 17, 2002 at 12:43:32PM -0600, Hollis Blanchard wrote:
> > Here's the updated 405LP RTC reset diff (after David's move of the RTC
> > functions to ibm405lp.c). This patch
> > a) does a full RTC reset as specified in the docs
> > b) sets the RTC clock speed in RTC "Register A" DV bits, i.e. it does
> > not assume the firmware has done this correctly.
>
> One query though (I didn't think of this earlier) - is it such a great
> idea to go setting the reference clock frequency? Unlike most other
> drivers, we can't just take over the RTC and do what we like with it
> once the kernel boots, because it has to keep running at the same rate
> even when the device is rebooting or (mostly) off.
The only issue I can think of here is the firmware setting it
incorrectly or not at all. In that case, a few seconds will be expanded
or compressed, but that's better than time running too fast or slow
forever, right?
Of course the rate settings must be battery-backed along with the time,
so you only need to set it once per RTC power loss. That includes
rebooting time and power off time.
-Hollis
--
PowerPC Linux
IBM Linux Technology Center
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply
* [PATCH] An O1, nonrecursive ID allocator for Posix timers
From: Joe Korty @ 2002-12-18 15:53 UTC (permalink / raw)
To: george; +Cc: akpm, torvalds, jim.houston, linux-kernel
Hi George, Andrew, Linus, Jim, Everyone,
This is a drop-in replacement for the ID allocator that Jim Houston
wrote to support posix timers. The inspiration for this came from
Andrew Morton's desire for a recursion-free allocator; in addition I
have made it O(1) while preserving the no-upper-limits-except-memory
attribute of the original.
I (actually Jim) spot-tested this with Jim's posix timers patch as
the base. It passed a run of George's timers test suite
(http://sourceforge.net/projects/high-res-timers) and the timer
portion of the posix test suite (http://posixtest.sourceforge.net/).
To play with, apply Jim's posix timer patch to 2.5.51 and then delete
kernel/id2ptr.c
include/linux/id2ptr.h
then apply this patch.
This procedure might also work against George's timers patch, as he is
using the same ID allocator as Jim.
Jim's timer patch may be found at:
http://marc.theaimsgroup.com/?l=linux-kernel&m=104006731324824&q=raw
George's timer patch may be found at:
http://sourceforge.net/projects/high-res-timers
Joe Korty - Concurrent Computer Corporation
--- 2.5.51/kernel/id2ptr.c 1969-12-31 19:00:00.000000000 -0500
+++ 2.5.51-jh-jak/kernel/id2ptr.c 2002-12-18 09:46:57.000000000 -0500
@@ -0,0 +1,353 @@
+/*
+ * kernel/id2ptr.c
+ *
+ * 2002-12-16 written by Joe Korty joe.korty@ccur.com
+ * Copywrite (C) 2002 by Concurrent Computer Corporation
+ * Distributed under the GNU GPL license version 2.
+ *
+ * An O(1) ID to pointer translation service.
+ *
+ * 17 bits from the ID data structure pointer are copied into the ID
+ * which, when that ID is passed back into the system, can be used to
+ * construct a pointer to a `block of IDs', within which the desired ID
+ * data structure can be found. However, before that reconstructed pointer
+ * can be dereferenced, the above 17 bits must first index a bitmap to
+ * check if the pointer is valid. The remaining ID bits hold the index
+ * of the desired ID data structure within the block and an arbitary
+ * value, used to keep IDs from being reused `too fast'.
+ *
+ * Design assumptions: A kmalloc that aligns a power-of-two request to
+ * the size and whose allocation address range spans at most 2^30 bytes.
+ *
+ * Design faults: 1) ID blocks are never kfree'ed once kmalloc'ed. 2)
+ * The bitmap may be prohibitively large on 64-bit architectures (to fix,
+ * vmalloc() might make a good kmalloc() substitute). 3) A bitmap is 4
+ * pages and ID blocks are 2 pages each, these sizes strain kmalloc.
+ */
+
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/bitops.h>
+#include <linux/string.h>
+#include <linux/list.h>
+#include <linux/slab.h>
+#include <linux/smp_lock.h>
+#include <linux/id2ptr.h>
+#include <asm/semaphore.h>
+#include <asm/uaccess.h>
+
+/*
+ * These are the master tuning knobs of the ID allocator:
+ *
+ * KMALLOCSZ_INBITS - address range of a kmalloc call, in #bits.
+ * IDSZ_INBITS - #bits in a posix timer ID.
+ * BLKSZ_INBITS - allocation size of a block of IDs, in #bits.
+ *
+ * These are some of the more important 'sub-tunables', derived from the above:
+ *
+ * KEYSZ_INBITS - #bits from a ID pointer copied into an ID.
+ * CODESZ_INBITS - #bits in an ID available to hold misc encoded data:
+ * i - index of ID data struct in an ID block
+ * arb - a arbitrary `random value', used to keep IDs
+ * from being reused 'too fast'
+ * MAX_IDS_PERBLK - #IDs in an ID block.
+ * MAX_ARBS - upper limit on the above `arb' random value.
+ *
+ * Relationships:
+ *
+ * KEYSZ_INBITS + CODESZ_INBITS == IDSZ_INBITS
+ * (an ID is made up of only two fields, KEY and CODE)
+ *
+ * KEYSZ_INBITS + BLKSZ_INBITS == KMALLOCSZ_INBITS
+ * (all bits the kmalloc range must be accounted for by the KEY and
+ * BLK fields)
+ *
+ * MAX_ARBS * MAX_PTIMERS_PERBLOCK <= CODESZ
+ * (required for the CODE field to hold an encoding of the `ID data
+ * structure index' and the `arbitary value').
+ */
+#define KMALLOCSZ_INBITS (30)
+#define KMALLOCSZ (1 << KMALLOCSZ_INBITS)
+#define KMALLOCSZ_MASK (KMALLOCSZ - 1)
+
+#define IDSZ_INBITS (32)
+#define BYTESZ_INBITS (8)
+
+#define BLKSZ_INBITS (13)
+#define BLKSZ (1 << BLKSZ_INBITS)
+#define BLKSZ_MASK (BLKSZ - 1)
+
+#define KEYSZ_INBITS (KMALLOCSZ_INBITS - BLKSZ_INBITS)
+#define KEYSZ (1 << KEYSZ_INBITS)
+#define KEYSZ_MASK (KEYSZ - 1)
+
+#define CODESZ_INBITS (IDSZ_INBITS - KEYSZ_INBITS)
+#define CODESZ (1 << CODESZ_INBITS)
+#define CODESZ_MASK (CODESZ - 1)
+
+#define BITMAPSZ (KEYSZ / BYTESZ_INBITS)
+
+#define MAX_IDS_PERBLK (BLKSZ / sizeof(struct iddata))
+#define MAX_ARBS (CODESZ / MAX_IDS_PERBLK)
+
+/*
+ * An ID namespace control structure.
+ */
+struct idspace {
+ struct list_head head;
+ unsigned long *bitmap;
+ spinlock_t lock;
+ struct semaphore sleeplock;
+};
+
+/*
+ * An ID control structure.
+ */
+struct iddata {
+ struct list_head list;
+ unsigned id;
+ unsigned ctr;
+ void *data;
+};
+
+/**
+ * id_init - create & initialize an ID namespace
+ * @isp - pointer to an uninitialized/unused ID namespace structure
+ *
+ * Large things are left uninitialized until first use.
+ */
+static void id_init(struct idspace *isp)
+{
+ spin_lock_init(&isp->lock);
+ sema_init(&isp->sleeplock, 1);
+ INIT_LIST_HEAD(&isp->head);
+ isp->bitmap = NULL;
+}
+
+/**
+ * id_init_finish - finish initializing an ID namespace
+ * @isp - pointer to a partially initialized ID namespace structure
+ *
+ * Invoked at first use of the namespace. May race with other (potential)
+ * first-users, first one there gets to initialize; the others NOP.
+ */
+static void id_init_finish(struct idspace *isp)
+{
+ void *bp;
+
+ bp = kmalloc(BITMAPSZ, GFP_KERNEL);
+ memset(bp, 0, BITMAPSZ);
+
+ spin_lock_irq(&isp->lock);
+ if(likely(!isp->bitmap)) {
+ isp->bitmap = bp;
+ } else {
+ kfree(bp);
+ }
+ spin_unlock_irq(&isp->lock);
+}
+
+/**
+ * id_mk - make an ID out of a ID structure address and an arbitrary value.
+ * @p: pointer to a ID data structure in that namespace
+ * @arb: an arbitrary value.
+ *
+ * Callers should make `arb % MAX_ARBS' different each time id_mk is called
+ * with the same `p'.
+ */
+static inline unsigned id_mk(struct iddata *p, unsigned arb)
+{
+ unsigned base, off, i, key, code, id;
+
+ base = (unsigned) ((unsigned long)p - PAGE_OFFSET);
+
+ key = base >> BLKSZ_INBITS;
+ off = base & BLKSZ_MASK;
+ i = off / sizeof(struct iddata);
+ arb %= MAX_ARBS;
+ if (unlikely((arb|key|i) == 0))
+ arb=1; /* do not allow an ID == 0 to be created */
+ code = (i * MAX_ARBS) + arb;
+ id = (key << CODESZ_INBITS) + code;
+
+ BUG_ON(key >= KEYSZ);
+ BUG_ON(off % sizeof(struct iddata));
+ BUG_ON(i >= MAX_IDS_PERBLK);
+ BUG_ON(code >= CODESZ);
+
+ return id;
+}
+
+/**
+ * id_alloc - allocate an iddata data structure and assign it an ID.
+ * @isp: pointer to the ID namespace that the allocation is to be made in.
+ */
+static struct iddata *id_alloc(struct idspace *isp)
+{
+ struct iddata *p;
+ unsigned i, base, key;
+
+ might_sleep();
+
+ if (unlikely(!isp->bitmap)) {
+ id_init_finish(isp);
+ }
+ spin_lock_irq(&isp->lock);
+ while (unlikely(list_empty(&isp->head))) {
+ spin_unlock_irq(&isp->lock);
+ down(&isp->sleeplock);
+ spin_lock_irq(&isp->lock);
+ if (likely(list_empty(&isp->head))) {
+ spin_unlock_irq(&isp->lock);
+ p = kmalloc(BLKSZ, GFP_KERNEL);
+ base = (unsigned) ((unsigned long)p - PAGE_OFFSET);
+
+ BUG_ON(base & ~KMALLOCSZ_MASK);
+ BUG_ON(base & BLKSZ_MASK);
+
+ spin_lock_irq(&isp->lock);
+ for (i = 0; i < MAX_IDS_PERBLK; i++) {
+ list_add_tail(&p[i].list, &isp->head);
+ p[i].id = 0;
+ }
+ key = base >> BLKSZ_INBITS;
+ __set_bit(key, isp->bitmap);
+ }
+ up(&isp->sleeplock);
+ }
+ p = list_entry(isp->head.next, struct iddata, list);
+ list_del(&p->list);
+ spin_unlock_irq(&isp->lock);
+
+ p->id = id_mk(p, p->ctr++);
+ return p;
+}
+
+/**
+ * id_lookup_l - given an ID, return its iddata structure address or NULL
+ * if the ID is not in use.
+ * @isp: pointer to the ID namespace owning the ID
+ * @id: the ID in question
+ *
+ * isp->lock must be held on entry, remains held on exit.
+ */
+static struct iddata *id_lookup_l(struct idspace *isp, unsigned id)
+{
+ struct iddata *p;
+ unsigned key, code, i, base;
+
+ key = id >> CODESZ_INBITS;
+ code = id & CODESZ_MASK;
+ i = code / MAX_ARBS;
+ base = (key << BLKSZ_INBITS) + (i * sizeof(struct iddata));
+ p = (struct iddata *) ((unsigned long)base + PAGE_OFFSET);
+
+ if (unlikely (!isp->bitmap))
+ p = NULL;
+ else if (unlikely(i >= MAX_IDS_PERBLK))
+ p = NULL;
+ else if (unlikely(!test_bit(key, isp->bitmap)))
+ p = NULL;
+ else if (unlikely(p->id != id))
+ p = NULL;
+ return p;
+}
+
+
+/*
+ * Compatibility (user) interface to the above.
+ */
+
+
+/***
+ * id2ptr_new - allocate a new ID and associate a data value with it.
+ * @idp: ID namespace pointer, caller-visible version.
+ * @data: data value to be attached to the ID.
+ */
+int id2ptr_new(struct id *idp, void *data)
+{
+ struct idspace *isp = (struct idspace *)idp->data;
+ struct iddata *p;
+ unsigned id;
+
+ p = id_alloc(isp);
+ if (unlikely(!p)) {
+ id = 0;
+ } else {
+ p->data = data;
+ id = p->id;
+ }
+ return (int)id;
+}
+
+/***
+ * id2ptr_lookup - given an ID namespace and an ID, return the data value
+ * associated with it, or 0 if ID is not in use.
+ * @idp: ID namespace pointer, caller-visible version.
+ * @id: ID to look up.
+ */
+void *id2ptr_lookup(struct id *idp, int id)
+{
+ struct idspace *isp = (struct idspace *)idp->data;
+ unsigned long flags;
+ struct iddata *p;
+ void *data;
+
+ if (unlikely(!isp->bitmap)) {
+ return NULL;
+ }
+ spin_lock_irqsave(&isp->lock, flags);
+
+ p = id_lookup_l(isp, (unsigned)id);
+ if (unlikely(p == NULL)) {
+ data = NULL;
+ } else {
+ data = p->data;
+ }
+ spin_unlock_irqrestore(&isp->lock, flags);
+ return data;
+}
+
+/***
+ * id2ptr_remove - free up an ID, return that ID if successful or 0 if not.
+ * @idp: ID namespace pointer, caller-visible version.
+ * @id: the ID to be freed.
+ */
+int id2ptr_remove(struct id *idp, int id)
+{
+ struct idspace *isp = (struct idspace *)idp->data;
+ unsigned long flags;
+ struct iddata *p;
+ int ecode = 0;
+
+ if (unlikely(!isp->bitmap))
+ return 0;
+
+ spin_lock_irqsave(&isp->lock, flags);
+ p = id_lookup_l(isp, (unsigned)id);
+ if (likely(p != NULL)) {
+ p->id = 0;
+ list_add_tail(&p->list, &isp->head);
+ ecode = id;
+ }
+ spin_unlock_irqrestore(&isp->lock, flags);
+ return ecode;
+}
+
+/***
+ * id2ptr_init - initialize/create an ID namespace.
+ * @idp: ID namespace pointer, caller-visible version.
+ * @min_wrap: not used, present only for compatibility.
+ *
+ * No locking done; assumes no caller will try to multiply initialize an
+ * ID namespace.
+ */
+
+void id2ptr_init(struct id *idp, int min_wrap) {
+
+ struct idspace *isp;
+
+ isp = kmalloc(sizeof(*isp), GFP_KERNEL);
+ id_init(isp);
+ idp->data = (void *)isp;
+}
--- 2.5.51/include/linux/id2ptr.h 1969-12-31 19:00:00.000000000 -0500
+++ 2.5.51-jh-jak/include/linux/id2ptr.h 2002-12-17 14:40:40.000000000 -0500
@@ -0,0 +1,28 @@
+#ifndef LINUX_ID2PTR_H
+#define LINUX_ID2PTR_H
+
+/*
+ * include/linux/id2ptr.h
+ *
+ * 2002-12-16 written by Joe Korty joe.korty@ccur.com
+ * Copyright (C) 2002 by Concurrent Computer Corporation
+ * Distributed under the GNU GPL license version 2.
+ *
+ * Caller interface to the O(1) ID to pointer translation service.
+ */
+
+/*
+ * ID namespace control structure. From the caller's point of
+ * view, this will be an opaque data type.
+ */
+
+struct id {
+ void *data;
+};
+
+extern void *id2ptr_lookup(struct id *idp, int id);
+extern int id2ptr_new(struct id *idp, void *data);
+extern int id2ptr_remove(struct id *idp, int id);
+extern void id2ptr_init(struct id *idp, int min_wrap);
+
+#endif /* LINUX_ID2PTR_H */
^ permalink raw reply
* 405LP compile fix
From: Hollis Blanchard @ 2002-12-18 15:49 UTC (permalink / raw)
To: embedded list
I'm glad I'm not the only one who sometimes doesn't compile-test his
patches... ;)
This patch fixes the Beech build, which is calling the now-nonexistant
function beech_time_init. In actuality beech_calibrate_decr was never called
anyways... :)
Please apply to _2_4_devel.
-Hollis
--
PowerPC Linux
IBM Linux Technology Center
===== arch/ppc/platforms/beech.c 1.9 vs edited =====
--- 1.9/arch/ppc/platforms/beech.c Thu Dec 12 17:06:37 2002
+++ edited/arch/ppc/platforms/beech.c Tue Dec 17 13:47:47 2002
@@ -253,64 +253,6 @@
/* Set RTS/CTS mode for UART 1 */
*beech_fpga_reg_2 |= FPGA_REG_2_DEFAULT_UART1_N;
-}
-
-void __init
-beech_calibrate_decr(void)
-{
- ulong freq;
- ulong tbl, tbu;
- long i, loop_count;
- u_char sec;
-
- beech_time_init();
-
- /*
- * Actually this is bad for precision, we should have a loop in
- * which we only read the seconds counter. todc_read_val writes
- * the address bytes on every call and this takes a lot of time.
- * Perhaps an nvram_wait_change method returning a time
- * stamp with a loop count as parameter would be the solution.
- */
- /*
- * Need to make sure the tbl doesn't roll over so if tbu increments
- * during this test, we need to do it again.
- */
- loop_count = 0;
-
- sec = mfdcr(DCRN_RTC0_SEC) & 0x7f;
-
- do {
- tbu = get_tbu();
-
- for (i = 0 ; i < 10000000 ; i++) {/* may take up to 1 second */
- tbl = get_tbl();
-
- if ((mfdcr(DCRN_RTC0_SEC) & 0x7f) != sec) {
- break;
- }
- }
-
- sec = mfdcr(DCRN_RTC0_SEC) & 0x7f;
-
- for (i = 0 ; i < 10000000 ; i++) { /* Should take 1 second */
- freq = get_tbl();
-
- if ((mfdcr(DCRN_RTC0_SEC) & 0x7f) != sec) {
- break;
- }
- }
-
- freq -= tbl;
- } while ((get_tbu() != tbu) && (++loop_count < 2));
-
- printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
- freq/1000000, freq%1000000);
-
- tb_ticks_per_jiffy = freq / HZ;
- tb_to_us = mulhwu_scale_factor(freq, 1000000);
-
- return;
}
/*
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply
* [linux-lvm] Re: RH8 install - LVM sizing problem
From: grenoml @ 2002-12-18 15:56 UTC (permalink / raw)
To: linux-lvm
An update to the problem:
I finally reinstalled RH8 and made the following adjustments:
-pulled / out of LVM and put in its own partition
-increased both the size of / (5G) and /usr (15G)
An 'everything' installation went fine this time with the only
problem being it was trying to run kudzu on the first reboot and when
it came up I had no mouse or keyboard so I rebooted and everything was
fine after that and so I finished the Setup config and Linux went to
the first login screen. Once logged in I went to a terminal window and
ran pvdisplay and vgscan and received the exact same response as after
the first installation:
+ /sbin/pvdisplay
pvdisplay -- ERROR: "/etc/lvmtab" doesn't exist; please run vgscan
+ /sbin/vgscan
vgscan -- LVM driver/module not loaded?
So my question is what should I do to verify the state of LVM on the
system?
Regards,
Gerry Reno
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
^ permalink raw reply
* Re: Invalid PBLK length
From: Ducrot Bruno @ 2002-12-18 16:00 UTC (permalink / raw)
To: Jens Haug
Cc: ducrot-kk6yZipjEM5g9hUCZPvPmw, acpi-devel-pyega4qmqnRoyOMFzWx49A
In-Reply-To: <200212181536.gBIFabD09402-sBhUd1W9t4xfrO0PeCDDO4ECbGbo6+O1OOFObY0sJ7w@public.gmane.org>
On Wed, Dec 18, 2002 at 04:36:36PM +0100, Jens Haug wrote:
> > Note that it is FACS (the signature of the table), not FADT (I don't know
> > why the sig. and the name of this table are not the same).
>
> But this FACS doesn't give me much information (since it's only
> the signature, I guess).
> It sais:
>
> Signature: FACS
> Length: 64
> Hardware Signature: 0x00000000
> Firmware Waking Vector: 0x00000000
> Global Lock: 0x00000000
> Flags: 0x00000000
>
Ouch! Sorry. FACP is the signature of FADT in fact.
FACS is the sig. of the FACS table, which contains the global lock and
other things.
./acpidmp FACP | ./acpitbl
Should give something like:
Signature: FACP
Length: 116
Revision: 0x01
Checksum: 0x48
OEMID: TOSCPL
OEM Table ID: 888M1
OEM Revision: 0x06040001
Creator ID: PTL
Creator Revision: 0x00000001
FIRMWARE_CTRL: 0x0fefffc0
DSDT: 0x0fefa060
INT_MODEL: 0x00
SCI_INT: 9
SMI_CMD: 0x000000b2
ACPI_ENABLE: 0xf0
ACPI_DISABLE: 0xf1
S4BIOS_REQ: 0xf2
PM1a_EVT_BLK: 0x00001000
PM1b_EVT_BLK: 0x00000000
PM1a_CNT_BLK: 0x00001004
PM1b_CNT_BLK: 0x00000000
PM2_CNT_BLK: 0x00001020
PM_TMR_BLK: 0x00001008
GPE0_BLK: 0x00001028
GPE1_BLK: 0x0000102c
PM1_EVT_LEN: 4
PM1_CNT_LEN: 2
PM2_CNT_LEN: 1
PM_TM_LEN: 4
GPE0_BLK_LEN: 4
GPE1_BLK_LEN: 4
GPE1_BASE: 16
P_LVL2_LAT: 10
P_LVL3_LAT: 1001
FLUSH_SIZE: 0
FLUSH_STRIDE: 0
DUTY_OFFSET: 1
DUTY_WIDTH: 3
DAY_ALRM: 0x0d
MON_ALRM: 0x08
CENTURY: 0x32
Flags: 0x00000025
You can, as an alternative, give something like that:
cat /proc/acpi/fadt | ./acpitbl
Cheers,
--
Ducrot Bruno
-- Which is worse: ignorance or apathy?
-- Don't know. Don't care.
-------------------------------------------------------
This SF.NET email is sponsored by: Order your Holiday Geek Presents Now!
Green Lasers, Hip Geek T-Shirts, Remote Control Tanks, Caffeinated Soap,
MP3 Players, XBox Games, Flying Saucers, WebCams, Smart Putty.
T H I N K G E E K . C O M http://www.thinkgeek.com/sf/
^ permalink raw reply
* Re: Help...
From: Maciej Soltysiak @ 2002-12-18 16:00 UTC (permalink / raw)
To: manish; +Cc: netfilter
In-Reply-To: <20021218152354.94938.qmail@web13702.mail.yahoo.com>
> >iptables -t nat -A PREROUTING -i ppp0 -j DNAT
> --to-destination 192.168.101.3
>
> This time i am able to call people from outside from
> machine C (192.168.101.3)and also able to do voice
> conversation in vat. But another side A and D are not
> able to talk to that person outside the network. Also
This looks obvious, as all the traffic comming back to you
from the Internet you are directing to C. All, means,
initiated by host A or B too.
> 1) What should i do so A, C, and D all together can
> use to call outside and able to do voice
> conversation
> in vat or vive-versa?
You would need a nat_helper for that protocol, so the router
stores connection information and knows which packets should be
sent to whom.
You could try directing the traffic from that protocol to a
local broadcast address (specify the port of the service),
maybe the applications can manage to filter out their packets
somehow by ID's.
What chat protocol is that?
Regards,
Maciej Soltysiak
^ permalink raw reply
* 2.4.20 pcnet32 problem
From: Nicolas Turro @ 2002-12-18 16:08 UTC (permalink / raw)
To: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 11075 bytes --]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi, i am reporting a bad behavior of the pcnet32 in the stock 2.4.20 kernel :
Symptoms :
1-3 Mb/s network bandwidth with ttcp (or anything else) on a full duplex
100Mbit link. The driver reports 100Mbits full duplex.
Forcing halfduplex on the switch works better ( around 10Mbits).
Workaround :
keeping same kernel but using 2.4.17 pcnet32.c gives me the full bandwidth
(>70 Mb/s)
Is this a known bug ? Is there a workaround ?
lspci :
00:00.0 Host bridge: VIA Technologies, Inc. VT82C693A/694x [Apollo PRO133x]
(rev c4)
00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x
AGP]
00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev
40)
00:07.1 IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 06)
00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 16)
00:07.3 USB Controller: VIA Technologies, Inc. USB (rev 16)
00:07.4 Host bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev
40)
00:0c.0 RAID bus controller: Promise Technology, Inc. 20265 (rev 02)
00:0e.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet LANCE]
(rev 44)
00:0f.0 Multimedia audio controller: Ensoniq 5880 AudioPCI (rev 02)
01:00.0 VGA compatible controller: Matrox Graphics, Inc. MGA G400 AGP (rev 82)
dmesg (with 2.4.17 pcnet32)
Linux version 2.4.20 (fm@kermit) (gcc version 2.95.3 20010315 (release)) #1
SMP Tue Dec 17 15:57:48 MET 2002
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000001fff0000 (usable)
BIOS-e820: 000000001fff0000 - 000000001fff3000 (ACPI NVS)
BIOS-e820: 000000001fff3000 - 0000000020000000 (ACPI data)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
511MB LOWMEM available.
found SMP MP-table at 000f5b20
hm, page 000f5000 reserved twice.
hm, page 000f6000 reserved twice.
hm, page 000f1000 reserved twice.
hm, page 000f2000 reserved twice.
On node 0 totalpages: 131056
zone(0): 4096 pages.
zone(1): 126960 pages.
zone(2): 0 pages.
Intel MultiProcessor Specification v1.1
Virtual Wire compatibility mode.
OEM ID: OEM00000 Product ID: PROD00000000 APIC at: 0xFEE00000
Processor #0 Pentium(tm) Pro APIC version 17
Processor #1 Pentium(tm) Pro APIC version 17
I/O APIC #2 Version 17 at 0xFEC00000.
Processors: 2
Kernel command line: auto BOOT_IMAGE=linux ro root=301 ramdisk=0
Initializing CPU#0
Detected 935.486 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 1867.77 BogoMIPS
Memory: 515024k/524224k available (1415k kernel code, 8812k reserved, 632k
data, 120k init, 0k highmem)
Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
Inode cache hash table entries: 32768 (order: 6, 262144 bytes)
Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
Buffer-cache hash table entries: 32768 (order: 5, 131072 bytes)
Page-cache hash table entries: 131072 (order: 7, 524288 bytes)
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
CPU serial number disabled.
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: After generic, caps: 0383fbff 00000000 00000000 00000000
CPU: Common caps: 0383fbff 00000000 00000000 00000000
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au)
mtrr: detected mtrr type: Intel
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
Intel machine check reporting enabled on CPU#0.
CPU: After generic, caps: 0383fbff 00000000 00000000 00000000
CPU: Common caps: 0383fbff 00000000 00000000 00000000
CPU0: Intel Pentium III (Coppermine) stepping 06
per-CPU timeslice cutoff: 731.35 usecs.
enabled ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Booting processor 1/1 eip 2000
Initializing CPU#1
masked ExtINT on CPU#1
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Calibrating delay loop... 1867.77 BogoMIPS
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
CPU serial number disabled.
Intel machine check reporting enabled on CPU#1.
CPU: After generic, caps: 0383fbff 00000000 00000000 00000000
CPU: Common caps: 0383fbff 00000000 00000000 00000000
CPU1: Intel Pentium III (Coppermine) stepping 06
Total of 2 processors activated (3735.55 BogoMIPS).
ENABLING IO-APIC IRQs
Setting 2 in the phys_id_present_map
...changing IO-APIC physical APIC ID to 2 ... ok.
init IO_APIC IRQs
IO-APIC (apicid-pin) 2-0, 2-16, 2-17, 2-18, 2-19, 2-20, 2-21, 2-22, 2-23 not
connected.
..TIMER: vector=0x31 pin1=2 pin2=0
number of MP IRQ sources: 16.
number of IO-APIC #2 registers: 24.
testing the IO APIC.......................
IO APIC #2......
.... register #00: 02000000
....... : physical APIC id: 02
.... register #01: 00178011
....... : max redirection entries: 0017
....... : PRQ implemented: 1
....... : IO APIC version: 0011
.... register #02: 00000000
....... : arbitration: 00
.... IRQ redirection table:
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 000 00 1 0 0 0 0 0 0 00
01 003 03 0 0 0 0 0 1 1 39
02 003 03 0 0 0 0 0 1 1 31
03 003 03 0 0 0 0 0 1 1 41
04 003 03 0 0 0 0 0 1 1 49
05 003 03 1 1 0 1 0 1 1 51
06 003 03 0 0 0 0 0 1 1 59
07 003 03 0 0 0 0 0 1 1 61
08 003 03 0 0 0 0 0 1 1 69
09 003 03 1 1 0 1 0 1 1 71
0a 003 03 1 1 0 1 0 1 1 79
0b 003 03 1 1 0 1 0 1 1 81
0c 003 03 0 0 0 0 0 1 1 89
0d 003 03 0 0 0 0 0 1 1 91
0e 003 03 0 0 0 0 0 1 1 99
0f 003 03 0 0 0 0 0 1 1 A1
10 000 00 1 0 0 0 0 0 0 00
11 000 00 1 0 0 0 0 0 0 00
12 000 00 1 0 0 0 0 0 0 00
13 000 00 1 0 0 0 0 0 0 00
14 000 00 1 0 0 0 0 0 0 00
15 000 00 1 0 0 0 0 0 0 00
16 000 00 1 0 0 0 0 0 0 00
17 000 00 1 0 0 0 0 0 0 00
IRQ to pin mappings:
IRQ0 -> 0:2
IRQ1 -> 0:1
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ5 -> 0:5
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
IRQ10 -> 0:10
IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 935.3300 MHz.
..... host bus clock speed is 133.6184 MHz.
cpu: 0, clocks: 1336184, slice: 445394
CPU0<T0:1336176,T1:890768,D:14,S:445394,C:1336184>
cpu: 1, clocks: 1336184, slice: 445394
CPU1<T0:1336176,T1:445376,D:12,S:445394,C:1336184>
checking TSC synchronization across CPUs: passed.
Waiting on wait_init_idle (map = 0x2)
All processors have done init_idle
mtrr: your CPUs had inconsistent variable MTRR settings
mtrr: probably your BIOS does not setup all CPUs
PCI: PCI BIOS revision 2.10 entry at 0xfb2c0, last bus=1
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Using IRQ router VIA [1106/0686] at 00:07.0
PCI: Enabling Via external APIC routing
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Journalled Block Device driver loaded
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
pty: 1024 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI
enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
Real Time Clock Driver v1.10e
Uniform Multi-Platform E-IDE driver Revision: 6.31
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
VP_IDE: IDE controller on PCI bus 00 dev 39
VP_IDE: detected chipset, but driver not compiled in!
VP_IDE: chipset revision 6
VP_IDE: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xc000-0xc007, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xc008-0xc00f, BIOS settings: hdc:DMA, hdd:pio
PDC20265: IDE controller on PCI bus 00 dev 60
PDC20265: chipset revision 2
ide: Found promise 20265 in RAID mode.
PDC20265: not 100% native mode: will probe irqs later
PDC20265: (U)DMA Burst Bit ENABLED Primary MASTER Mode Secondary MASTER Mode.
ide2: BM-DMA at 0xdc00-0xdc07, BIOS settings: hde:DMA, hdf:DMA
ide3: BM-DMA at 0xdc08-0xdc0f, BIOS settings: hdg:pio, hdh:pio
hda: Maxtor 5T020H2, ATA DISK drive
hdc: CDU5211, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 40021632 sectors (20491 MB) w/2048KiB Cache, CHS=2491/255/63
Partition check:
hda: hda1 hda2 hda3
pcnet32_probe_pci: found device 0x001022.0x002000
ioaddr=0x00e000 resource_flags=0x000101
eth0: PCnet/FAST III 79C973 at 0xe000, 00 c0 fd 02 16 b5
pcnet32: pcnet32_private lp=dfef1000 lp_dma_addr=0x1fef1000 assigned IRQ 10.
pcnet32.c:v1.25kf 26.9.1999 tsbogend@alpha.franken.de
SCSI subsystem driver Revision: 1.00
kmod: failed to exec /sbin/modprobe -s -k scsi_hostadapter, errno = 2
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 4096 buckets, 32Kbytes
TCP: Hash tables configured (established 32768 bind 32768)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 120k freed
blk: queue c0376684, I/O limit 4095Mb (mask 0xffffffff)
ide0: Speed warnings UDMA 3/4/5 is not functional.
Adding Swap: 2097136k swap-space (priority -1)
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,3), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
usb-uhci.c: $Revision: 1.275 $ time 16:03:10 Dec 17 2002
usb-uhci.c: High bandwidth mode enabled
usb-uhci.c: USB UHCI at I/O 0xc400, IRQ 9
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
usb-uhci.c: USB UHCI at I/O 0xc800, IRQ 9
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 2 ports detected
usb-uhci.c: v1.275:USB Universal Host Controller Interface driver
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE+AJ1nty/HpgyBIboRAlG+AJ9jUN8k05WtQ8q2Lnq2Qwj0u8C0ZgCgnYQ6
9NWGbVyVDWTyAT+M4S7gEMw=
=OWmD
-----END PGP SIGNATURE-----
[-- Attachment #2: desktop --]
[-- Type: text/plain, Size: 27872 bytes --]
#
# Automatically generated make config: don't edit
#
CONFIG_X86=y
# CONFIG_SBUS is not set
CONFIG_UID16=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y
#
# Processor type and features
#
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
CONFIG_M686=y
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MELAN is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_L1_CACHE_SHIFT=5
CONFIG_X86_HAS_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_PGE=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_X86_F00F_WORKS_OK=y
CONFIG_X86_MCE=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
CONFIG_HIGHIO=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_SMP=y
# CONFIG_MULTIQUAD is not set
# CONFIG_X86_TSC_DISABLE is not set
CONFIG_X86_TSC=y
CONFIG_HAVE_DEC_LOCK=y
#
# General setup
#
CONFIG_NET=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_ISA=y
CONFIG_PCI_NAMES=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
CONFIG_HOTPLUG=y
#
# PCMCIA/CardBus support
#
# CONFIG_PCMCIA is not set
#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set
# CONFIG_HOTPLUG_PCI_COMPAQ is not set
# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
# CONFIG_HOTPLUG_PCI_IBM is not set
# CONFIG_HOTPLUG_PCI_ACPI is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=m
# CONFIG_PM is not set
# CONFIG_ACPI is not set
# CONFIG_APM is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Parallel port support
#
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_PC_CML1=m
CONFIG_PARPORT_SERIAL=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_AMIGA is not set
# CONFIG_PARPORT_MFC3 is not set
# CONFIG_PARPORT_ATARI is not set
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_SUNBPP is not set
# CONFIG_PARPORT_OTHER is not set
CONFIG_PARPORT_1284=y
#
# Plug and Play configuration
#
CONFIG_PNP=y
CONFIG_ISAPNP=m
#
# Block devices
#
CONFIG_BLK_DEV_FD=m
# CONFIG_BLK_DEV_XD is not set
CONFIG_PARIDE=m
CONFIG_PARIDE_PARPORT=m
#
# Parallel IDE high-level drivers
#
CONFIG_PARIDE_PD=m
CONFIG_PARIDE_PCD=m
CONFIG_PARIDE_PF=m
CONFIG_PARIDE_PT=m
CONFIG_PARIDE_PG=m
#
# Parallel IDE protocol modules
#
# CONFIG_PARIDE_ATEN is not set
# CONFIG_PARIDE_BPCK is not set
# CONFIG_PARIDE_BPCK6 is not set
# CONFIG_PARIDE_COMM is not set
# CONFIG_PARIDE_DSTR is not set
# CONFIG_PARIDE_FIT2 is not set
# CONFIG_PARIDE_FIT3 is not set
# CONFIG_PARIDE_EPAT is not set
# CONFIG_PARIDE_EPIA is not set
# CONFIG_PARIDE_FRIQ is not set
# CONFIG_PARIDE_FRPW is not set
# CONFIG_PARIDE_KBIC is not set
# CONFIG_PARIDE_KTTI is not set
# CONFIG_PARIDE_ON20 is not set
# CONFIG_PARIDE_ON26 is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_CISS_SCSI_TAPE is not set
CONFIG_BLK_DEV_DAC960=y
# CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_SIZE=4096
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_BLK_STATS=y
#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID5=m
# CONFIG_MD_MULTIPATH is not set
CONFIG_BLK_DEV_LVM=m
#
# Networking options
#
CONFIG_PACKET=m
# CONFIG_PACKET_MMAP is not set
CONFIG_NETLINK_DEV=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
CONFIG_SYN_COOKIES=y
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_CONNTRACK is not set
# CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
# CONFIG_IP_NF_COMPAT_IPFWADM is not set
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
#
#
#
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
#
# Appletalk devices
#
# CONFIG_DEV_APPLETALK is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_LLC is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
#
# Telephony Support
#
# CONFIG_PHONE is not set
# CONFIG_PHONE_IXJ is not set
# CONFIG_PHONE_IXJ_PCMCIA is not set
#
# ATA/IDE/MFM/RLL support
#
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
# CONFIG_IDEDISK_STROKE is not set
# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set
# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set
# CONFIG_BLK_DEV_IDEDISK_IBM is not set
# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set
# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set
# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set
# CONFIG_BLK_DEV_IDEDISK_WD is not set
# CONFIG_BLK_DEV_COMMERIAL is not set
# CONFIG_BLK_DEV_TIVO is not set
# CONFIG_BLK_DEV_IDECS is not set
CONFIG_BLK_DEV_IDECD=m
# CONFIG_BLK_DEV_IDETAPE is not set
CONFIG_BLK_DEV_IDEFLOPPY=m
CONFIG_BLK_DEV_IDESCSI=m
# CONFIG_IDE_TASK_IOCTL is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
# CONFIG_BLK_DEV_ISAPNP is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_PCI_WIP is not set
# CONFIG_BLK_DEV_IDEDMA_TIMEOUT is not set
# CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set
CONFIG_BLK_DEV_ADMA=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_AEC62XX_TUNING is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_WDC_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_AMD74XX_OVERRIDE is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_CMD680 is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5530 is not set
CONFIG_BLK_DEV_HPT34X=y
# CONFIG_HPT34X_AUTODMA is not set
CONFIG_BLK_DEV_HPT366=y
CONFIG_BLK_DEV_PIIX=y
CONFIG_PIIX_TUNING=y
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_PDC202XX=y
CONFIG_PDC202XX_BURST=y
CONFIG_PDC202XX_FORCE=y
CONFIG_BLK_DEV_SVWKS=y
CONFIG_BLK_DEV_SIS5513=y
CONFIG_BLK_DEV_SLC90E66=y
CONFIG_BLK_DEV_TRM290=y
CONFIG_BLK_DEV_VIA82CXXX=y
# CONFIG_IDE_CHIPSETS is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_DMA_NONPCI is not set
CONFIG_BLK_DEV_IDE_MODES=y
CONFIG_BLK_DEV_ATARAID=m
CONFIG_BLK_DEV_ATARAID_PDC=m
# CONFIG_BLK_DEV_ATARAID_HPT is not set
#
# SCSI support
#
CONFIG_SCSI=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40
CONFIG_CHR_DEV_ST=m
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_SR_EXTRA_DEVS=2
CONFIG_CHR_DEV_SG=m
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_DEBUG_QUEUES is not set
# CONFIG_SCSI_MULTI_LUN is not set
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
#
# SCSI low-level drivers
#
CONFIG_BLK_DEV_3W_XXXX_RAID=m
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AACRAID is not set
CONFIG_SCSI_AIC7XXX=y
CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
# CONFIG_AIC7XXX_PROBE_EISA_VL is not set
# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
CONFIG_SCSI_BUSLOGIC=y
# CONFIG_SCSI_OMIT_FLASHPOINT is not set
# CONFIG_SCSI_CPQFCTS is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_EATA_DMA is not set
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
CONFIG_SCSI_PPA=m
CONFIG_SCSI_IMM=m
# CONFIG_SCSI_IZIP_EPP16 is not set
# CONFIG_SCSI_IZIP_SLOW_CTR is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NCR53C7xx is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
CONFIG_SCSI_NCR53C8XX=m
# CONFIG_SCSI_SYM53C8XX is not set
CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
CONFIG_SCSI_NCR53C8XX_SYNC=20
# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_SIM710 is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_DEBUG is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
# CONFIG_FUSION_BOOT is not set
# CONFIG_FUSION_ISENSE is not set
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_LAN is not set
#
# IEEE 1394 (FireWire) support (EXPERIMENTAL)
#
CONFIG_IEEE1394=m
#
# Device Drivers
#
#
# Texas Instruments PCILynx requires I2C bit-banging
#
CONFIG_IEEE1394_OHCI1394=m
#
# Protocol Drivers
#
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_SBP2=m
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
CONFIG_IEEE1394_ETH1394=m
CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_RAWIO=m
# CONFIG_IEEE1394_CMP is not set
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
#
# I2O device support
#
CONFIG_I2O=m
CONFIG_I2O_PCI=m
CONFIG_I2O_BLOCK=m
CONFIG_I2O_LAN=m
CONFIG_I2O_SCSI=m
CONFIG_I2O_PROC=m
#
# Network device support
#
CONFIG_NETDEVICES=y
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
# CONFIG_SUNGEM is not set
CONFIG_NET_VENDOR_3COM=y
# CONFIG_EL1 is not set
# CONFIG_EL2 is not set
# CONFIG_ELPLUS is not set
# CONFIG_EL16 is not set
# CONFIG_EL3 is not set
# CONFIG_3C515 is not set
# CONFIG_ELMC is not set
# CONFIG_ELMC_II is not set
CONFIG_VORTEX=y
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
CONFIG_PCNET32=y
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
CONFIG_TULIP=y
# CONFIG_TULIP_MWI is not set
# CONFIG_TULIP_MMIO is not set
# CONFIG_DE4X5 is not set
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
CONFIG_EEPRO100=y
CONFIG_E100=m
# CONFIG_LNE390 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_SUNDANCE_MMIO is not set
# CONFIG_TLAN is not set
# CONFIG_TC35815 is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_VIA_RHINE_MMIO is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_NET_POCKET is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
CONFIG_E1000=m
# CONFIG_MYRI_SBUS is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPP_FILTER is not set
# CONFIG_PPP_ASYNC is not set
# CONFIG_PPP_SYNC_TTY is not set
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
#
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y
# CONFIG_STRIP is not set
# CONFIG_WAVELAN is not set
# CONFIG_ARLAN is not set
# CONFIG_AIRONET4500 is not set
# CONFIG_AIRONET4500_NONCS is not set
# CONFIG_AIRONET4500_PROC is not set
# CONFIG_AIRO is not set
# CONFIG_HERMES is not set
# CONFIG_PLX_HERMES is not set
# CONFIG_PCI_HERMES is not set
CONFIG_NET_WIRELESS=y
#
# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
CONFIG_IRDA=m
#
# IrDA protocols
#
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=m
CONFIG_IRDA_ULTRA=y
#
# IrDA options
#
# CONFIG_IRDA_CACHE_LAST_LSAP is not set
# CONFIG_IRDA_FAST_RR is not set
# CONFIG_IRDA_DEBUG is not set
#
# Infrared-port device drivers
#
#
# SIR device drivers
#
CONFIG_IRTTY_SIR=m
CONFIG_IRPORT_SIR=m
#
# Dongle support
#
# CONFIG_DONGLE is not set
#
# FIR device drivers
#
CONFIG_USB_IRDA=m
CONFIG_NSC_FIR=m
CONFIG_WINBOND_FIR=m
CONFIG_TOSHIBA_FIR=m
CONFIG_SMC_IRCC_FIR=m
CONFIG_ALI_FIR=m
CONFIG_VLSI_FIR=m
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Old CD-ROM drivers (not SCSI, not IDE)
#
# CONFIG_CD_NO_IDESCSI is not set
#
# Input core support
#
CONFIG_INPUT=m
CONFIG_INPUT_KEYBDEV=m
CONFIG_INPUT_MOUSEDEV=m
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=m
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=1024
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
CONFIG_PPDEV=m
#
# I2C support
#
# CONFIG_I2C is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
CONFIG_MOUSE=y
CONFIG_PSMOUSE=y
# CONFIG_82C710_MOUSE is not set
# CONFIG_PC110_PAD is not set
# CONFIG_MK712_MOUSE is not set
#
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
# CONFIG_INPUT_NS558 is not set
# CONFIG_INPUT_LIGHTNING is not set
# CONFIG_INPUT_PCIGAME is not set
# CONFIG_INPUT_CS461X is not set
# CONFIG_INPUT_EMU10K1 is not set
# CONFIG_INPUT_SERIO is not set
# CONFIG_INPUT_SERPORT is not set
#
# Joysticks
#
# CONFIG_INPUT_ANALOG is not set
# CONFIG_INPUT_A3D is not set
# CONFIG_INPUT_ADI is not set
# CONFIG_INPUT_COBRA is not set
# CONFIG_INPUT_GF2K is not set
# CONFIG_INPUT_GRIP is not set
# CONFIG_INPUT_INTERACT is not set
# CONFIG_INPUT_TMDC is not set
# CONFIG_INPUT_SIDEWINDER is not set
# CONFIG_INPUT_IFORCE_USB is not set
# CONFIG_INPUT_IFORCE_232 is not set
# CONFIG_INPUT_WARRIOR is not set
# CONFIG_INPUT_MAGELLAN is not set
# CONFIG_INPUT_SPACEORB is not set
# CONFIG_INPUT_SPACEBALL is not set
# CONFIG_INPUT_STINGER is not set
# CONFIG_INPUT_DB9 is not set
# CONFIG_INPUT_GAMECON is not set
# CONFIG_INPUT_TURBOGRAFX is not set
# CONFIG_QIC02_TAPE is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_AMD_RNG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_AMD_PM768 is not set
# CONFIG_NVRAM is not set
CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=m
CONFIG_AGP_INTEL=y
CONFIG_AGP_I810=y
CONFIG_AGP_VIA=y
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD_8151 is not set
CONFIG_AGP_SIS=y
CONFIG_AGP_ALI=y
CONFIG_AGP_SWORKS=y
CONFIG_DRM=y
# CONFIG_DRM_OLD is not set
#
# DRM 4.1 drivers
#
CONFIG_DRM_NEW=y
CONFIG_DRM_TDFX=m
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_I810=m
CONFIG_DRM_I810_XFREE_41=y
CONFIG_DRM_I830=m
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
# CONFIG_MWAVE is not set
#
# Multimedia devices
#
CONFIG_VIDEO_DEV=m
#
# Video For Linux
#
CONFIG_VIDEO_PROC_FS=y
# CONFIG_I2C_PARPORT is not set
#
# Video Adapters
#
# CONFIG_VIDEO_PMS is not set
CONFIG_VIDEO_BWQCAM=m
CONFIG_VIDEO_CQCAM=m
CONFIG_VIDEO_W9966=m
CONFIG_VIDEO_CPIA=m
CONFIG_VIDEO_CPIA_PP=m
CONFIG_VIDEO_CPIA_USB=m
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
# CONFIG_VIDEO_STRADIS is not set
# CONFIG_VIDEO_ZORAN is not set
# CONFIG_VIDEO_ZORAN_BUZ is not set
# CONFIG_VIDEO_ZORAN_DC10 is not set
# CONFIG_VIDEO_ZORAN_LML33 is not set
# CONFIG_VIDEO_ZR36120 is not set
# CONFIG_VIDEO_MEYE is not set
#
# Radio Adapters
#
# CONFIG_RADIO_CADET is not set
# CONFIG_RADIO_RTRACK is not set
# CONFIG_RADIO_RTRACK2 is not set
# CONFIG_RADIO_AZTECH is not set
# CONFIG_RADIO_GEMTEK is not set
# CONFIG_RADIO_GEMTEK_PCI is not set
# CONFIG_RADIO_MAXIRADIO is not set
# CONFIG_RADIO_MAESTRO is not set
# CONFIG_RADIO_MIROPCM20 is not set
# CONFIG_RADIO_MIROPCM20_RDS is not set
# CONFIG_RADIO_SF16FMI is not set
# CONFIG_RADIO_TERRATEC is not set
# CONFIG_RADIO_TRUST is not set
# CONFIG_RADIO_TYPHOON is not set
# CONFIG_RADIO_ZOLTRIX is not set
#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=m
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BEFS_DEBUG is not set
# CONFIG_BFS_FS is not set
CONFIG_EXT3_FS=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_UMSDOS_FS is not set
CONFIG_VFAT_FS=m
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
CONFIG_RAMFS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
# CONFIG_JFS_FS is not set
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
CONFIG_NTFS_FS=m
CONFIG_NTFS_RW=y
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
CONFIG_ROMFS_FS=m
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
#
CONFIG_CODA_FS=m
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_ROOT_NFS is not set
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
# CONFIG_NFSD_TCP is not set
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
# CONFIG_NCPFS_STRONG is not set
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_ZISOFS_FS is not set
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
CONFIG_SMB_NLS=y
CONFIG_NLS=y
#
# Native Language Support
#
CONFIG_NLS_DEFAULT="cp437"
CONFIG_NLS_CODEPAGE_437=m
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=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ISO8859_1=m
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=m
#
# Console drivers
#
CONFIG_VGA_CONSOLE=y
CONFIG_VIDEO_SELECT=y
# CONFIG_MDA_CONSOLE is not set
#
# Frame-buffer support
#
CONFIG_FB=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_FB_RIVA is not set
# CONFIG_FB_CLGEN is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CYBER2000 is not set
CONFIG_FB_VESA=y
CONFIG_FB_VGA16=m
# CONFIG_FB_HGA is not set
CONFIG_VIDEO_SELECT=y
# CONFIG_FB_MATROX is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_SIS is not set
CONFIG_FB_NEOMAGIC=m
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
CONFIG_FB_TRIDENT=m
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FBCON_ADVANCED is not set
CONFIG_FBCON_CFB8=y
CONFIG_FBCON_CFB16=y
CONFIG_FBCON_CFB24=y
CONFIG_FBCON_CFB32=y
CONFIG_FBCON_VGA_PLANES=m
# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
# CONFIG_FBCON_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
#
# Sound
#
CONFIG_SOUND=m
CONFIG_SOUND_ALI5455=m
# CONFIG_SOUND_BT878 is not set
# CONFIG_SOUND_CMPCI is not set
CONFIG_SOUND_EMU10K1=m
# CONFIG_MIDI_EMU10K1 is not set
CONFIG_SOUND_FUSION=m
CONFIG_SOUND_CS4281=m
CONFIG_SOUND_ES1370=m
CONFIG_SOUND_ES1371=m
CONFIG_SOUND_ESSSOLO1=m
CONFIG_SOUND_MAESTRO=m
CONFIG_SOUND_MAESTRO3=m
CONFIG_SOUND_FORTE=m
CONFIG_SOUND_ICH=m
# CONFIG_SOUND_RME96XX is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
CONFIG_SOUND_VIA82CXXX=m
# CONFIG_MIDI_VIA82CXXX is not set
CONFIG_SOUND_OSS=m
# CONFIG_SOUND_TRACEINIT is not set
# CONFIG_SOUND_DMAP is not set
# CONFIG_SOUND_AD1816 is not set
# CONFIG_SOUND_SGALAXY is not set
# CONFIG_SOUND_ADLIB is not set
# CONFIG_SOUND_ACI_MIXER is not set
CONFIG_SOUND_CS4232=m
# CONFIG_SOUND_SSCAPE is not set
# CONFIG_SOUND_GUS is not set
# CONFIG_SOUND_VMIDI is not set
# CONFIG_SOUND_TRIX is not set
# CONFIG_SOUND_MSS is not set
# CONFIG_SOUND_MPU401 is not set
CONFIG_SOUND_NM256=m
# CONFIG_SOUND_MAD16 is not set
# CONFIG_SOUND_PAS is not set
# CONFIG_PAS_JOYSTICK is not set
# CONFIG_SOUND_PSS is not set
CONFIG_SOUND_SB=m
CONFIG_SOUND_AWE32_SYNTH=m
# CONFIG_SOUND_WAVEFRONT is not set
# CONFIG_SOUND_MAUI is not set
CONFIG_SOUND_YM3812=m
# CONFIG_SOUND_OPL3SA1 is not set
# CONFIG_SOUND_OPL3SA2 is not set
# CONFIG_SOUND_YMFPCI is not set
# CONFIG_SOUND_YMFPCI_LEGACY is not set
# CONFIG_SOUND_UART6850 is not set
# CONFIG_SOUND_AEDSP16 is not set
# CONFIG_SOUND_TVMIXER is not set
#
# USB support
#
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_LONG_TIMEOUT is not set
#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_UHCI=m
CONFIG_USB_UHCI_ALT=m
CONFIG_USB_OHCI=m
#
# USB Device Class drivers
#
CONFIG_USB_AUDIO=m
CONFIG_USB_EMI26=m
CONFIG_USB_BLUETOOTH=m
CONFIG_USB_MIDI=m
CONFIG_USB_STORAGE=m
CONFIG_USB_STORAGE_DEBUG=y
CONFIG_USB_STORAGE_DATAFAB=y
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_DPCM=y
CONFIG_USB_STORAGE_HP8200e=y
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
CONFIG_USB_STORAGE_JUMPSHOT=y
CONFIG_USB_ACM=m
CONFIG_USB_PRINTER=m
#
# USB Human Interface Devices (HID)
#
CONFIG_USB_HID=m
CONFIG_USB_HIDINPUT=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_KBD=m
CONFIG_USB_MOUSE=m
CONFIG_USB_AIPTEK=m
CONFIG_USB_WACOM=m
#
# USB Imaging devices
#
CONFIG_USB_DC2XX=m
CONFIG_USB_MDC800=m
CONFIG_USB_SCANNER=m
CONFIG_USB_MICROTEK=m
CONFIG_USB_HPUSBSCSI=m
#
# USB Multimedia devices
#
CONFIG_USB_IBMCAM=m
CONFIG_USB_OV511=m
CONFIG_USB_PWC=m
CONFIG_USB_SE401=m
CONFIG_USB_STV680=m
CONFIG_USB_VICAM=m
CONFIG_USB_DSBR=m
CONFIG_USB_DABUSB=m
#
# USB Network adaptors
#
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_CATC is not set
# CONFIG_USB_CDCETHER is not set
# CONFIG_USB_USBNET is not set
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=m
# CONFIG_USB_SERIAL_DEBUG is not set
CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
CONFIG_USB_SERIAL_EDGEPORT_TI=m
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
CONFIG_USB_SERIAL_KLSI=m
# CONFIG_USB_SERIAL_PL2303 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_TIGL is not set
# CONFIG_USB_BRLVGER is not set
# CONFIG_USB_LCD is not set
#
# Bluetooth support
#
CONFIG_BLUEZ=m
# CONFIG_BLUEZ_L2CAP is not set
# CONFIG_BLUEZ_SCO is not set
# CONFIG_BLUEZ_BNEP is not set
#
# Bluetooth device drivers
#
CONFIG_BLUEZ_HCIUSB=m
CONFIG_BLUEZ_USB_ZERO_PACKET=y
CONFIG_BLUEZ_HCIUART=m
CONFIG_BLUEZ_HCIUART_H4=y
# CONFIG_BLUEZ_HCIDTL1 is not set
# CONFIG_BLUEZ_HCIBT3C is not set
# CONFIG_BLUEZ_HCIBLUECARD is not set
CONFIG_BLUEZ_HCIVHCI=m
#
# Kernel hacking
#
# CONFIG_DEBUG_KERNEL is not set
#
# Library routines
#
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
^ permalink raw reply
* Re: Invalid PBLK length
From: Jens Haug @ 2002-12-18 16:08 UTC (permalink / raw)
To: aileenja-dTzOdQ2U+/YAvxtiuMwx3w; +Cc: acpi-devel-pyega4qmqnRoyOMFzWx49A
> I didn't check code, but if that said address space type 127 does mean "Functi
> onal Fixed Hardware (0x7F)", then your processor expects that OS processor dri
> ver knows the specific address to control voltage scaling state transition. Us
> ually it's done by accessing MSRs. This has been true for AMD PowerNow! and Tr
> ansmeta LongRun, and Intel's new Geyserville I/F which will be unveiled on Ban
> ias in the near future. These are mostly under NDA, therefore I can't be speci
> fic, however there're several public documents which explain this stuff a bit
> more.
>
> So if my guess is correct, your BIOS is not bad. To enable processor performan
> ce control on your machine, Linux needs inputs from CPU vendors.
My processor is an AMD Mobile Athlon, so it has AMD PowerNow!
technology. I don't know much about this stuff, but your guess
sounds very reasonable to me.
What's the right way to make this work? Read the AMD specs or
push AMD to release more specs?
Jens
--
Jens Haug
IKFF Universität Stuttgart Tel. 0711/685-6422
Pfaffenwaldring 9 Fax 0711/685-6356
70550 Stuttgart haug-X6ztD3ggwzuBAmxm6OvjtTjhTm2NLCe8@public.gmane.org
-------------------------------------------------------
This SF.NET email is sponsored by: Order your Holiday Geek Presents Now!
Green Lasers, Hip Geek T-Shirts, Remote Control Tanks, Caffeinated Soap,
MP3 Players, XBox Games, Flying Saucers, WebCams, Smart Putty.
T H I N K G E E K . C O M http://www.thinkgeek.com/sf/
^ permalink raw reply
* RE: make module_install
From: Marius Groeger @ 2002-12-18 16:11 UTC (permalink / raw)
To: Allen Curtis; +Cc: LinuxPPC
In-Reply-To: <NCBBIINEHIPFGJPLBEIFGEEOEAAA.acurtis@onz.com>
On Wed, 18 Dec 2002, Allen Curtis wrote:
> I think I have followed this thread to the end and I don't see a solution to
> the module problem? If that is the case, I noticed in the original message
> that ARCH=ppc was specified but the CROSS_COMPILE= was not. ARCH really only
> affects make menuconfig. (from my experience) But if you do not specify the
> correct compiler you will definitely get complaints about not having a
> compatible architecture.
I think the solution was given quite early by Jaap-Jan Boor: use the
Busybox depmod Perl script, if you need one.
Regards
Marius
-----------------------------------------------------------------------------
Marius Groeger SYSGO Real-Time Solutions AG mgroeger@sysgo.de
Software Engineering Embedded and Real-Time Software www.sysgo.de
Voice: +49-6136-9948-0 Am Pfaffenstein 14 www.osek.de
FAX: +49-6136-9948-10 55270 Klein-Winternheim, Germany www.elinos.com
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply
* Help in cross-compiler
From: Chien-Lung Wu @ 2002-12-18 15:57 UTC (permalink / raw)
To: 'linux-mips@linux-mips.org'; +Cc: Chien-Lung Wu
Hi,
I am working on the embedded linux system on bug endian mips (mips-linux).
As I understand, I need to get the cross-compiler work on my linux-i686 host
(redhat 7.2).
Following the Bradly's "Building a modern MIPS cross-toolchain for linux",
I download following packages:
binutils-2.11
gcc-2.95
glibc-2.2.5
glibc-linuxthreads-2.2.5
And following the procedue:
1. build the cross-binutils
tar -xzf binutils-2.11.tar.gz
mkdir mips-binutils-2.11
cd mips-binutils-2.11
../binutils-2.11/configure --target=mips-linux \
--prefix=/usr/toolchain-mips
--libdir='${exec_prefix}'/mips-linux/i386-linux-lib
make
make install
cd ..
Everything is fine.
2. build the C cross-compiler
tar -xzf gcc-2.95.tar.gz
mkdir mips-gcc-2.95
cd mips-gcc-2.95
../gcc-2.95/configure --target=mips-linux
--prefix=/usr/toolchain-mips --enable-languages=c \
--disable-shared --with-headers=/usr/include
make
make install
cd ..
As thw warning, The --with-headers causes configure to make a copy of the
headers at the specified location into /usr/local/mipsel-linux/sys-includes
and to run fixincludes on them. These headers are then used by xgcc during
the cross-building of libgcc.a (which is part of building the static C
compiler). This means that you'll need some MIPS host headers laying around
somewhere, including the linux and asm subdirectories from the Linux kernel.
Maybe you have them from your previous cross-compiler installation. If not,
there are various creative ways of obtaining them, including grabbing them
from some MIPS distribution. There is also the dubious hack of using your
hosts's headers (--with-headers=/usr/include) instead. The key word here is
"dubious"; you have been warned.
Since I can not get "some MIPS host headers", I use the dubious hack.
And it seems get the build of C cross-compiler work.
3. Cross-build glibc
tar -xzf glibc.tar.gz
cd glibc
patch -i ../glibc-2.2.5-mips-build-gmon.diff
tar -xzf ../glibc-linuxthreads.tar.gz
cd ..
mkdir mipsel-glibc
cd mipsel-glibc
CFLAGS="-O2 -g -finline-limit=10000" ../glibc/configure
--host=i686-linux\
--enable-add-ons --prefix=/usr
make
make install install_root=/usr/local/mips-linux/glibc
cd ..
cp -a /usr/local/mips-linux/glibc/lib/*
/usr/toolchain/mips-linux/lib/
cp -a /usr/local/mips-linux/glibc/usr/include/*
/usr/toolchain/mips-linux/include/
cp -a /usr/local/mips-linux/glibc/usr/lib/*
/usr/toolchain/mips-linux/lib/
GROUP ( /usr/toolchain/mips-linux/lib/libc.so.6
/usr/toolchain/mipsel-linux/lib/libc_nonshared.a )
It works fine!
4. Build the final C and C++ cross-compilers
cd mipsel-gcc
../gcc/configure --target=mipsel-linux prefic=/usr/toolchain
--enable-languages=c,c++
make
make install
However, I got the error_message:
home/cross-compiler1/mips-gcc-2.95/gcc/xgcc
-B/home/cross-compiler1/mips-gcc-2.95/gcc/
-B/usr/toolchain1-mips/mips-linux/bin/ -c -g -O2 -fvtable-thunks
-D_GNU_SOURCE
-fno-implicit-templates -I../../../gcc-2.95/libstdc++
-I../../../gcc-2.95/libstdc++/stl -I../libio
-I../../../gcc-2.95/libstdc++/../libio -nostdinc++ -D_IO_MTSAFE_IO
../../../gcc-2.95/libstdc++/cmathi.cc
In file included from
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/math.h:350,
from ../../../gcc-2.95/libstdc++/cmath:7,
from ../../../gcc-2.95/libstdc++/cmathi.cc:7:
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `double atan2(double, double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:426:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `float atan2f(float, float)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:426:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long double atan2l(long double, long double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:426:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long double __atan2l(long double, long double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:427:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `double fmod(double, double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:430:
unknown register name `ax' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `float fmodf(float, float)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:430:
unknown register name `ax' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long double fmodl(long double, long double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:430:
unknown register name `ax' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `double atan(double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:467:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `float atanf(float)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:467:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long double atanl(long double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:467:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `double log1p(double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:540:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `float log1pf(float)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:540:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long double log1pl(long double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:540:
unknown register name `st(1)' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long int lrintf(float)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:611:
unknown register name `st' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long int lrint(double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:616:
unknown register name `st' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long int lrintl(long double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:621:
unknown register name `st' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long long int llrintf(float)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:634:
unknown register name `st' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long long int llrint(double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:639:
unknown register name `st' in `asm'
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:
In function `long long int llrintl(long double)':
/usr/toolchain1-mips/lib/gcc-lib/mips-linux/2.95/../../../../mips-linux/sys-
include/bits/mathinline.h:644:
unknown register name `st' in `asm'
make[1]: *** [cmathi.o] Error 1
make[1]: Leaving directory
`/home/cross-compiler1/mips-gcc-2.95/mips-linux/libstdc++'
make: *** [all-target-libstdc++] Error 2
Does any have any idea to fix this error?
When I build the C cross-compiler, I use the "dubious hack"
--with-headers=/usr/include copy the "MIPS host header files". Are there any
other ways to copy the MIPS-host headers?
Thanks for your help.
Chien-Lung
^ permalink raw reply
* Re: heatload 0.4 now with throttling support
From: Malte Thoma @ 2002-12-18 16:13 UTC (permalink / raw)
To: Ducrot Bruno, ACPI-Devel
In-Reply-To: <20021218153355.GK347-j6u/t2rXLliUoIHC/UFpr9i2O/JbrIOy@public.gmane.org>
Ducrot Bruno wrote:
>After dpkg and heatload, get
> Sorry can't open any of the following files:
> /proc/acpi/thermal_zone/THRM/temperature
> /proc/acpi/thermal/0/status
>
>But
># ls /proc/acpi/thermal_zone/
>THM0
>
>
>Please fix by parsing the entry of /proc/acpi/thermal_zone,
>
can you please send me
cat /proc/acpi/thermal_zone/THM0
... it seems to me that there are a LOT of different
proc/acpi-structures :-(
/proc/acpi/thermal/0/status
/proc/acpi/thermal_zone
/proc/acpi/thermal_zone/THRM/temperature
and now:
/proc/acpi/thermal_zone/THM0
hope that the ACPI-group stabilize this ;-)
>and
>do not forget that you can have more than one thermal zone.
>
>
>
until now heatload workes only for one CPU (i suppose the thermal_zone
is coherent to the counting of CPUs?)
I won't be hard to improve it to more than one, but doing THAT for
recurrent changing directory structs does not make fun.
If you can tell me more about the future (and present) of the
proc/acpi-structure depending on the numers of CPU I will start
implementing this feature between christmas and new years eve ;-)
Greetings,
Malte
>
>
-------------------------------------------------------
This SF.NET email is sponsored by: Order your Holiday Geek Presents Now!
Green Lasers, Hip Geek T-Shirts, Remote Control Tanks, Caffeinated Soap,
MP3 Players, XBox Games, Flying Saucers, WebCams, Smart Putty.
T H I N K G E E K . C O M http://www.thinkgeek.com/sf/
^ permalink raw reply
* [PATCH 2.5.52] NUMA scheduler (1/2)
From: Erich Focht @ 2002-12-18 16:21 UTC (permalink / raw)
To: Martin J. Bligh, Michael Hohnbaum
Cc: Robert Love, Ingo Molnar, Stephen Hemminger, linux-kernel
In-Reply-To: <200212021629.39060.efocht@ess.nec.de>
[-- Attachment #1: Type: text/plain, Size: 438 bytes --]
This is the first part of the minimal NUMA scheduler built on top of
the O(1) load balancer. It is rediffed for 2.5.52 and contains a small
bugfix in build_node_data().
The two patches are:
01-numa-sched-core-2.5.52-23.patch: core NUMA scheduler infrastructure
providing a node aware load_balancer.
02-numa-sched-ilb-2.5.52-21.patch: initial load balancing, selects
least loaded node & CPU at exec().
Regards,
Erich
[-- Attachment #2: 01-numa-sched-core-2.5.52-23.patch --]
[-- Type: text/x-diff, Size: 12708 bytes --]
diff -urN a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
--- a/arch/i386/kernel/smpboot.c 2002-12-16 03:07:56.000000000 +0100
+++ b/arch/i386/kernel/smpboot.c 2002-12-18 16:53:12.000000000 +0100
@@ -1202,6 +1202,9 @@
void __init smp_cpus_done(unsigned int max_cpus)
{
zap_low_mappings();
+#ifdef CONFIG_NUMA
+ build_node_data();
+#endif
}
void __init smp_intr_init()
diff -urN a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
--- a/arch/ia64/kernel/smpboot.c 2002-12-16 03:07:50.000000000 +0100
+++ b/arch/ia64/kernel/smpboot.c 2002-12-18 16:53:13.000000000 +0100
@@ -397,7 +397,7 @@
static void
smp_tune_scheduling (void)
{
- cache_decay_ticks = 10; /* XXX base this on PAL info and cache-bandwidth estimate */
+ cache_decay_ticks = 8; /* XXX base this on PAL info and cache-bandwidth estimate */
printk("task migration cache decay timeout: %ld msecs.\n",
(cache_decay_ticks + 1) * 1000 / HZ);
@@ -522,6 +522,9 @@
printk(KERN_INFO"Total of %d processors activated (%lu.%02lu BogoMIPS).\n",
num_online_cpus(), bogosum/(500000/HZ), (bogosum/(5000/HZ))%100);
+#ifdef CONFIG_NUMA
+ build_node_data();
+#endif
}
int __devinit
diff -urN a/arch/ppc64/kernel/smp.c b/arch/ppc64/kernel/smp.c
--- a/arch/ppc64/kernel/smp.c 2002-12-16 03:08:13.000000000 +0100
+++ b/arch/ppc64/kernel/smp.c 2002-12-18 16:53:13.000000000 +0100
@@ -679,4 +679,7 @@
/* XXX fix this, xics currently relies on it - Anton */
smp_threads_ready = 1;
+#ifdef CONFIG_NUMA
+ build_node_data();
+#endif
}
diff -urN a/include/linux/sched.h b/include/linux/sched.h
--- a/include/linux/sched.h 2002-12-16 03:07:44.000000000 +0100
+++ b/include/linux/sched.h 2002-12-18 16:53:13.000000000 +0100
@@ -20,6 +20,7 @@
#include <asm/mmu.h>
#include <linux/smp.h>
+#include <asm/topology.h>
#include <linux/sem.h>
#include <linux/signal.h>
#include <linux/securebits.h>
@@ -446,6 +447,9 @@
# define set_cpus_allowed(p, new_mask) do { } while (0)
#endif
+#ifdef CONFIG_NUMA
+extern void build_node_data(void);
+#endif
extern void set_user_nice(task_t *p, long nice);
extern int task_prio(task_t *p);
extern int task_nice(task_t *p);
diff -urN a/kernel/sched.c b/kernel/sched.c
--- a/kernel/sched.c 2002-12-16 03:08:14.000000000 +0100
+++ b/kernel/sched.c 2002-12-18 16:53:13.000000000 +0100
@@ -158,6 +158,10 @@
struct list_head migration_queue;
atomic_t nr_iowait;
+
+ unsigned long wait_time;
+ int wait_node;
+
} ____cacheline_aligned;
static struct runqueue runqueues[NR_CPUS] __cacheline_aligned;
@@ -177,6 +181,55 @@
# define task_running(rq, p) ((rq)->curr == (p))
#endif
+#define cpu_to_node(cpu) __cpu_to_node(cpu)
+#define LOADSCALE 128
+
+#ifdef CONFIG_NUMA
+/* Number of CPUs per node: sane values until all CPUs are up */
+int _node_nr_cpus[MAX_NUMNODES] = { [0 ... MAX_NUMNODES-1] = NR_CPUS };
+int node_ptr[MAX_NUMNODES+1]; /* first cpu of node (logical cpus are sorted!)*/
+#define node_ncpus(node) _node_nr_cpus[node]
+
+#define NODE_DELAY_IDLE (1*HZ/1000)
+#define NODE_DELAY_BUSY (20*HZ/1000)
+
+/* the following macro implies that logical CPUs are sorted by node number */
+#define loop_over_node(cpu,node) \
+ for(cpu=node_ptr[node]; cpu<node_ptr[node+1]; cpu++)
+
+/*
+ * Build node_ptr and node_ncpus data after all CPUs have come up. This
+ * expects that the logical CPUs are sorted by their node numbers! Check
+ * out the NUMA API for details on why this should be that way. [EF]
+ */
+void build_node_data(void)
+{
+ int n, cpu, ptr;
+ unsigned long mask;
+
+ ptr=0;
+ for (n=0; n<numnodes; n++) {
+ mask = __node_to_cpu_mask(n) & cpu_online_map;
+ node_ptr[n] = ptr;
+ for (cpu=0; cpu<NR_CPUS; cpu++)
+ if (mask & (1UL << cpu))
+ ptr++;
+ node_ncpus(n) = ptr - node_ptr[n];
+ }
+ node_ptr[numnodes] = ptr;
+ printk("CPU nodes : %d\n",numnodes);
+ for (n=0; n<numnodes; n++)
+ printk("node %d : %d .. %d\n",n,node_ptr[n],node_ptr[n+1]-1);
+}
+
+#else
+#define node_ncpus(node) num_online_cpus()
+#define NODE_DELAY_IDLE 0
+#define NODE_DELAY_BUSY 0
+#define loop_over_node(cpu,n) for(cpu=0; cpu<NR_CPUS; cpu++)
+#endif
+
+
/*
* task_rq_lock - lock the runqueue a given task resides on and disable
* interrupts. Note the ordering: we can safely lookup the task_rq without
@@ -652,81 +705,134 @@
}
/*
- * find_busiest_queue - find the busiest runqueue.
+ * Find a runqueue from which to steal a task. We try to do this as locally as
+ * possible because we don't want to let tasks get far from their node.
+ *
+ * 1. First try to find a runqueue within the own node with
+ * imbalance larger than 25% (relative to the current runqueue).
+ * 2. If the local node is well balanced, locate the most loaded node and its
+ * most loaded CPU.
+ *
+ * This routine implements node balancing by delaying steals from remote
+ * nodes more if the own node is (within margins) averagely loaded. The
+ * most loaded node is remembered as well as the time (jiffies). In the
+ * following calls to the load_balancer the time is compared with
+ * NODE_DELAY_BUSY (if load is around the average) or NODE_DELAY_IDLE (if own
+ * node is unloaded) if the most loaded node didn't change. This gives less
+ * loaded nodes the chance to approach the average load but doesn't exclude
+ * busy nodes from stealing (just in case the cpus_allowed mask isn't good
+ * for the idle nodes).
+ * This concept can be extended easilly to more than two levels (multi-level
+ * scheduler), e.g.: CPU -> node -> supernode... by implementing node-distance
+ * dependent steal delays.
+ *
+ * <efocht@ess.nec.de>
+ */
+
+struct node_queue_data {
+ int total_load;
+ int average_load;
+ int busiest_cpu;
+ int busiest_cpu_load;
+};
+
+/*
+ * Check if CPUs are balanced. The check is more involved than the O(1) original
+ * because that one is simply wrong in certain cases (integer arithmetic !!!) EF
+ */
+#define CPUS_BALANCED(m,t) (((m)<=1) || (((m)-(t))/2 < (((m)+(t))/2 + 3)/4))
+/*
+ * Check if nodes are imbalanced. "this" node is balanced (compared to the "comp"
+ * node) when it's load is not smaller than "comp"'s load - LOADSCALE/2.
*/
-static inline runqueue_t *find_busiest_queue(runqueue_t *this_rq, int this_cpu, int idle, int *imbalance)
+#define NODES_BALANCED(comp,this) (((comp)-(this)) < LOADSCALE/2)
+
+static inline runqueue_t *find_busiest_queue(int this_cpu, int idle, int *nr_running)
{
- int nr_running, load, max_load, i;
- runqueue_t *busiest, *rq_src;
+ runqueue_t *busiest_rq = NULL, *this_rq = cpu_rq(this_cpu), *src_rq;
+ int busiest_cpu, busiest_node=0, cpu, load, max_avg_load, avg_load;
+ int n, steal_delay, system_load = 0, this_node=cpu_to_node(this_cpu);
+ struct node_queue_data nd[MAX_NUMNODES], *node;
- /*
- * We search all runqueues to find the most busy one.
- * We do this lockless to reduce cache-bouncing overhead,
- * we re-check the 'best' source CPU later on again, with
- * the lock held.
- *
- * We fend off statistical fluctuations in runqueue lengths by
- * saving the runqueue length during the previous load-balancing
- * operation and using the smaller one the current and saved lengths.
- * If a runqueue is long enough for a longer amount of time then
- * we recognize it and pull tasks from it.
- *
- * The 'current runqueue length' is a statistical maximum variable,
- * for that one we take the longer one - to avoid fluctuations in
- * the other direction. So for a load-balance to happen it needs
- * stable long runqueue on the target CPU and stable short runqueue
- * on the local runqueue.
- *
- * We make an exception if this CPU is about to become idle - in
- * that case we are less picky about moving a task across CPUs and
- * take what can be taken.
- */
if (idle || (this_rq->nr_running > this_rq->prev_nr_running[this_cpu]))
- nr_running = this_rq->nr_running;
+ *nr_running = this_rq->nr_running;
else
- nr_running = this_rq->prev_nr_running[this_cpu];
+ *nr_running = this_rq->prev_nr_running[this_cpu];
- busiest = NULL;
- max_load = 1;
- for (i = 0; i < NR_CPUS; i++) {
- if (!cpu_online(i))
- continue;
+ for (n = 0; n < numnodes; n++) {
+ nd[n].busiest_cpu_load = -1;
+ nd[n].total_load = 0;
+ }
- rq_src = cpu_rq(i);
- if (idle || (rq_src->nr_running < this_rq->prev_nr_running[i]))
- load = rq_src->nr_running;
+ /* compute all node loads and save their max cpu loads */
+ for (cpu = 0; cpu < NR_CPUS; cpu++) {
+ if (!cpu_online(cpu)) continue;
+ node = &nd[cpu_to_node(cpu)];
+ src_rq = cpu_rq(cpu);
+ if (idle || (src_rq->nr_running < this_rq->prev_nr_running[cpu]))
+ load = src_rq->nr_running;
else
- load = this_rq->prev_nr_running[i];
- this_rq->prev_nr_running[i] = rq_src->nr_running;
-
- if ((load > max_load) && (rq_src != this_rq)) {
- busiest = rq_src;
- max_load = load;
+ load = this_rq->prev_nr_running[cpu];
+ this_rq->prev_nr_running[cpu] = src_rq->nr_running;
+ node->total_load += load;
+ if (load > node->busiest_cpu_load) {
+ node->busiest_cpu_load = load;
+ node->busiest_cpu = cpu;
}
}
- if (likely(!busiest))
- goto out;
+ busiest_cpu = nd[this_node].busiest_cpu;
+ if (busiest_cpu != this_cpu) {
+ if (!CPUS_BALANCED(nd[this_node].busiest_cpu_load,*nr_running)) {
+ busiest_rq = cpu_rq(busiest_cpu);
+ this_rq->wait_node = -1;
+ goto out;
+ }
+ }
- *imbalance = (max_load - nr_running) / 2;
+#ifdef CONFIG_NUMA
+ max_avg_load = -1;
+ for (n = 0; n < numnodes; n++) {
+ node = &nd[n];
+ system_load += node->total_load;
+ node->average_load = node->total_load*LOADSCALE/node_ncpus(n);
+ if (node->average_load > max_avg_load) {
+ max_avg_load = node->average_load;
+ busiest_node = n;
+ }
+ }
- /* It needs an at least ~25% imbalance to trigger balancing. */
- if (!idle && (*imbalance < (max_load + 3)/4)) {
- busiest = NULL;
+ /* Exit if not enough imbalance on any remote node. */
+ if ((busiest_node == this_node) || (max_avg_load <= LOADSCALE) ||
+ NODES_BALANCED(max_avg_load,nd[this_node].average_load)) {
+ this_rq->wait_node = -1;
goto out;
}
- nr_running = double_lock_balance(this_rq, busiest, this_cpu, idle, nr_running);
- /*
- * Make sure nothing changed since we checked the
- * runqueue length.
- */
- if (busiest->nr_running <= nr_running + 1) {
- spin_unlock(&busiest->lock);
- busiest = NULL;
+ busiest_cpu = nd[busiest_node].busiest_cpu;
+ avg_load = system_load*LOADSCALE/num_online_cpus();
+ /* Wait longer before stealing if own node's load is average. */
+ if (NODES_BALANCED(avg_load,nd[this_node].average_load))
+ steal_delay = NODE_DELAY_BUSY;
+ else
+ steal_delay = NODE_DELAY_IDLE;
+ /* if we have a new most loaded node: just mark it */
+ if (this_rq->wait_node != busiest_node) {
+ this_rq->wait_node = busiest_node;
+ this_rq->wait_time = jiffies;
+ goto out;
+ } else
+ /* old most loaded node: check if waited enough */
+ if (jiffies - this_rq->wait_time < steal_delay)
+ goto out;
+
+ if ((!CPUS_BALANCED(nd[busiest_node].busiest_cpu_load,*nr_running))) {
+ busiest_rq = cpu_rq(busiest_cpu);
+ this_rq->wait_node = -1;
}
-out:
- return busiest;
+#endif
+ out:
+ return busiest_rq;
}
/*
@@ -758,16 +864,21 @@
*/
static void load_balance(runqueue_t *this_rq, int idle)
{
- int imbalance, idx, this_cpu = smp_processor_id();
+ int imbalance, nr_running, idx, this_cpu = smp_processor_id();
runqueue_t *busiest;
prio_array_t *array;
struct list_head *head, *curr;
task_t *tmp;
- busiest = find_busiest_queue(this_rq, this_cpu, idle, &imbalance);
+ busiest = find_busiest_queue(this_cpu, idle, &nr_running);
if (!busiest)
goto out;
+ imbalance = (busiest->nr_running - nr_running)/2;
+
+ nr_running = double_lock_balance(this_rq, busiest, this_cpu, idle, nr_running);
+ if (busiest->nr_running <= nr_running + 1)
+ goto out_unlock;
/*
* We first consider expired tasks. Those will likely not be
* executed in the near future, and they are most likely to
@@ -839,10 +950,10 @@
* frequency and balancing agressivity depends on whether the CPU is
* idle or not.
*
- * busy-rebalance every 250 msecs. idle-rebalance every 1 msec. (or on
+ * busy-rebalance every 200 msecs. idle-rebalance every 1 msec. (or on
* systems with HZ=100, every 10 msecs.)
*/
-#define BUSY_REBALANCE_TICK (HZ/4 ?: 1)
+#define BUSY_REBALANCE_TICK (HZ/5 ?: 1)
#define IDLE_REBALANCE_TICK (HZ/1000 ?: 1)
static inline void idle_tick(runqueue_t *rq)
@@ -2110,7 +2221,8 @@
spin_unlock_irqrestore(&rq->lock, flags);
p = req->task;
- cpu_dest = __ffs(p->cpus_allowed);
+ cpu_dest = __ffs(p->cpus_allowed & cpu_online_map);
+
rq_dest = cpu_rq(cpu_dest);
repeat:
cpu_src = task_cpu(p);
^ permalink raw reply
* Re: [PATCH] add dispatch_i8259_irq() to i8259.c
From: Maciej W. Rozycki @ 2002-12-18 16:14 UTC (permalink / raw)
To: Jun Sun, Ralf Baechle; +Cc: linux-mips
In-Reply-To: <20021217134011.M11575@mvista.com>
On Tue, 17 Dec 2002, Jun Sun wrote:
> > > No MIPS boards are using do_slow_gettimeoffset(). We really should get
> > > rid of it.
> >
> > I know none does at the moment. But are you sure there is no system that
> > would need it and might be supported one day?
>
> I serisouly don't think so. Moving forward every CPU will have a CPU counter,
> which can be used for timeoffset purpose. Even if it does not have one,
> it will surely have some onboard high resolution timer, which can be used
> to intra-jiffy offset purpose.
Well, I do hope so, too, but you'll never know until you find out. ;-)
> > Here is an example (untested) code that I would recommend. It sends
> > explicit ACKs to the i8259As, which has the following advantages:
> >
> <snip>
>
> Cool. This code works for me.
Excellent. I worked on the code a bit more and removed the spurious IRQ
stuff. It's not really necessary -- mask_and_ack_8259A() will deal with
it anyway (a bit less precisely, but we don't care -- they are very rare
and drivers absolutely have to be able to deal with spurious interrupts)
and we want the low-level IRQ handling to be fast as it's performance
critical. At this point the function became so compact it would be
unreasonable not to make it inline -- the generated code is 24
instructions on my system. The positive side effect is the code won't be
compiled for systems that don't use it.
Following is a patch that I consider a candidate for submission. I
changed the interface a bit to permit greater flexibility. I renamed the
function to reflect the new semantic. Unless special handling is needed
you may simply call:
do_IRQ(poll_8259A_irq(), regs);
> I studied it a little bit and I am convinced it is a better choice.
> It should work for MIPS in general.
Actually for any system that doesn't send hardware INTAs to i8259A PICs.
> In my original code I did verify that the IRR bit is not cleared,
> which apparently will be a problem in cases.
The real problem is sources of edge-triggered interrupts need not
deassert their IRQs until they want to trigger another interrupt. The
i8254 is a notorius example.
> The only catch with your code is that we don't have iob() macro (which
> apparently is very useful). Any suggestions on this? Otherwise
> I will probably remove it.
iob() comes from <asm/system.h> -- do you miss it somehow? Unfortunately
its drawback is it uses a memory clobber which for this specific example
costs 4 unnecessary instructions (or 20%) to reread mips_io_port_base
twice.
The following patch was successfully tested at the run time on a Malta
system (after replacing most of the junk from
mips/mips-boards/malta/malta_int.c with the single-liner shown above).
Apart from adding the function to ACK i8259A IRQs, it cleans up the i8259A
stuff a bit:
- private init_i8259_irqs() declarations scattered over the tree are
removed and files referring to it now include <asm/i8259.h>,
- declarations of obsolete, non-existent i8259A handling functions are
removed.
Note the i8259A_lock is now extern for poll_8259A_irq() but not declared
in <asm/i8259.h> publicly as it shouldn't be used elsewhere.
Ralf, is it OK to apply?
Maciej
--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
patch-mips-2.4.20-pre6-20021212-poll-8259A-4
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/cobalt/irq.c linux-mips-2.4.20-pre6-20021212/arch/mips/cobalt/irq.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/cobalt/irq.c 2002-12-04 03:56:24.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/cobalt/irq.c 2002-12-18 00:50:36.000000000 +0000
@@ -17,6 +17,7 @@
#include <linux/ioport.h>
#include <asm/bootinfo.h>
+#include <asm/i8259.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/mipsregs.h>
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/ddb5xxx/ddb5074/irq.c linux-mips-2.4.20-pre6-20021212/arch/mips/ddb5xxx/ddb5074/irq.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/ddb5xxx/ddb5074/irq.c 2002-08-06 02:57:07.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/ddb5xxx/ddb5074/irq.c 2002-12-18 00:54:16.000000000 +0000
@@ -12,6 +12,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
+#include <asm/i8259.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/irq_cpu.h>
@@ -21,13 +22,7 @@
#include <asm/ddb5xxx/ddb5074.h>
-extern void __init i8259_init(void);
-extern void init_i8259_irqs (void);
-extern void i8259_disable_irq(unsigned int irq_nr);
-extern void i8259_enable_irq(unsigned int irq_nr);
-
extern asmlinkage void ddbIRQ(void);
-extern asmlinkage void i8259_do_irq(int irq, struct pt_regs *regs);
extern asmlinkage void do_IRQ(int irq, struct pt_regs *regs);
static struct irqaction irq_cascade = { no_action, 0, 0, "cascade", NULL, NULL };
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/ddb5xxx/ddb5476/irq.c linux-mips-2.4.20-pre6-20021212/arch/mips/ddb5xxx/ddb5476/irq.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/ddb5xxx/ddb5476/irq.c 2002-08-06 02:57:07.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/ddb5xxx/ddb5476/irq.c 2002-12-18 00:55:01.000000000 +0000
@@ -14,6 +14,7 @@
#include <linux/types.h>
#include <linux/interrupt.h>
+#include <asm/i8259.h>
#include <asm/io.h>
#include <asm/ptrace.h>
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/ddb5xxx/ddb5477/irq.c linux-mips-2.4.20-pre6-20021212/arch/mips/ddb5xxx/ddb5477/irq.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/ddb5xxx/ddb5477/irq.c 2002-12-04 03:56:25.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/ddb5xxx/ddb5477/irq.c 2002-12-18 00:55:53.000000000 +0000
@@ -16,6 +16,7 @@
#include <linux/types.h>
#include <linux/ptrace.h>
+#include <asm/i8259.h>
#include <asm/system.h>
#include <asm/mipsregs.h>
#include <asm/debug.h>
@@ -71,7 +72,6 @@ set_pci_int_attr(u32 pci, u32 intn, u32
ddb_out32(pci, reg_value);
}
-extern void init_i8259_irqs (void);
extern void vrc5477_irq_init(u32 base);
extern void mips_cpu_irq_init(u32 base);
extern asmlinkage void ddb5477_handle_int(void);
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/jazz/irq.c linux-mips-2.4.20-pre6-20021212/arch/mips/jazz/irq.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/jazz/irq.c 2001-12-18 05:27:34.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/jazz/irq.c 2002-12-18 00:56:22.000000000 +0000
@@ -12,6 +12,7 @@
#include <linux/kernel.h>
#include <linux/spinlock.h>
+#include <asm/i8259.h>
#include <asm/io.h>
#include <asm/jazz.h>
@@ -19,7 +20,7 @@ extern asmlinkage void jazz_handle_int(v
/*
* On systems with i8259-style interrupt controllers we assume for
- * driver compatibility reasons interrupts 0 - 15 to be the i8295
+ * driver compatibility reasons interrupts 0 - 15 to be the i8259
* interrupts even if the hardware uses a different interrupt numbering.
*/
void __init init_IRQ (void)
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/kernel/i8259.c linux-mips-2.4.20-pre6-20021212/arch/mips/kernel/i8259.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/kernel/i8259.c 2002-08-06 02:57:16.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/kernel/i8259.c 2002-12-17 23:18:16.000000000 +0000
@@ -29,7 +29,7 @@ void disable_8259A_irq(unsigned int irq)
* moves to arch independent land
*/
-static spinlock_t i8259A_lock = SPIN_LOCK_UNLOCKED;
+spinlock_t i8259A_lock = SPIN_LOCK_UNLOCKED;
static void end_8259A_irq (unsigned int irq)
{
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/mips-boards/malta/malta_int.c linux-mips-2.4.20-pre6-20021212/arch/mips/mips-boards/malta/malta_int.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/mips-boards/malta/malta_int.c 2002-12-12 03:56:34.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/mips-boards/malta/malta_int.c 2002-12-18 00:57:12.000000000 +0000
@@ -29,6 +29,7 @@
#include <linux/kernel_stat.h>
#include <linux/random.h>
+#include <asm/i8259.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/mips-boards/malta.h>
@@ -40,7 +41,6 @@
extern asmlinkage void mipsIRQ(void);
extern asmlinkage void do_IRQ(int irq, struct pt_regs *regs);
-extern void init_i8259_irqs (void);
extern int mips_pcibios_iack(void);
static spinlock_t mips_irq_lock = SPIN_LOCK_UNLOCKED;
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips/sni/irq.c linux-mips-2.4.20-pre6-20021212/arch/mips/sni/irq.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips/sni/irq.c 2001-12-18 05:27:36.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips/sni/irq.c 2002-12-18 00:58:13.000000000 +0000
@@ -12,6 +12,7 @@
#include <linux/kernel.h>
#include <linux/spinlock.h>
+#include <asm/i8259.h>
#include <asm/io.h>
#include <asm/sni.h>
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/arch/mips64/kernel/i8259.c linux-mips-2.4.20-pre6-20021212/arch/mips64/kernel/i8259.c
--- linux-mips-2.4.20-pre6-20021212.macro/arch/mips64/kernel/i8259.c 2002-08-06 02:57:35.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/arch/mips64/kernel/i8259.c 2002-12-18 01:03:29.000000000 +0000
@@ -29,7 +29,7 @@ void disable_8259A_irq(unsigned int irq)
* moves to arch independent land
*/
-static spinlock_t i8259A_lock = SPIN_LOCK_UNLOCKED;
+spinlock_t i8259A_lock = SPIN_LOCK_UNLOCKED;
static void end_8259A_irq (unsigned int irq)
{
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips/i8259.h linux-mips-2.4.20-pre6-20021212/include/asm-mips/i8259.h
--- linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips/i8259.h 1970-01-01 00:00:00.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/include/asm-mips/i8259.h 2002-12-18 00:31:40.000000000 +0000
@@ -0,0 +1,54 @@
+/*
+ * include/asm-mips/i8259.h
+ *
+ * i8259A interrupt definitions.
+ *
+ * Copyright (C) 2002 Maciej W. Rozycki
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef __ASM_MIPS_I8259_H
+#define __ASM_MIPS_I8259_H
+
+#include <linux/spinlock.h>
+
+#include <asm/io.h>
+#include <asm/system.h>
+
+extern void init_i8259_irqs(void);
+
+/*
+ * Ack an i8259A IRQ for systems that don't use hardware INTA cycles.
+ *
+ * Note we intentionally ignore the "I" (valid) bit reported by the
+ * controllers and pass spurious IRQs as real ones, since they are
+ * rare so the overhead is small and they will be handled later by
+ * mask_and_ack_8259A() anyway.
+ */
+static inline int poll_8259A_irq(void)
+{
+ extern spinlock_t i8259A_lock;
+ int irq;
+
+ spin_lock(&i8259A_lock);
+
+ outb(0x0c, 0x20);
+ iob();
+ /* Ack the IRQ in the master. */
+ irq = inb(0x20) & 7;
+ if (irq == 2) {
+ outb(0x0c, 0xa0);
+ iob();
+ /* Ditto for the slave. */
+ irq = (inb(0xa0) & 7) + 8;
+ }
+
+ spin_unlock(&i8259A_lock);
+
+ return irq;
+}
+
+#endif /* __ASM_MIPS_I8259_H */
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips/irq.h linux-mips-2.4.20-pre6-20021212/include/asm-mips/irq.h
--- linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips/irq.h 2002-12-16 17:16:46.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/include/asm-mips/irq.h 2002-12-18 15:58:52.000000000 +0000
@@ -24,9 +24,6 @@ static inline int irq_cannonicalize(int
#define irq_cannonicalize(irq) (irq) /* Sane hardware, sane code ... */
#endif
-struct irqaction;
-extern int i8259_setup_irq(int irq, struct irqaction * new);
-
extern void disable_irq(unsigned int);
extern void disable_irq_nosync(unsigned int);
extern void enable_irq(unsigned int);
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips64/i8259.h linux-mips-2.4.20-pre6-20021212/include/asm-mips64/i8259.h
--- linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips64/i8259.h 1970-01-01 00:00:00.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/include/asm-mips64/i8259.h 2002-12-18 00:32:19.000000000 +0000
@@ -0,0 +1,54 @@
+/*
+ * include/asm-mips/i8259.h
+ *
+ * i8259A interrupt definitions.
+ *
+ * Copyright (C) 2002 Maciej W. Rozycki
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef __ASM_MIPS64_I8259_H
+#define __ASM_MIPS64_I8259_H
+
+#include <linux/spinlock.h>
+
+#include <asm/io.h>
+#include <asm/system.h>
+
+extern void init_i8259_irqs(void);
+
+/*
+ * Ack an i8259A IRQ for systems that don't use hardware INTA cycles.
+ *
+ * Note we intentionally ignore the "I" (valid) bit reported by the
+ * controllers and pass spurious IRQs as real ones, since they are
+ * rare so the overhead is small and they will be handled later by
+ * mask_and_ack_8259A() anyway.
+ */
+static inline int poll_8259A_irq(void)
+{
+ extern spinlock_t i8259A_lock;
+ int irq;
+
+ spin_lock(&i8259A_lock);
+
+ outb(0x0c, 0x20);
+ iob();
+ /* Ack the IRQ in the master. */
+ irq = inb(0x20) & 7;
+ if (irq == 2) {
+ outb(0x0c, 0xa0);
+ iob();
+ /* Ditto for the slave. */
+ irq = (inb(0xa0) & 7) + 8;
+ }
+
+ spin_unlock(&i8259A_lock);
+
+ return irq;
+}
+
+#endif /* __ASM_MIPS64_I8259_H */
diff -up --recursive --new-file linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips64/irq.h linux-mips-2.4.20-pre6-20021212/include/asm-mips64/irq.h
--- linux-mips-2.4.20-pre6-20021212.macro/include/asm-mips64/irq.h 2002-12-16 16:56:09.000000000 +0000
+++ linux-mips-2.4.20-pre6-20021212/include/asm-mips64/irq.h 2002-12-18 16:03:00.000000000 +0000
@@ -42,9 +42,6 @@ static inline int irq_cannonicalize(int
#define irq_cannonicalize(irq) (irq) /* Sane hardware, sane code ... */
#endif
-struct irqaction;
-extern int i8259_setup_irq(int irq, struct irqaction * new);
-
extern void disable_irq(unsigned int);
extern void disable_irq_nosync(unsigned int);
extern void enable_irq(unsigned int);
^ permalink raw reply
* [PATCH 2.5.52] NUMA scheduler (2/2)
From: Erich Focht @ 2002-12-18 16:23 UTC (permalink / raw)
To: Martin J. Bligh, Michael Hohnbaum
Cc: Robert Love, Ingo Molnar, Stephen Hemminger, linux-kernel
In-Reply-To: <200212181721.39434.efocht@ess.nec.de>
[-- Attachment #1: Type: text/plain, Size: 578 bytes --]
And here comes patch #2, work done by Michael Hohnbaum.
On Wednesday 18 December 2002 17:21, Erich Focht wrote:
> This is the first part of the minimal NUMA scheduler built on top of
> the O(1) load balancer. It is rediffed for 2.5.52 and contains a small
> bugfix in build_node_data().
>
> The two patches are:
>
> 01-numa-sched-core-2.5.52-23.patch: core NUMA scheduler infrastructure
> providing a node aware load_balancer.
>
> 02-numa-sched-ilb-2.5.52-21.patch: initial load balancing, selects
> least loaded node & CPU at exec().
>
> Regards,
> Erich
[-- Attachment #2: 02-numa-sched-ilb-2.5.52-21.patch --]
[-- Type: text/x-diff, Size: 4748 bytes --]
diff -urN a/fs/exec.c b/fs/exec.c
--- a/fs/exec.c 2002-12-16 03:07:53.000000000 +0100
+++ b/fs/exec.c 2002-12-18 16:54:40.000000000 +0100
@@ -1024,6 +1024,8 @@
int retval;
int i;
+ sched_balance_exec();
+
file = open_exec(filename);
retval = PTR_ERR(file);
diff -urN a/include/linux/sched.h b/include/linux/sched.h
--- a/include/linux/sched.h 2002-12-18 16:53:13.000000000 +0100
+++ b/include/linux/sched.h 2002-12-18 16:54:40.000000000 +0100
@@ -160,7 +160,19 @@
unsigned long system, int cpu);
extern void scheduler_tick(int user_tick, int system);
extern unsigned long cache_decay_ticks;
-
+#ifdef CONFIG_NUMA
+extern void sched_balance_exec(void);
+extern void node_nr_running_init(void);
+#define nr_running_inc(rq) atomic_inc(rq->node_ptr); \
+ rq->nr_running++
+#define nr_running_dec(rq) atomic_dec(rq->node_ptr); \
+ rq->nr_running--
+#else
+#define sched_balance_exec() {}
+#define node_nr_running_init() {}
+#define nr_running_inc(rq) rq->nr_running++
+#define nr_running_dec(rq) rq->nr_running--
+#endif
#define MAX_SCHEDULE_TIMEOUT LONG_MAX
extern signed long FASTCALL(schedule_timeout(signed long timeout));
diff -urN a/init/main.c b/init/main.c
--- a/init/main.c 2002-12-16 03:07:48.000000000 +0100
+++ b/init/main.c 2002-12-18 16:54:40.000000000 +0100
@@ -473,6 +473,7 @@
migration_init();
#endif
+ node_nr_running_init();
spawn_ksoftirqd();
}
diff -urN a/kernel/sched.c b/kernel/sched.c
--- a/kernel/sched.c 2002-12-18 16:53:13.000000000 +0100
+++ b/kernel/sched.c 2002-12-18 16:54:40.000000000 +0100
@@ -153,6 +153,7 @@
task_t *curr, *idle;
prio_array_t *active, *expired, arrays[2];
int prev_nr_running[NR_CPUS];
+ atomic_t * node_ptr;
task_t *migration_thread;
struct list_head migration_queue;
@@ -347,7 +348,7 @@
p->prio = effective_prio(p);
}
enqueue_task(p, array);
- rq->nr_running++;
+ nr_running_inc(rq);
}
/*
@@ -355,7 +356,7 @@
*/
static inline void deactivate_task(struct task_struct *p, runqueue_t *rq)
{
- rq->nr_running--;
+ nr_running_dec(rq);
if (p->state == TASK_UNINTERRUPTIBLE)
rq->nr_uninterruptible++;
dequeue_task(p, p->array);
@@ -842,9 +843,9 @@
static inline void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t *p, runqueue_t *this_rq, int this_cpu)
{
dequeue_task(p, src_array);
- src_rq->nr_running--;
+ nr_running_dec(src_rq);
set_task_cpu(p, this_cpu);
- this_rq->nr_running++;
+ nr_running_inc(this_rq);
enqueue_task(p, this_rq->active);
/*
* Note that idle threads have a prio of MAX_PRIO, for this test
@@ -2284,6 +2285,83 @@
#endif
+#if CONFIG_NUMA
+static atomic_t node_nr_running[MAX_NUMNODES] ____cacheline_maxaligned_in_smp = {[0 ...MAX_NUMNODES-1] = ATOMIC_INIT(0)};
+
+__init void node_nr_running_init(void)
+{
+ int i;
+
+ for (i = 0; i < NR_CPUS; i++) {
+ cpu_rq(i)->node_ptr = &node_nr_running[__cpu_to_node(i)];
+ }
+ return;
+}
+
+/*
+ * If dest_cpu is allowed for this process, migrate the task to it.
+ * This is accomplished by forcing the cpu_allowed mask to only
+ * allow dest_cpu, which will force the cpu onto dest_cpu. Then
+ * the cpu_allowed mask is restored.
+ */
+static void sched_migrate_task(task_t *p, int dest_cpu)
+{
+ unsigned long old_mask;
+
+ old_mask = p->cpus_allowed;
+ if (!(old_mask & (1UL << dest_cpu)))
+ return;
+ /* force the process onto the specified CPU */
+ set_cpus_allowed(p, 1UL << dest_cpu);
+
+ /* restore the cpus allowed mask */
+ set_cpus_allowed(p, old_mask);
+}
+
+/*
+ * Find the least loaded CPU. Slightly favor the current CPU by
+ * setting its runqueue length as the minimum to start.
+ */
+static int sched_best_cpu(struct task_struct *p)
+{
+ int i, minload, load, best_cpu, node = 0;
+
+ best_cpu = task_cpu(p);
+ if (cpu_rq(best_cpu)->nr_running <= 2)
+ return best_cpu;
+
+ minload = 10000000;
+ for (i = 0; i < numnodes; i++) {
+ load = atomic_read(&node_nr_running[i]);
+ if (load < minload) {
+ minload = load;
+ node = i;
+ }
+ }
+ minload = 10000000;
+ loop_over_node(i,node) {
+ if (!cpu_online(i))
+ continue;
+ if (cpu_rq(i)->nr_running < minload) {
+ best_cpu = i;
+ minload = cpu_rq(i)->nr_running;
+ }
+ }
+ return best_cpu;
+}
+
+void sched_balance_exec(void)
+{
+ int new_cpu;
+
+ if (numnodes > 1) {
+ new_cpu = sched_best_cpu(current);
+ if (new_cpu != smp_processor_id())
+ sched_migrate_task(current, new_cpu);
+ }
+}
+#endif /* CONFIG_NUMA */
+
#if CONFIG_SMP || CONFIG_PREEMPT
/*
* The 'big kernel lock'
@@ -2345,6 +2423,10 @@
spin_lock_init(&rq->lock);
INIT_LIST_HEAD(&rq->migration_queue);
atomic_set(&rq->nr_iowait, 0);
+#if CONFIG_NUMA
+ rq->node_ptr = &node_nr_running[0];
+#endif /* CONFIG_NUMA */
+
for (j = 0; j < 2; j++) {
array = rq->arrays + j;
^ permalink raw reply
* Re: [LARTC] nano.txt
From: Nuno Miguel Pais Fernandes @ 2002-12-18 16:15 UTC (permalink / raw)
To: lartc
In-Reply-To: <marc-lartc-104020103613142@msgid-missing>
[-- Attachment #1: Type: text/plain, Size: 302 bytes --]
Try google cache :)
Nuno
On Wed, 2002-12-18 at 08:36, hare ram wrote:
> Hi
>
>
> does any one have this File
> seems to be this site is down
> http://www.linuxvirtualserver.org/~julian/#routes-2.4
>
> thanks
> hare
--
Nuno Miguel Pais Fernandes <npf@eurotux.com>
Eurotux S.A.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* [parisc-linux] 2.5 fix for user level page fault problems
From: James Bottomley @ 2002-12-18 16:20 UTC (permalink / raw)
To: parisc-linux; +Cc: James.Bottomley
[-- Attachment #1: Type: text/plain, Size: 534 bytes --]
It seems that going from 2.4 to 2.5 there was an over zealous removal of the
check signals return path. The problem is that if a user application takes a
page fault, that can result in a signal being posted (specifically SEGV for
illegal memory access). If we never check the signals, the instruction is
retried and re-faults ad infinitum (well actually, it seems to terminate with
an unaligned instruction trap in this case after a few hundred faults).
The attached path makes signal posting on page fault work again
James
[-- Attachment #2: tmp.diff --]
[-- Type: text/plain , Size: 422 bytes --]
===== entry.S 1.8 vs edited =====
--- 1.8/arch/parisc/kernel/entry.S Sun Nov 24 17:36:53 2002
+++ edited/entry.S Mon Dec 16 22:09:59 2002
@@ -944,11 +944,11 @@
ldo -16(%r30),%r29 /* Reference param save area */
#endif
- ldil L%intr_restore, %r2
+ ldil L%intr_check_sig, %r2
copy %r25, %r16 /* save pt_regs */
b handle_interruption
- ldo R%intr_restore(%r2), %r2
+ ldo R%intr_check_sig(%r2), %r2
/*
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.