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

RE: [XEN RFC PATCH 04/40] xen/arm: return default DMA bit width when platform is not set


  • To: Julien Grall <julien@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, "sstabellini@xxxxxxxxxx" <sstabellini@xxxxxxxxxx>
  • From: Wei Chen <Wei.Chen@xxxxxxx>
  • Date: Fri, 20 Aug 2021 09:37:52 +0000
  • Accept-language: 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=RW/gyf2iCiwYmfZT7FunosTtbcg0LG5KZYigRpBtjvI=; b=lSET7EVIEAp8g8UyoASoY2NEBexiPUbA8t9RJVd+jOh/4DBZGmMIWqSwZXQe+LMwoQbfNZ4ToQvv9JKv8uyPU5FigPGDP9orVfb+DW+9IWzGms+CArXlf2LJdbwkpEhHqavYAo2HXtFfkgdk9JtmWLsDqv4m7qjYbu5KhnOGQNjt4+eu7qnwJfHs+2oR/Apwv1VtjPfLoI05GKL14oPmnevdW3ULDYc+uQ4Bj9LyPu2UxZdyVaCMyO7zGRAkMJ8knTfohlyApE6CI/fX2bfj/RdWk42tq0KvStPGE208wTRXYI+5s5xs9nbs1MiOosXMVVR/zoT3Fhyr9C0BR9oFQQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M9QY7BNBnohxm/uTi2pEhWg37JM6K6Kg4haRuyUhr1hHvrBVnp6ParlRk4xkpoWS8aBBXIpK88CLCeCT6AkFljixhAlHHGLzudAvia1XR2SNVezi2cJGlRG3gmNHVxCZKs3W6VM/+H64KXbRp5JwdoTMtNjGkG2CqndoBlkRXCgyQ3TTsACbOFP+RULMaTfeHXQ0eIIpghAdc5l9itg9RMQo0s29Yv0usxBaFXsozZlymIIGQsdQwcd5TUkZyb3MHKKcPNSm6Y8TbVTQLesjbgEVl+B/iTZkjmaM3m8TEFYoqrDihPIMld/I2kx92qU6aasIFRwlQWyMRAB9v8Qsgw==
  • Authentication-results-original: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Cc: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • Delivery-date: Fri, 20 Aug 2021 09:38:09 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHXjpsgsRofIZVQlECQrMelX8Mpkqt63vUAgADFfsCAAHazAIAACk/g
  • Thread-topic: [XEN RFC PATCH 04/40] xen/arm: return default DMA bit width when platform is not set

Hi Julien,

> -----Original Message-----
> From: Julien Grall <julien@xxxxxxx>
> Sent: 2021年8月20日 16:20
> To: Wei Chen <Wei.Chen@xxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx;
> sstabellini@xxxxxxxxxx; jbeulich@xxxxxxxx
> Cc: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
> Subject: Re: [XEN RFC PATCH 04/40] xen/arm: return default DMA bit width
> when platform is not set
> 
> 
> 
> On 20/08/2021 03:04, Wei Chen wrote:
> > Hi Julien,
> 
> Hi Wei,
> 
> >> -----Original Message-----
> >> From: Julien Grall <julien@xxxxxxx>
> >> Sent: 2021年8月19日 21:28
> >> To: Wei Chen <Wei.Chen@xxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx;
> >> sstabellini@xxxxxxxxxx; jbeulich@xxxxxxxx
> >> Cc: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
> >> Subject: Re: [XEN RFC PATCH 04/40] xen/arm: return default DMA bit
> width
> >> when platform is not set
> >>
> >> Hi,
> >>
> >> On 11/08/2021 11:23, Wei Chen wrote:
> >>> From: Hongda Deng <Hongda.Deng@xxxxxxx>
> >>>
> >>> In current code, arch_get_dma_bitsize will return 32 when platorm
> >>> or platform->dma_bitsize is not set. It's not resonable, for Arm,
> >>
> >> s/resonable/reasonable/
> >>
> >
> > Ok
> >
> >>> we don't require to reserve DMA memory. So we set dma_bitsize always
> >>> be 0. In NO-NUMA system, arch_get_dma_bitsize will not be invoked,
> >>> so dma_bitsize will not be overrided by this function.
> >>
> >> arch_get_dma_bitsize() is also used to allocate dom0 memory. We need to
> >> be able to allocate some DMA-able memory that can be used by every
> devices.
> >>
> >>> But in NUMA
> >>> system, once the online nodes are greater than 1, this function will
> >>> be invoked. The dma_bitsize will be limited to 32. That means, only
> >>> first 4GB memory can be used for DMA. But that's against our hardware
> >>> design. We don't have that kind of restriction on hardware.
> >>
> >> What do you mean by "hardware design"? Are you referring to the server
> >> you boot Xen on?
> >>
> >
> > Yes. I will change it to some neutral words. something like:
> > "But that could not reflect some hardware's real DMA ability. They may
> not
> > have kind of restriction on hardware." ?
> 
> The thing is DMA ability is not about the platform itself. It is more
> about the devices (this could just be a PCI card you just plugged). What
> you seem to suggest is no-one will ever plug such card on your platform.
> Is that correct?
> 

OK, I understand now. Let's keep 32-bit as default value, but even in this
case, how about DMA-16 devices? Although these devices are very rare, they
still exist : )
Anyway, keep the arch_get_dma_bitsize as original maybe the best approach
for now.


> >
> >
> >> Anyway, there are plenty of platform out that have devices which can't
> >> DMA into memory above 32-bit. On RPI, this is even lower (30-bit).
> >>
> >> So I would be cautious to change the default limit.
> >>
> >
> > How about return 0 when platform doesn't specify the limit?
> > In my opinion, arbitrary to give 32 on AArch64 doesn't make sense.
> We have to care about the common use-case. We added this restriction a
> few years ago because we had a few reports of users using only 32-bit
> DMA capable device.
> 
> > But as you mentioned, if Xen is running on a platform with DMA
> limitation,
> > but we have not listed this platform in Xen supported list, Xen cannot
> > get DMA limit from platform->dma_bitsize. In this case, return 0 will
> > also cause some issue.
> >
> >> At the moment, the only place on Arm where we need DMA-able memory is
> >> for dom0. This is allocated at boot and can't change afterwards (for
> now).
> >>
> >
> > For Dom0, we squash the patch#5 into this patch?
> 
> Let me answer with another question. Why should we modify the Arm code
> rather than the common code? IOW...

As I answered above, let's keep arch_get_dma_bitsize as original then
we don't need to modify Arm code.

> 
> >
> >> So I would explore to remove the NUMA check for drop the DMA zone. FAOD,
> >> both suggestion are for Arm only. For x86, they need to be kept.
> >>
> >
> > Without introducing new flag, such as lowmem_for_dma, it's a little
> > hard to skip the numa node check. Unless we crudely add #ifdef ARCH to
> > common code, which is not what we want to see ...
> >        if ( !dma_bitsize && (num_online_nodes() > 1) )
> >            dma_bitsize = arch_get_dma_bitsize();
> 
> ... Why do you think we need this check on Arm when NUMA is enabled?
> 

I didn't think Arm needs, what I said is introduce a flag to disable
this check for Arm or other Architectures that they don't need this check.

> We can discuss how to remove it once this is answered.
> 

I think we can start to discuss it.

> Cheers,
> 
> --
> Julien Grall

 


Rackspace

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