From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752430Ab1AEVFg (ORCPT ); Wed, 5 Jan 2011 16:05:36 -0500 Received: from caramon.arm.linux.org.uk ([78.32.30.218]:52310 "EHLO caramon.arm.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751373Ab1AEVFf (ORCPT ); Wed, 5 Jan 2011 16:05:35 -0500 Date: Wed, 5 Jan 2011 21:04:48 +0000 From: Russell King - ARM Linux To: Linus Torvalds Cc: James Bottomley , Trond Myklebust , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Kleine-Budde , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Marc Kleine-Budde , linux-arm-kernel@lists.infradead.org, Parisc List , linux-arch@vger.kernel.org Subject: Re: still nfs problems [Was: Linux 2.6.37-rc8] Message-ID: <20110105210448.GM8638@n2100.arm.linux.org.uk> References: <1294254337.16957.13.camel@mulgrave.site> <1294256169.16957.18.camel@mulgrave.site> <20110105200008.GJ8638@n2100.arm.linux.org.uk> <1294259637.16957.25.camel@mulgrave.site> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.19 (2009-01-05) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 05, 2011 at 12:48:32PM -0800, Linus Torvalds wrote: > (You can also force the problem with vmalloc() an then following the > kernel page tables, but I hope nobody does that any more. I suspect > I'm wrong, though, there's probably code that mixes vmalloc and > physical page accesses in various drivers) Should vmalloc_to_page() (84 users)/vmalloc_to_pfn() (17 users) be deprecated then? ;) However, we seem have new ways of doing this - rather than asking vmalloc() for some memory, and then getting at the pages by following the page tables, we now have ways to create mappings using arrays of struct pages and access them via their already known mappings: - vm_map_ram(struct page **pages, unsigned int count, int node, pgprot_t prot) - map_kernel_range_noflush(unsigned long addr, unsigned long size, pgprot_t prot, struct page **pages) - map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages) - vmap(struct page **pages, unsigned int count, unsigned long flags, pgprot_t prot) So really it's the same problem, just created by some other easier to use methods.