[PATCH v3 06/14] iommu/amd: Move IO page table related functions

2020-10-03 Thread Suravee Suthikulpanit
Preparing to migrate to use IO page table framework. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 18 ++ drivers/iommu/amd/io_pgtable.c | 473 drivers/iommu/amd/iommu.c | 476

[PATCH v3 10/14] iommu/amd: Refactor fetch_pte to use struct amd_io_pgtable

2020-10-03 Thread Suravee Suthikulpanit
To simplify the fetch_pte function. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 +- drivers/iommu/amd/io_pgtable.c | 13 +++-- drivers/iommu/amd/iommu.c | 4 +++- 3 files changed, 11 insertions(+), 8 deletions

[PATCH v3 05/14] iommu/amd: Declare functions as extern

2020-10-03 Thread Suravee Suthikulpanit
And move declaration to header file so that they can be included across multiple files. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 3 +++ drivers/iommu/amd/iommu.c | 39 +-- 2 files changed, 22

Re: [PATCH v2 00/13] iommu/amd: Add Generic IO Page Table Framework Support

2020-10-03 Thread Suravee Suthikulpanit
I found an issue w/ this series. Please ignore. I'll send out V3. Regards, Suravee On 10/2/20 7:28 PM, Suravee Suthikulpanit wrote: The framework allows callable implementation of IO page table. This allows AMD IOMMU driver to switch between different types of AMD IOMMU page tables (e.g. v1 vs

[PATCH v2 00/13] iommu/amd: Add Generic IO Page Table Framework Support

2020-10-02 Thread Suravee Suthikulpanit
. (patch 2/13) - Move amd_iommu_setup_io_pgtable_ops to iommu.c instead of io_pgtable.c patch 13/13) Suravee Suthikulpanit (13): iommu/amd: Re-define amd_iommu_domain_encode_pgtable as inline iommu/amd: Prepare for generic IO page table framework iommu/amd: Move pt_root to to struct

[PATCH v2 04/13] iommu/amd: Convert to using amd_io_pgtable

2020-10-02 Thread Suravee Suthikulpanit
Make use of the new struct amd_io_pgtable in preparation to remove the struct domain_pgtable. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 1 + drivers/iommu/amd/iommu.c | 25 ++--- 2 files changed, 11 insertions(+), 15 deletions(-) diff

[PATCH v2 03/13] iommu/amd: Move pt_root to to struct amd_io_pgtable

2020-10-02 Thread Suravee Suthikulpanit
To better organize the data structure since it contains IO page table related information. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 +- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/iommu.c | 2 +- 3 files changed, 3 insertions

[PATCH v2 05/13] iommu/amd: Declare functions as extern

2020-10-02 Thread Suravee Suthikulpanit
And move declaration to header file so that they can be included across multiple files. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 3 +++ drivers/iommu/amd/iommu.c | 39 +-- 2 files changed, 22

[PATCH v2 01/13] iommu/amd: Re-define amd_iommu_domain_encode_pgtable as inline

2020-10-02 Thread Suravee Suthikulpanit
Move the function to header file to allow inclusion in other files. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 13 + drivers/iommu/amd/iommu.c | 10 -- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/iommu/amd

[PATCH v2 02/13] iommu/amd: Prepare for generic IO page table framework

2020-10-02 Thread Suravee Suthikulpanit
Add initial hook up code to implement generic IO page table framework. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/Kconfig | 1 + drivers/iommu/amd/Makefile | 2 +- drivers/iommu/amd/amd_iommu_types.h | 32 + drivers/iommu/amd/io_pgtable.c

[PATCH v2 10/13] iommu/amd: Refactor fetch_pte to use struct amd_io_pgtable

2020-10-02 Thread Suravee Suthikulpanit
To simplify the fetch_pte function. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 +- drivers/iommu/amd/io_pgtable.c | 13 +++-- drivers/iommu/amd/iommu.c | 4 +++- 3 files changed, 11 insertions(+), 8 deletions

[PATCH v2 12/13] iommu/amd: Introduce iommu_v1_map_page and iommu_v1_unmap_page

2020-10-02 Thread Suravee Suthikulpanit
These implement map and unmap for AMD IOMMU v1 pagetable, which will be used by the IO pagetable framework. Also clean up unused extern function declarations. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 13 - drivers/iommu/amd/io_pgtable.c | 25

[PATCH v2 13/13] iommu/amd: Adopt IO page table framework

2020-10-02 Thread Suravee Suthikulpanit
Switch to using IO page table framework for AMD IOMMU v1 page table. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/iommu.c | 24 1 file changed, 24 insertions(+) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index 77f44b927ae7

[PATCH v2 06/13] iommu/amd: Move IO page table related functions

2020-10-02 Thread Suravee Suthikulpanit
Preparing to migrate to use IO page table framework. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 18 ++ drivers/iommu/amd/io_pgtable.c | 473 drivers/iommu/amd/iommu.c | 476

[PATCH v2 09/13] iommu/amd: Rename variables to be consistent with struct io_pgtable_ops

2020-10-02 Thread Suravee Suthikulpanit
There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/io_pgtable.c | 31 +++ 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/iommu/amd/io_pgtable.c b/drivers/iommu/amd/io_pgtable.c index a2acd7e85ec3

[PATCH v2 08/13] iommu/amd: Remove amd_iommu_domain_get_pgtable

2020-10-02 Thread Suravee Suthikulpanit
Since the IO page table root and mode parameters have been moved into the struct amd_io_pg, the function is no longer needed. Therefore, remove it along with the struct domain_pgtable. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 4 ++-- drivers/iommu/amd

[PATCH v2 11/13] iommu/amd: Introduce iommu_v1_iova_to_phys

2020-10-02 Thread Suravee Suthikulpanit
This implements iova_to_phys for AMD IOMMU v1 pagetable, which will be used by the IO page table framework. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/io_pgtable.c | 21 + drivers/iommu/amd/iommu.c | 16 +--- 2 files changed, 22 insertions

[PATCH v2 07/13] iommu/amd: Restructure code for freeing page table

2020-10-02 Thread Suravee Suthikulpanit
Introduce amd_iommu_free_pgtable helper function, which consolidates logic for freeing page table. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 +- drivers/iommu/amd/io_pgtable.c | 12 +++- drivers/iommu/amd/iommu.c | 19 ++- 3 files

Re: [PATCH 00/13] iommu: amd: Add Generic IO Page Table Framework Support

2020-10-01 Thread Suravee Suthikulpanit
Joerg, On 10/1/20 7:59 PM, Joerg Roedel wrote: On Thu, Sep 24, 2020 at 05:50:37PM +0700, Suravee Suthikulpanit wrote: On 9/24/20 5:34 PM, Joerg Roedel wrote: Hi Suravee, On Wed, Sep 23, 2020 at 10:14:29AM +, Suravee Suthikulpanit wrote: The framework allows callable implementation

[PATCH] iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE

2020-09-25 Thread Suravee Suthikulpanit
lso be affected if cmpxchg16b is not supported (which is unprecedented for AMD processors w/ IOMMU). Cc: sta...@vger.kernel.org Fixes: 880ac60e2538 ("iommu/amd: Introduce interrupt remapping ops structure") Reported-by: Sean Osborne Signed-off-by: Suravee Suthikulpanit Tested-by: Erik Rockst

Re: [PATCH 02/13] iommu: amd: Prepare for generic IO page table framework

2020-09-25 Thread Suravee Suthikulpanit
Robin, On 9/24/20 7:25 PM, Robin Murphy wrote: +struct io_pgtable_ops *amd_iommu_setup_io_pgtable_ops(struct iommu_dev_data  *dev_data, + struct protection_domain *domain) +{ +domain->iop.pgtbl_cfg = (struct io_pgtable_cfg) { +.pgsize_bitmap= 

Re: [PATCH 00/13] iommu: amd: Add Generic IO Page Table Framework Support

2020-09-24 Thread Suravee Suthikulpanit
On 9/24/20 5:34 PM, Joerg Roedel wrote: Hi Suravee, On Wed, Sep 23, 2020 at 10:14:29AM +, Suravee Suthikulpanit wrote: The framework allows callable implementation of IO page table. This allows AMD IOMMU driver to switch between different types of AMD IOMMU page tables (e.g. v1 vs. v2

[PATCH v2 3/3] iommu: amd: Re-purpose Exclusion range registers to support SNP CWWB

2020-09-23 Thread Suravee Suthikulpanit
) to Completion Wait Write-Back (CWWB) Range Limit register and requires the IOMMU CWWB semaphore base and range to be programmed in the register offset 0020h and 0028h accordingly. Cc: Brijesh Singh Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 1 + drivers/iommu/amd

[PATCH v2 0/3] amd : iommu : Initial IOMMU support for SNP

2020-09-23 Thread Suravee Suthikulpanit
-and-more.pdf Changes from V1: (https://lkml.org/lkml/2020/9/16/455) - Patch 2/3: Fix up per Joerg's comments Thank you, Suravee Suravee Suthikulpanit (3): iommu: amd: Use 4K page for completion wait write-back semaphore iommu: amd: Add support for RMP_PAGE_FAULT and RMP_HW_ERR iommu: amd: Re

[PATCH v2 1/3] iommu: amd: Use 4K page for completion wait write-back semaphore

2020-09-23 Thread Suravee Suthikulpanit
, which is incremented for every completion wait command. Since this new scheme is also compatible with non-SNP mode, generalize the driver to use 4K page for completion-wait semaphore in both modes. Cc: Brijesh Singh Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 3

[PATCH v2 2/3] iommu: amd: Add support for RMP_PAGE_FAULT and RMP_HW_ERR

2020-09-23 Thread Suravee Suthikulpanit
IOMMU SNP support introduces two new IOMMU events: * RMP Page Fault event * RMP Hardware Error event Hence, add reporting functions for these events. Cc: Brijesh Singh Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 + drivers/iommu/amd/iommu.c

Re: [PATCH 2/3] iommu: amd: Add support for RMP_PAGE_FAULT and RMP_HW_ERR

2020-09-23 Thread Suravee Suthikulpanit
On 9/18/20 4:31 PM, Joerg Roedel wrote: Hi Suravee, On Wed, Sep 16, 2020 at 01:55:48PM +, Suravee Suthikulpanit wrote: +static void amd_iommu_report_rmp_hw_error(volatile u32 *event) +{ + struct pci_dev *pdev; + struct iommu_dev_data *dev_data = NULL; + int devid

[PATCH 11/13] iommu: amd: Introduce iommu_v1_iova_to_phys

2020-09-23 Thread Suravee Suthikulpanit
This implements iova_to_phys for AMD IOMMU v1 pagetable, which will be used by the IO page table framework. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/io_pgtable.c | 21 + drivers/iommu/amd/iommu.c | 16 +--- 2 files changed, 22 insertions

[PATCH 03/13] iommu: amd: Move pt_root to to struct amd_io_pgtable

2020-09-23 Thread Suravee Suthikulpanit
To better organize the data structure since it contains IO page table related information. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 +- drivers/iommu/amd/amd_iommu_types.h | 2 +- drivers/iommu/amd/iommu.c | 2 +- 3 files changed, 3 insertions

[PATCH 12/13] iommu: amd: Introduce iommu_v1_map_page and iommu_v1_unmap_page

2020-09-23 Thread Suravee Suthikulpanit
These implement map and unmap for AMD IOMMU v1 pagetable, which will be used by the IO pagetable framework. Also clean up unused extern function declarations. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 13 - drivers/iommu/amd/io_pgtable.c | 25

[PATCH 06/13] iommu: amd: Move IO page table related functions

2020-09-23 Thread Suravee Suthikulpanit
Preparing to migrate to use IO page table framework. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 18 ++ drivers/iommu/amd/io_pgtable.c | 473 drivers/iommu/amd/iommu.c | 476

[PATCH 08/13] iommu: amd: Remove amd_iommu_domain_get_pgtable

2020-09-23 Thread Suravee Suthikulpanit
Since the IO page table root and mode parameters have been moved into the struct amd_io_pg, the function is no longer needed. Therefore, remove it along with the struct domain_pgtable. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 4 ++-- drivers/iommu/amd

[PATCH 13/13] iommu: amd: Adopt IO page table framework

2020-09-23 Thread Suravee Suthikulpanit
Switch to using IO page table framework for AMD IOMMU v1 page table. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 3 +++ drivers/iommu/amd/iommu.c | 10 ++ 2 files changed, 13 insertions(+) diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd

[PATCH 01/13] iommu: amd: Re-define amd_iommu_domain_encode_pgtable as inline

2020-09-23 Thread Suravee Suthikulpanit
Move the function to header file to allow inclusion in other files. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 13 + drivers/iommu/amd/iommu.c | 10 -- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/iommu/amd

[PATCH 05/13] iommu: amd: Declare functions as extern

2020-09-23 Thread Suravee Suthikulpanit
And move declaration to header file so that they can be included across multiple files. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 3 +++ drivers/iommu/amd/iommu.c | 39 +-- 2 files changed, 22

[PATCH 04/13] iommu: amd: Convert to using amd_io_pgtable

2020-09-23 Thread Suravee Suthikulpanit
Make use of the new struct amd_io_pgtable in preparation to remove the struct domain_pgtable. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 1 + drivers/iommu/amd/iommu.c | 25 ++--- 2 files changed, 11 insertions(+), 15 deletions(-) diff

[PATCH 10/13] iommu: amd: Refactor fetch_pte to use struct amd_io_pgtable

2020-09-23 Thread Suravee Suthikulpanit
To simplify the fetch_pte function. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 +- drivers/iommu/amd/io_pgtable.c | 13 +++-- drivers/iommu/amd/iommu.c | 4 +++- 3 files changed, 11 insertions(+), 8 deletions

[PATCH 07/13] iommu: amd: Restructure code for freeing page table

2020-09-23 Thread Suravee Suthikulpanit
Introduce amd_iommu_free_pgtable helper function, which consolidates logic for freeing page table. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu.h | 2 +- drivers/iommu/amd/io_pgtable.c | 12 +++- drivers/iommu/amd/iommu.c | 19 ++- 3 files

[PATCH 09/13] iommu: amd: Rename variables to be consistent with struct io_pgtable_ops

2020-09-23 Thread Suravee Suthikulpanit
There is no functional change. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/io_pgtable.c | 31 +++ 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/iommu/amd/io_pgtable.c b/drivers/iommu/amd/io_pgtable.c index 524c5406ccd6

[PATCH 00/13] iommu: amd: Add Generic IO Page Table Framework Support

2020-09-23 Thread Suravee Suthikulpanit
be no functional change. Subsequent series will introduce support for the AMD IOMMU v2 page table. Thanks, Suravee Suravee Suthikulpanit (13): iommu: amd: Re-define amd_iommu_domain_encode_pgtable as inline iommu: amd: Prepare for generic IO page table framework iommu: amd: Move pt_root to to struct

[PATCH 02/13] iommu: amd: Prepare for generic IO page table framework

2020-09-23 Thread Suravee Suthikulpanit
Add initial hook up code to implement generic IO page table framework. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/Kconfig | 1 + drivers/iommu/amd/Makefile | 2 +- drivers/iommu/amd/amd_iommu_types.h | 32 +++ drivers/iommu/amd/io_pgtable.c | 89

[PATCH 1/3] iommu: amd: Use 4K page for completion wait write-back semaphore

2020-09-16 Thread Suravee Suthikulpanit
, which is incremented for every completion wait command. Since this new scheme is also compatible with non-SNP mode, generalize the driver to use 4K page for completion-wait semaphore in both modes. Cc: Brijesh Singh Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 3

[PATCH 0/3] amd : iommu : Initial IOMMU support for SNP

2020-09-16 Thread Suravee Suthikulpanit
-and-more.pdf Thank you, Suravee Suravee Suthikulpanit (3): iommu: amd: Use 4K page for completion wait write-back semaphore iommu: amd: Add support for RMP_PAGE_FAULT and RMP_HW_ERR iommu: amd: Re-purpose Exclusion range registers to support SNP CWWB drivers/iommu/amd/amd_iommu_types.h | 6

[PATCH 3/3] iommu: amd: Re-purpose Exclusion range registers to support SNP CWWB

2020-09-16 Thread Suravee Suthikulpanit
) to Completion Wait Write-Back (CWWB) Range Limit register and requires the IOMMU CWWB semaphore base and range to be programmed in the register offset 0020h and 0028h accordingly. Cc: Brijesh Singh Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 1 + drivers/iommu/amd

[PATCH 2/3] iommu: amd: Add support for RMP_PAGE_FAULT and RMP_HW_ERR

2020-09-16 Thread Suravee Suthikulpanit
IOMMU SNP support introduces two new IOMMU events: * RMP Page Fault event * RMP Hardware Error event Hence, add reporting functions for these events. Cc: Brijesh Singh Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/amd_iommu_types.h | 2 + drivers/iommu/amd/iommu.c

[PATCH v2] iommu/amd: Restore IRTE.RemapEn bit for amd_iommu_activate_guest_mode

2020-09-16 Thread Suravee Suthikulpanit
C enabled. Reported-by: Maxim Levitsky Tested-by: Maxim Levitsky Cc: Joao Martins Fixes: e52d58d54a321 ("iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE") Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/iommu.c | 4 1 file changed, 4 insertions(+)

Re: [PATCH] iommu/amd: fix interrupt remapping for avic

2020-09-16 Thread Suravee Suthikulpanit
On 9/15/20 8:19 PM, Joao Martins wrote: On 9/15/20 1:30 PM, Suravee Suthikulpanit wrote: On 9/15/20 6:25 PM, Maxim Levitsky wrote: On Mon, 2020-09-14 at 21:48 +0700, Suravee Suthikulpanit wrote: Could you please try with the following patch instead? --- a/drivers/iommu/amd/iommu.c +++ b

Re: [PATCH] iommu/amd: fix interrupt remapping for avic

2020-09-15 Thread Suravee Suthikulpanit
On 9/15/20 6:25 PM, Maxim Levitsky wrote: On Mon, 2020-09-14 at 21:48 +0700, Suravee Suthikulpanit wrote: Maxim, On 9/13/2020 7:42 PM, Maxim Levitsky wrote: Commit e52d58d54a32 ("iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE") accidentally removed an

Re: [PATCH] iommu/amd: fix interrupt remapping for avic

2020-09-14 Thread Suravee Suthikulpanit
Maxim, On 9/13/2020 7:42 PM, Maxim Levitsky wrote: Commit e52d58d54a32 ("iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE") accidentally removed an assumption that modify_irte_ga always set the valid bit and amd_iommu_activate_guest_mode relied on that. Side effect of this is that

Re: [PATCH] iommu/amd: Fix potential @entry null deref

2020-09-10 Thread Suravee Suthikulpanit
fore check 'entry' (see line 3867) Fix this by moving the @valid assignment to after @entry has been checked for NULL. Cc: Suravee Suthikulpanit Fixes: 26e495f34107 ("iommu/amd: Restore IRTE.RemapEn bit after programming IRTE") Reported-by: Dan Carpenter Signed-off-by: Joao Martins

[PATCH 1/2 v2] iommu: amd: Restore IRTE.RemapEn bit after programming IRTE

2020-09-03 Thread Suravee Suthikulpanit
Currently, the RemapEn (valid) bit is accidentally cleared when programming IRTE w/ guestMode=0. It should be restored to the prior state. Reviewed-by: Joao Martins Signed-off-by: Suravee Suthikulpanit Fixes: b9fc6b56f478 ("iommu/amd: Implements irq_set_vcpu_affinity() hook to setup vapic

[PATCH 0/2 v2] iommu: amd: Fix intremap IO_PAGE_FAULT for VMs

2020-09-03 Thread Suravee Suthikulpanit
) * Fix typo in comments and commit messages * Fix logic to check for X86_FEATURE_CX16 support in patch 2/2 Thanks, Suravee Suravee Suthikulpanit (2): iommu: amd: Restore IRTE.RemapEn bit after programming IRTE iommu: amd: Use cmpxchg_double() when updating 128-bit IRTE drivers/iommu/amd/Kconfig

[PATCH 2/2 v2] iommu: amd: Use cmpxchg_double() when updating 128-bit IRTE

2020-09-03 Thread Suravee Suthikulpanit
lso be affected if cmpxchg16b is not supported (which is unprecedented for AMD processors w/ IOMMU). Reviewed-by: Joao Martins Reported-by: Sean Osborne Tested-by: Erik Rockstrom Signed-off-by: Suravee Suthikulpanit Fixes: 880ac60e2538 ("iommu/amd: Introduce interrupt remapping ops s

Re: [PATCH 2/2] iommu: amd: Use cmpxchg_double() when updating 128-bit IRTE

2020-09-03 Thread Suravee Suthikulpanit
Hi, I'll send out V2 with fixes to the review comments below ... On 9/2/20 10:26 PM, Joao Martins wrote: On 9/2/20 5:51 AM, Suravee Suthikulpanit wrote: When using 128-bit interrupt-remapping table entry (IRTE) (a.k.a GA mode), current driver disables interrupt remapping when it updates

[PATCH 0/2] iommu: amd: Fix intremap IO_PAGE_FAULT for VMs

2020-09-02 Thread Suravee Suthikulpanit
. Investigation has shown that the issue is in the code to update IRTE while remapping is enabled. Please see patch 2/2 for detail discussion. This serires has been tested running in the setup mentioned above upto 96 hours w/o seeing issues. Thanks, Suravee Suravee Suthikulpanit (2): iommu: amd

[PATCH 1/2] iommu: amd: Restore IRTE.RemapEn bit after programming IRTE

2020-09-02 Thread Suravee Suthikulpanit
Currently, the RemapEn (valid) bit is accidentally cleared when programming IRTE w/ guestMode=0. It should be restored to the prior state. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/iommu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/iommu/amd/iommu.c b/drivers

[PATCH 2/2] iommu: amd: Use cmpxchg_double() when updating 128-bit IRTE

2020-09-01 Thread Suravee Suthikulpanit
lso be affected if cmpxchg16b is not supported (which is unprecedented for AMD processors w/ IOMMU). Reported-by: Sean Osborne Tested-by: Erik Rockstrom Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd/Kconfig | 2 +- drivers/iommu/amd/init.c | 21 +++-- drivers/iommu/

[PATCH v2] iommu: amd: Fix IO_PAGE_FAULT due to __unmap_single() size overflow

2020-06-24 Thread Suravee Suthikulpanit
atch is not applicable in subsequent kernel versions. Cc: sta...@vger.kernel.org Cc: iommu@lists.linux-foundation.org Reported-by: Robert Lippert Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd_iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/amd_i

Re: [PATCH] iommu/amd: Print extended features in one line to fix divergent log levels

2020-06-17 Thread Suravee Suthikulpanit
defaults back to KERN_DEFAULT loglevel. */ #define pr_cont(fmt, ...) \ printk(KERN_CONT fmt, ##__VA_ARGS__) So, remove the line break, so only one line is logged. Fixes: 3928aa3f57 ("iommu/amd: Detect and enable guest vAPIC support") Cc: Suravee Suthikulpanit Cc: iom

Re: [PATCH] iommu/amd: Fix event counter availability check

2020-06-16 Thread Suravee Suthikulpanit
On 6/16/20 3:48 AM, Alexander Monakov wrote: Alexander On 6/1/20 4:01 PM, Alexander Monakov wrote: On Mon, 1 Jun 2020, Suravee Suthikulpanit wrote: Moving init_iommu_perf_ctr just after iommu_flush_all_caches resolves the issue. This is the earliest point in amd_iommu_init_pci where

Re: [PATCH 2/2] iommu/amd: Move Kconfig and Makefile bits down into amd directory

2020-06-15 Thread Suravee Suthikulpanit
Reviewed-by: Suravee Suthikulpanit Thanks, Suravee On 6/13/20 6:11 AM, Jerry Snitselaar wrote: Move AMD Kconfig and Makefile bits down into the amd directory with the rest of the AMD specific files. Cc: Joerg Roedel Cc: Suravee Suthikulpanit Signed-off-by: Jerry Snitselaar --- drivers

Re: [PATCH] iommu/amd: Fix event counter availability check

2020-06-01 Thread Suravee Suthikulpanit
Alexander On 6/1/20 4:01 PM, Alexander Monakov wrote: On Mon, 1 Jun 2020, Suravee Suthikulpanit wrote: Moving init_iommu_perf_ctr just after iommu_flush_all_caches resolves the issue. This is the earliest point in amd_iommu_init_pci where the call succeeds on my laptop. According to your

Re: [PATCH] iommu/amd: Fix event counter availability check

2020-06-01 Thread Suravee Suthikulpanit
Hi Alexander, On 5/30/20 3:07 AM, Alexander Monakov wrote: The driver performs an extra check if the IOMMU's capabilities advertise presence of performance counters: it verifies that counters are writable by writing a hard-coded value to a counter and testing that reading that counter gives

[PATCH] iommu: amd: Fix IO_PAGE_FAULT due to __unmap_single() size overflow

2020-05-31 Thread Suravee Suthikulpanit
ze_t instead of int to pass parameter to __unmap_single(). Reported-by: Robert Lippert Signed-off-by: Suravee Suthikulpanit --- Note: This patch is intended for stable tree prior 5.5 due to commit be62dbf554c5 ("iommu/amd: Convert AMD iommu driver to the dma-iommu api"), where the function

Re: [PATCH 00/10] iommu/amd: Updates and Cleanups

2020-05-29 Thread Suravee Suthikulpanit
e mode 100644 drivers/iommu/amd_iommu.h Thank you for cleaning up. Reviewed-by: Suravee Suthikulpanit ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu

Re: [PATCH] iommu/amd: Fix legacy interrupt remapping for x2APIC-enabled system

2020-04-25 Thread Suravee Suthikulpanit
Ping. Thanks, Suravee On 4/22/20 8:30 PM, Suravee Suthikulpanit wrote: Currently, system fails to boot because the legacy interrupt remapping mode does not enable 128-bit IRTE (GA), which is required for x2APIC support. Fix by using AMD_IOMMU_GUEST_IR_LEGACY_GA mode when booting with kernel

[PATCH] iommu/amd: Fix legacy interrupt remapping for x2APIC-enabled system

2020-04-22 Thread Suravee Suthikulpanit
GASup and automatically fallback to using AMD_IOMMU_GUEST_IR_LEGACY if GA mode is not supported. Fixes: 3928aa3f5775 ("iommu/amd: Detect and enable guest vAPIC support") Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd_iommu_init.c | 2 +- 1 file changed, 1 insertion(+),

[PATCH] iommu/amd: Fix IOMMU AVIC not properly update the is_run bit in IRTE

2020-03-12 Thread Suravee Suthikulpanit
ir_data when calling modify_irte_ga() as done previously. Fixes: b9c6ff94e43a ("iommu/amd: Re-factor guest virtual APIC (de-)activation code") Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd_iommu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/iom

Re: [PATCH v2] iommu: amd: Fix IOMMU perf counter clobbering during init

2020-01-23 Thread Suravee Suthikulpanit
amd_iommu_0/cmd_processed/ 0 amd_iommu_1/cmd_processed/ 472 amd_iommu_2/cmd_processed/ 2 amd_iommu_3/cmd_processed/ 10.198257728 seconds time elapsed Reviewed-by: Suravee Suthikulpanit Tested-by: Suravee Suthikulpanit Thanks,

Re: [PATCH] iommu: amd: Fix IOMMU perf counter clobbering during init

2020-01-20 Thread Suravee Suthikulpanit
. Reviewed-by: Suravee Suthikulpanit Thanks, Suravee ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu

[PATCH v2 3/3] iommu/amd: Add support for IOMMU XT mode

2018-06-27 Thread Suravee Suthikulpanit
section "IOMMU x2APIC Support" of the AMD I/O Virtualization Technology (IOMMU) Specification. Cc: Joerg Roedel Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd_iommu.c | 21 - drivers/iommu/amd_iommu_init.c | 25 +++-- dri

[PATCH v2 2/3] iommu/amd: Add support for higher 64-bit IOMMU Control Register

2018-06-27 Thread Suravee Suthikulpanit
Currently, the driver only supports lower 32-bit of IOMMU Control register. However, newer AMD IOMMU specification has extended this register to 64-bit. Therefore, replace the accessing API with the 64-bit version. Cc: Joerg Roedel Signed-off-by: Suravee Suthikulpanit --- drivers/iommu

[PATCH v2 0/3] iommu/amd: Enable x2APIC support

2018-06-27 Thread Suravee Suthikulpanit
odify detect_extended_topology() to return result") * 3986a0a805e6 ("x86/CPU/AMD: Derive CPU topology from CPUID function 0xB when available") Thanks, Suravee Changes from V1 (https://lkml.org/lkml/2018/6/22/645): * 3/3: Declare the variable amd_iommu_xt_mode as static (per kbuild test robot) Sura

[PATCH v2 1/3] x86: irq_remapping: Move irq remapping mode enum

2018-06-27 Thread Suravee Suthikulpanit
-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/irq_remapping.h | 5 + include/linux/dmar.h | 5 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index 023b4a9..5f26962

[PATCH 3/3] iommu/amd: Add support for IOMMU XT mode

2018-06-22 Thread Suravee Suthikulpanit
section "IOMMU x2APIC Support" of the AMD I/O Virtualization Technology (IOMMU) Specification. Cc: Joerg Roedel Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd_iommu.c | 21 - drivers/iommu/amd_iommu_init.c | 25 +++-- dri

[PATCH 2/3] iommu/amd: Add support for higher 64-bit IOMMU Control Register

2018-06-22 Thread Suravee Suthikulpanit
Currently, the driver only supports lower 32-bit of IOMMU Control register. However, newer AMD IOMMU specification has extended this register to 64-bit. Therefore, replace the accessing API with the 64-bit version. Cc: Joerg Roedel Signed-off-by: Suravee Suthikulpanit --- drivers/iommu

[PATCH 1/3] x86: irq_remapping: Move irq remapping mode enum

2018-06-22 Thread Suravee Suthikulpanit
-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/irq_remapping.h | 5 + include/linux/dmar.h | 5 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index 023b4a9..5f26962

[PATCH 0/3] iommu/amd: Enable x2APIC support

2018-06-22 Thread Suravee Suthikulpanit
odify detect_extended_topology() to return result") * 3986a0a805e6 ("x86/CPU/AMD: Derive CPU topology from CPUID function 0xB when available") Thanks, Suravee Suravee Suthikulpanit (3): x86: irq_remapping: Move irq remapping mode enum iommu/amd: Add support for higher 64-bit IOMMU Control Regis

[PATCH 2/2] iommu/amd: Fallback to dma_direct_ops when fail to enable IOMMU

2018-06-19 Thread Suravee Suthikulpanit
. Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/amd_iommu.c | 14 +- drivers/iommu/amd_iommu_init.c | 19 +-- drivers/iommu/amd_iommu_proto.h | 2 ++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu

[PATCH 1/2] iommu: Introduce interface for unsetting bus IOMMU

2018-06-19 Thread Suravee Suthikulpanit
This interface allows removal of IOMMU from a bus if needed. For example, when the IOMMU driver fails to initialize, it should unassociate itself from the bus (i.e. removing IOMMU groups and unregister bus notifier block). Signed-off-by: Suravee Suthikulpanit --- drivers/iommu/iommu.c | 22

[PATCH 0/2] iommu/amd: Handle IOMMU initialization failure

2018-06-19 Thread Suravee Suthikulpanit
should also be taken care of (e.g. removing IOMMU groups, and unsetting bus IOMMU). NOTE: This issue was found when booting Linux with pci=nomsi option. Since the AMD IOMMU requires MSI, this result in failure to initialize IOMMU interrupt. Thanks, Suravee Suravee Suthikulpanit (2

Re: [PATCH v4] iommu/amd: Add support for fast IOTLB flushing

2018-03-04 Thread Suravee Suthikulpanit
Ping.. Joerg, when you get a chance, would you please let me know if you have any other concerns for this v4. Thanks, Suravee On 2/21/18 2:19 PM, Suravee Suthikulpanit wrote: Since AMD IOMMU driver currently flushes all TLB entries when page size is more than one, use the same interface

[PATCH v4] iommu/amd: Add support for fast IOTLB flushing

2018-02-20 Thread Suravee Suthikulpanit
Since AMD IOMMU driver currently flushes all TLB entries when page size is more than one, use the same interface for both iommu_ops.flush_iotlb_all() and iommu_ops.iotlb_sync(). Cc: Joerg Roedel <j...@8bytes.org> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com>

Re: [PATCH v3] iommu/amd: Add support for fast IOTLB flushing

2018-02-20 Thread Suravee Suthikulpanit
Hi Joerg, On 2/13/18 8:29 PM, Joerg Roedel wrote: Hi Suravee, thanks for working on this. On Wed, Jan 31, 2018 at 12:01:14AM -0500, Suravee Suthikulpanit wrote: +static void amd_iommu_iotlb_range_add(struct iommu_domain *domain, + unsigned long iova

[PATCH] iommu: Do not return error code for APIs with size_t return type

2018-02-05 Thread Suravee Suthikulpanit
Cc: Alex Williamson <alex.william...@redhat.com> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- Note: This issue was previously discussed here (https://lkml.org/lkml/2018/1/30/873). drivers/iommu/amd_iommu.c | 2 +- drivers/iommu/iommu.c | 6 +++--- include/l

Re: [PATCH 1/2] iommu: Fix iommu_unmap and iommu_unmap_fast return type

2018-01-31 Thread Suravee Suthikulpanit
Hi Robin, On 2/1/18 1:02 AM, Robin Murphy wrote: Hi Suravee, On 31/01/18 01:48, Suravee Suthikulpanit wrote: Currently, iommu_unmap and iommu_unmap_fast return unmapped pages with size_t.  However, the actual value returned could be error codes (< 0), which can be misinterpreted as la

[PATCH v3] iommu/amd: Add support for fast IOTLB flushing

2018-01-30 Thread Suravee Suthikulpanit
Implement the newly added IOTLB flushing interface for AMD IOMMU. Cc: Joerg Roedel <j...@8bytes.org> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- Changes from v2 (https://lkml.org/lkml/2017/12/27/44) * Call domain_flush_complete() after domain_f

[PATCH 0/2] iommu / vfio: Clean up iommu_map[_fast] interface

2018-01-30 Thread Suravee Suthikulpanit
Change iommu_unmap[_fast] interfaces return type to ssize_t since it can also return error code. Cc: Joerg Roedel <j...@8bytes.org> Cc: Alex Williamson <alex.william...@redhat.com> Suravee Suthikulpanit (2): iommu: Fix iommu_unmap and iommu_unmap_fast return type vfio/type1: Add

[PATCH 1/2] iommu: Fix iommu_unmap and iommu_unmap_fast return type

2018-01-30 Thread Suravee Suthikulpanit
Cc: Alex Williamson <alex.william...@redhat.com> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- drivers/iommu/amd_iommu.c | 6 +++--- drivers/iommu/intel-iommu.c | 4 ++-- drivers/iommu/iommu.c | 16 include/linux/iommu.h | 20 ++

[PATCH 2/2] vfio/type1: Add iommu_unmap error check when vfio_unmap_unpin

2018-01-30 Thread Suravee Suthikulpanit
Besides zero check the number of unmapped page, also check and handle iommu_unmap errors. Cc: Alex Williamson <alex.william...@redhat.com> Cc: Joerg Roedel <j...@8bytes.org> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- drivers/vfio/vfio_iommu_type1.c

Re: [RFC PATCH v2 2/2] iommu/amd: Add support for fast IOTLB flushing

2018-01-24 Thread Suravee Suthikulpanit
Hi Joerg, On 12/27/17 4:20 PM, Suravee Suthikulpanit wrote: Implement the newly added IOTLB flushing interface for AMD IOMMU. Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- drivers/iommu/amd_iommu.c | 73 - d

Re: [PATCH v3] vfio/type1: Adopt fast IOTLB flush interface when unmap IOVAs

2018-01-24 Thread Suravee Suthikulpanit
Alex / Joerg, On 1/24/18 5:04 AM, Alex Williamson wrote: @@ -648,12 +685,40 @@ static int vfio_iommu_type1_unpin_pages(void *iommu_data, return i > npage ? npage : (i > 0 ? i : -EINVAL); } +static size_t try_unmap_unpin_fast(struct vfio_domain *domain, dma_addr_t iova, +

Re: [PATCH v3] vfio/type1: Adopt fast IOTLB flush interface when unmap IOVAs

2018-01-23 Thread Suravee Suthikulpanit
Alex/Joerg, On 1/24/18 5:04 AM, Alex Williamson wrote: +static size_t try_unmap_unpin_fast(struct vfio_domain *domain, dma_addr_t iova, + size_t len, phys_addr_t phys, + struct list_head *unmapped_regions) +{ + struct

[PATCH v3] vfio/type1: Adopt fast IOTLB flush interface when unmap IOVAs

2018-01-21 Thread Suravee Suthikulpanit
on AMD IOMMU with certain dGPUs. This can be avoided by using the new IOTLB flushing interface. Cc: Alex Williamson <alex.william...@redhat.com> Cc: Joerg Roedel <jroe...@suse.de> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- Changes from V2: (https://lkm

Re: [RFC PATCH v2 2/2] iommu/amd: Add support for fast IOTLB flushing

2018-01-21 Thread Suravee Suthikulpanit
Hi Joerg, Do you have any feedback regarding this patch for AMD IOMMU? I'm re-sending the patch 1/2 separately per Alex's suggestion. Thanks, Suravee On 12/27/17 4:20 PM, Suravee Suthikulpanit wrote: Implement the newly added IOTLB flushing interface for AMD IOMMU. Signed-off-by: Suravee

Re: [RFC PATCH v2 1/2] vfio/type1: Adopt fast IOTLB flush interface when unmap IOVAs

2018-01-17 Thread Suravee Suthikulpanit
Hi Alex, On 1/9/18 3:53 AM, Alex Williamson wrote: On Wed, 27 Dec 2017 04:20:34 -0500 Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> wrote: diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index e30e29a..f000844 100644 --- a/drivers/vfio/vfio_iommu_t

Re: [RFC PATCH v2 1/2] vfio/type1: Adopt fast IOTLB flush interface when unmap IOVAs

2018-01-17 Thread Suravee Suthikulpanit
Hi Alex, On 1/9/18 4:07 AM, Alex Williamson wrote: @@ -661,6 +705,8 @@ static long vfio_unmap_unpin(struct vfio_iommu *iommu, struct vfio_dma *dma, if (!IS_IOMMU_CAP_DOMAIN_IN_CONTAINER(iommu)) return 0; + INIT_LIST_HEAD(_regions); + /* * We use the

[RFC PATCH v2 2/2] iommu/amd: Add support for fast IOTLB flushing

2017-12-27 Thread Suravee Suthikulpanit
Implement the newly added IOTLB flushing interface for AMD IOMMU. Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- drivers/iommu/amd_iommu.c | 73 - drivers/iommu/amd_iommu_init.c | 7 drivers/iommu/amd_iommu_t

[RFC PATCH v2 1/2] vfio/type1: Adopt fast IOTLB flush interface when unmap IOVAs

2017-12-27 Thread Suravee Suthikulpanit
: Alex Williamson <alex.william...@redhat.com> Cc: Joerg Roedel <jroe...@suse.de> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- drivers/vfio/vfio_iommu_type1.c | 89 +++-- 1 file changed, 77 insertions(+), 12 deleti

[RFC PATCH v2 0/2] Reduce IOTLB flush when pass-through dGPU devices

2017-12-27 Thread Suravee Suthikulpanit
From: Suravee Suthikulpanit <ssuth...@redhat.com> Currently, when pass-through dGPU to a guest VM, there are thousands of IOTLB flush commands sent from IOMMU to end-point-device. This cause performance issue when launching new VMs, and could cause IOTLB invalidate time-out issue on certain

<    1   2   3   4   >