lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <15d9dab3-379b-c62c-dd52-a810abe6985d@huaweicloud.com>
Date:   Thu, 6 Apr 2023 16:42:00 +0200
From:   Petr Tesarik <petrtesarik@...weicloud.com>
To:     Kelsey Steele <kelseysteele@...ux.microsoft.com>,
        Petr Tesa????k <petr@...arici.cz>
Cc:     Dexuan Cui <decui@...rosoft.com>,
        Dexuan-Linux Cui <dexuan.linux@...il.com>,
        Christoph Hellwig <hch@....de>,
        Marek Szyprowski <m.szyprowski@...sung.com>,
        Robin Murphy <robin.murphy@....com>,
        Konrad Rzeszutek Wilk <konrad.wilk@...cle.com>,
        Jianxiong Gao <jxgao@...gle.com>,
        David Stevens <stevensd@...omium.org>,
        Joerg Roedel <jroedel@...e.de>,
        "open list:DMA MAPPING HELPERS" <iommu@...ts.linux.dev>,
        open list <linux-kernel@...r.kernel.org>,
        Roberto Sassu <roberto.sassu@...wei.com>,
        "Michael Kelley (LINUX)" <mikelley@...rosoft.com>,
        Tianyu Lan <Tianyu.Lan@...rosoft.com>,
        "linux-hyperv@...r.kernel.org" <linux-hyperv@...r.kernel.org>
Subject: Re: [PATCH v1 2/2] swiotlb: Fix slot alignment checks

Hi Kelsey,

On 4/6/2023 6:52 AM, Kelsey Steele wrote:
> On Wed, Apr 05, 2023 at 07:50:34AM +0200, Petr Tesa????k wrote:
>> On Wed, 5 Apr 2023 07:32:06 +0200
>> Petr Tesa????k <petr@...arici.cz> wrote:
>>
>>> On Wed, 5 Apr 2023 05:11:42 +0000
>>> Dexuan Cui <decui@...rosoft.com> wrote:
>>>
>>>>> From: Petr Tesa????k <petr@...arici.cz>
>>>>> Sent: Tuesday, April 4, 2023 9:40 PM    
>>>>>>> ...
>>>>>>> Hi Petr, this patch has gone into the mainline:
>>>>>>> 0eee5ae10256 ("swiotlb: fix slot alignment checks")
>>>>>>>
>>>>>>> Somehow it breaks Linux VMs on Hyper-V: a regular VM with
>>>>>>> swiotlb=force or a confidential VM (which uses swiotlb) fails to boot.
>>>>>>> If I revert this patch, everything works fine.  
>>>>>>
>>>>>> The log is pasted below. Looks like the SCSI driver hv_storvsc fails to
>>>>>> detect the disk capacity:    
>>>>>
>>>>> The first thing I can imagine is that there are in fact no (free) slots
>>>>> in the SWIOTLB which match the alignment constraints, so the map
>>>>> operation fails. However, this would result in a "swiotlb buffer is
>>>>> full" message in the log, and I can see no such message in the log
>>>>> excerpt you have posted.
>>>>>
>>>>> Please, can you check if there are any "swiotlb" messages preceding the
>>>>> first error message?
>>>>>
>>>>> Petr T    
>>>>
>>>> There is no "swiotlb buffer is full" error.
>>>>
>>>> The hv_storvsc driver (drivers/scsi/storvsc_drv.c) calls scsi_dma_map(),
>>>> which doesn't return -ENOMEM when the failure happens.  
>>>
>>> I see...
>>>
>>> Argh, you're right. This is a braino. The alignment mask is in fact an
>>> INVERTED mask, i.e. it masks off bits that are not relevant for the
>>> alignment. The more strict alignment needed the more bits must be set,
>>> so the individual alignment constraints must be combined with an OR
>>> instead of an AND.
>>>
>>> Can you apply the following change and check if it fixes the issue?
>>
>> Actually, this will not work either. The mask is used to mask off both
>> high address bits and low address bits (below swiotlb slot granularity).
>>
>> What should help is this:
>>
> 
> Hi Petr, 
> 
> The suggested fix on this patch boots for me and initially looks ok,
> though when I start to use git commands I get flooded with "swiotlb
> buffer is full" messages and my session becomes unusable. This is on WSL
> which uses Hyper-V.

Roberto noticed that my initial quick fix left iotlb_align_mask
uninitialized. As a result, high address bits are set randomly, and if
they do not match actual swiotlb addresses, allocations may fail with
"swiotlb buffer is full". I fixed it in the patch that I have just posted.

HTH
Petr T

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ