From: Dave Hansen <haveblue@us.ibm.com>
To: Robin Holt <holt@sgi.com>
Cc: ia64 list <linux-ia64@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
hch@infradead.org, jgarzik@pobox.com,
William Lee Irwin III <wli@holomorphy.com>
Subject: Re: [Patch 2/2] Special Memory (mspec) driver.
Date: Thu, 13 Oct 2005 22:12:05 -0700 [thread overview]
Message-ID: <1129266725.22903.25.camel@localhost> (raw)
In-Reply-To: <20051012194233.GG17458@lnx-holt.americas.sgi.com>
On Wed, 2005-10-12 at 14:42 -0500, Robin Holt wrote:
> +static void
> +mspec_close(struct vm_area_struct *vma)
> +{
> + struct vma_data *vdata;
> + int i, pages, result;
> +
> + vdata = vma->vm_private_data;
> + if (atomic_dec_and_test(&vdata->refcnt)) {
> + pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
...
Looks like you could un-indent almost the entire function of you just
did this instead:
if (!atomic_dec_and_test(&vdata->refcnt))
return;
> +static __inline__ int
> +mspec_get_one_pte(struct mm_struct *mm, u64 address, pte_t ** page_table)
> +{
> + pgd_t *pgd;
> + pmd_t *pmd;
> + pud_t *pud;
> +
> + pgd = pgd_offset(mm, address);
> + if (pgd_present(*pgd)) {
> + pud = pud_offset(pgd, address);
> + if (pud_present(*pud)) {
> + pmd = pmd_offset(pud, address);
> + if (pmd_present(*pmd)) {
> + *page_table = pte_offset_map(pmd, address);
> + if (pte_present(**page_table)) {
> + return 0;
> + }
> + }
> + }
> + }
> +
> + return -1;
> +}
This looks pretty similar to get_one_pte_map(). Is there enough
commonality to use it?
> +static int
> +mspec_mmap(struct file *file, struct vm_area_struct *vma, int type)
> +{
> + struct vma_data *vdata;
> + int pages;
> +
> + if (vma->vm_pgoff != 0)
> + return -EINVAL;
> +
> + if ((vma->vm_flags & VM_WRITE) == 0)
> + return -EPERM;
> +
> + pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
> + if (!
> + (vdata =
> + vmalloc(sizeof(struct vma_data) + pages * sizeof(long))))
> + return -ENOMEM;
How about:
vdata = vmalloc(sizeof(struct vma_data) + pages * sizeof(long));
if (!vdata)
return -ENOMEM;
> +#ifdef CONFIG_PROC_FS
> +static void *
> +mspec_seq_start(struct seq_file *file, loff_t * offset)
> +{
> + if (*offset < MAX_NUMNODES)
> + return offset;
> + return NULL;
> +}
This whole thing really is a driver for a piece of arch-specific
hardware, right? Does it really belong in /proc? You already have a
misc device, so you already have some area in sysfs. Would that make a
better place for it?
> +static int __init
> +mspec_init(void)
> +{
> + if ((ret = misc_register(&cached_miscdev))) {
> + printk(KERN_ERR "%s: failed to register device %i\n",
> + CACHED_ID, ret);
> + misc_deregister(&fetchop_miscdev);
> + return ret;
> + }
Isn't the general kernel style for these to keep the action out of the
if() condition?
ret = misc_register(&cached_miscdev);
if (ret) {
...
}
-- Dave
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2005-10-14 5:12 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-12 19:40 [Patch 0/2] SGI Altix and ia64 special memory support Robin Holt
2005-10-12 19:41 ` [Patch 1/2] Add a NOPAGE_FAULTED flag Robin Holt
2005-10-12 19:42 ` [Patch 2/2] Special Memory (mspec) driver Robin Holt
2005-10-12 20:29 ` Jack Steiner
2005-10-14 19:14 ` Robin Holt
2005-10-14 5:12 ` Dave Hansen [this message]
2005-10-14 18:09 ` Robin Holt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1129266725.22903.25.camel@localhost \
--to=haveblue@us.ibm.com \
--cc=hch@infradead.org \
--cc=holt@sgi.com \
--cc=jgarzik@pobox.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=wli@holomorphy.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox