- 28 Aug, 2002 40 commits
-
-
Brad Hards authored
<linux/config.h> has the normal idempotent construction. The attached file removes the second #include.
-
James Mayer authored
-
James Mayer authored
-
James Mayer authored
-
Matthew Dobson authored
-
James Mayer authored
-
James Mayer authored
-
Evgeniy Polyakov authored
-
James Mayer authored
-
James Mayer authored
-
James Mayer authored
-
James Mayer authored
-
Brad Hards authored
<linux/pagemap.h> has the normal idempotent construction. The attached file removes the second #include.
-
James Mayer authored
-
James Mayer authored
-
James Mayer authored
-
James Mayer authored
-
James Mayer authored
[ It's strange how many of us can't spell weird ]
-
bk://linux-input.bkbits.net/linux-inputLinus Torvalds authored
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
-
Vojtech Pavlik authored
Silence hotplug printk()s in input.c More careful probe and init in atkbd.c and psmouse.c to avoid triggering bugs in certain keyboards. Accept old AT (non PS/2) keyboards with limited command set. Accept Logitech mice which can only do IMPS/2 and not PS2++. Use a buffer in i8042.c to avoid spinlock deadlocks when serio_write is called from within serio_interrupt. Only ask keyboard to resent if the keyboard is there (ie no timeout). Linus, this should fix both your keyboard and your mouse!
-
David S. Miller authored
buffers via usb_buffer_alloc in 2.5.x This helps platforms where doing a pci_{map,unmap}_single() on every input event is very inefficient. Also adds a missing kfree(hid), because the HID struct was never freed.
-
Andrew Morton authored
Use the new max cache alignment to optimise the layout of struct zone. struct zone goes from ~270 bytes (UP) to 768 bytes (SMP, x86). This is not a trick which should be generally used.
-
Andrew Morton authored
zone->lock and zone->lru_lock are two of the hottest locks in the kernel. Their usage patterns are quite independent. And they have just been put into the same structure. It is essential that they not fall into the same cacheline. That could be fixed by padding with L1_CACHE_BYTES. But the problem with this is that a kernel which was configured for (say) a PIII will perform poorly on SMP PIV. This will cause problems for kernel vendors. For example, RH currently ship PII and Athlon binaries. To get best SMP performance they will end up needing to ship a lot of differently configured kernels. To solve this we need to know, at compile time, the maximum L1 size which this kernel will ever run on. This patch adds L1_CACHE_SHIFT_MAX to every architecture's cache.h. Of course it'll break when newer chips come out with increased cacheline sizes. Better suggestions are welcome.
-
Andrew Morton authored
Now the LRUs are per-zone, make their lock per-zone as well. In this patch the per-zone lock shares a cacheline with the zone's buddy list lock, which is very bad. Some groundwork is needed to fix this well. This change is expected to be a significant win on NUMA, where most page allocation comes from the local node's zones. For NUMA the `struct zone' itself should really be placed in that node's memory, which is something the platform owners should look at. However the internode cache will help here. Per-node kswapd would make heaps of sense too.
-
Andrew Morton authored
Replace the global page LRUs with per-zone LRUs. This fixes the failure described at http://mail.nl.linux.org/linux-mm/2002-08/msg00049.html It will also fixes the problem wherein a search for a reclaimable ZONE_NORMAL page will undesirably move aged ZONE_HIGHMEM pages to the head of the inactive list. (I haven't tried to measure any benefit from this aspect). It will also reduces the amount of CPU spent scanning pages in page reclaim. I haven't instrumented this either. This is a minimal conversion - the aging and reclaim logic is left unchanged, as far as is possible. I was bitten by the "incremental min" logic in __alloc_pages again. There's a state in which the sum-of-mins exceeds zone->pages_high. So we call into try_to_free_pages(), which does nothing at all (all zones have free_pages > pages_high). The incremental min is unchanged and the VM locks up. This was fixed in __alloc_pages: if zone->free_pages is greater than zone->pages_high then just go and grab a page.
-
Andrew Morton authored
- Remove the zonelist_t typedef. Rename struct zonelist_struct to struct zonelist and use that everywhere. - Remove the zone_t typedef. Rename struct zone_struct to struct zone and use that everywhere.
-
Andrew Morton authored
Don't align the buffer_head slab on hardware cacheline boundaries. It's on the wrong side of the speed/space tradeoff, especially for P4's.
-
Andrew Morton authored
It has been noticed that across a kernel build many calls to tlb_flush_mmu() do not have anything to flush, apparently because glibc is mmapping a file over a previously-mapped region which has no faulted-in ptes. This patch detects this case and optimises away a little over one third of the tlb invalidations. The functions which potentially cause an invalidate are tlb_remove_tlb_entry(), pte_free_tlb() and pmd_free_tlb(). These have been front-ended in asm-generic/tlb.h and the per-arch versions now have leading double-underscores. The generic versions tag the mmu_gather_t as needing a flush and then call the arch-specific version. tlb_flush_mmu() looks at tlb->need_flush and if it sees that no real activity has happened, the invalidation is avoided. The success rate is displayed in /proc/meminfo for the while. This should be removed later.
-
Andrew Morton authored
- Kill duplicate debug check - Add a test for pages which have a pte_chain coming off the buddy lists.
-
Linus Torvalds authored
Some day gcc may drop support for __FUNCTION__ entirely, we'll just add a #define __FUNCTION__ __func__ at that point. In the meantime, gcc-3.x warns about pasting __FUNCTION__, so don't do it.
-
Pete Zaitcev authored
This came up in 2.5.30, apparently someone was fooled by names which do not quite match actual functions.
-
Alexander Viro authored
add_gendisk()/del_gendisk() moved into ->reinit() and ->cleanup() of ide-{disk,cd,floppy} - i.e. moments when high-levle driver claims/gives up a drive. register_disk() also shifted into ->reinit(). consequently, revalidate_drives() is gone (it did messy postponed rereading of partition tables; not needed anymore). Ditto for ide_geninit(). regular 2.5 changes in ->revalidate() and BLKRRPART handling - same as all other block devices.
-
Alexander Viro authored
instead of messing with ide_module_t, we put ide_driver_t themselves on a (cyclic) list - said list being the only use of ide_module_t for high-level drivers. ide_register_module()/ide_unregister_module() takes ide_driver_t now (renamed to ide_register_driver()). /proc/ide/drivers switched to use of that cyclic list and uses seq_file instead of old home-grown code.
-
Alexander Viro authored
->init() for high-level drivers is never called (other than as module_init() when they are initialized). Method removed, instances cleaned up.
-
Alexander Viro authored
ide_reinit_drive() turned into ata_attach(). Said beast takes a drive, tries to feed it to high-level drivers and drops it on the ata_unused if nobody claims the sucker. IOW, that's what ide_register_module() used to do, but for a single drive. ideprobe_init() calls ata_attach() instead of putting on ata_unused. ide_register_module() eliminated. Some of the callers do not need it anymore, some (ide_replace_subdriver()) actually want ata_attach(drive). ide_scan_devices() is gone. There were two remaining callers - in ide_register_module() and ide_unregister_module(). The former had been turned into "put driver on the list, empty ata_unused into temporary list and call ata_attach() on all drives there". The latter is "remove driver from the list, call ->cleanup() and ata_attach() for all drives" (->cleanup() gives the drive up, ata_attach() gives the remaining drivers a shot for that drive; if nobody claims it - it's put on ata_unused).
-
Alexander Viro authored
->owner added to ide_driver_t. MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT taken out of ->reinit(). ide_reinit_drive() turned into "call ->reinit() for all high-level drivers that are registered until somebody claims the drive" (instead of open-coded variant in 2.5.32; cleaner and works correctly for modular drivers).
-
Alexander Viro authored
loops in ide_cdrom_init()/ide_cdrom_exit(), etc. are pulled into ide_register_module()/ide_unregister_module() resp.
-
Alexander Viro authored
Duplicate calls of ide_cdrom_init(), idedisk_init(), etc. are removed from ide_init_builtin_drivers() (they were called both from there (i.e. from ide_init()) and later as module_init() for high-level drivers).
-
Alexander Viro authored
Checks for media type, ->driver_req, etc. are moved from the ide_scan_devices() to ->reinit(). ide_scan_devices() had lost first two arguments (it will completely disappear later).
-
Alexander Viro authored
This puts drives on cyclic lists - per-driver ones for drives that had been claimed by high-level drivers and ata_unused for unclaimed drives. We put drives on ata_unused in the very end of ideprobe_init() and then move them to drivers' lists as they are claimed.
-