From patchwork Fri Aug 14 19:09:59 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guzman Lugo, Fernando" X-Patchwork-Id: 41487 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n7EJAFT4016050 for ; Fri, 14 Aug 2009 19:10:15 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754185AbZHNTKK (ORCPT ); Fri, 14 Aug 2009 15:10:10 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756912AbZHNTKK (ORCPT ); Fri, 14 Aug 2009 15:10:10 -0400 Received: from comal.ext.ti.com ([198.47.26.152]:34835 "EHLO comal.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754185AbZHNTKI convert rfc822-to-8bit (ORCPT ); Fri, 14 Aug 2009 15:10:08 -0400 Received: from dlep34.itg.ti.com ([157.170.170.115]) by comal.ext.ti.com (8.13.7/8.13.7) with ESMTP id n7EJA1Jt014633; Fri, 14 Aug 2009 14:10:06 -0500 Received: from dlep20.itg.ti.com (localhost [127.0.0.1]) by dlep34.itg.ti.com (8.13.7/8.13.7) with ESMTP id n7EJA1L9002682; Fri, 14 Aug 2009 14:10:01 -0500 (CDT) Received: from dlee75.ent.ti.com (localhost [127.0.0.1]) by dlep20.itg.ti.com (8.12.11/8.12.11) with ESMTP id n7EJA1CO008334; Fri, 14 Aug 2009 14:10:01 -0500 (CDT) Received: from dlee06.ent.ti.com ([157.170.170.11]) by dlee75.ent.ti.com ([157.170.170.72]) with mapi; Fri, 14 Aug 2009 14:10:00 -0500 From: "Guzman Lugo, Fernando" To: Ameya Palande , "linux-omap@vger.kernel.org" CC: "hiroshi.doyu@nokia.com" , "Ramirez Luna, Omar" , "Moogi, Suyog" , "roman.tereshonkov@nokia.com" , "Ramos Falcon, Ernesto" Date: Fri, 14 Aug 2009 14:09:59 -0500 Subject: RE: [PATCH 05/13] DSPBRIDGE: Use pr_ctxt in PROC_Attach Thread-Topic: [PATCH 05/13] DSPBRIDGE: Use pr_ctxt in PROC_Attach Thread-Index: AcoaIiv4GLY/ounsSzKvx6jxh9/+FQC5COBQ Message-ID: <496565EC904933469F292DDA3F1663E602A35B0D20@dlee06.ent.ti.com> References: <1249953714-20972-1-git-send-email-ameya.palande@nokia.com> <1249953714-20972-2-git-send-email-ameya.palande@nokia.com> <1249953714-20972-3-git-send-email-ameya.palande@nokia.com> <1249953714-20972-4-git-send-email-ameya.palande@nokia.com> <1249953714-20972-5-git-send-email-ameya.palande@nokia.com> <1249953714-20972-6-git-send-email-ameya.palande@nokia.com> In-Reply-To: <1249953714-20972-6-git-send-email-ameya.palande@nokia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Hi, Acked-by: Fernando Guzman Lugo -----Original Message----- From: Ameya Palande [mailto:ameya.palande@nokia.com] Sent: Monday, August 10, 2009 8:22 PM To: linux-omap@vger.kernel.org Cc: hiroshi.doyu@nokia.com; Ramirez Luna, Omar; Guzman Lugo, Fernando; Moogi, Suyog; roman.tereshonkov@nokia.com; Ramos Falcon, Ernesto Subject: [PATCH 05/13] DSPBRIDGE: Use pr_ctxt in PROC_Attach Signed-off-by: Ameya Palande --- arch/arm/plat-omap/include/dspbridge/proc.h | 3 +- drivers/dsp/bridge/pmgr/wcd.c | 2 +- drivers/dsp/bridge/rmgr/proc.c | 51 +++++--------------------- 3 files changed, 13 insertions(+), 43 deletions(-) diff --git a/arch/arm/plat-omap/include/dspbridge/proc.h b/arch/arm/plat-omap/include/dspbridge/proc.h index 832b518..1737761 100644 --- a/arch/arm/plat-omap/include/dspbridge/proc.h +++ b/arch/arm/plat-omap/include/dspbridge/proc.h @@ -95,7 +95,8 @@ extern DSP_STATUS PROC_Attach(u32 uProcessor, OPTIONAL CONST struct DSP_PROCESSORATTRIN *pAttrIn, - OUT DSP_HPROCESSOR *phProcessor); + OUT DSP_HPROCESSOR *phProcessor, + struct PROCESS_CONTEXT *pr_ctxt); /* * ======== PROC_AutoStart ========= diff --git a/drivers/dsp/bridge/pmgr/wcd.c b/drivers/dsp/bridge/pmgr/wcd.c index a574278..ddb2aea 100644 --- a/drivers/dsp/bridge/pmgr/wcd.c +++ b/drivers/dsp/bridge/pmgr/wcd.c @@ -681,7 +681,7 @@ u32 PROCWRAP_Attach(union Trapped_Args *args, void *pr_ctxt) } status = PROC_Attach(args->ARGS_PROC_ATTACH.uProcessor, pAttrIn, - &processor); + &processor, pr_ctxt); cp_to_usr(args->ARGS_PROC_ATTACH.phProcessor, &processor, status, 1); func_end: return status; diff --git a/drivers/dsp/bridge/rmgr/proc.c b/drivers/dsp/bridge/rmgr/proc.c index 4ab4a88..c475436 100644 --- a/drivers/dsp/bridge/rmgr/proc.c +++ b/drivers/dsp/bridge/rmgr/proc.c @@ -237,7 +237,7 @@ func_end: */ DSP_STATUS PROC_Attach(u32 uProcessor, OPTIONAL CONST struct DSP_PROCESSORATTRIN *pAttrIn, - OUT DSP_HPROCESSOR *phProcessor) + OUT DSP_HPROCESSOR *phProcessor, struct PROCESS_CONTEXT *pr_ctxt) { DSP_STATUS status = DSP_SOK; struct DEV_OBJECT *hDevObject; @@ -246,19 +246,19 @@ PROC_Attach(u32 uProcessor, OPTIONAL CONST struct DSP_PROCESSORATTRIN *pAttrIn, struct DRV_OBJECT *hDrvObject = NULL; u32 devType; -#ifndef RES_CLEANUP_DISABLE - HANDLE hDRVObject; - u32 hProcess; - DSP_STATUS res_status = DSP_SOK; - struct PROCESS_CONTEXT *pPctxt = NULL; -#endif - DBC_Require(cRefs > 0); DBC_Require(phProcessor != NULL); GT_3trace(PROC_DebugMask, GT_ENTER, "Entered PROC_Attach, args:\n\t" "uProcessor: 0x%x\n\tpAttrIn: 0x%x\n\tphProcessor:" "0x%x\n", uProcessor, pAttrIn, phProcessor); + + if (pr_ctxt->hProcessor) { + pr_err("DSP: PROC_Attach() on same file handle is " + "not supported!\n"); + goto func_end; + } + /* Get the Driver and Manager Object Handles */ status = CFG_GetObject((u32 *)&hDrvObject, REG_DRV_OBJECT); if (DSP_SUCCEEDED(status)) { @@ -380,41 +380,10 @@ PROC_Attach(u32 uProcessor, OPTIONAL CONST struct DSP_PROCESSORATTRIN *pAttrIn, "storage for notification \n"); MEM_FreeObject(pProcObject); } -func_end: #ifndef RES_CLEANUP_DISABLE - if (DSP_FAILED(status)) - goto func_cont; - - /* Return TGID instead of process handle */ - hProcess = current->tgid; - - res_status = CFG_GetObject((u32 *)&hDRVObject, REG_DRV_OBJECT); - if (DSP_FAILED(res_status)) - goto func_cont; - - DRV_GetProcContext(hProcess, (struct DRV_OBJECT *)hDRVObject, - &pPctxt, NULL, 0); - if (pPctxt == NULL) { - DRV_InsertProcContext((struct DRV_OBJECT *)hDRVObject, &pPctxt); - if (pPctxt != NULL) { - DRV_ProcUpdatestate(pPctxt, PROC_RES_ALLOCATED); - DRV_ProcSetPID(pPctxt, hProcess); - } - } -func_cont: - /* Return TGID instead of process handle */ - hProcess = current->tgid; - - res_status = CFG_GetObject((u32 *)&hDRVObject, REG_DRV_OBJECT); - if (DSP_SUCCEEDED(res_status)) { - DRV_GetProcContext(hProcess, - (struct DRV_OBJECT *)hDRVObject, &pPctxt, - NULL, 0); - if (pPctxt != NULL) - pPctxt->hProcessor = (DSP_HPROCESSOR)*phProcessor; - - } + pr_ctxt->hProcessor = pProcObject; #endif +func_end: DBC_Ensure((status == DSP_EFAIL && *phProcessor == NULL) || (DSP_SUCCEEDED(status) && MEM_IsValidHandle(pProcObject, PROC_SIGNATURE)) ||