2005-11-20 17:36:48

by Andi Kleen

[permalink] [raw]
Subject:

Sender: [email protected]
To: Adrian Bunk <[email protected]>
Cc: [email protected], [email protected]
Subject: Re: [2.6 patch] mark virt_to_bus/bus_to_virt as __deprecated on i386
References: <[email protected]>
From: Andi Kleen <[email protected]>
Date: 18 Nov 2005 17:05:07 +0100
In-Reply-To: <[email protected]>
Message-ID: <[email protected]>
Lines: 17
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii

Adrian Bunk <[email protected]> writes:

> virt_to_bus/bus_to_virt are long deprecated, mark them as __deprecated
> on i386.

I don't think you can do that. We still need these functions in low
level architecture code at least.

Using __pa/__va doesn't cut it because it won't work on Xen guests
which have different views on bus vs physical addresses. The Xen
code is (hopefully) in the process of being merged, so intentionally
breaking them isn't a good idea.

So if anything there would need to be replacement functions for it
first that do the same thing. But why not just keep the old ones?

-Andi


2005-11-21 10:04:09

by Keir Fraser

[permalink] [raw]
Subject: Re: (no subject)


On 18 Nov 2005, at 16:05, Andi Kleen wrote:

> I don't think you can do that. We still need these functions in low
> level architecture code at least.
>
> Using __pa/__va doesn't cut it because it won't work on Xen guests
> which have different views on bus vs physical addresses. The Xen
> code is (hopefully) in the process of being merged, so intentionally
> breaking them isn't a good idea.
>
> So if anything there would need to be replacement functions for it
> first that do the same thing. But why not just keep the old ones?

We could make use of virt_to_machine/machine_to_virt instead, which
arguably better describe the intent of those functions. Currently we
only use virt_to_bus/bus_to_virt in our swiotlb implementation, and our
modified dma_map code. In those files I think the existing function
names make some sense, but we can easily change if that's preferred.

-- Keir

2005-11-21 10:12:00

by Russell King

[permalink] [raw]
Subject: Re: (no subject)

On Mon, Nov 21, 2005 at 10:06:03AM +0000, Keir Fraser wrote:
> On 18 Nov 2005, at 16:05, Andi Kleen wrote:
> >I don't think you can do that. We still need these functions in low
> >level architecture code at least.
> >
> >Using __pa/__va doesn't cut it because it won't work on Xen guests
> >which have different views on bus vs physical addresses. The Xen
> >code is (hopefully) in the process of being merged, so intentionally
> >breaking them isn't a good idea.
> >
> >So if anything there would need to be replacement functions for it
> >first that do the same thing. But why not just keep the old ones?
>
> We could make use of virt_to_machine/machine_to_virt instead, which
> arguably better describe the intent of those functions. Currently we
> only use virt_to_bus/bus_to_virt in our swiotlb implementation, and our
> modified dma_map code. In those files I think the existing function
> names make some sense, but we can easily change if that's preferred.

If you're thinking of replacing bus_to_virt/virt_to_bus, you might want
to think about virt_to_dma(dev, virt) and dma_to_virt(dev, dma) as a
replacement, where "dev" is the device actually performing the DMA
(which obviously may not be the device asking for the mapping to be set
up.) ARM already has these for use in the architecture code.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core

2005-11-21 17:27:51

by Andi Kleen

[permalink] [raw]
Subject: Re: (no subject)

> We could make use of virt_to_machine/machine_to_virt instead, which

I don't like it because "machine" is quite meaningless outside
Xen.

-Andi