Re: [Xen-devel] [PATCH] AMD IOMMU: correctly propagate errors from amd_iommu_init()

2016-06-16 Thread Xu, Quan
On June 16, 2016 4:29 PM, Jan Beulich  wrote:
> >>> On 16.06.16 at 04:03,  wrote:
> > On June 14, 2016 5:03 PM, Jan Beulich  wrote:
> >> -if ( amd_iommu_update_ivrs_mapping_acpi() != 0 )
> >> +rc = amd_iommu_update_ivrs_mapping_acpi();
> >> +if ( rc )
> >>  goto error_out;
> >>
> >>  /* initialize io-apic interrupt remapping entries */
> >> -if ( iommu_intremap && amd_iommu_setup_ioapic_remapping() != 0 )
> >> +if ( iommu_intremap )
> >> +rc = amd_iommu_setup_ioapic_remapping();
> >> +if ( rc )
> >>  goto error_out;
> >
> >
> > Is it better to indent this if() here? Then,
> >
> > +if ( iommu_intremap )
> > +{
> > +rc = amd_iommu_setup_ioapic_remapping();
> > +if ( rc )
> > +goto error_out;
> > +}
> 
> What would this help (apart from increasing LOC and patch size)?
> 

Ah, first of all, it is not a logic issue, but just make the code clear:
  - this if( rc ) is called only if ( iommu_intremap ) is true.
  - this error is from amd_iommu_setup_ioapic_remapping().

Also from '-if ( iommu_intremap && amd_iommu_setup_ioapic_remapping() != 0 
)', I'd like to fix it as my suggestion.

Quan
___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH] AMD IOMMU: correctly propagate errors from amd_iommu_init()

2016-06-16 Thread Jan Beulich
>>> On 16.06.16 at 04:03,  wrote:
> On June 14, 2016 5:03 PM, Jan Beulich  wrote:
>> -if ( amd_iommu_update_ivrs_mapping_acpi() != 0 )
>> +rc = amd_iommu_update_ivrs_mapping_acpi();
>> +if ( rc )
>>  goto error_out;
>> 
>>  /* initialize io-apic interrupt remapping entries */
>> -if ( iommu_intremap && amd_iommu_setup_ioapic_remapping() != 0 )
>> +if ( iommu_intremap )
>> +rc = amd_iommu_setup_ioapic_remapping();
>> +if ( rc )
>>  goto error_out;
> 
> 
> Is it better to indent this if() here? Then,
> 
> +if ( iommu_intremap )
> +{
> +rc = amd_iommu_setup_ioapic_remapping();
> +if ( rc )
> +goto error_out;
> +}

What would this help (apart from increasing LOC and patch size)?

Jan


___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH] AMD IOMMU: correctly propagate errors from amd_iommu_init()

2016-06-15 Thread Xu, Quan
On June 14, 2016 5:03 PM, Jan Beulich  wrote:
> -if ( amd_iommu_update_ivrs_mapping_acpi() != 0 )
> +rc = amd_iommu_update_ivrs_mapping_acpi();
> +if ( rc )
>  goto error_out;
> 
>  /* initialize io-apic interrupt remapping entries */
> -if ( iommu_intremap && amd_iommu_setup_ioapic_remapping() != 0 )
> +if ( iommu_intremap )
> +rc = amd_iommu_setup_ioapic_remapping();
> +if ( rc )
>  goto error_out;


Is it better to indent this if() here? Then,

+if ( iommu_intremap )
+{
+rc = amd_iommu_setup_ioapic_remapping();
+if ( rc )
+goto error_out;
+}

Quan

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH] AMD IOMMU: correctly propagate errors from amd_iommu_init()

2016-06-15 Thread Suravee Suthikulanit

On 6/14/2016 4:09 AM, Andrew Cooper wrote:

On 14/06/16 10:03, Jan Beulich wrote:

... instead of using -ENODEV for any kind of error. It in particular
addresses Coverity ID 1362694 (introduced by commit eb48587210 ["AMD
IOMMU: introduce support for IVHD block type 11h"]).

Coverity ID: 1362694

Signed-off-by: Jan Beulich 


Reviewed-by: Andrew Cooper 




Reviewed-by: Suravee Suthikulpanit 
Tested-by: Suravee Suthikulpanit 

Thank you for the fix up.

Suravee

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH] AMD IOMMU: correctly propagate errors from amd_iommu_init()

2016-06-14 Thread Andrew Cooper
On 14/06/16 10:03, Jan Beulich wrote:
> ... instead of using -ENODEV for any kind of error. It in particular
> addresses Coverity ID 1362694 (introduced by commit eb48587210 ["AMD
> IOMMU: introduce support for IVHD block type 11h"]).
>
> Coverity ID: 1362694
>
> Signed-off-by: Jan Beulich 

Reviewed-by: Andrew Cooper 



___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


[Xen-devel] [PATCH] AMD IOMMU: correctly propagate errors from amd_iommu_init()

2016-06-14 Thread Jan Beulich
... instead of using -ENODEV for any kind of error. It in particular
addresses Coverity ID 1362694 (introduced by commit eb48587210 ["AMD
IOMMU: introduce support for IVHD block type 11h"]).

Coverity ID: 1362694

Signed-off-by: Jan Beulich 

--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -1226,6 +1226,7 @@ static bool_t __init amd_sp5100_erratum2
 int __init amd_iommu_init(void)
 {
 struct amd_iommu *iommu;
+int rc = -ENODEV;
 
 BUG_ON( !iommu_found() );
 
@@ -1237,28 +1238,39 @@ int __init amd_iommu_init(void)
 if ( unlikely(acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_MSI) )
 goto error_out;
 
-ivhd_type = amd_iommu_get_supported_ivhd_type();
-if ( ivhd_type < 0 )
+rc = amd_iommu_get_supported_ivhd_type();
+if ( rc < 0 )
 goto error_out;
+ivhd_type = rc;
 
-ivrs_bdf_entries = amd_iommu_get_ivrs_dev_entries();
-if ( !ivrs_bdf_entries )
+rc = amd_iommu_get_ivrs_dev_entries();
+if ( !rc )
+rc = -ENODEV;
+if ( rc < 0 )
 goto error_out;
+ivrs_bdf_entries = rc;
 
 radix_tree_init(_maps);
 for_each_amd_iommu ( iommu )
-if ( alloc_ivrs_mappings(iommu->seg) != 0 )
+{
+rc = alloc_ivrs_mappings(iommu->seg);
+if ( rc )
 goto error_out;
+}
 
-if ( amd_iommu_update_ivrs_mapping_acpi() != 0 )
+rc = amd_iommu_update_ivrs_mapping_acpi();
+if ( rc )
 goto error_out;
 
 /* initialize io-apic interrupt remapping entries */
-if ( iommu_intremap && amd_iommu_setup_ioapic_remapping() != 0 )
+if ( iommu_intremap )
+rc = amd_iommu_setup_ioapic_remapping();
+if ( rc )
 goto error_out;
 
 /* allocate and initialize a global device table shared by all iommus */
-if ( iterate_ivrs_mappings(amd_iommu_setup_device_table) != 0 )
+rc = iterate_ivrs_mappings(amd_iommu_setup_device_table);
+if ( rc )
 goto error_out;
 
 /*
@@ -1271,14 +1283,17 @@ int __init amd_iommu_init(void)
 
 /* per iommu initialization  */
 for_each_amd_iommu ( iommu )
-if ( amd_iommu_init_one(iommu) != 0 )
+{
+rc = amd_iommu_init_one(iommu);
+if ( rc )
 goto error_out;
+}
 
 return 0;
 
 error_out:
 amd_iommu_init_cleanup();
-return -ENODEV;
+return rc;
 }
 
 static void disable_iommu(struct amd_iommu *iommu)



AMD IOMMU: correctly propagate errors from amd_iommu_init()

... instead of using -ENODEV for any kind of error. It in particular
addresses Coverity ID 1362694 (introduced by commit eb48587210 ["AMD
IOMMU: introduce support for IVHD block type 11h"]).

Coverity ID: 1362694

Signed-off-by: Jan Beulich 

--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -1226,6 +1226,7 @@ static bool_t __init amd_sp5100_erratum2
 int __init amd_iommu_init(void)
 {
 struct amd_iommu *iommu;
+int rc = -ENODEV;
 
 BUG_ON( !iommu_found() );
 
@@ -1237,28 +1238,39 @@ int __init amd_iommu_init(void)
 if ( unlikely(acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_MSI) )
 goto error_out;
 
-ivhd_type = amd_iommu_get_supported_ivhd_type();
-if ( ivhd_type < 0 )
+rc = amd_iommu_get_supported_ivhd_type();
+if ( rc < 0 )
 goto error_out;
+ivhd_type = rc;
 
-ivrs_bdf_entries = amd_iommu_get_ivrs_dev_entries();
-if ( !ivrs_bdf_entries )
+rc = amd_iommu_get_ivrs_dev_entries();
+if ( !rc )
+rc = -ENODEV;
+if ( rc < 0 )
 goto error_out;
+ivrs_bdf_entries = rc;
 
 radix_tree_init(_maps);
 for_each_amd_iommu ( iommu )
-if ( alloc_ivrs_mappings(iommu->seg) != 0 )
+{
+rc = alloc_ivrs_mappings(iommu->seg);
+if ( rc )
 goto error_out;
+}
 
-if ( amd_iommu_update_ivrs_mapping_acpi() != 0 )
+rc = amd_iommu_update_ivrs_mapping_acpi();
+if ( rc )
 goto error_out;
 
 /* initialize io-apic interrupt remapping entries */
-if ( iommu_intremap && amd_iommu_setup_ioapic_remapping() != 0 )
+if ( iommu_intremap )
+rc = amd_iommu_setup_ioapic_remapping();
+if ( rc )
 goto error_out;
 
 /* allocate and initialize a global device table shared by all iommus */
-if ( iterate_ivrs_mappings(amd_iommu_setup_device_table) != 0 )
+rc = iterate_ivrs_mappings(amd_iommu_setup_device_table);
+if ( rc )
 goto error_out;
 
 /*
@@ -1271,14 +1283,17 @@ int __init amd_iommu_init(void)
 
 /* per iommu initialization  */
 for_each_amd_iommu ( iommu )
-if ( amd_iommu_init_one(iommu) != 0 )
+{
+rc = amd_iommu_init_one(iommu);
+if ( rc )
 goto error_out;
+}
 
 return 0;
 
 error_out:
 amd_iommu_init_cleanup();
-return -ENODEV;
+return rc;
 }
 
 static void disable_iommu(struct amd_iommu *iommu)