François Romieu [Wed, 2 Jun 2004 16:03:02 +0000 (12:03 -0400)]
[PATCH] r8169: link handling and phy reset rework
Link handling changes (Andy Lutomirski <luto@myrealbox.com>):
- removed rtl8169_hw_phy_reset() and its busy loop;
- RTL8169_PHY_TIMEOUT is x10 to account for the removal of the
phy_link_down_cnt loop in rtl8169_phy_timer();
- added spinlocking in timer context for rtl8169_phy_timer to avoid
messing with the {set/get}_settings commands issued via ethtool;
- more TBI stuff.
This patch differs from the former version on the following points:
- the LinkChg irq does not enable the phy timer when the link goes
down any more;
- the phy timer is not enabled in rtl8169_set_speed();
- removal of the initial renegotiation hack.
François Romieu [Thu, 27 May 2004 09:58:44 +0000 (05:58 -0400)]
[PATCH] r8169: ethtool .get_{settings/link}
- ethtool get_settings() for r8169 (Andy Lutomirski <luto@myrealbox.com>);
- rtl8169_ethtool_ops.get_drvinfo() is set as well;
- added some bits to handle the TBI status.
François Romieu [Thu, 27 May 2004 09:58:35 +0000 (05:58 -0400)]
[PATCH] r8169: ethtool .set_settings
ethtool set_settings support (Andy Lutomirski <luto@myrealbox.com>).
The initial code has been modified so that the settings of parameters
for TBI and normal mode do not step on each others shoes.
Jeff Garzik [Sun, 16 May 2004 14:48:08 +0000 (10:48 -0400)]
[libata] remove redundant use of ATA_QCFLAG_SG in ATAPI packet translation
ata_scsi_translate() sets this flag for all ATA->SCSI translated
commands, so it need not be done in atapi_xlat(). The now-removed
use in atapi_xlat() was also inconsistent WRT PIO versus DMA.
Jeff Garzik [Sun, 16 May 2004 14:35:15 +0000 (10:35 -0400)]
[libata] DMADIR support
DMADIR bit is necessary for some PATA->SATA bridges. These
bridges require the OS driver to specify the data xfer direction,
for PACKET (a.k.a. scsi) commands.
A reliable DMADIR detection method hasn't yet been developed,
and ATAPI is still a WIP, so DMADIR is enabled with an ifdef for
now.
Russell King [Sun, 16 May 2004 13:08:21 +0000 (14:08 +0100)]
[SERIAL] Remove base_baud default from 8250_pci
Since all boards specify base_baud, the code to default base_baud to
the architecture-defined BASE_BAUD is redundant. Also, defaulting
to the architecture-defined BASE_BAUD is wrong since the UARTs on a
serial PCI card will be clocked at the same rate no matter what the
architecture of the host machine.
Russell King [Sun, 16 May 2004 15:37:30 +0000 (16:37 +0100)]
[ARM] Convert execve() to be a function rather than a SWI call.
This eliminates the last SWI user from the kernel - now all SWI calls
will only come from userspace. More importantly, this also allows us
to empty the kernel stack when starting userspace programs from
kernelspace, thereby ensuring that the user registers always appear
at the top of the kernel stack.
Russell King [Sun, 16 May 2004 15:12:49 +0000 (16:12 +0100)]
[ARM] Move a bunch of symbol exports from armksyms.c
This moves a bunch of EXPORT_SYMBOL() statements from armksyms.c
into the file which defines the function/variable such that the
exports are localised.
This also means we can get rid of the ugly __xxx_to_xxx__is_a_macro
in include/asm-arm/arch-*/memory.h
This patch makes the b44-after-bcm4400 scenario work for
me. What was happening is that the broadcom driver sets a "power off MAC"
bit, and we didn't remove that when initializing the chip.
Also added some (a bit ugly, I know ) logic to clear up the address
filter stuff, which is what recent broadcom drivers do...
Jeff Garzik [Sat, 15 May 2004 10:36:08 +0000 (06:36 -0400)]
[libata] minor stuff
* now that ATAPI is close to working, making ATAPI DMA interrupts
in ata_host_intr
* remove unnecessary space character in printk() output (oh, the horror)
This skips the GP-loading function prologue (two instructions: 8 bytes)
on BRSGP linkage correctly, fixing an oops on alpha while loading the
aic7xxx driver.
Catalin Marinas [Sat, 15 May 2004 16:26:45 +0000 (17:26 +0100)]
[ARM PATCH] 1883/1: Bit 4 in pmd should be 0 for the ARMv6 architecture
Patch from Catalin Marinas
Unlike the v5 architecture, the ARM1136 requires that BIT4 is 0 in
the first level page descriptor (ARM1136 TRM, page 6-39). It works
at the moment but it might break future v6 cores.
Jan Kara [Sat, 15 May 2004 09:20:21 +0000 (02:20 -0700)]
[PATCH] Quota fix 2
This fixes the problem with recursion into filesystem when inode of
quota file needs a page + some other allocation problems. I hope I got
the GFP mask setting right..
Jeff Garzik [Sat, 15 May 2004 09:09:25 +0000 (05:09 -0400)]
[libata] internal cleanups
Remove unused 'done_late' arg to ata_qc_complete(), which was never
useful in 2.4, and never used at all in 2.6.
This allows us to eliminate the same arg from ata_dma_complete(),
and also make it more correct by passing the command rather than
the ATA port structure as arg0.
- many Maxtor disks incorrectly claim CACHE FLUSH EXT command support,
fix it by checking both CACHE FLUSH EXT command and LBA48 support
(thanks to Eric D. Mudama for help in fixing this)
- write_cache() was called with 'drive->id->cfs_enable_2 & 0x3000' as 'int arg'
argument which was always truncated to zero due to 'u8 drive->wcache = arg'
assignment so write cache was indeed enabled but drive->wcache was zero
(thanks to Rene Herman for help in debugging this)
- flush cache in idedisk_start_power_step() only if ATA-6 CACHE FLUSH (EXT)
bits are present in disk's identify data (prevents sending unknown commands)
- set drive->wcache in idedisk_setup() not idedisk_attach() (no need to check
id->command_set_2 - we check id->cfs_enable_2 instead in write_cache() call)
Andi Kleen [Sat, 15 May 2004 03:41:14 +0000 (20:41 -0700)]
[PATCH] Handle empty nodes in sysfs on x86-64
This code is shared between i386 and x86-64, and x86-64 needs to check
for empty nodes here. Otherwise you can get oopses at boot in some
circumstances.
This handles empty nodes != 0; empty node zero are still broken in other
ways.
Andi Kleen [Sat, 15 May 2004 03:41:03 +0000 (20:41 -0700)]
[PATCH] x86-64: fix /dev/mem caching behaviour
This changes the /dev/mem caching behaviour on x86-64 to be compatible
with i386.
By default everything is set cached.
This actually makes WC MTRRs on AMD systems work, which would get
overriden by the UC PAT bits that were set earlier. This can make DVD
decoding with hardware support a lot faster.
It also supports O_SYNC now, like i386, although that is not really
safe, because it allows the user to create undefined cache attribute
conflicts that can corrupt caches in some circumstances. I kept it for
now. Better would to disallow it, until Terrence Ripperda's PAT
framework is getting merged, that can avoid these problems.
Actually it would be probably a good idea to add a printk here to catch
broken programs for i386 and x86-64, but that is for another patch.
Andi Kleen [Sat, 15 May 2004 03:40:53 +0000 (20:40 -0700)]
[PATCH] x86-64 updates
Various accumulated x86-64 patches and bug fixes.
It fixes one nasty bug that has been there since NX is used by
default in the kernel. With heavy AGP memory allocation it would
set NX on parts of the kernel mapping in some corner cases, which gave
endless crash loops. Thanks goes to some wizards in AMD debug labs
for getting a trace out of this.
Also various other fixes. This patches only changes x86-64 specific
files, i have some changes outside too that I am sending separately.
- Fix help test for CONFIG_NUMA
- Don't enable SMT nice on CMP
- Move HT and MWAIT checks up to generic code
- Update defconfig
- Remove duplicated includes (Arthur Othieno)
- Set up GSI entry for ACPI SCI correctly (from i386)
- Fix some comments
- Fix threadinfo printing in oopses
- Set task alignment to 16 bytes
- Handle NX bit for code pages correctly in change_page_attr()
- Use generic nops for non amd specific kernel
- Add __KERNEL__ checks in unistd.h (David Lee)
Andrew Morton [Sat, 15 May 2004 03:25:50 +0000 (20:25 -0700)]
[PATCH] Increase xfsbufd_centisecs when in laptop mode
From: Bart Samwel <bart@samwel.tk>
The attached patch is the outcome of a discussion with Nathan.
When laptop mode is active, there is no need for XFS to wake up xfsbufd (the
daemon that flushes buffers that are too old) too often. The default is once
every second, this patch makes laptop mode do it once every 30 seconds.
Andrew Morton [Sat, 15 May 2004 03:24:47 +0000 (20:24 -0700)]
[PATCH] Remove old sh-sci driver
From: Paul Mundt <lethal@linux-sh.org>
The old drivers/char sh-sci driver is no long used by anyone, both sh and
h8300 are using the drivers/serial version at this point, so we can get rid
of the old one entirely.
gcc 3.4 specific problem. This patch should fix it. Actually it would be
better to move all these EXPORT_SYMBOLs into lib/string.c, it is silly that
each arch has to duplicate all that.
Andrew Morton [Sat, 15 May 2004 03:24:25 +0000 (20:24 -0700)]
[PATCH] remove driver model code in mwave driver
From: Christoph Hellwig <hch@lst.de>
Someone blindly added sysfs support to the driver long time ago without
understanding the implications (and if they were understood the driver
would need half a rewrite for it). Herber Xu recently noticed the problems
this causes on unload, so let's if 0 out all that code and get the driver
working again.
Andrew Morton [Sat, 15 May 2004 03:24:15 +0000 (20:24 -0700)]
[PATCH] Make /proc/sysrq-trigger ignore sysrq_enabled
It's silly that writing to /proc/sysrq-trigger does nothing if you haven't
enabled /proc/sys/kernel/sysrq. So provide a new __handle_sysrq() which
ignores the sysrq_enabled check.
The patch also withdraws __handle_sysrq_nolock() from the kernel API. It had
no callers.
Andrew Morton [Sat, 15 May 2004 03:23:54 +0000 (20:23 -0700)]
[PATCH] fix aic7xxx_old.c for !PCI
From: Adrian Bunk <bunk@fs.tum.de>
drivers/scsi/aic7xxx_old.c: In function `aic7xxx_release':
drivers/scsi/aic7xxx_old.c:10971: warning: implicit declaration of function `pci_release_regions'
Andrew Morton [Sat, 15 May 2004 03:23:33 +0000 (20:23 -0700)]
[PATCH] fix cyclades compile with !PCI
From: Adrian Bunk <bunk@fs.tum.de>
drivers/char/cyclades.c: In function `cy_cleanup_module':
drivers/char/cyclades.c:5638: warning: implicit declaration of function `pci_release_regions'
This portion of code is sparc specific and nothing else in modpost.c uses
e_machine meaning cross-compiling for sparc on i386 (or any little endian
machine) is the only way to experience the bug.
Without it, e_machine has the wrong value and modpost then generates a lot
of "*** Warning: \"symbol\" [filename.ko] undefined" messages.
Andrew Morton [Sat, 15 May 2004 03:23:01 +0000 (20:23 -0700)]
[PATCH] implement print_modules()
From: Arjan van de Ven <arjanv@redhat.com>,
Rusty Russell <rusty@rustcorp.com.au>
The patch below resolves the "Not Yet Implemented" print_modules() thing.
This is a really useful feature for distros; it allows us to do statistical
analysis on which modules are present how often in oopses compared to how
often they are used normally. In addition it helps to spot candidates for
certain bugs without having to go back to the customer asking for this
information.
Andrew Morton [Sat, 15 May 2004 03:22:41 +0000 (20:22 -0700)]
[PATCH] fix block layer ioctl bug
From: Alan Cox <alan@redhat.com>
The block layer checks for -EINVAL from block layer driver ioctls. This is
wrong - ENOTTY is unknown and some drivers correctly use this. I suspect
for an internal ioctl 2.7 should change to -ENOIOCTLCMD and bitch about old
style returns
This is conservative fix for the 2.6 case, it keeps the bogus -EINVAL to
avoid breaking stuff
Andrew Morton [Sat, 15 May 2004 03:22:09 +0000 (20:22 -0700)]
[PATCH] security: remove empty build of capability.o
From: Chris Wright <chrisw@osdl.org>
The build includes capability.c when CONFIG_SECURITY=n, yet the whole file is
ifdef'd out. Remove unnecessary build step as well as superfluous ifdefs.
Andrew Morton [Sat, 15 May 2004 03:21:48 +0000 (20:21 -0700)]
[PATCH] calculate NGROUPS_PER_BLOCK from PAGE_SIZE
From: Greg Edwards <edwardsg@sgi.com>
On ia64, EXEC_PAGESIZE (max page size) is 65536, but the default page size is
16k. This results in NGROUPS_PER_BLOCK in include/linux/sched.h being
calculated incorrectly when the page size is anything other than 64k. For
example, on a 16k page size kernel, a setgroups() call with a gidsetsize of
65536 will end up walking over memory since only 1/4 of the needed pages were
allocated for the blocks[] array in the group_info struct.
Patch below calculates NGROUPS_PER_BLOCK from PAGE_SIZE instead.
Andrew Morton [Sat, 15 May 2004 03:21:16 +0000 (20:21 -0700)]
[PATCH] Update laptop mode control script with XFS_HZ=100
From: Bart Samwel <bart@samwel.tk>
The laptop mode control script incorrectly guesses XFS_HZ=1000. This is
incorrect, since the patches that made XFS use USER_HZ went into 2.6.6 as
well. This changes XFS_HZ to 100 and removes the warning from the doc about
checking XFS_HZ.
Andrew Morton [Sat, 15 May 2004 03:20:24 +0000 (20:20 -0700)]
[PATCH] ib700wdt watchdog driver fix #2
From: Patrice Bouchand <PBouchand@cyberdeck.com>
The value written in the WDT_STOP register is not important. As soon as
something is written, the watchdog timer stops. But things will be cleaner
if we use the following patch.
Andrew Morton [Sat, 15 May 2004 03:20:03 +0000 (20:20 -0700)]
[PATCH] expose backing dev max read-ahead
From: Jens Axboe <axboe@suse.de>
Expose the blockdev's VM readahead in /sys/block/hda/queue/read_ahead_kbytes
This duplicates `blockdev --setra', but we're trying to get away from
ioctls.
It would be nice to have a readahead-setting mechanism which also allows,
say, NFS to be tuned. But there is no common exposure point for
backing_dev_infos. One option might be per-superblock:
mount -o remount,read_ahead_kbytes=64
but the generic remount code also has no visibility of the backing_dev, so it
would need a new super_block operation. One which doesn't accidentally modify
default_backing_dev_info.
Andrew Morton [Sat, 15 May 2004 03:19:52 +0000 (20:19 -0700)]
[PATCH] efivars: check that it's enabled
From: "Randy.Dunlap" <rddunlap@osdl.org>
EFI-enabled kernels crash on non-EFI machines. efivars_init() and
efivars_exit() need to check efi_enabled instead of assuming that the
system is using EFI.
Andrew Morton [Sat, 15 May 2004 03:19:35 +0000 (20:19 -0700)]
[PATCH] make buildcheck
From: Arjan van de Ven <arjanv@redhat.com>
the patch below adds a "make buildcheck" target which checks for the "uses
exit in init" bug using Keith Owen's script. In the future other similar
sanity checks can be added to this target, but even just this one has been
quite useful already. I use it in the kernel rpm build process for
example, and I'm sure the OSDL build testers can/want to use it too.
From: Keith Owens <kaos@ocs.com.au>
They commented out the progress print statements, I prefer to have them
present but no big deal. The licence is missing.
Andrew Morton [Sat, 15 May 2004 03:19:25 +0000 (20:19 -0700)]
[PATCH] Include Aliases in kallsyms
From: Rusty Russell <rusty@rustcorp.com.au>
Kallsyms discards symbols with the same address, but these are sometimes
useful. Skip this minor optimization and make kallsyms_lookup deal with
aliases
Andrew Morton [Sat, 15 May 2004 03:19:11 +0000 (20:19 -0700)]
[PATCH] show last kernel-image symbol in /proc/kallsyms
From: Rusty Russell <rusty@rustcorp.com.au>
The current code doesn't show the last symbol (usually _einittext) in
/proc/kallsyms. The reason for this is subtle: s_start() returns an empty
string for position 0 (ignored by s_show()), and s_next() returns the first
symbol for position 1.
What should happen is that update_iter() for position 0 should fill in the
first symbol. Unfortunately, the get_ksymbol_core() fills in the symbol
information, *and* updates the iterator: we have to split these functions,
which we do by making it return the length of the name offset.
Then we can call get_ksymbol_core() without moving the iterator, meaning
that we can call it at position 0 (ie. s_start()).
Andrew Morton [Sat, 15 May 2004 03:18:39 +0000 (20:18 -0700)]
[PATCH] Fix i2o_proc kernel panic on access of /proc/i2o/iop0/lct
From: Markus Lidel <Markus.Lidel@shadowconnect.com>
The patch converts i2o_proc to seq_file, thereby fixing a bug in the
i2o_proc.c module, where the kernel panics, if you access /proc/i2o/iop0/lct
and read more then 1024 bytes of it.
Andrew Morton [Sat, 15 May 2004 03:17:56 +0000 (20:17 -0700)]
[PATCH] fbdev: Vesa Fbdev update fix
From: Geert Uytterhoeven <geert@linux-m68k.org>
On Sun, 25 Apr 2004, James Simmons wrote:
> This patch migrates the Vesa Framebuffer driver over to the
> framebuffer_alloc/framebuffer_release api. It also fixes the error
> handling paths. The mtrr issue that Geert brought up has been fixed.
> With your approval Geert, Ben please apply this patch.
> + /* Set video size according to vram boot option */
> + if (vram && vram * 1024 * 1024 != vesafb_fix.smem_len)
> + vesafb_fix.smem_len = vram * 1024 * 1024;
The second part of the test can be removed. The rest looks OK to me.
Andrew Morton [Sat, 15 May 2004 03:17:45 +0000 (20:17 -0700)]
[PATCH] fbdev: Vesa Fbdev update
From: James Simmons <jsimmons@infradead.org>
This patch migrates the Vesa Framebuffer driver over to the
framebuffer_alloc/framebuffer_release api. It also fixes the error
handling paths. The mtrr issue that Geert brought up has been fixed.
Andrew Morton [Sat, 15 May 2004 03:17:34 +0000 (20:17 -0700)]
[PATCH] fbdev: Virtual fbdev updates
From: James Simmons <jsimmons@infradead.org>
This is attempt 2 at the virtual framebuffer patch. It migrates the driver
to the framebuffer_release/framebuffer_alloc api. It doesn't enable the
driver by default.
Andrew Morton [Sat, 15 May 2004 03:17:12 +0000 (20:17 -0700)]
[PATCH] fbdev: set a default access_align value
From: James Simmons <jsimmons@infradead.org>
Set the default access_align variable. This variable tells us how much data
the hardware can handle in a single read/write cycle. For example the epson
chipset can handle only 16 bit reads and writes to the framebuffer.