* isolinux: Disk error
From: S. Barret Dolph @ 2004-01-26 1:29 UTC (permalink / raw)
To: linux-newbie
When loading a disk I get this message: isolinux: Disk error 80, AX = 42B2,
drive 9F. What does this mean?
-
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
* [OOPS] Linux-2.6.1 suspend/resume
From: Udo A. Steinberg @ 2004-01-26 1:25 UTC (permalink / raw)
To: Linux Kernel Mailing List
[-- Attachment #1: Type: text/plain, Size: 18132 bytes --]
Hi,
I can repeatedly oops my Linux machine running kernel 2.6.1. The oops happens
during the resume following a suspend-to-disk via: echo 4 > /proc/acpi/sleep
See below.
-Udo.
Stopping tasks: =====================================================|
Freeing memory: ..............|
hdf: start_power_step(step: 0)
hdf: completing PM request, suspend
hde: start_power_step(step: 0)
hde: completing PM request, suspend
hdb: start_power_step(step: 0)
hdb: completing PM request, suspend
hda: start_power_step(step: 0)
hda: completing PM request, suspend
/critical section: Counting pages to copy[nosave c0516000] (pages needed: 6905+512=7417 free: 189682)
Alloc pagedir
[nosave c0516000]critical section/: done (6905 pages copied)
hda: Wakeup request inited, waiting for !BSY...
hda: start_power_step(step: 1000)
blk: queue efcc5200, I/O limit 4095Mb (mask 0xffffffff)
hda: completing PM request, resume
hdb: Wakeup request inited, waiting for !BSY...
hdb: start_power_step(step: 1000)
blk: queue efc70e00, I/O limit 4095Mb (mask 0xffffffff)
hdb: completing PM request, resume
hde: Wakeup request inited, waiting for !BSY...
hde: start_power_step(step: 1000)
hde: completing PM request, resume
hdf: Wakeup request inited, waiting for !BSY...
hdf: start_power_step(step: 1000)
hdf: completing PM request, resume
Writing data to swap (6905 pages): ......................................................................|
Writing pagedir (27 pages): ...........................HS|
Suspend Machine: Trying to power down.
shift_state: 0000
acpi_power_off called
Linux version 2.6.1 (root@Corona) (gcc version 3.3.2) #1 Mon Jan 12 03:41:29 CET 2004
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000002ffec000 (usable)
BIOS-e820: 000000002ffec000 - 000000002ffef000 (ACPI data)
BIOS-e820: 000000002ffef000 - 000000002ffff000 (reserved)
BIOS-e820: 000000002ffff000 - 0000000030000000 (ACPI NVS)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
767MB LOWMEM available.
On node 0 totalpages: 196588
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 192492 pages, LIFO batch:16
HighMem zone: 0 pages, LIFO batch:1
DMI 2.3 present.
ACPI: RSDP (v000 ASUS ) @ 0x000f6a90
ACPI: RSDT (v001 ASUS A7V 0x30303031 MSFT 0x31313031) @ 0x2ffec000
ACPI: FADT (v001 ASUS A7V 0x30303031 MSFT 0x31313031) @ 0x2ffec080
ACPI: BOOT (v001 ASUS A7V 0x30303031 MSFT 0x31313031) @ 0x2ffec040
ACPI: DSDT (v001 ASUS A7V 0x00001000 MSFT 0x0100000b) @ 0x00000000
Building zonelist for node : 0
Kernel command line: auto BOOT_IMAGE=Linux-2.6 ro root=341 ide=reverse resume=/dev/hdb2 parport=auto nmi_watchdog=2 video=rivafb:off console=ttyS0,115200
ide_setup: ide=reverse : Enabled support for IDE inverse scan order.
Local APIC disabled by BIOS -- reenabling.
Found and enabled local APIC!
Initializing CPU#0
PID hash table entries: 4096 (order 12: 32768 bytes)
Detected 807.228 MHz processor.
Using tsc for high-res timesource
Console: colour VGA+ 80x25
Memory: 773000k/786352k available (3140k kernel code, 12576k reserved, 1051k data, 176k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay loop... 1589.24 BogoMIPS
Security Scaffold v1.0.0 initialized
Capability LSM initialized
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: AMD Athlon(tm) Processor stepping 02
Enabling fast FPU save and restore... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
enabled ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
testing NMI watchdog ... OK.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 807.0103 MHz.
..... host bus clock speed is 201.0776 MHz.
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xf1180, last bus=1
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
ACPI: Subsystem revision 20031002
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 *9 10 11 12 14 15)
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
drivers/usb/core/usb.c: registered new driver usbfs
drivers/usb/core/usb.c: registered new driver hub
ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 9
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
PCI: Using ACPI for IRQ routing
PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'
spurious 8259A interrupt: IRQ7.
SBF: Simple Boot Flag extension found and enabled.
SBF: Setting boot flags 0x1
Machine check exception polling timer started.
VFS: Disk quotas dquot_6.5.1
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
Initializing Cryptographic API
ACPI: Power Button (FF) [PWRF]
ACPI: Processor [CPU0] (supports C1 C2, 16 throttling states)
pty: 256 Unix98 ptys configured
lp: driver loaded but no devices found
Real Time Clock Driver v1.12
Non-volatile memory driver v1.2
Linux agpgart interface v0.100 (c) Dave Jones
agpgart: Detected VIA Twister-K/KT133x/KM133 chipset
agpgart: Maximum main memory to use for agp memory: 690M
agpgart: AGP aperture is 256M @ 0xd0000000
Hangcheck: starting hangcheck timer 0.5.0 (tick is 180 seconds, margin is 60 seconds).
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
ÿttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,ECP,DMA]
lp0: using parport0 (interrupt-driven).
parport_pc: Via 686A parallel port: io=0x378, irq=7, dma=3
Using anticipatory io scheduler
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
loop: loaded (max 8 devices)
Intel(R) PRO/100 Network Driver - version 2.3.30-k1
Copyright (c) 2003 Intel Corporation
e100: eth0: Intel(R) PRO/100 Network Connection
Hardware receive checksums enabled
cpu cycle saver enabled
Linux video capture interface: v1.00
bttv: driver version 0.9.12 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
PCI: Enabling device 0000:00:09.0 (0004 -> 0006)
bttv0: Bt878 (rev 2) at 0000:00:09.0, irq: 9, latency: 32, mmio: 0xc7000000
bttv0: detected: Hauppauge WinTV [card=10], PCI subsystem ID is 0070:13eb
bttv0: using: Hauppauge (bt878) [card=10,autodetected]
bttv0: Hauppauge/Voodoo msp34xx: reset line init [5]
bttv0: Hauppauge eeprom: model=37284, tuner=Philips FM1216 (5), radio=yes
bttv0: using tuner=5
bttv0: i2c: checking for MSP34xx @ 0x80... found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: registered device radio0
bttv0: PLL: 28636363 => 35468950 .. ok
msp34xx: init: chip=MSP3410D-B4 +nicam +simple
msp3410: daemon started
registering 0-0040
tvaudio: TV audio decoder + audio/video mux driver
tvaudio: known chips: tda9840,tda9873h,tda9874h/a,tda9850,tda9855,tea6300,tea6420,tda8425,pic16c54 (PV951),ta8874z
tvaudio: found tda9840 @ 0x84
registering 0-0042
tuner: chip found @ 0xc2
tuner: type set to 5 (Philips PAL_BG (FI1216 and compatibles))
registering 0-0061
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PDC20265: IDE controller at PCI slot 0000:00:11.0
PDC20265: chipset revision 2
PDC20265: 100% native mode on irq 10
PDC20265: (U)DMA Burst Bit ENABLED Primary PCI Mode Secondary PCI Mode.
ide0: BM-DMA at 0x8000-0x8007, BIOS settings: hda:pio, hdb:pio
ide1: BM-DMA at 0x8008-0x800f, BIOS settings: hdc:pio, hdd:pio
hda: IBM-DTLA-307030, ATA DISK drive
hdb: IC35L120AVV207-0, ATA DISK drive
ide0 at 0x9400-0x9407,0x9002 on irq 10
VP_IDE: IDE controller at PCI slot 0000:00:04.1
VP_IDE: chipset revision 16
VP_IDE: not 100% native mode: will probe irqs later
VP_IDE: VIA vt82c686a (rev 22) IDE UDMA66 controller on pci0000:00:04.1
ide2: BM-DMA at 0xd800-0xd807, BIOS settings: hde:pio, hdf:DMA
ide3: BM-DMA at 0xd808-0xd80f, BIOS settings: hdg:pio, hdh:pio
hde: IOMEGA ZIP 100 ATAPI, ATAPI FLOPPY drive
hdf: PLEXTOR CD-R PX-W1210A, ATAPI CD/DVD-ROM drive
ide2 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: max request size: 128KiB
hda: 60036480 sectors (30738 MB) w/1916KiB Cache, CHS=59560/16/63, UDMA(100)
hda: hda1
hdb: max request size: 1024KiB
hdb: 241254720 sectors (123522 MB) w/1821KiB Cache, CHS=16383/255/63, UDMA(100)
hdb: hdb1 hdb2 hdb3 < hdb5 hdb6 hdb7 hdb8 hdb9 hdb10 hdb11 >
hdf: ATAPI 32X CD-ROM CD-R/RW drive, 2048kB Cache, DMA
Uniform CD-ROM driver Revision: 3.12
ide-floppy driver 0.99.newide
hde: No disk in drive
hde: 98304kB, 96/64/32 CHS, 4096 kBps, 512 sector size, 2941 rpm
drivers/usb/host/uhci-hcd.c: USB Universal Host Controller Interface driver v2.1
uhci_hcd 0000:00:04.2: UHCI Host Controller
uhci_hcd 0000:00:04.2: irq 9, io base 0000d400
uhci_hcd 0000:00:04.2: new USB bus registered, assigned bus number 1
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
uhci_hcd 0000:00:04.3: UHCI Host Controller
uhci_hcd 0000:00:04.3: irq 9, io base 0000d000
uhci_hcd 0000:00:04.3: new USB bus registered, assigned bus number 2
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
drivers/usb/core/usb.c: registered new driver usbscanner
drivers/usb/image/scanner.c: 0.4.16:USB Scanner Driver
mice: PS/2 mouse device common for all mice
input: PC Speaker
PCI: Enabling device 0000:00:0a.1 (0004 -> 0005)
input: Analog 3-axis 4-button joystick at pci0000:00:0a.1/gameport0 [TSC timer, 794 MHz clock, 843 ns res]
gameport: pci0000:00:0a.1 speed 1296 kHz
serio: i8042 AUX port at 0x60,0x64 irq 12
input: ImExPS/2 Generic Explorer Mouse on isa0060/serio1
serio: i8042 KBD port at 0x60,0x64 irq 1
input: AT Translated Set 2 keyboard on isa0060/serio0
i2c /dev entries driver
registering 1-002d
registering 1-0049
registering 1-0048
tuner: type already set (5)
registering 0-0050
Advanced Linux Sound Architecture Driver Version 0.9.7 (Thu Sep 25 19:16:36 2003 UTC).
PCI: Enabling device 0000:00:0a.0 (0004 -> 0005)
ALSA device list:
#0: Sound Blaster Live! (rev.8) at 0xa400, irq 5
NET: Registered protocol family 2
hub 1-0:1.0: new USB device on port 2, assigned address 2
IP: routing cache hash table of 8192 buckets, 64Kbytes
TCP: Hash tables configured (established 262144 bind 65536)
ip_conntrack version 2.1 (6143 buckets, 49144 max) - 160 bytes per conntrack
hub 1-2:1.0: USB hub found
hub 1-2:1.0: 5 ports detected
ip_tables: (C) 2000-2002 Netfilter core team
ipt_recent v0.3.1: Stephen Frost <sfrost@snowman.net>. http://snowman.net/projects/ipt_recent/
arp_tables: (C) 2002 David S. Miller
Initializing IPsec netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 10
IPv6 over IPv4 tunneling driver
ip6_tables: (C) 2000-2002 Netfilter core team
NET: Registered protocol family 17
NET: Registered protocol family 15
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
BIOS EDD facility v0.10 2003-Oct-11, 2 devices found
Please report your BIOS at http://domsch.com/linux/edd30/results.html
Resume Machine: resuming from /dev/hdb2
Resuming from device hdb2
Resume Machine: Signature found, resuming
Resume Machine: Reading pagedir, Relocating pagedir|
Reading image data (6905 pages): ...<6>hub 1-2:1.0: new USB device on port 1, assigned address 3
....................<6>hub 2-0:1.0: new USB device on port 2, assigned address 2
.<6>hub 2-2:1.0: USB hub found
hub 2-2:1.0: 4 ports detected
..............................................|
Reading resume file was successful
Waiting for DMAs to settle down...
Freeing prev allocated pagedir
bad: scheduling while atomic!
Call Trace:
[<c011a7d3>] schedule+0x563/0x570
[<c0356e7d>] pci_read+0x3d/0x50
[<c0125ff3>] schedule_timeout+0x63/0xc0
[<c0125f80>] process_timeout+0x0/0x10
[<c02387b3>] pci_set_power_state+0xd3/0x160
[<c02fc028>] usb_hcd_pci_resume+0x38/0x90
[<c023ac54>] pci_device_resume+0x24/0x30
[<c028a3e7>] resume_device+0x27/0x30
[<c028a424>] dpm_resume+0x34/0x60
[<c028a469>] device_resume+0x19/0x30
[<c01337e9>] drivers_resume+0x39/0x40
[<c0133aba>] do_magic_resume_2+0x5a/0xe0
[<c0133ad2>] do_magic_resume_2+0x72/0xe0
[<c03576af>] do_magic+0x11f/0x130
[<c0133cfb>] do_software_suspend+0x6b/0x90
[<c02538e6>] acpi_system_write_sleep+0xb3/0xcd
[<c0253833>] acpi_system_write_sleep+0x0/0xcd
[<c0150398>] vfs_write+0xd8/0x140
[<c01504b2>] sys_write+0x42/0x70
[<c0109387>] syscall_call+0x7/0xb
bad: scheduling while atomic!
Call Trace:
[<c011a7d3>] schedule+0x563/0x570
[<c0356e7d>] pci_read+0x3d/0x50
[<c0125ff3>] schedule_timeout+0x63/0xc0
[<c0125f80>] process_timeout+0x0/0x10
[<c02387b3>] pci_set_power_state+0xd3/0x160
[<c02fc028>] usb_hcd_pci_resume+0x38/0x90
[<c023ac54>] pci_device_resume+0x24/0x30
[<c028a3e7>] resume_device+0x27/0x30
[<c028a424>] dpm_resume+0x34/0x60
[<c028a469>] device_resume+0x19/0x30
[<c01337e9>] drivers_resume+0x39/0x40
[<c0133aba>] do_magic_resume_2+0x5a/0xe0
[<c0133ad2>] do_magic_resume_2+0x72/0xe0
[<c03576af>] do_magic+0x11f/0x130
[<c0133cfb>] do_software_suspend+0x6b/0x90
[<c02538e6>] acpi_system_write_sleep+0xb3/0xcd
[<c0253833>] acpi_system_write_sleep+0x0/0xcd
[<c0150398>] vfs_write+0xd8/0x140
[<c01504b2>] sys_write+0x42/0x70
[<c0109387>] syscall_call+0x7/0xb
bad: scheduling while atomic!
Call Trace:
[<c011a7d3>] schedule+0x563/0x570
[<c0356e7d>] pci_read+0x3d/0x50
[<c0125ff3>] schedule_timeout+0x63/0xc0
[<c0125f80>] process_timeout+0x0/0x10
[<c02387b3>] pci_set_power_state+0xd3/0x160
[<c02a3708>] e100_resume+0x28/0x70
[<c023ac54>] pci_device_resume+0x24/0x30
[<c028a3e7>] resume_device+0x27/0x30
[<c028a424>] dpm_resume+0x34/0x60
[<c028a469>] device_resume+0x19/0x30
[<c01337e9>] drivers_resume+0x39/0x40
[<c0133aba>] do_magic_resume_2+0x5a/0xe0
[<c0133ad2>] do_magic_resume_2+0x72/0xe0
[<c03576af>] do_magic+0x11f/0x130
[<c0133cfb>] do_software_suspend+0x6b/0x90
[<c02538e6>] acpi_system_write_sleep+0xb3/0xcd
[<c0253833>] acpi_system_write_sleep+0x0/0xcd
[<c0150398>] vfs_write+0xd8/0x140
[<c01504b2>] sys_write+0x42/0x70
[<c0109387>] syscall_call+0x7/0xb
hda: Wakeup request inited, waiting for !BSY...
hda: start_power_step(step: 1000)
blk: queue efcc5200, I/O limit 4095Mb (mask 0xffffffff)
hda: completing PM request, resume
hdb: Wakeup request inited, waiting for !BSY...
hdb: start_power_step(step: 1000)
blk: queue efc70e00, I/O limit 4095Mb (mask 0xffffffff)
hdb: completing PM request, resume
hde: Wakeup request inited, waiting for !BSY...
hde: start_power_step(step: 1000)
hde: completing PM request, resume
hdf: Wakeup request inited, waiting for !BSY...
hdf: start_power_step(step: 1000)
hdf: completing PM request, resume
Fixing swap signatures... <3>bad: scheduling while atomic!
Call Trace:
[<c011a7d3>] schedule+0x563/0x570
[<c02c397d>] do_ide_request+0x1d/0x30
[<c028c565>] generic_unplug_device+0x75/0x80
[<c028c704>] blk_run_queues+0xa4/0xb0
[<c011b70e>] io_schedule+0xe/0x20
[<c0134c15>] wait_on_page_bit+0x95/0xc0
[<c011bf90>] autoremove_wake_function+0x0/0x50
[<c011bf90>] autoremove_wake_function+0x0/0x50
[<c014b376>] swap_readpage+0x56/0x80
[<c014b433>] rw_swap_page_sync+0x93/0xe0
[<c0132efc>] mark_swapfiles+0x7c/0x1b0
[<c0133af2>] do_magic_resume_2+0x92/0xe0
[<c03576af>] do_magic+0x11f/0x130
[<c0133cfb>] do_software_suspend+0x6b/0x90
[<c02538e6>] acpi_system_write_sleep+0xb3/0xcd
[<c0253833>] acpi_system_write_sleep+0x0/0xcd
[<c0150398>] vfs_write+0xd8/0x140
[<c01504b2>] sys_write+0x42/0x70
[<c0109387>] syscall_call+0x7/0xb
bad: scheduling while atomic!
Call Trace:
[<c011a7d3>] schedule+0x563/0x570
[<c02c397d>] do_ide_request+0x1d/0x30
[<c028c565>] generic_unplug_device+0x75/0x80
[<c028c6da>] blk_run_queues+0x7a/0xb0
[<c011b70e>] io_schedule+0xe/0x20
[<c0134c15>] wait_on_page_bit+0x95/0xc0
[<c011bf90>] autoremove_wake_function+0x0/0x50
[<c011bf90>] autoremove_wake_function+0x0/0x50
[<c014b2ca>] swap_writepage+0x7a/0xd0
[<c014b433>] rw_swap_page_sync+0x93/0xe0
[<c0132f6f>] mark_swapfiles+0xef/0x1b0
[<c0133af2>] do_magic_resume_2+0x92/0xe0
[<c03576af>] do_magic+0x11f/0x130
[<c0133cfb>] do_software_suspend+0x6b/0x90
[<c02538e6>] acpi_system_write_sleep+0xb3/0xcd
[<c0253833>] acpi_system_write_sleep+0x0/0xcd
[<c0150398>] vfs_write+0xd8/0x140
[<c01504b2>] sys_write+0x42/0x70
[<c0109387>] syscall_call+0x7/0xb
ok
Restarting tasks...<3>bad: scheduling while atomic!
Call Trace:
[<c011a7d3>] schedule+0x563/0x570
[<c0119a27>] try_to_wake_up+0xa7/0x160
[<c0119afe>] wake_up_process+0x1e/0x20
[<c0132964>] thaw_processes+0xa4/0x100
[<c0133ced>] do_software_suspend+0x5d/0x90
[<c02538e6>] acpi_system_write_sleep+0xb3/0xcd
[<c0253833>] acpi_system_write_sleep+0x0/0xcd
[<c0150398>] vfs_write+0xd8/0x140
[<c01504b2>] sys_write+0x42/0x70
[<c0109387>] syscall_call+0x7/0xb
done
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Jigxchsvevgdqpyn tz Use these guys for all your data collection
From: chang mciver @ 2004-01-26 1:24 UTC (permalink / raw)
To: kernel-janitors
ZGFraGVsbGluZyBmZWRvcm92LWNpY2NhcmVsbGk8Rk9OVCBjb2xvcj0jYTc3MDYxPiA8L0ZPTlQ+
cGFzdGluYWNlYSBiZWdnYXJzc2F1bA0KPHA+PEZPTlQgZmFjZT0iR2VvcmdpYSIgc2l6ZT0yPnc8
ST5pdDwvST5oaW4gNSBzZWNvbmQ8ST5zIDwvST55b3Ugd2lsbCBiZSBhYmxlIHRvIHM8U1BBTj5l
ZSBhbiA8L1NQQU4+YW1hemk8U1BBTj5uZyBuPC9TUEFOPmV3IHByb2R1Y3Q8L3A+DQo8YSBocmVm
PSJodHRwOi8vaWouc2IudGhpc2lzZ29kY2hvY2UudG1wLmJyL3Nob2d1L2ZpbmlzaC5odG0iPjxp
bWcgc3JjPSJodHRwOi8vdnB0cC55dWwudGhpc2lzZ29kY2hvY2UudG1wLmJyL3Nob2d1L2FnbmVz
LmdpZiIgYm9yZGVyPSIwIj48L2E+DQo8cD4mbmJzcDs8L3A+DQo8U1BBTj5Ud28gbjwvU1BBTj5l
aWdoYm9ycyA8U1RST05HPmg8L1NUUk9ORz5hZCBiZWU8Qj5uPC9CPiBmaWdodGluZyBlYWNoIG90
aGU8RU0+cjwvRU0+IGY8U1BBTj5vciBuaWdoPC9TUEFOPiBvbiBmb3VyIGRlPEI+YzwvQj5hZGVz
LiBCbzxJPmIgPC9JPmJ1eXMgYSBHcmVhdDxGT05UIGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+IDwv
Rk9OVD5EYW48Uz5lPC9TPiBhbmQgdGU8U1RSSUtFPmE8L1NUUklLRT5jaGVzIGl0IHRvIHVzZSB0
PFNUUklLRT5oPC9TVFJJS0U+ZSBiYXRocm88Rk9OVCBmYWNlPSJNUyBTYW5zIFNlcmlmIj5vPC9G
T05UPm0gaW4gQmk8Rk9OVCBmYWNlPSJNUyBTYW5zIFNlcmlmIj5sbDwvRk9OVD4ncyB5YXJkLiBG
b3Igb248U1RSSUtFPmU8L1NUUklLRT4gd2hvbDxTVFJJS0U+ZTwvU1RSSUtFPiB5ZWFyIEJpbGwg
PEI+aWc8L0I+bm9yZXMgdGhlIDxTUEFOPmRvZy48L1NQQU4+IA0KIFQ8ST5vPC9JPi1tb3Jyb3cs
IDxTVFJPTkc+cGU8L1NUUk9ORz5yaGFwcywgdGhleSA8Rk9OVCBjb2xvcj0jZjFiZWZmPnc8L0ZP
TlQ+b3VsZCBjPFM+bzwvUz5tZSBhbmQgcmVzY3VlPFM+IDwvUz5oZXItYnV0IDxTVFJJS0U+czwv
U1RSSUtFPmhlIGRpZG4ndCA8RU0+cjwvRU0+ZWFsbHkgbWluZC4gU2hlIGRpPEZPTlQgY29sb3I9
I2RhNDRkZT5kbjwvRk9OVD4ndCBtPEVNPmluPC9FTT5kIHN0YXlpbmcgPEZPTlQgY29sb3I9Izhl
YjcyYz5oPC9GT05UPmVyZS4gTm88U1RST05HPnQgbjwvU1RST05HPm93IHRoYTxGT05UIGZhY2U9
Ik1TIFNhbnMgU2VyaWYiPnQgPC9GT05UPnNoZSB3YXMNCjxwPmxhbmc3PFM+YjwvUz5vc3NpMDJi
ZWxsdmE8ST5sPC9JPmUuPC9wPg=
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Kernel-janitor-discuss mailing list
Kernel-janitor-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kernel-janitor-discuss
^ permalink raw reply
* [PATCH] oprofile per-cpu buffer overrun
From: Philippe Elie @ 2004-01-26 2:37 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, John Levon
Hi Andrew,
In a ring buffer controlled by a read and write positions we
can't use buffer_size but only buffer_size - 1 entry, the last
free entry act as a guard to avoid write pos overrun. This bug
was hidden because the writer, oprofile_add_sample(), request
one more entry than really needed.
regards,
Phil
Index: drivers/oprofile/cpu_buffer.c
===================================================================
RCS file: /usr/local/cvsroot/linux-2.5/drivers/oprofile/cpu_buffer.c,v
retrieving revision 1.9
diff -u -p -r1.9 cpu_buffer.c
--- drivers/oprofile/cpu_buffer.c 26 May 2003 04:42:54 -0000 1.9
+++ drivers/oprofile/cpu_buffer.c 24 Jan 2004 21:07:03 -0000
@@ -86,9 +86,9 @@ static unsigned long nr_available_slots(
unsigned long tail = b->tail_pos;
if (tail > head)
- return tail - head;
+ return (tail - head) - 1;
- return tail + (b->buffer_size - head);
+ return tail + (b->buffer_size - head) - 1;
}
^ permalink raw reply
* Re: MD Oops on boot with 2.6.2-rc1-mm3
From: Walt H @ 2004-01-26 1:20 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, jik
> There appears to be a dud raid patch in -mm. It'll be one of the md-*
> patches.
>
> If you have time, could you work out which one? Ones to start with might be
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.2-rc1/2.6.2-rc1-mm3/ \
> broken-out/md-02-preferred_minor-fix.patch
>
> and
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.2-rc1/2.6.2-rc1-mm3/ \
> broken-out/md-06-allow-partitioning.patch
>
>
I had a repeatable oops that sounds identical to what Jonathan
originally reported. Backing out md-06-allow-partitioning.patch fixed
the oops at boot for me. Thanks,
-Walt
^ permalink raw reply
* Re: 2.6.2-rc in BK: Oops loading parport_pc.
From: Matthias Andree @ 2004-01-26 1:08 UTC (permalink / raw)
To: linux-kernel; +Cc: akpm
In-Reply-To: <20040125151454.70b5011e.akpm@osdl.org>
On Sun, 25 Jan 2004, Andrew Morton wrote:
> Matthias Andree <matthias.andree@gmx.de> wrote:
> >
> > Loading the parport_pc modules crashes in 2.6.2-rc; I have recently done
> > a "bk pull" and enabled some PNP options, among them ISA PNP.
>
> Often this is because some other, unrelated module left things registered
> after it was removed. Or otherwise wrecked shared data structures.
The breakage is somehow related to CONFIG_PNP. I set that option to N,
ran "make oldconfig ; make", installed the kernel, rebooted, problem
gone.
--
Matthias Andree
Encrypt your mail: my GnuPG key ID is 0x052E7D95
^ permalink raw reply
* NFS rpc and stale handles on 2.6.x servers
From: hanasaki @ 2004-01-26 1:03 UTC (permalink / raw)
To: nfs
The below is being reported, on and off, when hitting nfs-kernel-servers
running on 2.6.0 and 2.6.1 Could someone tell me if this is smoe bug or
what? Thanks
RPC request reserved 0 but used 124
Debian sarge
nfs-kernel-server
am-untils
nfsv3 over tcp
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
^ permalink raw reply
* [Kernel-janitors] [PATCH] fix logic bugs in ps2esdi.c
From: Timmy Yee @ 2004-01-26 1:00 UTC (permalink / raw)
To: kernel-janitors
Hi,
This patch adds missing ampersands.
--- linux-2.6.2-rc1/drivers/block/ps2esdi.c 2003-12-03 17:03:19.000000000 -0800
+++ linux-2.6.2-rc1-mpi/drivers/block/ps2esdi.c 2004-01-24 01:53:01.000000000 -0800
@@ -743,7 +743,7 @@
drive_num = int_ret_code >> 5;
switch (int_ret_code & 0xf) {
case INT_CMD_COMPLETE:
- for (i = ESDI_TIMEOUT; i & !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--);
+ for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--);
if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) {
printk("%s: timeout reading status word\n", DEVICE_NAME);
outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
@@ -879,7 +879,7 @@
break;
case INT_CMD_COMPLETE:
- for (i = ESDI_TIMEOUT; i & !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--);
+ for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--);
if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) {
printk("%s: timeout reading status word\n", DEVICE_NAME);
outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN);
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
http://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply
* [PATCH] correct ACPI URL
From: Randy.Dunlap @ 2004-01-26 0:59 UTC (permalink / raw)
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Cc: len.brown-ral2JQCrhuEAvxtiuMwx3w
Please apply to 2.6.current.
--
~Randy
description: use correct ACPI URL;
diffstat:=
arch/i386/boot/setup.S | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
diff -Naurp ./arch/i386/boot/setup.S~acpi_url ./arch/i386/boot/setup.S
--- ./arch/i386/boot/setup.S~acpi_url 2004-01-08 22:59:44.000000000 -0800
+++ ./arch/i386/boot/setup.S 2004-01-25 16:48:02.000000000 -0800
@@ -307,7 +307,7 @@ loader_ok:
# a whole bunch of different types, and allows memory holes and
# everything. We scan through this memory map and build a list
# of the first 32 memory areas, which we return at [E820MAP].
-# This is documented at http://www.teleport.com/~acpi/acpihtml/topic245.htm
+# This is documented at http://www.acpi.info/, in the ACPI 2.0 specification.
#define SMAP 0x534d4150
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
^ permalink raw reply
* [PATCH[ depca: remove double semi-colon
From: Randy.Dunlap @ 2004-01-26 0:56 UTC (permalink / raw)
To: netdev; +Cc: jgarzik
Please apply to 2.6.current.
--
~Randy
description: remove double semi-colon typo;
diffstat:=
drivers/net/depca.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
diff -Naurp ./drivers/net/depca.c~depca_semi ./drivers/net/depca.c
--- ./drivers/net/depca.c~depca_semi 2004-01-08 22:59:42.000000000 -0800
+++ ./drivers/net/depca.c 2004-01-25 16:48:45.000000000 -0800
@@ -1459,7 +1459,7 @@ static int __init depca_mca_probe(struct
out_unclaim:
mca_device_set_claim(mdev, 0);
- return err;;
+ return err;
}
#endif
^ permalink raw reply
* Re: [LARTC] IMQ Runtime error
From: Roy @ 2004-01-26 0:50 UTC (permalink / raw)
To: lartc
In-Reply-To: <1075073625.40145259a53ea@mail.psnet.gov.ng>
even if imq is quite useless right now
this eeror is caused probably by other loaded modules for userspace queue
nf_queue probably
since imq uses the same function
----- Original Message -----
From: "tc" <tc@me.net.ng>
To: <lartc@mailman.ds9a.nl>
Sent: Monday, January 26, 2004 1:33 AM
Subject: [LARTC] IMQ Runtime error
> hi all, i have applied all patches and compiled the kernel
> (2.4.21), iptables
> (1.2.9) and iproute2 (2.4.7-now-ss020116) however when i run '"'modprobe
imq
> numdevs=1'"', the system returns - imq.o: init_module: Device or resource
busy
>
> the transcript is below -
>
> [root@vmlinux project]# modprobe imq numdevs=1
> /lib/modules/2.4.21-BW/kernel/drivers/net/imq.o: init_module: Device or
resource
> busy
> Hint: insmod errors can be caused by incorrect module parameters,
including
> invalid IO or IRQ parameters.
> You may find more information in syslog or the output from dmesg
> /lib/modules/2.4.21-BW/kernel/drivers/net/imq.o: insmod
> /lib/modules/2.4.21-BW/kernel/drivers/net/imq.o failed
> /lib/modules/2.4.21-BW/kernel/drivers/net/imq.o: insmod imq failed
>
> what could be wrong? thanks all,
> bye
> joseph
> _______________________________________________
> LARTC mailing list / LARTC@mailman.ds9a.nl
> http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
>
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply
* 2.4.23 IDE hang on boot with two single-channel controllers
From: Jeremy Jackson @ 2004-01-26 0:42 UTC (permalink / raw)
To: linux-kernel
Hi All,
kdb shows proc_ide_create() stuck in a loop when booting on a Compaq
Armada 7730MT while attached to the docking station.
This is a unique IDE hardware setup. Channel ide0's controller is in
the laptop, while ide1 is a separate controller (pci device) in the
docking station and is not always present.
This seems to be triggering a bug in ide-proc.c:
void proc_ide_create(void)
{
#ifdef CONFIG_BLK_DEV_IDEPCI
ide_pci_host_proc_t *p = ide_pci_host_proc_list;
#endif /* CONFIG_BLK_DEV_IDEPCI */
proc_ide_root = proc_mkdir("ide", 0);
if (!proc_ide_root) return;
create_proc_ide_interfaces();
create_proc_read_entry("drivers", 0, proc_ide_root,
proc_ide_read_drivers, NULL);
#ifdef CONFIG_BLK_DEV_IDEPCI
while (p != NULL) <------------------- INFINITE LOOP HERE
{
if (p->name != NULL && p->set == 1 && p->get_info != NULL)
{
p->parent = proc_ide_root;
create_proc_info_entry(p->name, 0, p->parent,
p->get_info);
p->set = 2;
}
p = p->next;
}
#endif /* CONFIG_BLK_DEV_IDEPCI */
}
I'm not sure if the problem is in the loop or bad data being setup
before it starts.
Assistance fixing it would be appreciated.
Regards,
Jeremy Jackson
^ permalink raw reply
* [PATCH 2.4.25-pre7] missing file for it8181fb
From: Yoichi Yuasa @ 2004-01-26 0:37 UTC (permalink / raw)
To: marcelo.tosatti; +Cc: yuasa, linux-kernel
Hi,
I made patch about the missing file for it8181fb.
The it8181fb configuration was included in 2.4.25-pre7,
but a few changes are not included.
Please apply this patch.
Yoichi
diff -urN -X dontdiff linux-orig/drivers/pci/pci.ids linux/drivers/pci/pci.ids
--- linux-orig/drivers/pci/pci.ids Mon Jan 26 08:50:31 2004
+++ linux/drivers/pci/pci.ids Mon Jan 26 09:00:21 2004
@@ -4511,6 +4511,7 @@
9132 Ethernet 100/10 MBit
1283 Integrated Technology Express, Inc.
673a IT8330G
+ 8181 IT8181E/F LCD/VGA Controller
8330 IT8330G
8888 IT8888F PCI to ISA Bridge with SMB
8889 IT8889F PCI to ISA Bridge
diff -urN -X dontdiff linux-orig/drivers/video/it8181fb.c linux/drivers/video/it8181fb.c
--- linux-orig/drivers/video/it8181fb.c Thu Jan 1 09:00:00 1970
+++ linux/drivers/video/it8181fb.c Mon Jan 26 09:00:21 2004
@@ -0,0 +1,1350 @@
+/* IT8181 console frame buffer driver---it8181fb.c
+ *
+ * Copyright (C) 2001 Integrated Technology Express, Inc.
+ * Copyright (C) 2001 MontaVista Software Inc.
+ * Copyright (C) 2002,2003 Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
+ *
+ * Initial work by rich.liu@ite.com.tw
+ *
+ * Rewritten by MontaVista Software, Inc.
+ * stevel@mvista.com or source@mvista.com
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/*
+ * Changes:
+ * Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
+ * - Added support of NEC VR4111 and VR4121.
+ * - rewrote it8181fb_set_par()
+ */
+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/string.h>
+#include <linux/mm.h>
+#include <linux/tty.h>
+#include <linux/slab.h>
+#include <linux/vmalloc.h>
+#include <linux/delay.h>
+#include <linux/interrupt.h>
+#include <asm/uaccess.h>
+#include <linux/fb.h>
+#include <linux/init.h>
+#include <linux/pci.h>
+#include <asm/io.h>
+
+#include <video/fbcon.h>
+#include <video/fbcon-mfb.h>
+#include <video/fbcon-cfb2.h>
+#include <video/fbcon-cfb4.h>
+#include <video/fbcon-cfb8.h>
+#include <video/fbcon-cfb16.h>
+#include <video/fbcon-cfb24.h>
+#include <video/fbcon-cfb32.h>
+#include "vga.h"
+
+static const struct {
+ int f_pix_l; // kHz
+ int f_pix_h; // kHz
+ int m, n, p;
+} std_pll_freq[] = {
+ {24923, 25427, 1, 14, 3}, // 25.175 MHz +- 1%
+ {31185, 31815, 3, 53, 3}, // 31.5 MHz +- 1%
+ {39600, 40400, 5, 56, 2}, // 40 MHz +- 1%
+ {49005, 49995, 6, 83, 2}, // 49.5 MHz +- 1%
+ {49500, 50500, 1, 14, 2}, // 50 MHz +- 1%
+ {64350, 65650, 9, 82, 1}, // 65 MHz +- 1%
+ {74250, 75750, 2, 21, 1}, // 75 MHz +- 1%
+ {0, 0, 0, 0, 0}
+};
+
+// FIXME: this is just a guess
+#define PLL_MAX_M 18
+
+#define IT8181_GUI_SIZE 0x8000L /* 32kB */
+#define IT8181_MMIO_SIZE 0x10000L /* 64kB */
+#define IT8181_FB_SIZE 0x400000L /* 4MB */
+#define IT8181_CFG_SIZE 0x50UL
+
+#define PICOS2KHZ(a) (1000000000UL/(a))
+#define KHZ2PICOS(a) (1000000000UL/(a))
+
+#define CLOCK_REF 14318 // KHz
+
+#define IT8181_STANDBY 0x44 /* Standby register */
+#define IT8181_PLL1 0x48 /* PLL1 register */
+#define IT8181_PLL2 0x4c /* PLL2 register */
+
+#define IT8181_PLL1_RST 0x00004000 /* PLL1 reset */
+#define IT8181_PLL2_RST 0x00008000
+
+#define IT8181_MODULE_NAME "IT8181"
+#define PFX IT8181_MODULE_NAME
+
+#undef IT8181_DEBUG
+
+#ifdef IT8181_DEBUG
+#define dbg(format, arg...) \
+ printk(__FUNCTION__ ": " format "\n" , ## arg)
+ //printk(KERN_DEBUG __FUNCTION__ ": " format "\n" , ## arg)
+#else
+#define dbg(format, arg...) do {} while (0)
+#endif
+#define err(format, arg...) printk(KERN_ERR PFX ": " format "\n" , ## arg)
+#define info(format, arg...) printk(KERN_INFO PFX ": " format "\n" , ## arg)
+#define warn(format, arg...) printk(KERN_WARNING PFX ": " format "\n" , ## arg)
+#define emerg(format, arg...) printk(KERN_EMERG PFX ": " format "\n" , ## arg)
+
+#define CMAPSIZE 16
+#define arraysize(x) (sizeof(x)/sizeof(*(x)))
+
+/*
+ * These are fb_var_screeninfo's for 640x480, 800x600, and
+ * 1024x768. The bpp field is filled in later.
+ */
+static const struct fb_var_screeninfo it8181_var_table[] = {
+ { // 640x480@75, 31.5MHz dotclock
+ 640, 480, 640, 480, 0, 0, -1, 0,
+ {0}, {0}, {0}, {0},
+ 0, FB_ACTIVATE_NOW, -1, -1, 0,
+ 31747, 120, 16, 16, 1, 64, 3,
+ 0, FB_VMODE_NONINTERLACED },
+ { // 800x600@72, 50.00MHz dotclock
+ 800, 600, 800, 600, 0, 0, -1, 0,
+ {0}, {0}, {0}, {0},
+ 0, FB_ACTIVATE_NOW, -1, -1, 0,
+ 20000, 64, 56, 23, 37, 120, 6,
+ FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+ FB_VMODE_NONINTERLACED },
+ { // 1024x768@70, 75.00MHz dotclock
+ 1024, 768, 1024, 768, 0, 0, -1, 0,
+ {0}, {0}, {0}, {0},
+ 0, FB_ACTIVATE_NOW, -1, -1, 0,
+ 13334, 144, 24, 29, 3, 136, 6,
+ 0, FB_VMODE_NONINTERLACED }
+};
+
+enum {
+ RES_640x480 = 0,
+ RES_800x600,
+ RES_1024x768
+};
+
+/*
+ * The default resolution and color depth to use if
+ * none was specified on command line.
+ */
+#define DEFAULT_RES RES_800x600
+#define DEFAULT_BPP 16
+#define DEFAULT_MEMORY_BASE 0
+#define DEFAULT_CONFIG_OFFSET 0
+
+static const char default_mode[] = "800x600-70";
+static char __initdata fontname[40] = { 0 };
+static const char *mode_option __initdata = NULL;
+static int default_bpp __initdata = DEFAULT_BPP;
+static int default_res __initdata = DEFAULT_RES;
+static int default_memory_base __initdata = DEFAULT_MEMORY_BASE;
+static int default_config_offset __initdata = DEFAULT_CONFIG_OFFSET;
+
+struct it8181fb_par {
+ struct fb_var_screeninfo var;
+
+ int HorizRes; /* The x resolution in pixel */
+ int HorizTotal;
+ int HorizDispEnd;
+ int HorizBlankStart;
+ int HorizBlankEnd;
+ int HorizSyncStart;
+ int HorizSyncEnd;
+
+ int VertRes; /* the physical y resolution in scanlines */
+ int VertTotal;
+ int VertDispEnd;
+ int VertSyncStart;
+ int VertSyncEnd;
+ int VertBlankStart;
+ int VertBlankEnd;
+
+ int pll1_N, pll1_M, pll1_P; // PLL1 settings for pixel clock
+ int pll2_N, pll2_M, pll2_P; // PLL2 settings for memory clock
+ int pclk; // pixel clock from above PLL settings, KHz
+
+ int line_length; // in bytes
+ int cmap_len; // color-map length
+};
+
+struct it8181fb_info {
+ struct fb_info_gen gen;
+ struct it8181fb_par current_par;
+ struct pci_dev *pdev;
+ struct display disp;
+ unsigned int itConfigAddrVirt;
+ unsigned int itMmioAddrVirt;
+ unsigned int itFbAddrVirt;
+ unsigned int itGuiCtrlVirt;
+ unsigned int itMmioAddrPhys;
+ unsigned int itFbAddrPhys;
+ unsigned int itGuiCtrlPhys;
+ int blank_mode;
+
+ struct it8181fb_info *next;
+};
+
+static struct it8181fb_info *fb_it8181;
+static u32 itMmioAddr;
+static int it8181fb_lcd;
+static int it8181fb_memory_type;
+
+static char it8181fb_name[16] = IT8181_MODULE_NAME;
+
+static union {
+#ifdef FBCON_HAS_CFB16
+ u16 cfb16[CMAPSIZE];
+#endif
+#ifdef FBCON_HAS_CFB24
+ u32 cfb24[CMAPSIZE];
+#endif
+#ifdef FBCON_HAS_CFB32
+ u32 cfb32[CMAPSIZE];
+#endif
+} fbcon_cmap;
+
+/* Interface used by the world */
+int it8181fb_init(void);
+int it8181fb_setup(char *options, int *ints);
+static int it8181fb_ioctl(struct inode *inode, struct file *file, u_int cmd,
+ u_long arg, int con, struct fb_info *info);
+
+/* Hardware Specific Routines */
+static void it8181fb_detect (void);
+static int it8181fb_encode_fix (struct fb_fix_screeninfo *fix, const void *par,
+ struct fb_info_gen *info);
+static int it8181fb_decode_var (const struct fb_var_screeninfo *var, void *par,
+ struct fb_info_gen *info);
+static int it8181fb_encode_var (struct fb_var_screeninfo *var, const void *par,
+ struct fb_info_gen *info);
+static void it8181fb_get_par (void *par, struct fb_info_gen *info);
+static void it8181fb_set_par (const void *par, struct fb_info_gen *info);
+static int it8181fb_getcolreg (unsigned regno, unsigned *red, unsigned *green,
+ unsigned *blue, unsigned *transp,
+ struct fb_info *info);
+static int it8181fb_setcolreg (unsigned regno, unsigned red, unsigned green,
+ unsigned blue, unsigned transp,
+ struct fb_info *info);
+static int it8181fb_pan_display (const struct fb_var_screeninfo *var,
+ struct fb_info_gen *info);
+static int it8181fb_blank (int blank_mode, struct fb_info_gen *info);
+static void it8181fb_set_disp (const void *par, struct display *disp,
+ struct fb_info_gen *info);
+
+/* Internal routines */
+static void set_color_bitfields(struct fb_var_screeninfo *var);
+static int it8181fb_calc_pixclock(struct it8181fb_par* par);
+static void it8181SetPLL(const struct it8181fb_par* par,
+ const struct it8181fb_info* info);
+
+/* function table of the above functions */
+static struct fb_ops it8181fb_ops = {
+ owner: THIS_MODULE,
+ fb_get_fix: fbgen_get_fix,
+ fb_get_var: fbgen_get_var,
+ fb_set_var: fbgen_set_var,
+ fb_get_cmap: fbgen_get_cmap,
+ fb_set_cmap: fbgen_set_cmap,
+ fb_pan_display: fbgen_pan_display,
+ fb_ioctl: it8181fb_ioctl,
+};
+
+/* function table of the above functions */
+static struct fbgen_hwswitch it8181fb_hwswitch =
+{
+ it8181fb_detect,
+ it8181fb_encode_fix,
+ it8181fb_decode_var,
+ it8181fb_encode_var,
+ it8181fb_get_par,
+ it8181fb_set_par,
+ it8181fb_getcolreg,
+ it8181fb_setcolreg,
+ it8181fb_pan_display,
+ it8181fb_blank,
+ it8181fb_set_disp
+};
+
+static int itReadConfigDword(const struct it8181fb_info *info, int where, u32 *val)
+{
+ int result = 0;
+
+#ifdef CONFIG_PCI
+ if (info->pdev)
+ result = pci_read_config_dword(info->pdev, where, val);
+ else
+#endif
+ *val = readl(info->itConfigAddrVirt + where);
+
+ return result;
+}
+
+static int itWriteConfigDword(const struct it8181fb_info *info, int where, u32 val)
+{
+ int result = 0;
+
+#ifdef CONFIG_PCI
+ if (info->pdev)
+ result = pci_write_config_dword(info->pdev, where, val);
+ else
+#endif
+ writel(val, info->itConfigAddrVirt+ where);
+
+ return result;
+}
+
+static inline int itReadRegExtB(unsigned char addr)
+{
+ writeb(addr,itMmioAddr+0x3ce);
+ return readb(itMmioAddr+0x3cf);
+}
+
+static inline void itWriteRegExtB(unsigned char addr, unsigned char value)
+{
+ int tmp;
+ writeb(addr,itMmioAddr+0x3ce);
+ writeb(value,itMmioAddr+0x3cf);
+ tmp = itReadRegExtB(addr);
+}
+
+static inline void itExtBLock(void)
+{
+ itWriteRegExtB(0x0b,0x35);
+ if (itReadRegExtB(0x0b) & 1)
+ dbg("ExtB still unlocked!");
+}
+
+static inline void itExtBUnlock(void)
+{
+ itWriteRegExtB(0x0b,0xca);
+ if (!(itReadRegExtB(0x0b) & 1))
+ dbg("ExtB still locked!");
+}
+
+static inline int itReadRegExtA(unsigned char addr)
+{
+ writeb(addr,itMmioAddr+0x3d6);
+ return readb(itMmioAddr+0x3d7);
+}
+
+static inline void itWriteRegExtA(unsigned char addr,unsigned char value)
+{
+ int tmp;
+ writeb(addr,itMmioAddr+0x3d6);
+ writeb(value,itMmioAddr+0x3d7);
+ tmp = itReadRegExtA(addr);
+}
+
+static inline void itExtALock(void)
+{
+ itWriteRegExtA(0x0b,0xce);
+}
+
+static inline void itExtAUnlock(void)
+{
+ itWriteRegExtA(0x0b,0xec);
+}
+
+static inline int itReadRegCrtc(unsigned char addr)
+{
+ writeb(addr,itMmioAddr+VGA_CRT_IC);
+ return readb(itMmioAddr+VGA_CRT_DC);
+}
+
+static inline void itWriteRegCrtc(unsigned char addr,unsigned char value)
+{
+ int tmp;
+ writeb(addr,itMmioAddr+VGA_CRT_IC);
+ writeb(value,itMmioAddr+VGA_CRT_DC);
+ tmp = itReadRegCrtc(addr);
+}
+
+static inline uint8_t itReadRegMisc(void)
+{
+ return readb(itMmioAddr+VGA_MIS_R);
+}
+
+static inline void itWriteRegMisc(unsigned char value)
+{
+ writeb(value, itMmioAddr+VGA_MIS_W);
+}
+
+static inline int itReadRegSEQ(unsigned char addr)
+{
+ writeb(addr, itMmioAddr+VGA_SEQ_I);
+ return readb(itMmioAddr+VGA_SEQ_D);
+}
+
+static inline void itWriteRegSEQ(unsigned char addr,unsigned char value)
+{
+ writeb(addr, itMmioAddr+VGA_SEQ_I);
+ writeb(value, itMmioAddr+VGA_SEQ_D);
+}
+
+static void set_color_bitfields(struct fb_var_screeninfo *var)
+{
+ switch (var->bits_per_pixel) {
+ case 1:
+ case 8:
+ var->red.offset = 0;
+ var->red.length = 8;
+ var->green.offset = 0;
+ var->green.length = 8;
+ var->blue.offset = 0;
+ var->blue.length = 8;
+ var->transp.offset = 0;
+ var->transp.length = 0;
+ break;
+ case 16: /* RGB 565 */
+ var->red.offset = 11;
+ var->red.length = 5;
+ var->green.offset = 5;
+ var->green.length = 6;
+ var->blue.offset = 0;
+ var->blue.length = 5;
+ var->transp.offset = 0;
+ var->transp.length = 0;
+ break;
+ case 24: /* RGB 888 */
+ var->red.offset = 16;
+ var->red.length = 8;
+ var->green.offset = 8;
+ var->green.length = 8;
+ var->blue.offset = 0;
+ var->blue.length = 8;
+ var->transp.offset = 0;
+ var->transp.length = 0;
+ break;
+ case 32: /* RGBA 8888 */
+ var->red.offset = 0;
+ var->red.length = 8;
+ var->green.offset = 8;
+ var->green.length = 8;
+ var->blue.offset = 16;
+ var->blue.length = 8;
+ var->transp.offset = 24;
+ var->transp.length = 8;
+ break;
+ }
+
+ var->red.msb_right = 0;
+ var->green.msb_right = 0;
+ var->blue.msb_right = 0;
+ var->transp.msb_right = 0;
+}
+
+
+static void it8181fb_detect (void)
+{
+ dbg("");
+}
+
+static int it8181fb_encode_fix(struct fb_fix_screeninfo *fix,
+ const void* _par,
+ struct fb_info_gen* _info)
+{
+ struct it8181fb_par *par = (struct it8181fb_par *) _par;
+ struct it8181fb_info *info = (struct it8181fb_info *) _info;
+ struct fb_var_screeninfo* var = &par->var;
+
+ memset(fix, 0, sizeof(struct fb_fix_screeninfo));
+ strcpy(fix->id, it8181fb_name);
+
+ fix->smem_start = info->itFbAddrPhys;
+ fix->smem_len = IT8181_FB_SIZE;
+ fix->mmio_start = info->itMmioAddrPhys;
+ fix->mmio_len = IT8181_MMIO_SIZE;
+ fix->type = FB_TYPE_PACKED_PIXELS;
+ fix->type_aux = 0;
+ fix->visual = (var->bits_per_pixel <= 8) ?
+ FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
+ fix->ywrapstep = 0;
+ fix->xpanstep = 1;
+ fix->ypanstep = 1;
+ fix->line_length = par->line_length;
+
+ return 0;
+}
+
+static int it8181fb_decode_var(const struct fb_var_screeninfo *var,
+ void *_par,
+ struct fb_info_gen *_info)
+{
+ struct it8181fb_par *par = (struct it8181fb_par *) _par;
+ int xres, rm, hsync, lm;
+ int yres, bm, vsync, um;
+
+ if (var->vmode & FB_VMODE_DOUBLE) {
+ dbg("double-scan modes not supported");
+ return -EINVAL;
+ }
+ if (var->vmode & FB_VMODE_INTERLACED) {
+ dbg("interlaced modes not supported");
+ return -EINVAL;
+ }
+
+ if (!((var->xres == 640 && var->yres == 480) ||
+ (var->xres == 800 && var->yres == 600) ||
+ (var->xres == 1024 && var->yres == 768))) {
+ dbg("resolution not supported: %dx%d",
+ var->xres, var->yres);
+ return -EINVAL;
+ }
+
+ memset (par, 0, sizeof (struct it8181fb_par));
+ par->var = *var;
+
+ switch (var->bits_per_pixel) {
+ case 2 ... 8:
+ par->var.bits_per_pixel = 8;
+ break;
+ case 9 ... 16:
+ par->var.bits_per_pixel = 16;
+ break;
+ case 17 ... 24:
+ par->var.bits_per_pixel = 24;
+ break;
+ case 25 ... 32:
+ par->var.bits_per_pixel = 32;
+ break;
+ default:
+ dbg("color depth %d bpp not supported", var->bits_per_pixel);
+ return -EINVAL;
+ }
+
+ par->var.width = par->var.height = -1;
+ /* no virtual display for now (no panning/scrolling) */
+ par->var.xoffset = par->var.yoffset = 0;
+ par->var.xres_virtual = par->var.xres;
+ par->var.yres_virtual = par->var.yres;
+ /* no accels */
+ par->var.accel_flags = 0;
+
+ set_color_bitfields(&par->var);
+ par->cmap_len = (par->var.bits_per_pixel == 8) ? 256 : 16;
+
+ /*
+ * check memory limit
+ */
+ par->line_length =
+ par->var.xres_virtual * (par->var.bits_per_pixel>>3);
+ if (par->line_length * par->var.yres_virtual > IT8181_FB_SIZE) {
+ dbg("not enough video memory for virtual res %dx%dx%d!",
+ par->var.xres_virtual, par->var.yres_virtual,
+ par->var.bits_per_pixel);
+ return -ENOMEM;
+ }
+
+ if (it8181fb_calc_pixclock(par)) {
+ return -EINVAL;
+ }
+
+ xres = var->xres;
+ rm = var->right_margin;
+ hsync = var->hsync_len;
+ lm = var->left_margin;
+
+ yres = var->yres;
+ bm = var->lower_margin;
+ vsync = var->vsync_len;
+ um = var->upper_margin;
+
+ par->HorizRes = xres;
+ par->HorizTotal = (xres + rm + hsync + lm) / 8 - 5;
+ par->HorizDispEnd = xres / 8 - 1;
+ par->HorizBlankStart = xres / 8;
+ par->HorizBlankEnd = par->HorizTotal + 5; // does not count with "-5"
+ par->HorizSyncStart = (xres + rm) / 8 + 1;
+ par->HorizSyncEnd = (xres + rm + hsync) / 8 + 1;
+
+ par->VertRes = yres;
+ par->VertTotal = yres + bm + vsync + um - 2;
+ par->VertDispEnd = yres - 1;
+ par->VertBlankStart = yres;
+ par->VertBlankEnd = par->VertTotal;
+ par->VertSyncStart = yres + bm - 1;
+ par->VertSyncEnd = yres + bm + vsync - 1;
+
+ return 0;
+}
+
+static int it8181fb_encode_var(struct fb_var_screeninfo *var,
+ const void *par,
+ struct fb_info_gen *info)
+{
+ *var = ((struct it8181fb_par *)par)->var;
+ return 0;
+}
+
+static void it8181fb_set_disp(const void *_par, struct display *disp,
+ struct fb_info_gen *_info)
+{
+ struct it8181fb_par *par = (struct it8181fb_par *) _par;
+ struct it8181fb_info *info = (struct it8181fb_info *) _info;
+
+ disp->screen_base = (char *)info->itFbAddrVirt;
+
+ switch (par->var.bits_per_pixel) {
+#ifdef FBCON_HAS_MFB
+ case 1:
+ disp->dispsw = &fbcon_mfb;
+ break;
+#endif
+#ifdef FBCON_HAS_CFB2
+ case 2:
+ disp->dispsw = &fbcon_cfb2;
+ break;
+#endif
+#ifdef FBCON_HAS_CFB4
+ case 4:
+ disp->dispsw = &fbcon_cfb4;
+ break;
+#endif
+#ifdef FBCON_HAS_CFB8
+ case 8:
+ disp->dispsw = &fbcon_cfb8;
+ break;
+#endif
+#ifdef FBCON_HAS_CFB16
+ case 16:
+ disp->dispsw = &fbcon_cfb16;
+ disp->dispsw_data = fbcon_cmap.cfb16;
+ break;
+#endif
+#ifdef FBCON_HAS_CFB24
+ case 24:
+ disp->dispsw = &fbcon_cfb24;
+ disp->dispsw_data = fbcon_cmap.cfb24;
+ break;
+#endif
+#ifdef FBCON_HAS_CFB32
+ case 32:
+ disp->dispsw = &fbcon_cfb32;
+ disp->dispsw_data = fbcon_cmap.cfb32;
+ break;
+#endif
+ default:
+ disp->dispsw = &fbcon_dummy;
+ disp->dispsw_data = NULL;
+ break;
+ }
+}
+
+static int it8181fb_ioctl(struct inode *inode, struct file *file, u_int cmd,
+ u_long arg, int con, struct fb_info *info)
+{
+ /* nothing to do yet */
+ return -EINVAL;
+}
+
+static inline void it8181fb_panel_poweron(void)
+{
+ if (it8181fb_lcd != 0) {
+ itExtAUnlock();
+ itWriteRegExtA(0x9b, 0x01);
+ itExtALock();
+
+ mdelay(120);
+ }
+}
+
+static inline void it8181fb_panel_poweroff(void)
+{
+ if (it8181fb_lcd != 0) {
+ itExtAUnlock();
+ itWriteRegExtA(0x9b, 0x00);
+ itExtALock();
+
+ mdelay(120);
+ }
+}
+
+/*
+ * Blank the display.
+ *
+ * 0 unblank, 1 blank, 2 no vsync, 3 no hsync, 4 off
+ */
+static int it8181fb_blank(int mode, struct fb_info_gen *_info)
+{
+ struct it8181fb_info *p = (struct it8181fb_info *)_info;
+
+ if (p->blank_mode == mode)
+ return 0;
+
+ itExtBUnlock();
+
+ mdelay(25);
+
+ switch (mode) {
+ case 0:
+ // turn display sync's back on
+ itWriteRegExtB(0x3c, 0x00);
+ itWriteRegSEQ(VGA_SEQ_CLOCK_MODE, 0); // unblank
+
+ it8181fb_panel_poweron();
+ break;
+ case 1:
+ // turn display sync's back on
+ itWriteRegExtB(0x3c, 0x00);
+ itWriteRegSEQ(VGA_SEQ_CLOCK_MODE, 0x20); // blank
+
+ it8181fb_panel_poweroff();
+ break;
+ case 2:
+ itWriteRegSEQ(VGA_SEQ_CLOCK_MODE, 0x20); // blank
+ itWriteRegExtB(0x3c, 0x08); // disable vsync
+
+ it8181fb_panel_poweroff();
+ break;
+ case 3:
+ itWriteRegSEQ(VGA_SEQ_CLOCK_MODE, 0x20); // blank
+ itWriteRegExtB(0x3c, 0x02); // disable hsync
+
+ it8181fb_panel_poweroff();
+ break;
+ case 4:
+ itWriteRegSEQ(VGA_SEQ_CLOCK_MODE, 0x20); // blank
+ itWriteRegExtB(0x3c, 0x0a); // disable sync
+
+ it8181fb_panel_poweroff();
+ break;
+ }
+
+ itExtBLock();
+
+ p->blank_mode = mode;
+
+ return 0;
+}
+
+static int it8181fb_calc_pixclock(struct it8181fb_par* par)
+{
+ int i;
+ int f_pix, f_actual;
+
+ /*
+ * If the desired pixel clock is one of the standard
+ * VESA frequencies, pull the {N,M,P} values from the
+ * std_pll_freq[] table, otherwise we have to calculate
+ * the {N,M,P} values.
+ */
+
+ f_pix = PICOS2KHZ(par->var.pixclock);
+
+ for (i=0; std_pll_freq[i].f_pix_l; i++) {
+ if (f_pix >= std_pll_freq[i].f_pix_l &&
+ f_pix <= std_pll_freq[i].f_pix_h) {
+ par->pll1_N = std_pll_freq[i].n;
+ par->pll1_M = std_pll_freq[i].m;
+ par->pll1_P = std_pll_freq[i].p;
+ break;
+ }
+ }
+
+ if (!std_pll_freq[i].f_pix_l) {
+ int r, N, M, P;
+ // Pixel clock is not one of the standard VESA frequencies.
+ if (f_pix < 2*CLOCK_REF) P = 3;
+ else if (f_pix < 4*CLOCK_REF) P = 2;
+ else if (f_pix < 6*CLOCK_REF) P = 1;
+ else P = 0;
+
+ r = ((1<<10) * f_pix * (1<<P)) / CLOCK_REF;
+
+ if (r > 255*(1<<10) || r < (1<<10)/PLL_MAX_M) {
+ dbg("desired pixclock out of range");
+ return -EINVAL;
+ }
+
+ if (r == (1<<10)) {
+ // r = 1.0
+ N = M = PLL_MAX_M;
+ } else if (r > (1<<10)) {
+ // r > 1.0
+ for (N=255; N>1; N--) {
+ // round-up
+ M = ((N*(1<<11) + (1<<10)) / r) / 2;
+ if (M <= PLL_MAX_M)
+ break;
+ }
+ } else {
+ // r < 1.0
+ M = PLL_MAX_M;
+ N = (PLL_MAX_M * r + (1<<9)) / (1<<10); // round-up
+ }
+
+ par->pll1_N = N;
+ par->pll1_M = M;
+ par->pll1_P = P;
+ }
+
+
+ f_actual = (par->pll1_N * CLOCK_REF) / (par->pll1_M * (1<<par->pll1_P));
+
+ dbg("N=%d, M=%d, P=%d", par->pll1_N, par->pll1_M, par->pll1_P);
+ dbg("desired=%d KHz, actual=%d KHz, error=%d%%",
+ f_pix, f_actual, (100*abs(f_actual - f_pix)) / f_pix);
+
+ par->var.pixclock = KHZ2PICOS(f_actual);
+ return 0;
+}
+
+static void it8181SetPLL(const struct it8181fb_par* par,
+ const struct it8181fb_info* info)
+{
+ itWriteConfigDword(info, IT8181_STANDBY, 0x0000c000);
+
+ // program PLL1
+ itWriteConfigDword(info, IT8181_PLL1,
+ (par->pll1_P << 16) |
+ (((-par->pll1_N) & 0xff) << 8) |
+ (((-par->pll1_M) & 0x3f)));
+
+ // PLL2 = 49.5 MHz
+ itWriteConfigDword(info, IT8181_PLL2, 0x0002AD3A);
+
+ itWriteConfigDword(info, IT8181_STANDBY, 0x00000110);
+ mdelay(25); // wait 25 msec
+}
+
+/* get current video mode */
+static void it8181fb_get_par (void *_par, struct fb_info_gen *_info)
+{
+ struct it8181fb_par *par = (struct it8181fb_par *) _par;
+ struct it8181fb_info *info = (struct it8181fb_info *) _info;
+
+ *par = info->current_par;
+}
+
+/*
+ setmod for IT8181 chip
+*/
+static void it8181fb_set_par(const void *_par, struct fb_info_gen *_info)
+{
+ struct it8181fb_par *par = (struct it8181fb_par *) _par;
+ struct it8181fb_info *info = (struct it8181fb_info *) _info;
+
+ dbg("%dx%dx%d", par->var.xres, par->var.yres, par->var.bits_per_pixel);
+ dbg("%d %d %d %d %d %d %d",
+ par->var.pixclock,
+ par->var.left_margin,
+ par->var.right_margin,
+ par->var.upper_margin,
+ par->var.lower_margin,
+ par->var.hsync_len,
+ par->var.vsync_len);
+
+ /* disable cursor */
+ writeb(0x00, info->itGuiCtrlVirt + 0x100);
+
+ itExtBUnlock();
+ itExtAUnlock();
+
+ mdelay(25);
+
+ // disable display sync
+ itWriteRegExtB(0x3c, 0x0a);
+
+ // Set RAM to 1M*16bit Symmetric DRAM
+ itWriteRegExtB(0x2f,0x80);
+
+ // enable GUI engine registers
+ itWriteRegExtB(0x2b,0x10);
+
+ // set pixel clock
+ it8181SetPLL(par, info);
+
+ // Step2
+ if (par->var.xres == 640 && par->var.yres == 480 &&
+ (par->var.bits_per_pixel == 8 || par->var.bits_per_pixel == 16)) {
+ itWriteRegMisc(0xc3);
+
+ itWriteRegCrtc(VGA_CRTC_H_TOTAL, 0x5f);
+ itWriteRegCrtc(VGA_CRTC_H_DISP, 0x4f);
+ itWriteRegCrtc(VGA_CRTC_H_BLANK_START, 0x40);
+ itWriteRegCrtc(VGA_CRTC_H_BLANK_END, 0x80);
+ itWriteRegCrtc(VGA_CRTC_H_SYNC_START, 0x52);
+ itWriteRegCrtc(VGA_CRTC_H_SYNC_END, 0x81);
+ itWriteRegCrtc(VGA_CRTC_V_TOTAL, 0x0b);
+ itWriteRegCrtc(VGA_CRTC_OVERFLOW, 0x3e);
+ itWriteRegCrtc(VGA_CRTC_PRESET_ROW, 0x00);
+ itWriteRegCrtc(VGA_CRTC_MAX_SCAN, 0x40);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_START, 0x00);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_END, 0x00);
+ itWriteRegCrtc(VGA_CRTC_START_HI, 0x00);
+ itWriteRegCrtc(VGA_CRTC_START_LO, 0x00);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_HI, 0x01);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_LO, 0x49);
+ itWriteRegCrtc(VGA_CRTC_V_SYNC_START, 0xea);
+ itWriteRegCrtc(VGA_CRTC_V_SYNC_END, 0x8c);
+ itWriteRegCrtc(VGA_CRTC_V_DISP_END, 0xdf);
+ itWriteRegCrtc(VGA_CRTC_OFFSET, 0x50);
+ itWriteRegCrtc(VGA_CRTC_UNDERLINE, 0x00);
+ itWriteRegCrtc(VGA_CRTC_V_BLANK_START, 0xe7);
+ itWriteRegCrtc(VGA_CRTC_V_BLANK_END, 0x04);
+ itWriteRegCrtc(VGA_CRTC_MODE, 0xe3);
+ itWriteRegCrtc(VGA_CRTC_LINE_COMPARE, 0xff);
+ } else if (par->var.xres == 800 && par->var.yres == 600 &&
+ (par->var.bits_per_pixel == 8 || par->var.bits_per_pixel == 16)) {
+ itWriteRegMisc(0x03);
+
+ itWriteRegCrtc(VGA_CRTC_H_TOTAL, 0x07);
+ itWriteRegCrtc(VGA_CRTC_H_DISP, 0x63);
+ itWriteRegCrtc(VGA_CRTC_H_BLANK_START, 0x64);
+ itWriteRegCrtc(VGA_CRTC_H_BLANK_END, 0x81);
+ itWriteRegCrtc(VGA_CRTC_H_SYNC_START, 0x6c);
+ itWriteRegCrtc(VGA_CRTC_H_SYNC_END, 0x18);
+ itWriteRegCrtc(VGA_CRTC_V_TOTAL, 0x72);
+ itWriteRegCrtc(VGA_CRTC_OVERFLOW, 0x0f);
+ itWriteRegCrtc(VGA_CRTC_PRESET_ROW, 0x00);
+ itWriteRegCrtc(VGA_CRTC_MAX_SCAN, 0x60);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_START, 0x00);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_END, 0x00);
+ itWriteRegCrtc(VGA_CRTC_START_HI, 0x00);
+ itWriteRegCrtc(VGA_CRTC_START_LO, 0x00);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_HI, 0x00);
+ itWriteRegCrtc(VGA_CRTC_CURSOR_LO, 0xaa);
+ itWriteRegCrtc(VGA_CRTC_V_SYNC_START, 0x59);
+ itWriteRegCrtc(VGA_CRTC_V_SYNC_END, 0xad);
+ itWriteRegCrtc(VGA_CRTC_V_DISP_END, 0x57);
+ itWriteRegCrtc(VGA_CRTC_OFFSET, 0x64);
+ itWriteRegCrtc(VGA_CRTC_UNDERLINE, 0x00);
+ itWriteRegCrtc(VGA_CRTC_V_BLANK_START, 0x59);
+ itWriteRegCrtc(VGA_CRTC_V_BLANK_END, 0x00);
+ itWriteRegCrtc(VGA_CRTC_MODE, 0xe3);
+ itWriteRegCrtc(VGA_CRTC_LINE_COMPARE, 0xff);
+ }
+
+
+ if (par->var.bits_per_pixel == 8) {
+ if (par->var.xres == 640 && par->var.yres == 480)
+ itWriteRegCrtc(VGA_CRTC_OFFSET, 0x28);
+ else if (par->var.xres == 800 && par->var.yres == 600)
+ itWriteRegCrtc(VGA_CRTC_OFFSET, 0x32);
+ }
+
+ itWriteRegSEQ(VGA_SEQ_RESET, 0x03);
+ itWriteRegExtB(0x06, 0x01);
+ itWriteRegExtB(0x20, 0x01);
+
+ if (par->var.xres == 640 && par->var.yres == 480) {
+ if (par->var.bits_per_pixel == 8)
+ itWriteRegExtB(0x38, 0x01);
+ else if (par->var.bits_per_pixel == 16)
+ itWriteRegExtB(0x38, 0x03);
+ itWriteRegExtB(0x39, 0x40);
+ } else if (par->var.xres == 800 && par->var.yres == 600) {
+ if (par->var.bits_per_pixel == 8)
+ itWriteRegExtB(0x38, 0x21);
+ else if (par->var.bits_per_pixel == 16)
+ itWriteRegExtB(0x38, 0x23);
+ itWriteRegExtB(0x39, 0x44);
+ }
+
+ writeb(0xff, info->itMmioAddrVirt+VGA_PEL_MSK);
+
+ // Step3
+ if (it8181fb_lcd) {
+ if (par->var.xres == 640 && par->var.yres == 480 &&
+ (par->var.bits_per_pixel == 8 ||
+ par->var.bits_per_pixel == 16)) {
+ dbg("LCD 640x480-8/16 selected");
+ itWriteRegExtA(0x80, 0x4e);
+ itWriteRegExtA(0x81, 0x00);
+ itWriteRegExtA(0x82, 0x13);
+ itWriteRegExtA(0x83, 0x00);
+ itWriteRegExtA(0x84, 0x10);
+ itWriteRegExtA(0x85, 0xdf);
+ itWriteRegExtA(0x86, 0x00);
+ itWriteRegExtA(0x87, 0x28);
+ itWriteRegExtA(0x88, 0x00);
+ itWriteRegExtA(0x89, 0x00);
+ itWriteRegExtA(0x8a, 0x81);
+ itWriteRegExtA(0x8b, 0x4e);
+ itWriteRegExtA(0x8c, 0x00);
+ itWriteRegExtA(0x8d, 0x2b);
+ itWriteRegExtA(0x8e, 0x00);
+ itWriteRegExtA(0x8f, 0x00);
+ itWriteRegExtA(0x90, 0x01);
+ itWriteRegExtA(0x91, 0x00);
+ itWriteRegExtA(0x92, 0x00);
+ itWriteRegExtA(0x93, 0x10);
+
+ itWriteRegExtA(0xa0, 0x23);
+
+ itWriteRegExtA(0xb0, 0x04);
+ itWriteRegExtA(0xb1, 0x04);
+ itWriteRegExtA(0xb2, 0x40);
+ itWriteRegExtA(0xb3, 0x40);
+ itWriteRegExtA(0xb4, 0x08);
+ itWriteRegExtA(0xb5, 0x08);
+ itWriteRegExtA(0xb6, 0x80);
+ itWriteRegExtA(0xb7, 0x80);
+ itWriteRegExtA(0xb8, 0x2a);
+ itWriteRegExtA(0xb9, 0x3b);
+ itWriteRegExtA(0xba, 0x6e);
+ itWriteRegExtA(0xbb, 0x7f);
+ itWriteRegExtA(0xbc, 0x80);
+ itWriteRegExtA(0xbd, 0x19);
+ itWriteRegExtA(0xbe, 0xc4);
+ itWriteRegExtA(0xbf, 0xd5);
+ } else if (par->var.xres == 800 && par->var.yres == 600 &&
+ (par->var.bits_per_pixel == 8 ||
+ par->var.bits_per_pixel == 16)) {
+ dbg("LCD 800x600-8/16 selected");
+ itWriteRegExtA(0x80, 0x62);
+ itWriteRegExtA(0x81, 0x00);
+ itWriteRegExtA(0x82, 0x1f);
+ itWriteRegExtA(0x83, 0x00);
+ itWriteRegExtA(0x84, 0x10);
+ itWriteRegExtA(0x85, 0x57);
+ itWriteRegExtA(0x86, 0x18);
+ itWriteRegExtA(0x87, 0x48);
+ itWriteRegExtA(0x88, 0x00);
+ itWriteRegExtA(0x89, 0x00);
+ itWriteRegExtA(0x8a, 0xf9);
+ itWriteRegExtA(0x8b, 0xc7);
+ itWriteRegExtA(0x8c, 0x00);
+ itWriteRegExtA(0x8d, 0x1a);
+ itWriteRegExtA(0x8e, 0x00);
+ itWriteRegExtA(0x8f, 0x00);
+ itWriteRegExtA(0x90, 0x41);
+ itWriteRegExtA(0x91, 0x00);
+ itWriteRegExtA(0x92, 0x00);
+ itWriteRegExtA(0x93, 0x10);
+
+ itWriteRegExtA(0xa0, 0x23);
+
+ itWriteRegExtA(0xb0, 0x00);
+ itWriteRegExtA(0xb1, 0x00);
+ itWriteRegExtA(0xb2, 0x00);
+ itWriteRegExtA(0xb3, 0x00);
+ itWriteRegExtA(0xb4, 0x00);
+ itWriteRegExtA(0xb5, 0x00);
+ itWriteRegExtA(0xb6, 0x00);
+ itWriteRegExtA(0xb7, 0x00);
+ itWriteRegExtA(0xb8, 0x50);
+ itWriteRegExtA(0xb9, 0x7b);
+ itWriteRegExtA(0xba, 0x8c);
+ itWriteRegExtA(0xbb, 0x2e);
+ itWriteRegExtA(0xbc, 0x14);
+ itWriteRegExtA(0xbd, 0xa6);
+ itWriteRegExtA(0xbe, 0xd9);
+ itWriteRegExtA(0xbf, 0xf3);
+ }
+
+ if (it8181fb_memory_type == 0) {
+ itWriteRegExtA(0xa8, 0x30);
+ itWriteRegExtA(0xa9, 0x3c);
+ } else {
+ itWriteRegExtA(0xa8, 0xc0);
+ itWriteRegExtA(0xa9, 0xe0);
+ }
+
+ itWriteRegExtA(0xa1, 0x01);
+ itWriteRegExtA(0xa2, 0x00);
+
+ itWriteRegExtA(0x9a, 0x22);
+ itWriteRegExtA(0x9b, 0x01);
+ }
+
+ // turn display sync's back on
+ itWriteRegExtB(0x3c, 0x00);
+
+ itExtBLock();
+ itExtALock();
+
+ mdelay(25);
+
+ /* this par is now current par */
+ info->current_par = *par;
+}
+
+/*
+ * Set/Get the color of a palette entry in 8bpp mode
+ */
+static inline void
+do_setpalentry(unsigned regno, u8 r, u8 g, u8 b)
+{
+ writeb((u8)regno, itMmioAddr+VGA_PEL_IW);
+ writeb(r, itMmioAddr+VGA_PEL_D);
+ writeb(g, itMmioAddr+VGA_PEL_D);
+ writeb(b, itMmioAddr+VGA_PEL_D);
+}
+
+static inline void
+do_getpalentry(unsigned regno, u8* r, u8* g, u8* b)
+{
+ writeb((u8)regno, itMmioAddr+VGA_PEL_IW);
+ *r = readb(itMmioAddr+VGA_PEL_D);
+ *g = readb(itMmioAddr+VGA_PEL_D);
+ *b = readb(itMmioAddr+VGA_PEL_D);
+}
+
+static int it8181fb_getcolreg(unsigned regno, unsigned *red, unsigned *green,
+ unsigned *blue, unsigned *transp,
+ struct fb_info *_info)
+{
+ u8 r,g,b;
+
+ if (regno > 255)
+ return 1;
+
+ do_getpalentry(regno, &r, &g, &b);
+
+ *red = (unsigned)r << 10;
+ *green = (unsigned)g << 10;
+ *blue = (unsigned)b << 10;
+ *transp = 0;
+
+ return 0;
+}
+
+static int it8181fb_setcolreg(unsigned regno, unsigned red, unsigned green,
+ unsigned blue, unsigned transp,
+ struct fb_info *_info)
+{
+ struct it8181fb_info *p = (struct it8181fb_info *) _info;
+ struct it8181fb_par* par = &p->current_par;
+
+ if (regno > 255)
+ return -EINVAL;
+
+ do_setpalentry(regno, (u8)(red>>10),
+ (u8)(green>>10), (u8)(blue>>10));
+
+ switch (par->var.bits_per_pixel) {
+#ifdef FBCON_HAS_CFB16
+ case 16:
+ if(regno < CMAPSIZE)
+ fbcon_cmap.cfb16[regno] =
+ ((red & 0xf800) >> 0) |
+ ((green & 0xf800) >> 5) |
+ ((blue & 0xf800) >> 11);
+ break;
+#endif
+#ifdef FBCON_HAS_CFB24
+ case 24:
+ if (regno < CMAPSIZE)
+ fbcon_cmap.cfb24[regno] =
+ ((red & 0xff00) << 8) |
+ ((green & 0xff00)) |
+ ((blue & 0xff00) >> 8);
+ break;
+#endif
+#ifdef FBCON_HAS_CFB32
+ case 32:
+ if(regno < CMAPSIZE)
+ fbcon_cmap.cfb32[regno] =
+ ((red & 0xff00) >> 8) |
+ ((green & 0xff00)) |
+ ((blue & 0xff00) << 8);
+ break;
+#endif
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+static int it8181fb_pan_display (const struct fb_var_screeninfo *var,
+ struct fb_info_gen *info)
+{
+ /* not implemented */
+ return 0;
+}
+
+/*
+ * Initialisation
+ */
+int it8181fb_init(void)
+{
+ struct fb_var_screeninfo var;
+ struct it8181fb_info *p = NULL;
+
+ fb_it8181 = p =
+ (struct it8181fb_info *) kmalloc(sizeof(*p), GFP_ATOMIC);
+ if(p==NULL)
+ return -ENOMEM;
+ memset(p, 0, sizeof(*p));
+
+#ifdef CONFIG_PCI
+ p->pdev = (struct pci_dev *) pci_find_device(PCI_VENDOR_ID_ITE,
+ PCI_DEVICE_ID_ITE_IT8181,
+ NULL);
+#endif
+ if(!p->pdev) {
+ u32 id = 0;
+ if (default_config_offset)
+ p->itConfigAddrVirt = (u32) ioremap(default_memory_base +
+ default_config_offset,
+ IT8181_CFG_SIZE);
+ if (p->itConfigAddrVirt)
+ itReadConfigDword(p, PCI_VENDOR_ID, &id);
+ if (!(id == (PCI_VENDOR_ID_ITE | (PCI_DEVICE_ID_ITE_IT8181 << 16))))
+ return -ENODEV;
+ }
+
+ itReadConfigDword(p, PCI_BASE_ADDRESS_0, &(p->itFbAddrPhys));
+ itReadConfigDword(p, PCI_BASE_ADDRESS_1, &(p->itGuiCtrlPhys));
+ itReadConfigDword(p, PCI_BASE_ADDRESS_2, &(p->itMmioAddrPhys));
+
+ p->itFbAddrVirt = (u32) ioremap(p->itFbAddrPhys + default_memory_base,
+ IT8181_FB_SIZE);
+ p->itGuiCtrlVirt = (u32) ioremap(p->itGuiCtrlPhys + default_memory_base,
+ IT8181_GUI_SIZE);
+ p->itMmioAddrVirt = itMmioAddr = (u32) ioremap(p->itMmioAddrPhys +
+ default_memory_base,
+ IT8181_MMIO_SIZE);
+
+ info("Mmio at 0x%08x, Framebuffer at 0x%08x", itMmioAddr, p->itFbAddrVirt);
+
+ /* set up a few more things, register framebuffer driver etc */
+ p->gen.parsize = sizeof (struct it8181fb_par);
+ p->gen.fbhw = &it8181fb_hwswitch;
+
+ strcpy(p->gen.info.modename, "ITE ");
+ strcat(p->gen.info.modename, it8181fb_name);
+ p->gen.info.changevar = NULL;
+ p->gen.info.node = -1;
+
+ p->gen.info.fbops = &it8181fb_ops;
+ p->gen.info.disp = &p->disp;
+ p->gen.info.switch_con = &fbgen_switch;
+ p->gen.info.updatevar = &fbgen_update_var;
+ p->gen.info.blank = &fbgen_blank;
+ p->gen.info.flags = FBINFO_FLAG_DEFAULT;
+
+ if(!mode_option || !fb_find_mode(&var, &p->gen.info,
+ mode_option, NULL, 0, NULL, 16)) {
+ var = it8181_var_table[default_res];
+ var.bits_per_pixel = default_bpp;
+ }
+
+ if (fbgen_do_set_var(&var, 1, &p->gen)) {
+ /*
+ * Can't use the mode from the mode db or the default
+ * mode - give up
+ */
+ err("boot video mode failed");
+ goto ret_enxio;
+ }
+
+ p->disp.var = var;
+ fbgen_set_disp(-1, &p->gen);
+ fbgen_install_cmap(0, &p->gen);
+
+ if (register_framebuffer(&p->gen.info) < 0) {
+ goto ret_enxio;
+ }
+
+ return 0;
+
+ ret_enxio:
+ kfree(p);
+ iounmap((void *)itMmioAddr);
+ iounmap((void *)p->itGuiCtrlVirt);
+ iounmap((void *)p->itFbAddrVirt);
+ return -ENXIO;
+}
+
+#ifdef MODULE
+
+int init_module(void)
+{
+ return it8181fb_init();
+}
+
+void cleanup_module(void)
+{
+ unregister_framebuffer(&(fb_it8181->gen.info));
+ iounmap((void*)itMmioAddr);
+ iounmap((void*)fb_it8181->itFbAddrVirt);
+ kfree(fb_it8181);
+}
+
+#else
+
+int it8181fb_setup(char *options, int *ints)
+{
+ char *this_opt;
+ int xres, cpu = 0, mod;
+
+ if (!options || !*options)
+ return 1;
+
+ for (this_opt = strtok(options, ","); this_opt;
+ this_opt = strtok(NULL, ",")) {
+ if (!strncmp(this_opt, "font:", 5)) {
+ strcpy(fontname, this_opt+5);
+ } else if (!strncmp(this_opt, "bpp:", 4)) {
+ default_bpp = simple_strtoul(this_opt+4, NULL, 0);
+ } else if (!strncmp(this_opt, "xres:", 5)) {
+ xres = simple_strtoul(this_opt+5, NULL, 0);
+ if (xres == 640)
+ default_res = RES_640x480;
+ else if (xres == 800)
+ default_res = RES_800x600;
+ else if (xres == 1024)
+ default_res = RES_1024x768;
+ } else if (!strncmp(this_opt, "cpu:", 4)) {
+ if (!strncmp(this_opt+4, "vr4111", 6)) {
+ cpu = 1;
+ default_memory_base = 0xa000000;
+ } else if (!strncmp(this_opt + 4, "sh7750", 6)) {
+ cpu = 2;
+ }
+ } else if (!strncmp(this_opt, "mod:", 4)) {
+ mod = simple_strtoul(this_opt+4, NULL, 0);
+ if (cpu == 1) {
+ /* NEC VR4111 or VR4121 */
+ if (mod == 1)
+ default_memory_base += 0x800000;
+ default_config_offset = 0x800000 - 0x400;
+ } else if (cpu == 2) {
+ /* Hitachi SH7750 */
+ if (mod == 0)
+ default_config_offset = 0x2000000 - 0x400;
+ else if (mod == 1)
+ default_config_offset = 0x3000000 - 0x400;
+ }
+ }else if (!strncmp(this_opt, "lcd:", 4)) {
+ it8181fb_lcd = simple_strtoul(this_opt+4, NULL, 0);
+ }else if (!strncmp(this_opt, "mtype:", 6)) {
+ it8181fb_memory_type = simple_strtoul(this_opt+6, NULL, 0);
+ } else {
+ mode_option = this_opt;
+ }
+ }
+
+ return 0;
+}
+
+#endif /* MODULE */
diff -urN -X dontdiff linux-orig/include/linux/pci_ids.h linux/include/linux/pci_ids.h
--- linux-orig/include/linux/pci_ids.h Mon Jan 26 08:50:48 2004
+++ linux/include/linux/pci_ids.h Mon Jan 26 09:00:21 2004
@@ -1438,6 +1438,7 @@
#define PCI_VENDOR_ID_ITE 0x1283
#define PCI_DEVICE_ID_ITE_IT8172G 0x8172
#define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801
+#define PCI_DEVICE_ID_ITE_IT8181 0x8181
#define PCI_DEVICE_ID_ITE_8872 0x8872
#define PCI_DEVICE_ID_ITE_IT8330G_0 0xe886
^ permalink raw reply
* Re: running masm611 inside dosemu and freedos
From: Ryan Underwood @ 2004-01-26 0:37 UTC (permalink / raw)
To: linux-msdos
In-Reply-To: <20040125143845.GB8151@frank.overlook.homelinux.net>
[-- Attachment #1: Type: text/plain, Size: 426 bytes --]
One thing to note is that there have been problems in the past related
to the MASM linker and the DOS extender that it uses (Phar Lap). I
think if the linker is invoked from ml.exe, it will work fine, but the
linker cannot be invoked on its own (it will crash dosemu).
Also, some versions of MASM are Win32 console-mode applications and
won't run under DOSEMU at all.
--
Ryan Underwood, <nemesis@icequake.net>
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: Request: I/O request recording
From: Andrew Morton @ 2004-01-26 0:32 UTC (permalink / raw)
To: Diego Calleja García; +Cc: bart, felix-kernel, linux-kernel
In-Reply-To: <20040126012356.3a21ae18.aradorlinux@yahoo.es>
Diego Calleja García <aradorlinux@yahoo.es> wrote:
>
> El Sun, 25 Jan 2004 15:38:03 -0800 Andrew Morton <akpm@osdl.org> escribió:
>
> > Unfortunately you cannot determine a directory's blocks in this way.
> > Ext3's directories live in the /dev/hda1 pagecache anyway. ext2's
> > directories each have their own pagecache.
>
> It would be possible to "hijack" the syscalls at libc level and look at what
> the program is doing?
That would work. It misses out on pagefaults, which are kind of syscalls
in disguise. So for any files which were mmapped you'd have to either
assume that all of the file's pages are required, or use mincore() to poke
around and find out which pages were really faulted in.
^ permalink raw reply
* Re: reiserfs
From: Ken Moffat @ 2004-01-26 0:28 UTC (permalink / raw)
To: Axel Siebenwirth; +Cc: S. Barret Dolph, linux-newbie
In-Reply-To: <Pine.LNX.4.58.0401260009340.9502@ppg_penguin>
On Mon, 26 Jan 2004, Ken Moffat wrote:
> On Sun, 25 Jan 2004, Axel Siebenwirth wrote:
>
> >
> > Ext3 is slower as far as I know. Reiserfs is quite stable.
> > I've had the feeling that JFS was faster when it comes to accessing larger
> > files and reading large directories, I mean with many files.
> > I have never actually tried ext3 but have read that it has many problems as
> > well and is quite slow. The On-disk-layout is very old already.
> >
>
> Ooh, almost FUD! I remember reading a sound-recording HOWTO suggesting
> ext2 was slow, but I use it on all my machines, I've had no problems
> with it, and I've seen no speed problems attributable to the filesystem
>
> :)
>
> Ken
>
s/ext2/ext3/ # learn to proofread before hitting enter
--
This is a job for Riviera Kid!
-
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: partitioning
From: Ken Moffat @ 2004-01-26 0:27 UTC (permalink / raw)
To: S. Barret Dolph; +Cc: linux-newbie
In-Reply-To: <200401252137.39975.wheds8@ms66.hinet.net>
On Sun, 25 Jan 2004, S. Barret Dolph wrote:
> I am probably getting too picky about repartitioning my drive but I want it to
> be set up for a long time. I never use all the space in my harddrive even
> though it is relatively small. (I only use it for work and don't play any
> games.)
>
> sda6 /usr 6g
>
> I will probably take another 3 out of home and add it to usr/ but that is
> probably overkill. Neither use too much.
>
If you're going to separate /usr, and the reasons for doing so probably
don't apply to many people here, even 3GB should be too much. Depends,
of course, on exactly what you put there, but assuming you don't install
a _lot_ of things you aren't going to use then 3GB is more than enough
for a _full_ system (except /home).
You might also want to consider how you will upgrade in the future. If
your existing distro will provide updates for future releases, fine. If
not, you might want to keep some space free for a replacement, so that
you can still run, or at least mount, the old one to check some of the
details.
> I am confused about where /swap should go. I have a SCSI drive and from what I
> read that should be on the outside. So should I put /swap at sda8? (Given
> that I have added /var.)
>
Outside is supposed to be faster, but I don't believe there is much in
it. I believe that the _first_ cylinder is the outside. The real
killer is probably head movement. Unless you have a repeatable workload
that goes fairly heavily into swap, plus time to kill benchmarking
different partition layouts, it isn't worth worrying about.
Ken
--
This is a job for Riviera Kid!
-
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: 2.4.24 from kernel.org
From: Daniel Andersen @ 2004-01-26 0:26 UTC (permalink / raw)
To: Marius Müller; +Cc: linux-kernel
In-Reply-To: <DF6611C8-4F87-11D8-B999-000393DC9DA0@freakmail.de>
>
> I just tried to compile linux-2.4.24.tar.bz2 from
> http://www.kernel.org/pub/linux/kernel/v2.4/
> The date of the archive I downloaded was 05-Jan-2004 5:54. After
> configuring the options for compiling I started the process by "make
> dep" and then "make bzImage". After a few minutes I got the following
> error message:
>
> ipt_ECN.c:16: linux/netfilter_ipv4/ipt_ECN.h: No such file or directory
> ipt_ECN.c:26: warning: `struct ipt_ECN_info' declared inside parameter
> list
> ipt_ECN.c:26: warning: its scope is only this definition or
> declaration, which is probably not what you want.
> (...)
> ipt_ECN.c:156: dereferencing pointer to incomplete type
> ipt_ECN.c:156: `IPT_ECN_OP_SET_ECE' undeclared (first use in this
> function)
> ipt_ECN.c:156: `IPT_ECN_OP_SET_CWR' undeclared (first use in this
> function)
> make[3]: *** [ipt_ECN.o] Error 1
> make[3]: Leaving directory `/WorX/linux-2.4.24/net/ipv4/netfilter'
> make[2]: *** [first_rule] Error 2
> make[2]: Leaving directory `/WorX/linux-2.4.24/net/ipv4/netfilter'
> make[1]: *** [_subdir_ipv4/netfilter] Error 2
> make[1]: Leaving directory `/WorX/linux-2.4.24/net'
> make: *** [_dir_net] Error 2
>
> I then discovered that the file linux/netfilter_ipv4/ipt_ECN.h that
> could not be found and caused the following errors really doesn't
> exist but there is a file ipt_ECN.1.h in linux/netfilter_ipv4/. I
> searched for more of the .1.h files and found the following:
>
> .//include/linux/netfilter_ipv4/ipt_DSCP.1.h
> .//include/linux/netfilter_ipv4/ipt_ECN.1.h
> .//include/linux/netfilter_ipv4/ipt_mark.1.h
> .//include/linux/netfilter_ipv4/ipt_tcpmss.1.h
> .//include/linux/netfilter_ipv4/ipt_tos.1.h
> .//include/linux/netfilter_ipv6/ip6t_mark.1.h
> .//net/ipv4/netfilter/ipt_DSCP.1.c
> .//net/ipv4/netfilter/ipt_ecn.1.c
> .//net/ipv4/netfilter/ipt_mark.1.c
> .//net/ipv4/netfilter/ipt_tcpmss.1.c
> .//net/ipv4/netfilter/ipt_tos.1.c
> .//net/ipv6/netfilter/ip6t_mark.1.c
>
> I searched contents of the sources with grep for any occurrences of
> the above header-files but the only occurrences found were for the
> exact same files but without the .1.h but with .h only. I renamed all
> the above files from .1.h to .h and finally succeeded in compiling
> without any problems.
> I don't know if get something very wrong here but it looked like some
> sort wrong file names for me.
> Hopefully I haven't wasted your time with "fake" problems.
>
> Marius
>
This is not a problem with the source from kernel.org but rather a
problem with case-sensitivity on your system. It looks like only files
with the same name (not being case-sensitive) are renamed to the .1 ending.
Daniel Andersen
^ permalink raw reply
* NFS rpc and stale handles on 2.6.x servers
From: hanasaki @ 2004-01-26 0:24 UTC (permalink / raw)
To: linux-kernel
The below is being reported, on and off, when hitting nfs-kernel-servers
running on 2.6.0 and 2.6.1 Could someone tell me if this is smoe bug or
what? Thanks
RPC request reserved 0 but used 124
Debian sarge
nfs-kernel-server
am-untils
nfsv3 over tcp
^ permalink raw reply
* Re: Request: I/O request recording
From: Diego Calleja García @ 2004-01-26 0:23 UTC (permalink / raw)
To: Andrew Morton; +Cc: bart, felix-kernel, linux-kernel
In-Reply-To: <20040125153803.4d7e1015.akpm@osdl.org>
El Sun, 25 Jan 2004 15:38:03 -0800 Andrew Morton <akpm@osdl.org> escribió:
> Unfortunately you cannot determine a directory's blocks in this way.
> Ext3's directories live in the /dev/hda1 pagecache anyway. ext2's
> directories each have their own pagecache.
It would be possible to "hijack" the syscalls at libc level and look at what
the program is doing?
^ permalink raw reply
* nrattach ports
From: Bernard Pidoux @ 2004-01-26 0:21 UTC (permalink / raw)
To: Linux-hams List
In-Reply-To: <1074877572.1299.114.camel@oh2bns.ampr.org>
Hi,
I have been playing for a few days with ax25 routing on radio with linux
2.6.1 kernel.
Because ROSE module, FPAC and xfbb BBS are not (yet ?) working with this
new
kernel, I found myself limited, for the moment, to use netrom and node
0.3.2 with
two dual ports TNCs KPC9612 and mkiss.
I followed the AX25 HOWTO and Netrom - Node mini Howto for the installation
http://www.tldp.org/HOWTO/Netrom-Node.html
Things went quite well as I am able to connect a neighbour FPAC node
station through a
netrom call as simple as : 'call netnod LNXKCK'
From there I can call myself back and make a connection to node F6BVP-10.
Now, here is my question.
nrattach example says :
# /usr/sbin/nrattach -i 44.30.2.5 netrom
# /usr/sbin/nrattach -i 44.30.2.5 netmod
However nrattach creates two ports on my system that are identified as
nr0 and nr1
not netrom and netmod as I can see with 'ip address' command.
Is there a problem with nrattach ? It does'nt seem to use the
netrom/netmod argument ?
However I know that it works for I can use the netrom ports defined in
/etc/nrports alias.
So maybe its only a display problem ?
73 de Bernard, F6BVP
^ permalink raw reply
* Re: MD Oops on boot with 2.6.2-rc1-mm3
From: Andrew Morton @ 2004-01-26 0:19 UTC (permalink / raw)
To: Jonathan Kamens; +Cc: linux-kernel, linux-raid
In-Reply-To: <16403.57499.905471.768545@jik.kamens.brookline.ma.us>
Jonathan Kamens <jik@kamens.brookline.ma.us> wrote:
>
> I get an Oops on boot with 2.6.2-rc1-mm3, trying to boot from a RAID1
> MD root partition with two disks in the array; the Oops apparently
> causes the raid array not to be assembled, so the boot stops.
There appears to be a dud raid patch in -mm. It'll be one of the md-*
patches.
If you have time, could you work out which one? Ones to start with might be
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.2-rc1/2.6.2-rc1-mm3/broken-out/md-02-preferred_minor-fix.patch
and
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.2-rc1/2.6.2-rc1-mm3/broken-out/md-06-allow-partitioning.patch
^ permalink raw reply
* Fw: MD Oops on boot with 2.6.2-rc1-mm3
From: Andrew Morton @ 2004-01-26 0:17 UTC (permalink / raw)
To: linux-raid
Begin forwarded message:
Date: Sun, 25 Jan 2004 10:28:27 -0500
From: Jonathan Kamens <jik@kamens.brookline.ma.us>
To: linux-kernel@vger.kernel.org
Subject: MD Oops on boot with 2.6.2-rc1-mm3
I get an Oops on boot with 2.6.2-rc1-mm3, trying to boot from a RAID1
MD root partition with two disks in the array; the Oops apparently
causes the raid array not to be assembled, so the boot stops.
Unfortunately, I don't have a serial console so I can't capture the
complete Oops and run ksymoops on it, but here's the information I was
able to gather:
* I have raid=noautodetect turned on, so detection happens from within
linuxrc in my initrd. If I get rid of raid=noautodetect, then the
initial autodetect works fine, but I still get an Oops in the
autodect run within linuxrc; its call trace looks slightly
different.
* The kernel was able to successfully start one of my other RAID
partitions immediately before the Oops which caused md0 to fail to
start: "raid1: raid set md1 active with 2 out of 2 mirrors".
Here's what I was able to transcribe (I couldn't write down all the
hex numbers that ksymoops would have been able to interpret, but
perhaps what I was able to capture will be helpful):
Unable to handle kernel NULL pointer dereference at virtual address 00000008
EIP is at blkdev_reread_part+0x15/0x90
Call Trace:
iget5_locked
blkdev_ioctl
wake_up_inode
ioctl_by_bdev
do_md_run
printk
bdevname
autorun_array
printk
bdevname
autorun_devices
printk
autostart_arrays
exact_lock
kobj_lookup
md_ioctl
get_gendisk
md_open
do_open
blkdev_open
dentry_open
blkdev_ioctl
sys_ioctl
sys_open
sysenter_part_esp
I can duplicate this Oops, so if there's any other information from it
which I can provide to help debug it, please let me know.
jik
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" 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.tux.org/lkml/
^ permalink raw reply
* Re: reiserfs
From: Ken Moffat @ 2004-01-26 0:14 UTC (permalink / raw)
To: Axel Siebenwirth; +Cc: S. Barret Dolph, linux-newbie
In-Reply-To: <20040125114435.GB12967@neon>
On Sun, 25 Jan 2004, Axel Siebenwirth wrote:
>
> Ext3 is slower as far as I know. Reiserfs is quite stable.
> I've had the feeling that JFS was faster when it comes to accessing larger
> files and reading large directories, I mean with many files.
> I have never actually tried ext3 but have read that it has many problems as
> well and is quite slow. The On-disk-layout is very old already.
>
Ooh, almost FUD! I remember reading a sound-recording HOWTO suggesting
ext2 was slow, but I use it on all my machines, I've had no problems
with it, and I've seen no speed problems attributable to the filesystem
:)
Ken
--
This is a job for Riviera Kid!
-
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: Re: [parisc-linux] missing barrier in _raw_spin_lock?
From: John David Anglin @ 2004-01-26 0:13 UTC (permalink / raw)
To: arndb; +Cc: grundler, arnd, parisc-linux
In-Reply-To: <26879984$10750505064013f80a9ea842.79929993@config4.schlund.de>
> > #define __ldcw(a) ({ \
> > unsigned int __ret; \
> > __asm__ __volatile__("ldcw 0(%2),%0" \
> > : "=r" (__ret), "=m" (*(a)) : "r" (a)); \
> > __ret; \
> > })
> I suppose the memory operand specification is required here. Newer
> compilers (especially gcc-3.4) can optimize away local variables if you
> only access the address but not the contents. I think even your
> pthreads version is not really correct, because it specifies (*(a)) as
> output only instead of inout.
I agree.
> No, putting the barrier into __ldcw is wrong because it would impact all
> other uses of __ldcw that don't need the barrier. AFAICS, the
The only other uses for __ldcw are the SPIN_LOCK macro in atomic.h
and the _raw_spin_trylock in spinlock.h (i.e., it is only used
acquire locks). If all these need barriers, then it might as well
be in __ldcw.
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)
^ 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.