<p>Hi,</p><p><br></p><p>I didn't understand the mapping attribute mismatch issue methioned by Gerd, we now</p><p>use HuaWei  Kunpeng-920 machine and the qxl works fine, it is Armv8.2 architecture. </p><p>In order to make qxl work properly on arm64, the other modification I made are on</p><p>qemu.</p><p><br></p><p>https://lore.kernel.org/all/20220318085931.3899316-1-liucong2@kylinos.cn/</p><p><br></p><p>Regards,</p><p>Cong.</p><div id="cs2c_mail_sigature"><p></p></div><p></p><div id="re" style="margin-left:0.5em;padding-left:0.5em;border-left:1px solid green;"><br><br><br>
        <div style="background-color:#f5f7fa"><b>主 题:</b><span id="subject">Re: [PATCH v1 1/2] drm/qxl: replace ioremap by ioremap_cache on arm64</span>
            <br><b>日 期:</b><span id="date">2022-03-23 18:26</span>
            <br><b>发件人:</b><span id="from">Robin Murphy</span>
            <br><b>收件人:</b><span id="to">Gerd Hoffmann</span>
            
        </div><br>
        <div id="content"><div class="viewer_part"><div>On 2022-03-23 10:11, Gerd Hoffmann wrote:<br>> On Wed, Mar 23, 2022 at 09:45:13AM +0000, Robin Murphy wrote:<br>>> On 2022-03-23 07:15, Christian K�nig wrote:<br>>>> Am 22.03.22 um 10:34 schrieb Cong Liu:<br>>>>> qxl use ioremap to map ram_header and rom, in the arm64 implementation,<br>>>>> the device is mapped as DEVICE_nGnRE, it can not support unaligned<br>>>>> access.<br>>>><br>>>> Well that some ARM boards doesn't allow unaligned access to MMIO space<br>>>> is a well known bug of those ARM boards.<br>>>><br>>>> So as far as I know this is a hardware bug you are trying to workaround<br>>>> here and I'm not 100% sure that this is correct.<br>>><br>>> No, this one's not a bug. The Device memory type used for iomem mappings is<br>>> *architecturally* defined to enforce properties like aligned accesses, no<br>>> speculation, no reordering, etc. If something wants to be treated more like<br>>> RAM than actual MMIO registers, then ioremap_wc() or ioremap_cache() is the<br>>> appropriate thing to do in general (with the former being a bit more<br>>> portable according to Documentation/driver-api/device-io.rst).<br>> <br>> Well, qxl is a virtual device, so it *is* ram.<br>> <br>> I'm wondering whenever qxl actually works on arm?  As far I know all<br>> virtual display devices with (virtual) pci memory bars for vram do not<br>> work on arm due to the guest mapping vram as io memory and the host<br>> mapping vram as normal ram and the mapping attribute mismatch causes<br>> caching troubles (only noticeable on real arm hardware, not in<br>> emulation).  Did something change here recently?<br><br>Indeed, Armv8.4 introduced the S2FWB feature to cope with situations <br>like this - essentially it allows the hypervisor to share RAM-backed <br>pages with the guest without losing coherency regardless of how the <br>guest maps them.<br><br>Robin.<br></div></div></div></div>