diff mbox series

IOMMU: iommu_use_hap_pt() implies CONFIG_HVM

Message ID 61084180-d44a-4664-be13-462706587668@suse.com (mailing list archive)
State New, archived
Headers show
Series IOMMU: iommu_use_hap_pt() implies CONFIG_HVM | expand

Commit Message

Jan Beulich Jan. 31, 2024, 9:20 a.m. UTC
Allow the compiler a little more room on DCE by moving the compile-time-
constant condition into the predicate (from the one place where it was
added in an open-coded fashion for XSA-450).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

Comments

Andrew Cooper Jan. 31, 2024, 10:40 a.m. UTC | #1
On 31/01/2024 9:20 am, Jan Beulich wrote:
> Allow the compiler a little more room on DCE by moving the compile-time-
> constant condition into the predicate (from the one place where it was
> added in an open-coded fashion for XSA-450).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

I'm surprised that's happy compiling if it's actually doing anything at
all, given that it's an unguarded variable reference.
Jan Beulich Jan. 31, 2024, 11:09 a.m. UTC | #2
On 31.01.2024 11:40, Andrew Cooper wrote:
> On 31/01/2024 9:20 am, Jan Beulich wrote:
>> Allow the compiler a little more room on DCE by moving the compile-time-
>> constant condition into the predicate (from the one place where it was
>> added in an open-coded fashion for XSA-450).
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

Thanks, but ...

> I'm surprised that's happy compiling if it's actually doing anything at
> all, given that it's an unguarded variable reference.

... I'm afraid I don't understand: What "unguarded variable reference"
are you seeing me add? Even if you were talking about the hap_pt_share
struct field (which was accessed before as well) - that's part of
struct domain_iommu no matter what .config has.

Jan
Andrew Cooper Jan. 31, 2024, 11:52 a.m. UTC | #3
On 31/01/2024 11:09 am, Jan Beulich wrote:
> On 31.01.2024 11:40, Andrew Cooper wrote:
>> On 31/01/2024 9:20 am, Jan Beulich wrote:
>>> Allow the compiler a little more room on DCE by moving the compile-time-
>>> constant condition into the predicate (from the one place where it was
>>> added in an open-coded fashion for XSA-450).
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Thanks, but ...
>
>> I'm surprised that's happy compiling if it's actually doing anything at
>> all, given that it's an unguarded variable reference.
> ... I'm afraid I don't understand: What "unguarded variable reference"
> are you seeing me add? Even if you were talking about the hap_pt_share
> struct field (which was accessed before as well) - that's part of
> struct domain_iommu no matter what .config has.

Ah.  That will be why it compiles.

Fine.

~Andrew
diff mbox series

Patch

--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -438,7 +438,7 @@  static paddr_t domain_pgd_maddr(struct d
 
     if ( pgd_maddr )
         /* nothing */;
-    else if ( IS_ENABLED(CONFIG_HVM) && iommu_use_hap_pt(d) )
+    else if ( iommu_use_hap_pt(d) )
     {
         pagetable_t pgt = p2m_get_pagetable(p2m_get_hostp2m(d));
 
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -381,7 +381,8 @@  struct domain_iommu {
 #define iommu_clear_feature(d, f) clear_bit(f, dom_iommu(d)->features)
 
 /* Are we using the domain P2M table as its IOMMU pagetable? */
-#define iommu_use_hap_pt(d)       (dom_iommu(d)->hap_pt_share)
+#define iommu_use_hap_pt(d)       (IS_ENABLED(CONFIG_HVM) && \
+                                   dom_iommu(d)->hap_pt_share)
 
 /* Does the IOMMU pagetable need to be kept synchronized with the P2M */
 #ifdef CONFIG_HAS_PASSTHROUGH