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

Re: Keystone Issue


  • To: CodeWiz2280 <codewiz2280@xxxxxxxxx>
  • From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • Date: Mon, 8 Jun 2020 08:40:19 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; 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-SenderADCheck; bh=q6oH/QvHYohphmH+LEG8BW35Xiym72qUOfYXpfuc0Sg=; b=aaZsVxrumIFaKPRkhaREfwrsBnsNjS7p0SlG+bcoqOqx4R9nCuyYeI8/iDj8G6Y8z3F4E/d2b4zPR60m2DwV2qaErRVKWTk1lXDC/BS+4RjsRkouqKiND7+sQdwAQrdZuDsVjQ1MvGHtg4BCjHSlrJTYNefhtIPeU8428V+MwPk4rBoUq4FboZvN0u/OEWpcE2GM0cqVLa51/1VePm/LxWxN5u1Z0LraWY6MJhBzOKWSN1Z0y6xqkOGlae451PiyTLrbXWWRy5EC1cAJfs4+kMUk77+WS1LYsUbh9Qca1BAtA+XSNH7rf8bxssvO0Ncwf13tLD7/uDqZzApozQ1tkQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gNGywbNaYzJNnD9SNEtqugmYZSeFeuWD8A2ypbqzsDwcAxBPFMYIBYw90qxlPaO0RB9ki8WpzbWbpuzvESshzr1/tRA67kru4Url0OdbfCNFGzoK6MioaoRa+RN+AjpobW6XmLEnT8VpdUrA3v7qSwHwlPrXIq3074ZMUmdtmHVsSl8TAW9WykQ0Y/GzHphYGBzJr4P4ehRpsUb0e0ToTccOXebYiBjZXWmw78UZVB8DG0ZkP5RMQI2AJxa5tVbJVUZiVMJPlFgJgjb7rB6n6r8vUIigYNWStmJcMQZWlt2EjPTFCQTPK46UBd+3EdQ2eDc0HZBQJ31uvDC6W2rBzA==
  • Authentication-results-original: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=arm.com;
  • Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, nd <nd@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>
  • Delivery-date: Mon, 08 Jun 2020 08:40:37 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHWOBaIAfEL/lLkK0WiNSn4kZcZc6jDwRQAgAAfVYCAACZwgIACvmKAgABfPYCAAA+JgIAA6NEAgAAP9wCAAAJxgIAAEuGAgAAfEwCAAGmFAIAAh2UAgABV34CAAFCtAIAAAUSAgAADZQCAAAGKgIAAJpOAgABE7QCABAZcAA==
  • Thread-topic: Keystone Issue


> On 5 Jun 2020, at 20:12, CodeWiz2280 <codewiz2280@xxxxxxxxx> wrote:
> 
> On Fri, Jun 5, 2020 at 11:05 AM CodeWiz2280 <codewiz2280@xxxxxxxxx> wrote:
>> 
>> On Fri, Jun 5, 2020 at 8:47 AM Bertrand Marquis
>> <Bertrand.Marquis@xxxxxxx> wrote:
>>> 
>>> 
>>> 
>>>> On 5 Jun 2020, at 13:42, CodeWiz2280 <codewiz2280@xxxxxxxxx> wrote:
>>>> 
>>>> On Fri, Jun 5, 2020 at 8:30 AM Julien Grall <julien@xxxxxxx> wrote:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> On 05/06/2020 13:25, CodeWiz2280 wrote:
>>>>>> The Keystone uses the netcp driver, which has interrupts from 40-79
>>>>>> listed in the device tree (arch/arm/boot/keystone-k2e-netcp.dtsi).
>>>>>> I'm using the same device tree between my non-xen standalone kernel
>>>>>> and my dom0 kernel booted by xen.  In the standalone (non-xen) kernel
>>>>>> the ethernet works fine, but I don't see any of its interrupts in the
>>>>>> output of /proc/iomem.  I'm not seeing them in /proc/iomem when
>>>>>> running dom0 under Xen either.  When booting with Xen I get this
>>>>>> behavior where the ifconfig output shows 1 RX message and 1 TX
>>>>>> message, and then nothing else.
>>>>> 
>>>>> I am not sure whether this is a typo in the e-mail. /proc/iomem is
>>>>> listing the list of the MMIO regions. You want to use /proc/interrupts.
>>>>> 
>>>>> Can you confirm which path you are dumping?
>>>> Yes, that was a typo.  Sorry about that.  I meant that I am dumping
>>>> /proc/interrupts and do not
>>>> see them under the non-xen kernel or xen booted dom0.
>>> 
>>> Could you post both /proc/interrupts content ?
>> 
>> Standalone non-xen kernel (Ethernet works)
>> # cat /proc/interrupts
>>           CPU0       CPU1       CPU2       CPU3
>> 17:          0          0          0          0     GICv2  29 Level
>>  arch_timer
>> 18:       9856       1202        457        650     GICv2  30 Level
>>  arch_timer
>> 21:          0          0          0          0     GICv2 142 Edge
>>  timer-keystone
>> 22:          0          0          0          0     GICv2  52 Edge      
>> arm-pmu
>> 23:          0          0          0          0     GICv2  53 Edge      
>> arm-pmu
>> 24:          0          0          0          0     GICv2  54 Edge      
>> arm-pmu
>> 25:          0          0          0          0     GICv2  55 Edge      
>> arm-pmu
>> 26:          0          0          0          0     GICv2  36 Edge
>>  26202a0.keystone_irq
>> 27:       1435          0          0          0     GICv2 309 Edge      ttyS0
>> 29:          0          0          0          0     GICv2 315 Edge
>>  2530000.i2c
>> 30:          1          0          0          0     GICv2 318 Edge
>>  2530400.i2c
>> 31:          0          0          0          0     GICv2 321 Edge
>>  2530800.i2c
>> 32:         69          0          0          0     GICv2 324 Edge
>>  21000400.spi
>> 33:          0          0          0          0     GICv2 328 Edge
>>  21000600.spi
>> 34:          0          0          0          0     GICv2 332 Edge
>>  21000800.spi
>> 70:          0          0          0          0     GICv2 417 Edge
>>  ks-pcie-error-irq
>> 79:          0          0          0          0   PCI-MSI   0 Edge
>>  PCIe PME, aerdrv
>> 88:         57          0          0          0     GICv2  80 Level
>>  hwqueue-528
>> 89:         57          0          0          0     GICv2  81 Level
>>  hwqueue-529
>> 90:         47          0          0          0     GICv2  82 Level
>>  hwqueue-530
>> 91:         41          0          0          0     GICv2  83 Level
>>  hwqueue-531
>> IPI0:          0          0          0          0  CPU wakeup interrupts
>> IPI1:          0          0          0          0  Timer broadcast interrupts
>> IPI2:        730        988       1058        937  Rescheduling interrupts
>> IPI3:          2          3          4          6  Function call interrupts
>> IPI4:          0          0          0          0  CPU stop interrupts
>> IPI5:          0          0          0          0  IRQ work interrupts
>> IPI6:          0          0          0          0  completion interrupts
>> 
>> Xen dom0 (Ethernet stops)
>> # cat /proc/interrupts
>>           CPU0
>> 18:      10380     GIC-0  27 Level     arch_timer
>> 19:          0     GIC-0 142 Edge      timer-keystone
>> 20:         88     GIC-0  16 Level     events
>> 21:          0   xen-dyn     Edge    -event     xenbus
>> 22:          0     GIC-0  36 Edge      26202a0.keystone_irq
>> 23:          1     GIC-0 312 Edge      ttyS0
>> 25:          1     GIC-0 318 Edge
>> 27:          1     GIC-0 324 Edge      21000400.spi
>> 28:          0     GIC-0 328 Edge      21000600.spi
>> 29:          0     GIC-0 332 Edge      21000800.spi
>> 65:          0     GIC-0 417 Edge      ks-pcie-error-irq
>> 74:          0   PCI-MSI   0 Edge      PCIe PME, aerdrv
>> 83:          1     GIC-0  80 Level     hwqueue-528
>> 84:          1     GIC-0  81 Level     hwqueue-529
>> 85:          1     GIC-0  82 Level     hwqueue-530
>> 86:          1     GIC-0  83 Level     hwqueue-531
>> 115:         87   xen-dyn     Edge    -virq      hvc_console
>> IPI0:          0  CPU wakeup interrupts
>> IPI1:          0  Timer broadcast interrupts
>> IPI2:          0  Rescheduling interrupts
>> IPI3:          0  Function call interrupts
>> IPI4:          0  CPU stop interrupts
>> IPI5:          0  IRQ work interrupts
>> IPI6:          0  completion interrupts
>> Err:          0
> After getting a chance to look at this a little more, I believe the
> TX/RX interrupts for the ethernets map like this:
> 
> eth0 Rx  - hwqueue-528
> eth1 Rx - hwqueue-529
> eth0 Tx  - hwqueue-530
> eth1 Tx - hwqueue-531
>> 
> The interrupt counts in the standlone working kernel seem to roughly
> correspond to the counts of Tx/Rx messages in ifconfig.  Going on
> that, its clear that only 1 interrupt has been received for Tx and 1
> for Rx in the Xen Dom0 equivalent.  Any thoughts on this?

This definitely look like an interrupt acknowledgement issue.
This could be caused by 2 things I remember of:
- front vs level interrupts
- a problem with forwarded interrupt acknowledgement. 
I think there was something related to that where the vcpu ack was not properly
handled on a keystone and I had to change the way the interrupt was acked for
forwarded hardware interrupts.

I will try to get more info on that one as I have no access to the code anymore.

Regards
Bertrand








 


Rackspace

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