Re: git: 2eb2079554f4 - main - bhyve: keep physical and virtual COMMAND reg in sync

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Tue, 23 Nov 2021 16:23:16 UTC
On 11/23/21 1:33 AM, Corvin Köhne wrote:
> Hi John,
> 
> sry, I didn't see your patch. Seems like your patch is very similar to
> mine. However, your patch goes a bit further. It initializes the
> virtual cmd register with it's physical value and always enables
> bus mastering. Are you still interested in working on your patch?
> Otherwise, I'm going to proceed your work.

Would you be able to test if that change works in your environment?  I was
never able to confirm that it fixed the bug I was trying to address, but I
do think it is more correct.  The busmastering thing is to work around Linux
clearing that flag on shutdown of a guest, and I wanted to preserve other
bits in the command register that weren't related to BARs, etc.

> Best regards
> Corvin
> 
> Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff
> Registered office: Verl, Germany | Register court: Guetersloh HRA 7075
> 
> 
> -----Original Message-----
> From: owner-src-committers@freebsd.org <owner-src-committers@freebsd.org> On Behalf Of John Baldwin
> Sent: Monday, November 22, 2021 5:39 PM
> To: Emmanuel Vadot <manu@FreeBSD.org>; src-committers@FreeBSD.org; dev-commits-src-all@FreeBSD.org; dev-commits-src-main@FreeBSD.org
> Subject: Re: git: 2eb2079554f4 - main - bhyve: keep physical and virtual COMMAND reg in sync
> 
> CAUTION: External Email!!
> On 11/22/21 7:30 AM, Emmanuel Vadot wrote:
>> The branch main has been updated by manu:
>>
>> URL: https://nospamproxywebp.beckhoff.com/enqsig/link?id=BCAAAABGd7m3lfMOLOIhx3uNR_1Qav4Ffx8-jQB0torD82ts_KYAAAB6IpisxfWh8bMkMeclEjKU0Ch6nC1L2luIJvUt5lrcBed-KA1fjaCNX4hB0giwbfTH9lmXLBNaYvWEJzBG4zMolRebrrQofyigX9J_GDpKhg70oqrVfjGqvjwx_ZUj9P2msAudMe2Cu6_E-1duWq9fZ0eBY0l1NvoUIIA73nJ1hrbfy1HQ0oahtUKxPE-jI2MlQiFome_pmEEyaQ3J3SkSwgFrM8YO0
>>
>> commit 2eb2079554f4d54c4283410b4ee1aca549b29616
>> Author:     Corvin Köhne <CorvinK@beckhoff.com>
>> AuthorDate: 2021-11-22 15:26:03 +0000
>> Commit:     Emmanuel Vadot <manu@FreeBSD.org>
>> CommitDate: 2021-11-22 15:26:03 +0000
>>
>>       bhyve: keep physical and virtual COMMAND reg in sync
>>
>>       On startup all virtual BARs are registered.
>>       Additionally, the encoding bit in the virtual cmd register is set.
>>       After that, the passthru emulation overwrites the virtual cmd register with
>>       the physical one.
>>       This could lead to a mismatch between registered BARs and the encoding
>>       bits in the cmd register.
>>       Instead of writing the physical to the virtual cmd register,
>>       write the virtual to the physical cmd register to solve this issue.
>>
>>       Reviewed by:      markj
>>       Differential Revision:  https://nospamproxywebp.beckhoff.com/enqsig/link?id=BCAAAABGd7m3lfMOLOIhx3uNR_1Qav4Ffx8-jQB0torD82ts_HgAAABQYw97NGT4SSj0arxOT2yuQ75rteUz51oREvqlD-GZQnqCZI_9pzRsWsM_TIwpmksuUKgVIfsP9_sN_SFiCJKgMBnSZAbbozPmCVLjgVbdggdf0J1VCBMbgFlXVJZq0LGJOUYhyN9NsWQY5F9sqBgUDVfJaTe3qOo1
>>       Sponsored by:   Beckhoff Automation GmbH & Co. KG
> 
> Humm, I wonder if my older patch that tries to handle the command register
> more deterministically might have handled this.  The patch tried to fix an
> open bug where you can't use a XHCI controller via passthru after you have
> rebooted a Linux guest.  It makes this write here conditional:
> 
> https://nospamproxywebp.beckhoff.com/enqsig/link?id=BCAAAABGd7m3lfMOLOIhx3uNR_1Qav4Ffx8-jQB0torD82ts_HgAAAAU8FxyU1LiUJoRKnyrNSRv-j2bTBQqOJi-XQmELgyevvpEPUyKQXd3ARd_uz1vH5Vvuv314xMOFWvGRH_kkVCSmv8reOEC1AS1MBzskFbKQ_hHSbMiI88hnj9-jJrJaZT3B6FG9MHp-bRv8QyGOSI19iLeQnlutkY1
> 
> --
> John Baldwin
> 


-- 
John Baldwin