f8891e5e1f
The remaining counters in page_state after the zoned VM counter patches have been applied are all just for show in /proc/vmstat. They have no essential function for the VM. We use a simple increment of per cpu variables. In order to avoid the most severe races we disable preempt. Preempt does not prevent the race between an increment and an interrupt handler incrementing the same statistics counter. However, that race is exceedingly rare, we may only loose one increment or so and there is no requirement (at least not in kernel) that the vm event counters have to be accurate. In the non preempt case this results in a simple increment for each counter. For many architectures this will be reduced by the compiler to a single instruction. This single instruction is atomic for i386 and x86_64. And therefore even the rare race condition in an interrupt is avoided for both architectures in most cases. The patchset also adds an off switch for embedded systems that allows a building of linux kernels without these counters. The implementation of these counters is through inline code that hopefully results in only a single instruction increment instruction being emitted (i386, x86_64) or in the increment being hidden though instruction concurrency (EPIC architectures such as ia64 can get that done). Benefits: - VM event counter operations usually reduce to a single inline instruction on i386 and x86_64. - No interrupt disable, only preempt disable for the preempt case. Preempt disable can also be avoided by moving the counter into a spinlock. - Handling is similar to zoned VM counters. - Simple and easily extendable. - Can be omitted to reduce memory use for embedded use. References: RFC http://marc.theaimsgroup.com/?l=linux-kernel&m=113512330605497&w=2 RFC http://marc.theaimsgroup.com/?l=linux-kernel&m=114988082814934&w=2 local_t http://marc.theaimsgroup.com/?l=linux-kernel&m=114991748606690&w=2 V2 http://marc.theaimsgroup.com/?t=115014808400007&r=1&w=2 V3 http://marc.theaimsgroup.com/?l=linux-kernel&m=115024767022346&w=2 V4 http://marc.theaimsgroup.com/?l=linux-kernel&m=115047968808926&w=2 Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org> |
||
---|---|---|
.. | ||
asp.c | ||
ccio-dma.c | ||
ccio-rm-dma.c | ||
dino.c | ||
eisa_eeprom.c | ||
eisa_enumerator.c | ||
eisa.c | ||
gsc.c | ||
gsc.h | ||
hppb.c | ||
iommu-helpers.h | ||
iosapic_private.h | ||
iosapic.c | ||
Kconfig | ||
lasi.c | ||
lba_pci.c | ||
led.c | ||
Makefile | ||
pdc_stable.c | ||
power.c | ||
README.dino | ||
sba_iommu.c | ||
superio.c | ||
wax.c |
/* ** HP VISUALIZE Workstation PCI Bus Defect ** ** "HP has discovered a potential system defect that can affect ** the behavior of five models of HP VISUALIZE workstations when ** equipped with third-party or customer-installed PCI I/O expansion ** cards. The defect is limited to the HP C180, C160, C160L, B160L, ** and B132L VISUALIZE workstations, and will only be encountered ** when data is transmitted through PCI I/O expansion cards on the ** PCI bus. HP-supplied graphics cards that utilize the PCI bus are ** not affected." ** ** REVISIT: "go/pci_defect" link below is stale. ** HP Internal can use <http://hpfcdma.fc.hp.com:80/Dino/> ** ** Product First Good Serial Number ** C200/C240 (US) US67350000 **B132L+/B180 (US) US67390000 ** C200 (Europe) 3713G01000 ** B180L (Europe) 3720G01000 ** ** Note that many boards were fixed/replaced under a free replacement ** program. Assume a machine is only "suspect" until proven otherwise. ** ** "The pci_check program will also be available as application ** patch PHSS_12295" */