Re: [PATCH v3 5/5] acpi, apei, ghes: Factor out ioremap virtual memory for IRQ and NMI context.

Robert Richter
2014-06-13T13:35:59Z

On 13.06.14 13:03:00, Tomasz Nowicki wrote:
> diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
> index 21aeac5..93a4d0b 100644
> --- a/drivers/acpi/apei/ghes.c
> +++ b/drivers/acpi/apei/ghes.c
> @@ -113,12 +113,11 @@ static DEFINE_RAW_SPINLOCK(ghes_nmi_lock);
> */
>
> /*
> - * Two virtual pages are used, one for NMI context, the other for
> - * IRQ/PROCESS context
> + * Two virtual pages are used, one for IRQ/PROCESS context, the other for
> + * NMI context (optionally).
> */
> -#define GHES_IOREMAP_PAGES 2
> -#define GHES_IOREMAP_NMI_PAGE(base) (base)
> -#define GHES_IOREMAP_IRQ_PAGE(base) ((base) + PAGE_SIZE)
> +#define GHES_IOREMAP_IRQ_PAGE(base) (base)
> +#define GHES_IOREMAP_NMI_PAGE(base) ((base) + PAGE_SIZE)
>
> /* virtual memory area for atomic ioremap */
> static struct vm_struct *ghes_ioremap_area;
> @@ -155,7 +154,8 @@ static struct ghes_notify_setup ghes_notify_tab[];
>
> static int ghes_ioremap_init(void)
> {
> - ghes_ioremap_area = __get_vm_area(PAGE_SIZE * GHES_IOREMAP_PAGES,
> + ghes_ioremap_area = __get_vm_area(
> + PAGE_SIZE * (IS_ENABLED(ARCH_HAS_ACPI_APEI_NMI) ? 2 : 1),

Use this instead above:

#ifdef ARCH_HAS_ACPI_APEI_NMI
#define GHES_IOREMAP_PAGES 2
#else
#define GHES_IOREMAP_PAGES 1
#endif

Otherwise this patch looks fine to me.

-Robert