All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: konrad.wilk@oracle.com, jeremy@goop.org, Ian.Campbell@citrix.com,
	albert_herranz@yahoo.es, x86@kernel.org,
	jbarnes@virtuousgeek.org, linux-kernel@vger.kernel.org,
	iommu@lists.linux-foundation.org, tglx@linutronix.de
Subject: Re: [PATCH 9/9] x86: Detect whether we should use Xen SWIOTLB.
Date: Tue, 27 Jul 2010 17:19:41 -0700	[thread overview]
Message-ID: <4C4F779D.9060908@zytor.com> (raw)
In-Reply-To: <20100728083526J.fujita.tomonori@lab.ntt.co.jp>

On 07/27/2010 04:36 PM, FUJITA Tomonori wrote:
>>>
>>> Is there any way we can abstract this out a bit more instead of crapping
>>> on generic code?
> 
> I don't like this change much too, however I think that this is the
> most simple and straightforward.
> 
> Basically, Xen's swiotlb works like a new IOMMU implementation so we
> need to initialize it like other IOMMU implementations (call the
> detect and init functions in order).
> 

Even mentioning "xen" in generic code should be considered a bug.  I
think we *do* need to driverize the iommu stuff, and yes, Xen's swiotlb
should just be handled like one in the list.

> 
>> I was toying with something like this:
>>
>> diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
>> index 9f07cfc..e0cd388 100644
>> --- a/arch/x86/kernel/pci-dma.c
>> +++ b/arch/x86/kernel/pci-dma.c
>> @@ -45,6 +45,25 @@ int iommu_detected __read_mostly = 0;
>>   */
>>  int iommu_pass_through __read_mostly;
>>  
>> +initcall_t __swiotlb_initcall_detect[] =
>> +	{pci_xen_swiotlb_detect,
>> +	 pci_swiotlb_detect,
>> +	NULL};
>> +
>> +initcall_t __swiotlb_initcall_init[] = {
>> +	pci_xen_swiotlb_init,
>> +	pci_swiotlb_init,
>> +	NULL};
>> +
>> +
>> +initcall_t __iommu_initcall_detect[] = {
>> +	gart_iommu_hole_init,
>> +	detect_calgary,
>> +	detect_intel_iommu,
>> +	/* needs to be called after gart_iommu_hole_init */
>> +	amd_iommu_detect,
>> +	NULL};
> 
> I really don't think that this makes the code better. I prefer the
> current simple (dumb) code.
> 

The special handling of swiotlb here really looks wrong, but otherwise I
think it's the right idea.

> btw, this comment is wrong. We check if we are forced to use SWIOTLB
> by kernel command line here.
> 
> Even if SWIOTLB works, we see if hardware IOMMU is available. SWIOTLB
> is a last resort. We prefer hardware IOMMU.

Any reason to not just handle swiotlb like any of the other iommus, at
the bottom of the list?

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


  reply	other threads:[~2010-07-28  0:20 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-27 16:59 [PATCH] Xen-SWIOTLB v0.8.6 used for Xen PCI pass through for PV guests Konrad Rzeszutek Wilk
2010-07-27 16:59 ` [PATCH 1/9] xen: use _PAGE_IOMAP in ioremap to do machine mappings Konrad Rzeszutek Wilk
2010-07-27 16:59 ` [PATCH 2/9] xen: Allow unprivileged Xen domains to create iomap pages Konrad Rzeszutek Wilk
2010-07-27 16:59 ` [PATCH 3/9] xen: Rename the balloon lock Konrad Rzeszutek Wilk
2010-07-27 16:59 ` [PATCH 4/9] xen: Add xen_create_contiguous_region Konrad Rzeszutek Wilk
2010-07-27 16:59 ` [PATCH 5/9] vmap: add flag to allow lazy unmap to be disabled at runtime Konrad Rzeszutek Wilk
2010-07-27 16:59 ` [PATCH 6/9] xen/mmu: inhibit vmap aliases rather than trying to clear them out Konrad Rzeszutek Wilk
2010-07-27 17:00 ` [PATCH 7/9] swiotlb-xen: SWIOTLB library for Xen PV guest with PCI passthrough Konrad Rzeszutek Wilk
2010-07-27 17:00 ` [PATCH 8/9] pci-swiotlb-xen: Add glue code to setup dma_ops utilizing xen_swiotlb_* functions Konrad Rzeszutek Wilk
2010-07-27 17:00 ` [PATCH 9/9] x86: Detect whether we should use Xen SWIOTLB Konrad Rzeszutek Wilk
2010-07-27 19:03   ` H. Peter Anvin
2010-07-27 19:41     ` Konrad Rzeszutek Wilk
2010-07-27 23:36       ` FUJITA Tomonori
2010-07-28  0:19         ` H. Peter Anvin [this message]
2010-07-28  0:52           ` FUJITA Tomonori
2010-07-28 22:38             ` Konrad Rzeszutek Wilk
2010-07-28 22:52               ` H. Peter Anvin
2010-07-29  7:17                 ` FUJITA Tomonori
2010-07-29 13:44                   ` H. Peter Anvin
2010-07-29 16:05                   ` Konrad Rzeszutek Wilk
2010-08-02 15:25                     ` Konrad Rzeszutek Wilk
2010-08-02 15:30                       ` H. Peter Anvin
2010-08-02 15:43                         ` FUJITA Tomonori
2010-08-02 15:47                           ` H. Peter Anvin
2010-08-02 16:01                             ` FUJITA Tomonori
2010-08-02 16:42                               ` Konrad Rzeszutek Wilk
2010-08-02 16:53                                 ` H. Peter Anvin
2010-08-03  5:35                                 ` FUJITA Tomonori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C4F779D.9060908@zytor.com \
    --to=hpa@zytor.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=albert_herranz@yahoo.es \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jbarnes@virtuousgeek.org \
    --cc=jeremy@goop.org \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.