es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué PAGE_SIZE se utiliza con frecuencia en ioremap?

A menudo encuentro que ioremap simplemente utiliza PAGESIZE como su tamaño, como en los siguientes casos:
c
drivers/spi/spi-orion.c:715: dir_acc->vaddr = devm_ioremap(&pdev->dev, r->start, PAGE_SIZE);
drivers/gpu/ipu-v3/ipu-dmfc.c:182: priv->base = devm_ioremap(dev, base, PAGE_SIZE);
drivers/gpu/ipu-v3/ipu-dp.c:338: priv->base = devm_ioremap(dev, base, PAGE_SIZE);
drivers/gpu/ipu-v3/ipu-vdi.c:222: vdi->base = devm_ioremap(dev, base, PAGE_SIZE);
drivers/gpu/ipu-v3/ipu-di.c:729: di->base = devm_ioremap(dev, base, PAGE_SIZE);

¿Es porque debería mapear al menos PAGESIZE aunque su longitud total sea menor que PAGE_SIZE?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, eso es correcto. ioremap debería mapear al menos el tamaño de PAGE_SIZE, incluso si la longitud total es menor que PAGE_SIZE. Esto se debe a que el kernel gestiona la memoria en páginas, por lo que mapear una región que es más pequeña que el tamaño de una página puede resultar en corrupción de memoria debido a que el kernel accede a regiones fuera del área mapeada. Por lo tanto, es más seguro mapear siempre al menos una página, incluso si la región que se está mapeando es más pequeña que una página completa.

Comments are closed.