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

Re: [PATCH v2] xen/arm: vpl011: Make access to DMACR write-ignore


  • To: Julien Grall <julien@xxxxxxx>, Jiamei Xie <jiamei.xie@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Michal Orzel <michal.orzel@xxxxxxx>
  • Date: Tue, 22 Nov 2022 16:16:37 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=xen.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ge3y2Uo4Im8rI8BNj4uo4AEBY7/rK0L2lA5DH7qLKXs=; b=Mf5M1KO6SJNiV8yrU0lD3MRbzb1xUzixhYzlgPZxcHJQ3PNKItipz0g85DOzJMrnirGiVNsxv/ORPC0/A1UcWOhfOwSkd1Hjk199xLkaWD1BfT7uCbI1zVnqmtfaUvHRqpsP6Hi82Ak6abNVLs9t/V6CE4S8kfBcGjI+cNQhIkWc/wkYo3eFuLTVfixuFWNS9p3bUMg5j9LDSUDURFOQBmcAIN/lWxiLb+ZeD+WPlN0cH692mhh46IOS8lhCPoaLSsFhMwHf0KHit98k6kCRksn2mlrcLujLxyfJdVfNDmVLFvg0gTEtut0Eo84v/1cVvxr0tOwyM+SO/Hi+onkKGw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GcLgF+QZ+zMsHWy5mdmowE8w6uT3fDkWYQC9pDNd/j+R+aO6SLWOLuBjaAiHAJR+bCy4WndbSyg6SV/SXscFNGqzlojRXU69zISOgC9PBSmwGxRoVRNYjOCmQM3EDS2w5wBLmeC3e9Jyba2QEmFjntBpV+ZYrwFOqTYYCEl33JER/j+sxqHBp9MGOyQxPy9QuFzp31Axuxaam87VbDxG+E0hrj9flwB2zRHaLgu9jStnZIBI5tls+18IZXL43LiRqneld678jp3G5MC3ryRHQ8Zn01p4QB/cHpxjdtiFgIWEQvjyXPfqzyhTl7H8jBZexe5EGm4MqS3Ic+wToqs2fg==
  • Cc: <wei.chen@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Tue, 22 Nov 2022 15:16:55 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi,

On 22/11/2022 13:25, Julien Grall wrote:
> 
> 
> Hi,
> 
> On 22/11/2022 05:46, Jiamei Xie wrote:
>> When the guest kernel enables DMA engine with "CONFIG_DMA_ENGINE=y",
>> Linux SBSA PL011 driver will access PL011 DMACR register in some
>> functions. As chapter "B Generic UART" in "ARM Server Base System
>> Architecture"[1] documentation describes, SBSA UART doesn't support
>> DMA. In current code, when the kernel tries to access DMACR register,
>> Xen will inject a data abort:
>> Unhandled fault at 0xffffffc00944d048
>> Mem abort info:
>>    ESR = 0x96000000
>>    EC = 0x25: DABT (current EL), IL = 32 bits
>>    SET = 0, FnV = 0
>>    EA = 0, S1PTW = 0
>>    FSC = 0x00: ttbr address size fault
>> Data abort info:
>>    ISV = 0, ISS = 0x00000000
>>    CM = 0, WnR = 0
>> swapper pgtable: 4k pages, 39-bit VAs, pgdp=0000000020e2e000
>> [ffffffc00944d048] pgd=100000003ffff803, p4d=100000003ffff803, 
>> pud=100000003ffff803, pmd=100000003fffa803, pte=006800009c090f13
>> Internal error: ttbr address size fault: 96000000 [#1] PREEMPT SMP
>> ...
>> Call trace:
>>   pl011_stop_rx+0x70/0x80
>>   tty_port_shutdown+0x7c/0xb4
>>   tty_port_close+0x60/0xcc
>>   uart_close+0x34/0x8c
>>   tty_release+0x144/0x4c0
>>   __fput+0x78/0x220
>>   ____fput+0x1c/0x30
>>   task_work_run+0x88/0xc0
>>   do_notify_resume+0x8d0/0x123c
>>   el0_svc+0xa8/0xc0
>>   el0t_64_sync_handler+0xa4/0x130
>>   el0t_64_sync+0x1a0/0x1a4
>> Code: b9000083 b901f001 794038a0 8b000042 (b9000041)
>> ---[ end trace 83dd93df15c3216f ]---
>> note: bootlogd[132] exited with preempt_count 1
>> /etc/rcS.d/S07bootlogd: line 47: 132 Segmentation fault start-stop-daemon
>>
>> As discussed in [2], this commit makes the access to DMACR register
>> write-ignore as an improvement.
> 
> Didn't we agree to emulate all non-SBSA registers as WI? IOW, the
> default case should contain a 'goto write_ignore' rather return 0.
+ we also agreed on emulating the reads to non spec compliant registers as RAZ.

> 
>>
>> [1] 
>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.arm.com%2Fdocumentation%2Fden0094%2Fc%2F%3Flang%3Den&amp;data=05%7C01%7Cmichal.orzel%40amd.com%7C1065702b4fd2457cdbf808dacc84b45a%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638047167600786580%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=W1dbakw6lkGkv4ydElIi%2Ba7uT7e7Pt5dB3vDtYpP%2FqQ%3D&amp;reserved=0
>> [2] 
>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fxen-devel%2Falpine.DEB.2.22.394.2211161552420.4020%40ubuntu-linux-20-04-desktop%2F&amp;data=05%7C01%7Cmichal.orzel%40amd.com%7C1065702b4fd2457cdbf808dacc84b45a%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C638047167600786580%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=O4zxuI3HqRA1bdraGcVVY8vV0HGbqOI3nFa%2FciC1cGQ%3D&amp;reserved=0
>>
>> Signed-off-by: Jiamei Xie <jiamei.xie@xxxxxxx>
>> ---
>>   xen/arch/arm/vpl011.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
>> index 43522d48fd..e97fe3ebe7 100644
>> --- a/xen/arch/arm/vpl011.c
>> +++ b/xen/arch/arm/vpl011.c
>> @@ -463,6 +463,10 @@ static int vpl011_mmio_write(struct vcpu *v,
>>       case FR:
>>       case RIS:
>>       case MIS:
>> +    case DMACR:
>> +        printk(XENLOG_G_DEBUG
>> +               "vpl011: WI on register offset %#08x\n",
>> +               vpl011_reg);
> 
> IMHO, this message should be printed just after the write_ignore label.
> 
>>           goto write_ignore;
>>
>>       case IMSC:
> 
> Cheers,
> 
> --
> Julien Grall
> 

~Michal



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.