All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Fenghua Yu <fenghua.yu@intel.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Andy Lutomirski <luto@kernel.org>,
	Tony Luck <tony.luck@intel.com>,
	Lu Baolu <baolu.lu@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Jacob Pan <jacob.jun.pan@linux.intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	Ravi V Shankar <ravi.v.shankar@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>,
	iommu@lists.linux-foundation.org, x86 <x86@kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 04/11] kernel/fork: Initialize mm's PASID
Date: Sat, 05 Feb 2022 00:22:12 +0100	[thread overview]
Message-ID: <87wniab4kb.ffs@tglx> (raw)
In-Reply-To: <20220128202905.2274672-5-fenghua.yu@intel.com>

On Fri, Jan 28 2022 at 12:28, Fenghua Yu wrote:
> A new mm doesn't have a PASID yet when it's created. Initialize
> the mm's PASID on fork() or for init_mm to INVALID_IOASID (-1).

I must be missing something here.

> diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h
> index aa5f09ca5bcf..c74d1edbac2f 100644
> --- a/include/linux/sched/mm.h
> +++ b/include/linux/sched/mm.h
> @@ -8,6 +8,7 @@
>  #include <linux/mm_types.h>
>  #include <linux/gfp.h>
>  #include <linux/sync_core.h>
> +#include <linux/ioasid.h>
>  
>  /*
>   * Routines for handling mm_structs
> @@ -433,4 +434,13 @@ static inline void membarrier_update_current_mm(struct mm_struct *next_mm)
>  }
>  #endif
>  
> +#ifdef CONFIG_IOMMU_SVA
> +static inline void mm_pasid_init(struct mm_struct *mm)
> +{
> +	mm->pasid = INVALID_IOASID;
> +}
> +#else
> +static inline void mm_pasid_init(struct mm_struct *mm) {}
> +#endif
> +
>  #endif /* _LINUX_SCHED_MM_H */

So this adds mm_pasid_init() to linux/sched/mm.h which replaces:

> -static void mm_init_pasid(struct mm_struct *mm)
> -{
> -#ifdef CONFIG_IOMMU_SVA
> -	mm->pasid = INIT_PASID;
> -#endif
> -}
> -

I.e. already existing code which is initializing mm->pasid with
INIT_PASID (0) while the replacement initializes it with INVALID_IOASID
(-1).

The change log does not have any information about why INIT_PASID is the
wrong initialization value and why this change is not having any side
effects.

It neither mentions why having this in a global available header makes
sense when the only call site is in the C file from which the already
existing function is removed.

Thanks,

        tglx
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: Fenghua Yu <fenghua.yu@intel.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Peter Zijlstra <peterz@infradead.org>,
	Andy Lutomirski <luto@kernel.org>,
	Tony Luck <tony.luck@intel.com>,
	Lu Baolu <baolu.lu@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Jacob Pan <jacob.jun.pan@linux.intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	Ravi V Shankar <ravi.v.shankar@intel.com>
Cc: iommu@lists.linux-foundation.org, x86 <x86@kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Fenghua Yu <fenghua.yu@intel.com>
Subject: Re: [PATCH v3 04/11] kernel/fork: Initialize mm's PASID
Date: Sat, 05 Feb 2022 00:22:12 +0100	[thread overview]
Message-ID: <87wniab4kb.ffs@tglx> (raw)
In-Reply-To: <20220128202905.2274672-5-fenghua.yu@intel.com>

On Fri, Jan 28 2022 at 12:28, Fenghua Yu wrote:
> A new mm doesn't have a PASID yet when it's created. Initialize
> the mm's PASID on fork() or for init_mm to INVALID_IOASID (-1).

I must be missing something here.

> diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h
> index aa5f09ca5bcf..c74d1edbac2f 100644
> --- a/include/linux/sched/mm.h
> +++ b/include/linux/sched/mm.h
> @@ -8,6 +8,7 @@
>  #include <linux/mm_types.h>
>  #include <linux/gfp.h>
>  #include <linux/sync_core.h>
> +#include <linux/ioasid.h>
>  
>  /*
>   * Routines for handling mm_structs
> @@ -433,4 +434,13 @@ static inline void membarrier_update_current_mm(struct mm_struct *next_mm)
>  }
>  #endif
>  
> +#ifdef CONFIG_IOMMU_SVA
> +static inline void mm_pasid_init(struct mm_struct *mm)
> +{
> +	mm->pasid = INVALID_IOASID;
> +}
> +#else
> +static inline void mm_pasid_init(struct mm_struct *mm) {}
> +#endif
> +
>  #endif /* _LINUX_SCHED_MM_H */

So this adds mm_pasid_init() to linux/sched/mm.h which replaces:

> -static void mm_init_pasid(struct mm_struct *mm)
> -{
> -#ifdef CONFIG_IOMMU_SVA
> -	mm->pasid = INIT_PASID;
> -#endif
> -}
> -

I.e. already existing code which is initializing mm->pasid with
INIT_PASID (0) while the replacement initializes it with INVALID_IOASID
(-1).

The change log does not have any information about why INIT_PASID is the
wrong initialization value and why this change is not having any side
effects.

It neither mentions why having this in a global available header makes
sense when the only call site is in the C file from which the already
existing function is removed.

Thanks,

        tglx

  reply	other threads:[~2022-02-04 23:22 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-28 20:28 [PATCH v3 00/11] Re-enable ENQCMD and PASID MSR Fenghua Yu
2022-01-28 20:28 ` Fenghua Yu
2022-01-28 20:28 ` [PATCH v3 01/11] iommu/sva: Rename CONFIG_IOMMU_SVA_LIB to CONFIG_IOMMU_SVA Fenghua Yu
2022-01-28 20:28   ` Fenghua Yu
2022-02-04 23:07   ` Thomas Gleixner
2022-02-04 23:07     ` Thomas Gleixner
2022-01-28 20:28 ` [PATCH v3 02/11] mm: Change CONFIG option for mm->pasid field Fenghua Yu
2022-01-28 20:28   ` Fenghua Yu
2022-02-04 23:07   ` Thomas Gleixner
2022-02-04 23:07     ` Thomas Gleixner
2022-01-28 20:28 ` [PATCH v3 03/11] iommu/ioasid: Introduce a helper to check for valid PASIDs Fenghua Yu
2022-01-28 20:28   ` Fenghua Yu
2022-02-04 23:08   ` Thomas Gleixner
2022-02-04 23:08     ` Thomas Gleixner
2022-02-04 23:23   ` Thomas Gleixner
2022-02-04 23:23     ` Thomas Gleixner
2022-01-28 20:28 ` [PATCH v3 04/11] kernel/fork: Initialize mm's PASID Fenghua Yu
2022-01-28 20:28   ` Fenghua Yu
2022-02-04 23:22   ` Thomas Gleixner [this message]
2022-02-04 23:22     ` Thomas Gleixner
2022-02-05  0:25     ` Fenghua Yu
2022-02-05  0:25       ` Fenghua Yu
2022-01-28 20:28 ` [PATCH v3 05/11] iommu/sva: Assign a PASID to mm on PASID allocation and free it on mm exit Fenghua Yu
2022-01-28 20:28   ` Fenghua Yu
2022-02-04 23:56   ` Thomas Gleixner
2022-02-04 23:56     ` Thomas Gleixner
2022-02-05  0:33     ` Fenghua Yu
2022-02-05  0:33       ` Fenghua Yu
2022-02-05  3:50   ` Lu Baolu
2022-02-05  3:50     ` Lu Baolu
2022-02-05  5:10     ` Fenghua Yu
2022-02-05  5:10       ` Fenghua Yu
2022-02-05  7:10       ` Lu Baolu
2022-02-05  7:10         ` Lu Baolu
2022-01-28 20:29 ` [PATCH v3 06/11] x86/fpu: Clear PASID when copying fpstate Fenghua Yu
2022-01-28 20:29   ` Fenghua Yu
2022-02-04 23:58   ` Thomas Gleixner
2022-02-04 23:58     ` Thomas Gleixner
2022-01-28 20:29 ` [PATCH v3 07/11] sched: Define and initialize a flag to identify valid PASID in the task Fenghua Yu
2022-01-28 20:29   ` Fenghua Yu
2022-02-04 23:58   ` Thomas Gleixner
2022-02-04 23:58     ` Thomas Gleixner
2022-01-28 20:29 ` [PATCH v3 08/11] x86/traps: Demand-populate PASID MSR via #GP Fenghua Yu
2022-01-28 20:29   ` Fenghua Yu
2022-02-05  0:00   ` Thomas Gleixner
2022-02-05  0:00     ` Thomas Gleixner
2022-01-28 20:29 ` [PATCH v3 09/11] x86/cpufeatures: Re-enable ENQCMD Fenghua Yu
2022-01-28 20:29   ` Fenghua Yu
2022-02-05  0:00   ` Thomas Gleixner
2022-02-05  0:00     ` Thomas Gleixner
2022-01-28 20:29 ` [PATCH v3 10/11] tools/objtool: Check for use of the ENQCMD instruction in the kernel Fenghua Yu
2022-01-28 20:29   ` Fenghua Yu
2022-01-28 20:29 ` [PATCH v3 11/11] docs: x86: Change documentation for SVA (Shared Virtual Addressing) Fenghua Yu
2022-01-28 20:29   ` Fenghua Yu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wniab4kb.ffs@tglx \
    --to=tglx@linutronix.de \
    --cc=ashok.raj@intel.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=fenghua.yu@intel.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@linux.intel.com \
    --cc=joro@8bytes.org \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=ravi.v.shankar@intel.com \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.