qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 1/2] s390x/pci: add support for guests that request direct


From: Matthew Rosato
Subject: Re: [PATCH v3 1/2] s390x/pci: add support for guests that request direct mapping
Date: Mon, 27 Jan 2025 15:45:21 -0500
User-agent: Mozilla Thunderbird

>>  
>>  static void s390_pci_iommu_free(S390pciState *s, PCIBus *bus, int32_t devfn)
>> @@ -1488,6 +1518,8 @@ static const Property s390_pci_device_properties[] = {
>>      DEFINE_PROP_BOOL("interpret", S390PCIBusDevice, interp, true),
>>      DEFINE_PROP_BOOL("forwarding-assist", S390PCIBusDevice, 
>> forwarding_assist,
>>                       true),
>> +    DEFINE_PROP_BOOL("relaxed-translation", S390PCIBusDevice, rtr_allowed,
>> +                     true),
> 
> Question: Do we maybe want to default rtr_allowed to false for ISM
> devices? Performance wise it doesn't matter much since they keep their
> mappings fairly static and it would help us catch bugs in the handling
> of rtr_allowed == false devices, the ISM driver and increase security.
> 

I've been asking myself the same.  Believe we've discussed it in the past 
(off-list) too.

I'd be fine with that.  I think it doesn't change the line above, but I can add 
a check against pft in s390_pcihost_plug() after clp info is read in, along 
with a small comment, that changes the setting to false for ISM devices.

Note that there is one side effect I can think of based on the kernel 
implementation - if a guest has, say, NVMe and ISM passed through with 
iommu.passthrough=1 specified then they would always see the "Falling back to 
IOMMU_DOMAIN_DMA" message for the ISM device(s) because of rtr_allowed == false.


>>      /*
>>       * If appropriate, reduce the size of the supported DMA aperture 
>> reported
>> -     * to the guest based upon the vfio DMA limit.
>> +     * to the guest based upon the vfio DMA limit.  This is applicable for
>> +     * devices that are guaranteed to not use relaxed translation.  If the
>> +     * device is capable of relaxed translation then we must advertise the
>> +     * full aperture.  In this case, if translation is used then we will
>> +     * rely on the vfio DMA limit counting and use RPCIT CC1 / status 16
>> +     * to request the guest free DMA mappings when necessary.
> 
> Not a native speaker but I think there is a "to" missing in the last
> sentence and I'd have used "as necessary".

'request that the' would probably work too...  But yeah, something is missing, 
I'll re-word.


>> @@ -362,6 +364,7 @@ struct S390PCIBusDevice {
>>      bool interp;
>>      bool forwarding_assist;
>>      bool aif;
>> +    bool rtr_allowed;
> 
> Nit: In the kernel in struct zpci_dev you used rtr_avail but "allowed"
> in the comment, just for gerppability I'd prefer the names to match.

I guess in my head, QEMU is the one allowing it and the guest kernel is 
checking whether or not it's available.

But I have no strong opinion on the name; can rename the QEMU variable to 
rtr_avail

> 
>>      QTAILQ_ENTRY(S390PCIBusDevice) link;
>>  };
>>  
>> @@ -389,6 +392,7 @@ int pci_chsc_sei_nt2_have_event(void);
>>  void s390_pci_sclp_configure(SCCB *sccb);
>>  void s390_pci_sclp_deconfigure(SCCB *sccb);
>>  void s390_pci_iommu_enable(S390PCIIOMMU *iommu);
>> +void s390_pci_iommu_dm_enable(S390PCIIOMMU *iommu);
> 
> Nit: I find "_dm_" a bit hard to map to "direct map". If you want two
> letters I'd go for "_pt_" for "_iommu_pass_through_" or maybe
> "_direct_map_".

OK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]