From patchwork Fri Apr 20 17:32:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Souptick Joarder X-Patchwork-Id: 902075 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40SNGg1Qm5z9s1P for ; Sat, 21 Apr 2018 03:32:43 +1000 (AEST) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="YxJeL6Uj"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 40SNGf6hx0zDqRk for ; Sat, 21 Apr 2018 03:32:42 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="YxJeL6Uj"; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:400e:c00::241; helo=mail-pf0-x241.google.com; envelope-from=jrdr.linux@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="YxJeL6Uj"; dkim-atps=neutral Received: from mail-pf0-x241.google.com (mail-pf0-x241.google.com [IPv6:2607:f8b0:400e:c00::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 40SNDR6SQVzDrJw for ; Sat, 21 Apr 2018 03:30:47 +1000 (AEST) Received: by mail-pf0-x241.google.com with SMTP id y69so4594405pfb.5 for ; Fri, 20 Apr 2018 10:30:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mime-version:content-disposition :user-agent; bh=ZjjJCfz3mTcYF3b+OhB/WXe0dxrTRg8alZg4093W7Gk=; b=YxJeL6Ujfg/3qp79ELsQ480lFy5NzVMCCYeImgPuZPAj+sAjWkxWhwANpvLfcBXQaE /ZVsMZaZSwHouraV0ZXaaI9JXXae46nIA5FmSZrvZtvfE/nQ+OFLJRcbygff+THj9uy9 I5F6niOto+5RHjrSuc6IggbleIHrYw9kigne6+aAtZYEWYLVH6Axd9qLO7Mas8++17bv pj92/gaHg8p/1VbQE8vzwm0dO92yBhrCQ1X79S7h+fQCRGMFWzEOVCEDb/6MvX+VeLAu axfcQoZ3wLdCrJJvpS8urg+tyu6dh3xT4odogUWfzI1nf/C3CFx0TPDZlC7Tx9yd65E2 Zgew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition:user-agent; bh=ZjjJCfz3mTcYF3b+OhB/WXe0dxrTRg8alZg4093W7Gk=; b=kxCiOIhYGwyMqwj9ZD1R4JxeWDd4fotJ8l67D6UT8uKEAJDZEiy5V377cmA9Fj40jp JhS1hnpw7HfToC1pKZs/sjblEDue/zB+0Fgwyi5+9N2MN/On/HAPNC0D9h+JBw9bPYBK 9ppEoLhL5/liHGiI1Z4mWm+fxcRuG0q6PL/cKlc7h/a4Za4LHNV8tRtzmqEspE/DfmG/ 3AHm6lv3LlfiUotQgmL2PNlHVV932B/GSi2f0Rx3NCJza1ea2eVWRZSR3yNh1zMfDxyt VJ4g1/0MtYo3W7atj261LbvIkKn8Gjm6sd/4i/wxxp7FYFUxP/OTXScBt1NdWzu5GHWB fraA== X-Gm-Message-State: ALQs6tCCc3Mol88RkxD6D5Tkm2hQUdnPrT4ksXxvU8MhcUa0Ja4vSWce lbnd0bushb7NSXDjYiOC0QAHaA== X-Google-Smtp-Source: AIpwx4/u0J+fr5hp0KD+BcgXC4t4AWPYkQG4n7u7fSD2p6p24m9cxO4/QpJEw+kzopMu/9sXGN11eQ== X-Received: by 10.99.143.75 with SMTP id r11mr9331648pgn.341.1524245445177; Fri, 20 Apr 2018 10:30:45 -0700 (PDT) Received: from jordon-HP-15-Notebook-PC ([183.82.17.178]) by smtp.gmail.com with ESMTPSA id d77sm16746259pfe.127.2018.04.20.10.30.42 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 20 Apr 2018 10:30:43 -0700 (PDT) Date: Fri, 20 Apr 2018 23:02:39 +0530 From: Souptick Joarder To: willy@infradead.org, jk@ozlabs.org, arnd@arndb.de, benh@kernel.crashing.org, paulus@samba.org, mpe@ellerman.id.au Subject: [PATCH v2] powerpc: platform: cell: spufs: Change return type to vm_fault_t Message-ID: <20180420173239.GA24560@jordon-HP-15-Notebook-PC> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linuxppc-dev@lists.ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Use new return type vm_fault_t for fault handler. For now, this is just documenting that the function returns a VM_FAULT value rather than an errno. Once all instances are converted, vm_fault_t will become a distinct type. Reference id -> 1c8f422059ae ("mm: change return type to vm_fault_t") We are fixing a minor bug, that the error from vm_insert_ pfn() was being ignored and the effect of this is likely to be only felt in OOM situations. Signed-off-by: Souptick Joarder Reviewed-by: Matthew Wilcox --- arch/powerpc/platforms/cell/spufs/file.c | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c index 469bdd0..43e7b93 100644 --- a/arch/powerpc/platforms/cell/spufs/file.c +++ b/arch/powerpc/platforms/cell/spufs/file.c @@ -232,12 +232,13 @@ static ssize_t spufs_attr_write(struct file *file, const char __user *buf, return size; } -static int +static vm_fault_t spufs_mem_mmap_fault(struct vm_fault *vmf) { struct vm_area_struct *vma = vmf->vma; struct spu_context *ctx = vma->vm_file->private_data; unsigned long pfn, offset; + vm_fault_t ret; offset = vmf->pgoff << PAGE_SHIFT; if (offset >= LS_SIZE) @@ -256,11 +257,11 @@ static ssize_t spufs_attr_write(struct file *file, const char __user *buf, vma->vm_page_prot = pgprot_noncached_wc(vma->vm_page_prot); pfn = (ctx->spu->local_store_phys + offset) >> PAGE_SHIFT; } - vm_insert_pfn(vma, vmf->address, pfn); + ret = vmf_insert_pfn(vma, vmf->address, pfn); spu_release(ctx); - return VM_FAULT_NOPAGE; + return ret; } static int spufs_mem_mmap_access(struct vm_area_struct *vma, @@ -312,13 +313,14 @@ static int spufs_mem_mmap(struct file *file, struct vm_area_struct *vma) .mmap = spufs_mem_mmap, }; -static int spufs_ps_fault(struct vm_fault *vmf, +static vm_fault_t spufs_ps_fault(struct vm_fault *vmf, unsigned long ps_offs, unsigned long ps_size) { struct spu_context *ctx = vmf->vma->vm_file->private_data; unsigned long area, offset = vmf->pgoff << PAGE_SHIFT; - int ret = 0; + int err = 0; + vm_fault_t ret = VM_FAULT_NOPAGE; spu_context_nospu_trace(spufs_ps_fault__enter, ctx); @@ -349,25 +351,26 @@ static int spufs_ps_fault(struct vm_fault *vmf, if (ctx->state == SPU_STATE_SAVED) { up_read(¤t->mm->mmap_sem); spu_context_nospu_trace(spufs_ps_fault__sleep, ctx); - ret = spufs_wait(ctx->run_wq, ctx->state == SPU_STATE_RUNNABLE); + err = spufs_wait(ctx->run_wq, ctx->state == SPU_STATE_RUNNABLE); spu_context_trace(spufs_ps_fault__wake, ctx, ctx->spu); down_read(¤t->mm->mmap_sem); } else { area = ctx->spu->problem_phys + ps_offs; - vm_insert_pfn(vmf->vma, vmf->address, (area + offset) >> PAGE_SHIFT); + ret = vmf_insert_pfn(vmf->vma, vmf->address, + (area + offset) >> PAGE_SHIFT); spu_context_trace(spufs_ps_fault__insert, ctx, ctx->spu); } - if (!ret) + if (!err) spu_release(ctx); refault: put_spu_context(ctx); - return VM_FAULT_NOPAGE; + return ret; } #if SPUFS_MMAP_4K -static int spufs_cntl_mmap_fault(struct vm_fault *vmf) +static vm_fault_t spufs_cntl_mmap_fault(struct vm_fault *vmf) { return spufs_ps_fault(vmf, 0x4000, SPUFS_CNTL_MAP_SIZE); } @@ -1040,7 +1043,7 @@ static ssize_t spufs_signal1_write(struct file *file, const char __user *buf, return 4; } -static int +static vm_fault_t spufs_signal1_mmap_fault(struct vm_fault *vmf) { #if SPUFS_SIGNAL_MAP_SIZE == 0x1000 @@ -1178,7 +1181,7 @@ static ssize_t spufs_signal2_write(struct file *file, const char __user *buf, } #if SPUFS_MMAP_4K -static int +static vm_fault_t spufs_signal2_mmap_fault(struct vm_fault *vmf) { #if SPUFS_SIGNAL_MAP_SIZE == 0x1000 @@ -1307,7 +1310,7 @@ static u64 spufs_signal2_type_get(struct spu_context *ctx) spufs_signal2_type_set, "%llu\n", SPU_ATTR_ACQUIRE); #if SPUFS_MMAP_4K -static int +static vm_fault_t spufs_mss_mmap_fault(struct vm_fault *vmf) { return spufs_ps_fault(vmf, 0x0000, SPUFS_MSS_MAP_SIZE); @@ -1369,7 +1372,7 @@ static int spufs_mss_open(struct inode *inode, struct file *file) .llseek = no_llseek, }; -static int +static vm_fault_t spufs_psmap_mmap_fault(struct vm_fault *vmf) { return spufs_ps_fault(vmf, 0x0000, SPUFS_PS_MAP_SIZE); @@ -1429,7 +1432,7 @@ static int spufs_psmap_open(struct inode *inode, struct file *file) #if SPUFS_MMAP_4K -static int +static vm_fault_t spufs_mfc_mmap_fault(struct vm_fault *vmf) { return spufs_ps_fault(vmf, 0x3000, SPUFS_MFC_MAP_SIZE);