You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2022/02/28 10:21:17 UTC

[GitHub] [incubator-nuttx] masayuki2009 opened a new pull request #5639: arch: imx6: Add the pgheap for imx6

masayuki2009 opened a new pull request #5639:
URL: https://github.com/apache/incubator-nuttx/pull/5639


   ## Summary
   
   - This commit adds the pgheap for imx6
   
   ## Impact
   
   - None
   
   ## Testing
   
   - Tested with sabre-6quad:netknsh (not merged yet)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] masayuki2009 commented on pull request #5639: arch: imx6: Add the pgheap for imx6

Posted by GitBox <gi...@apache.org>.
masayuki2009 commented on pull request #5639:
URL: https://github.com/apache/incubator-nuttx/pull/5639#issuecomment-1054814294


   @acassis 
   
   I added comments and removed unused functions.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] acassis commented on a change in pull request #5639: arch: imx6: Add the pgheap for imx6

Posted by GitBox <gi...@apache.org>.
acassis commented on a change in pull request #5639:
URL: https://github.com/apache/incubator-nuttx/pull/5639#discussion_r815861392



##########
File path: arch/arm/src/imx6/imx_pgalloc.c
##########
@@ -0,0 +1,138 @@
+/****************************************************************************
+ * arch/arm/src/imx6/imx_pgalloc.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <assert.h>
+#include <debug.h>
+
+#include <nuttx/arch.h>
+#include <nuttx/addrenv.h>
+#include <nuttx/pgalloc.h>
+
+#include "chip.h"
+#include "mmu.h"
+
+#include "imx_pgalloc.h"
+
+#ifdef CONFIG_MM_PGALLOC
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Currently, page cache memory must be allocated in DRAM.  There are other
+ * possibilities, but the logic in this file will have to extended in order
+ * handle any other possibility.
+ */
+
+#ifndef CONFIG_IMX6_DDRCS_PGHEAP
+#  error CONFIG_IMX6_DDRCS_PGHEAP must be selected
+#endif
+
+#ifndef CONFIG_IMX6_DDRCS_PGHEAP_OFFSET
+#  error CONFIG_IMX6_DDRCS_PGHEAP_OFFSET must be specified
+#endif
+
+#if (CONFIG_IMX6_DDRCS_PGHEAP_OFFSET & MM_PGMASK) != 0
+#  warning CONFIG_IMX6_DDRCS_PGHEAP_OFFSET is not aligned to a page boundary
+#endif
+
+#ifndef CONFIG_IMX6_DDRCS_PGHEAP_SIZE
+#  error CONFIG_IMX6_DDRCS_PGHEAP_SIZE must be specified
+#endif
+
+#if (CONFIG_IMX6_DDRCS_PGHEAP_SIZE & MM_PGMASK) != 0
+#  warning CONFIG_IMX6_DDRCS_PGHEAP_SIZE is not aligned to a page boundary
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: up_allocate_pgheap
+ *
+ * Description:
+ *   If there is a page allocator in the configuration, then this function
+ *   must be provided by the platform-specific code.  The OS initialization
+ *   logic will call this function early in the initialization sequence to
+ *   get the page heap information needed to configure the page allocator.
+ *

Review comment:
       Please include "Input Parameters" and "Returned Values"

##########
File path: arch/arm/src/imx6/imx_pgalloc.h
##########
@@ -0,0 +1,88 @@
+/****************************************************************************
+ * arch/arm/src/imx6/imx_pgalloc.h
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_ARM_SRC_IMX6_IMX_PGALLOC_H
+#define __ARCH_ARM_SRC_IMX6_IMX_PGALLOC_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <stdint.h>
+
+#include "pgalloc.h"
+
+#ifdef CONFIG_MM_PGALLOC
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imx_physpgaddr
+ *
+ * Description:
+ *   Check if the virtual address lies in the user data area and, if so
+ *   get the mapping to the physical address in the page pool.
+ *
+ ****************************************************************************/
+
+#define imx_physpgaddr(vaddr) arm_physpgaddr(vaddr)
+
+/****************************************************************************
+ * Name: imx_virtpgaddr
+ *
+ * Description:
+ *   Check if the physical address lies in the page pool and, if so
+ *   get the mapping to the virtual address in the user data area.
+ *

Review comment:
       Ditto

##########
File path: arch/arm/src/imx6/imx_pgalloc.c
##########
@@ -0,0 +1,138 @@
+/****************************************************************************
+ * arch/arm/src/imx6/imx_pgalloc.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <assert.h>
+#include <debug.h>
+
+#include <nuttx/arch.h>
+#include <nuttx/addrenv.h>
+#include <nuttx/pgalloc.h>
+
+#include "chip.h"
+#include "mmu.h"
+
+#include "imx_pgalloc.h"
+
+#ifdef CONFIG_MM_PGALLOC
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Currently, page cache memory must be allocated in DRAM.  There are other
+ * possibilities, but the logic in this file will have to extended in order
+ * handle any other possibility.
+ */
+
+#ifndef CONFIG_IMX6_DDRCS_PGHEAP
+#  error CONFIG_IMX6_DDRCS_PGHEAP must be selected
+#endif
+
+#ifndef CONFIG_IMX6_DDRCS_PGHEAP_OFFSET
+#  error CONFIG_IMX6_DDRCS_PGHEAP_OFFSET must be specified
+#endif
+
+#if (CONFIG_IMX6_DDRCS_PGHEAP_OFFSET & MM_PGMASK) != 0
+#  warning CONFIG_IMX6_DDRCS_PGHEAP_OFFSET is not aligned to a page boundary
+#endif
+
+#ifndef CONFIG_IMX6_DDRCS_PGHEAP_SIZE
+#  error CONFIG_IMX6_DDRCS_PGHEAP_SIZE must be specified
+#endif
+
+#if (CONFIG_IMX6_DDRCS_PGHEAP_SIZE & MM_PGMASK) != 0
+#  warning CONFIG_IMX6_DDRCS_PGHEAP_SIZE is not aligned to a page boundary
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: up_allocate_pgheap
+ *
+ * Description:
+ *   If there is a page allocator in the configuration, then this function
+ *   must be provided by the platform-specific code.  The OS initialization
+ *   logic will call this function early in the initialization sequence to
+ *   get the page heap information needed to configure the page allocator.
+ *
+ ****************************************************************************/
+
+void up_allocate_pgheap(FAR void **heap_start, size_t *heap_size)
+{
+  DEBUGASSERT(heap_start && heap_size);
+
+  *heap_start = (FAR void *)((uintptr_t)IMX_MMDCDDR_PSECTION +
+                             CONFIG_IMX6_DDRCS_PGHEAP_OFFSET);
+  *heap_size  = CONFIG_IMX6_DDRCS_PGHEAP_SIZE;
+}
+
+/****************************************************************************
+ * Name: imx_virtpgaddr
+ *
+ * Description:
+ *   Check if the physical address lies in the page pool and, if so
+ *   get the mapping to the virtual address in the user data area.
+ *

Review comment:
       Ditto

##########
File path: arch/arm/src/imx6/imx_pgalloc.h
##########
@@ -0,0 +1,88 @@
+/****************************************************************************
+ * arch/arm/src/imx6/imx_pgalloc.h
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_ARM_SRC_IMX6_IMX_PGALLOC_H
+#define __ARCH_ARM_SRC_IMX6_IMX_PGALLOC_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <stdint.h>
+
+#include "pgalloc.h"
+
+#ifdef CONFIG_MM_PGALLOC
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imx_physpgaddr
+ *
+ * Description:
+ *   Check if the virtual address lies in the user data area and, if so
+ *   get the mapping to the physical address in the page pool.
+ *

Review comment:
       Ditto




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 merged pull request #5639: arch: imx6: Add the pgheap for imx6

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 merged pull request #5639:
URL: https://github.com/apache/incubator-nuttx/pull/5639


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org