* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of
[not found] ` <200811112347.27844.rusty@rustcorp.com.au>
@ 2008-11-11 17:18 ` Hollis Blanchard
0 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-11 17:18 UTC (permalink / raw)
To: Avi Kivity; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc, Rusty Russell
On Tue, 2008-11-11 at 23:47 +1030, Rusty Russell wrote:
> On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
>
> > Both sides of the virtio interface must agree about how big a pfn
> really
>
> > is. This is particularly an issue on architectures where the page
> size is
>
> > configurable (e.g. PowerPC, IA64) -- the interface must be
> independent of
>
> > PAGE_SHIFT.
>
> Thanks Hollis! Applied, with the following overpatch:
Avi, will you commit the matching qemu patch? (I'm not clear on the
patch flow for kvm-userspace qemu virtio patches.)
--
Hollis Blanchard
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-11 17:18 ` Hollis Blanchard
0 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-11 17:18 UTC (permalink / raw)
To: Avi Kivity; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc, Rusty Russell
On Tue, 2008-11-11 at 23:47 +1030, Rusty Russell wrote:
> On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
>
> > Both sides of the virtio interface must agree about how big a pfn
> really
>
> > is. This is particularly an issue on architectures where the page
> size is
>
> > configurable (e.g. PowerPC, IA64) -- the interface must be
> independent of
>
> > PAGE_SHIFT.
>
> Thanks Hollis! Applied, with the following overpatch:
Avi, will you commit the matching qemu patch? (I'm not clear on the
patch flow for kvm-userspace qemu virtio patches.)
--
Hollis Blanchard
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page
2008-11-11 17:18 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size" Hollis Blanchard
@ 2008-11-11 17:21 ` Avi Kivity
-1 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2008-11-11 17:21 UTC (permalink / raw)
To: Hollis Blanchard
Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc, Rusty Russell
Hollis Blanchard wrote:
> Avi, will you commit the matching qemu patch? (I'm not clear on the
> patch flow for kvm-userspace qemu virtio patches.)
>
At this time, I'm accepting qemu/virtio patches (and will apply this
one); once virtio is merged in qemu upstream, patches will have to go
there as well.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-11 17:21 ` Avi Kivity
0 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2008-11-11 17:21 UTC (permalink / raw)
To: Hollis Blanchard
Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc, Rusty Russell
Hollis Blanchard wrote:
> Avi, will you commit the matching qemu patch? (I'm not clear on the
> patch flow for kvm-userspace qemu virtio patches.)
>
At this time, I'm accepting qemu/virtio patches (and will apply this
one); once virtio is merged in qemu upstream, patches will have to go
there as well.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
[not found] <fa3de103a4e7d70354e0.1226360229@localhost.localdomain>
@ 2008-11-12 12:33 ` Rusty Russell
2008-11-12 12:33 ` Rusty Russell
1 sibling, 0 replies; 16+ messages in thread
From: Rusty Russell @ 2008-11-12 12:21 UTC (permalink / raw)
To: Hollis Blanchard; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc
On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
> Both sides of the virtio interface must agree about how big a pfn really
> is. This is particularly an issue on architectures where the page size is
> configurable (e.g. PowerPC, IA64) -- the interface must be independent of
> PAGE_SHIFT.
>
> Currently there are three distinct problems:
> * The shift count used when passing the physical address of the ring to a
> PCI-based back end.
> * The ring layout itself is padded to span at least two "pages".
> * The balloon driver operates in units of "pages".
Hi Hollis,
The more I thought about this, the more I think we're not solving this
as neatly as we could. The trigger was noting that we're breaking the
userspace API (vring_size and vring_init are exposed to userspace): I
know that qemu cut & pastes, but that's no excuse.
So instead, I've introduced separate constants for each use. Yes,
all these constants are 12/4096. But just to be contrary, at the end
is a patch to change lguest to 128. And there's no reason this
couldn't change in future using some guest detection scheme.
Patch stream to follow...
Rusty.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-12 12:33 ` Rusty Russell
0 siblings, 0 replies; 16+ messages in thread
From: Rusty Russell @ 2008-11-12 12:33 UTC (permalink / raw)
To: Hollis Blanchard; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc
On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
> Both sides of the virtio interface must agree about how big a pfn really
> is. This is particularly an issue on architectures where the page size is
> configurable (e.g. PowerPC, IA64) -- the interface must be independent of
> PAGE_SHIFT.
>
> Currently there are three distinct problems:
> * The shift count used when passing the physical address of the ring to a
> PCI-based back end.
> * The ring layout itself is padded to span at least two "pages".
> * The balloon driver operates in units of "pages".
Hi Hollis,
The more I thought about this, the more I think we're not solving this
as neatly as we could. The trigger was noting that we're breaking the
userspace API (vring_size and vring_init are exposed to userspace): I
know that qemu cut & pastes, but that's no excuse.
So instead, I've introduced separate constants for each use. Yes,
all these constants are 12/4096. But just to be contrary, at the end
is a patch to change lguest to 128. And there's no reason this
couldn't change in future using some guest detection scheme.
Patch stream to follow...
Rusty.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of
[not found] ` <200811122251.14159.rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
@ 2008-11-12 16:16 ` Hollis Blanchard
0 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-12 16:16 UTC (permalink / raw)
To: Rusty Russell
Cc: aliguori-r/Jw6+rmf7HQT0dZR+AlfA, markmc-H+wXaHxf7aLQT0dZR+AlfA,
xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w, kvm-u79uwXL29TY76Z2rM5mHXA,
kvm-ppc-u79uwXL29TY76Z2rM5mHXA
On Wed, 2008-11-12 at 22:51 +1030, Rusty Russell wrote:
> On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
> > Both sides of the virtio interface must agree about how big a pfn really
> > is. This is particularly an issue on architectures where the page size is
> > configurable (e.g. PowerPC, IA64) -- the interface must be independent of
> > PAGE_SHIFT.
> >
> > Currently there are three distinct problems:
> > * The shift count used when passing the physical address of the ring to a
> > PCI-based back end.
> > * The ring layout itself is padded to span at least two "pages".
> > * The balloon driver operates in units of "pages".
>
> Hi Hollis,
>
> The more I thought about this, the more I think we're not solving this
> as neatly as we could. The trigger was noting that we're breaking the
> userspace API (vring_size and vring_init are exposed to userspace): I
> know that qemu cut & pastes, but that's no excuse.
>
> So instead, I've introduced separate constants for each use. Yes,
> all these constants are 12/4096. But just to be contrary, at the end
> is a patch to change lguest to 128. And there's no reason this
> couldn't change in future using some guest detection scheme.
OK. I thought it was simpler to just say "4KB everywhere" in all aspects
of the virtio interface, but I'm happy as long as we solve the problem
somehow. :)
--
Hollis Blanchard
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-12 16:16 ` Hollis Blanchard
0 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-12 16:16 UTC (permalink / raw)
To: Rusty Russell
Cc: aliguori-r/Jw6+rmf7HQT0dZR+AlfA, markmc-H+wXaHxf7aLQT0dZR+AlfA,
xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w, kvm-u79uwXL29TY76Z2rM5mHXA,
kvm-ppc-u79uwXL29TY76Z2rM5mHXA
On Wed, 2008-11-12 at 22:51 +1030, Rusty Russell wrote:
> On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
> > Both sides of the virtio interface must agree about how big a pfn really
> > is. This is particularly an issue on architectures where the page size is
> > configurable (e.g. PowerPC, IA64) -- the interface must be independent of
> > PAGE_SHIFT.
> >
> > Currently there are three distinct problems:
> > * The shift count used when passing the physical address of the ring to a
> > PCI-based back end.
> > * The ring layout itself is padded to span at least two "pages".
> > * The balloon driver operates in units of "pages".
>
> Hi Hollis,
>
> The more I thought about this, the more I think we're not solving this
> as neatly as we could. The trigger was noting that we're breaking the
> userspace API (vring_size and vring_init are exposed to userspace): I
> know that qemu cut & pastes, but that's no excuse.
>
> So instead, I've introduced separate constants for each use. Yes,
> all these constants are 12/4096. But just to be contrary, at the end
> is a patch to change lguest to 128. And there's no reason this
> couldn't change in future using some guest detection scheme.
OK. I thought it was simpler to just say "4KB everywhere" in all aspects
of the virtio interface, but I'm happy as long as we solve the problem
somehow. :)
--
Hollis Blanchard
IBM Linux Technology Center
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
2008-11-12 16:16 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size" Hollis Blanchard
@ 2008-11-12 22:26 ` Rusty Russell
-1 siblings, 0 replies; 16+ messages in thread
From: Rusty Russell @ 2008-11-12 22:14 UTC (permalink / raw)
To: Hollis Blanchard; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc
On Thursday 13 November 2008 02:46:31 Hollis Blanchard wrote:
> On Wed, 2008-11-12 at 22:51 +1030, Rusty Russell wrote:
> > On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
> > > Both sides of the virtio interface must agree about how big a pfn
> > > really is. This is particularly an issue on architectures where the
> > > page size is configurable (e.g. PowerPC, IA64) -- the interface must be
> > > independent of PAGE_SHIFT.
> > >
> > > Currently there are three distinct problems:
> > > * The shift count used when passing the physical address of the ring to
> > > a PCI-based back end.
> > > * The ring layout itself is padded to span at least two "pages".
> > > * The balloon driver operates in units of "pages".
> >
> > Hi Hollis,
> >
> > The more I thought about this, the more I think we're not solving this
> > as neatly as we could. The trigger was noting that we're breaking the
> > userspace API (vring_size and vring_init are exposed to userspace): I
> > know that qemu cut & pastes, but that's no excuse.
> >
> > So instead, I've introduced separate constants for each use. Yes,
> > all these constants are 12/4096. But just to be contrary, at the end
> > is a patch to change lguest to 128. And there's no reason this
> > couldn't change in future using some guest detection scheme.
>
> OK. I thought it was simpler to just say "4KB everywhere" in all aspects
> of the virtio interface, but I'm happy as long as we solve the problem
> somehow. :)
It is simpler, yes, but we can take this opportunity to deconflate them and
make things clearer and better than the current code, not just "fix" it.
Note that I still don't have a balloon patch: want to send me one?
Thanks,
Rusty.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-12 22:26 ` Rusty Russell
0 siblings, 0 replies; 16+ messages in thread
From: Rusty Russell @ 2008-11-12 22:26 UTC (permalink / raw)
To: Hollis Blanchard; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc
On Thursday 13 November 2008 02:46:31 Hollis Blanchard wrote:
> On Wed, 2008-11-12 at 22:51 +1030, Rusty Russell wrote:
> > On Tuesday 11 November 2008 10:07:09 Hollis Blanchard wrote:
> > > Both sides of the virtio interface must agree about how big a pfn
> > > really is. This is particularly an issue on architectures where the
> > > page size is configurable (e.g. PowerPC, IA64) -- the interface must be
> > > independent of PAGE_SHIFT.
> > >
> > > Currently there are three distinct problems:
> > > * The shift count used when passing the physical address of the ring to
> > > a PCI-based back end.
> > > * The ring layout itself is padded to span at least two "pages".
> > > * The balloon driver operates in units of "pages".
> >
> > Hi Hollis,
> >
> > The more I thought about this, the more I think we're not solving this
> > as neatly as we could. The trigger was noting that we're breaking the
> > userspace API (vring_size and vring_init are exposed to userspace): I
> > know that qemu cut & pastes, but that's no excuse.
> >
> > So instead, I've introduced separate constants for each use. Yes,
> > all these constants are 12/4096. But just to be contrary, at the end
> > is a patch to change lguest to 128. And there's no reason this
> > couldn't change in future using some guest detection scheme.
>
> OK. I thought it was simpler to just say "4KB everywhere" in all aspects
> of the virtio interface, but I'm happy as long as we solve the problem
> somehow. :)
It is simpler, yes, but we can take this opportunity to deconflate them and
make things clearer and better than the current code, not just "fix" it.
Note that I still don't have a balloon patch: want to send me one?
Thanks,
Rusty.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of
2008-11-12 22:26 ` Rusty Russell
@ 2008-11-13 21:48 ` Hollis Blanchard
-1 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-13 21:48 UTC (permalink / raw)
To: Rusty Russell; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc
On Thu, 2008-11-13 at 08:44 +1030, Rusty Russell wrote:
>
> Note that I still don't have a balloon patch: want to send me one?
linux: virtio-balloon: avoid implicit use of Linux page size in balloon interface
Make the balloon interface always use 4K pages, and convert Linux pfns if
necessary. This patch assumes that Linux's PAGE_SHIFT will never be less than
12.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
---
Only build-tested.
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -56,6 +56,14 @@ static struct virtio_device_id id_table[
{ 0 },
};
+static u32 page_to_balloon_pfn(struct page *page)
+{
+ unsigned long pfn = page_to_pfn(page);
+
+ /* Convert pfn from Linux page size to balloon page size. */
+ return pfn >> (PAGE_SHIFT - VIRTIO_BALLOON_PFN_SHIFT);
+}
+
static void balloon_ack(struct virtqueue *vq)
{
struct virtio_balloon *vb;
@@ -99,7 +107,7 @@ static void fill_balloon(struct virtio_b
msleep(200);
break;
}
- vb->pfns[vb->num_pfns] = page_to_pfn(page);
+ vb->pfns[vb->num_pfns] = page_to_balloon_pfn(page);
totalram_pages--;
vb->num_pages++;
list_add(&page->lru, &vb->pages);
@@ -132,7 +140,7 @@ static void leak_balloon(struct virtio_b
for (vb->num_pfns = 0; vb->num_pfns < num; vb->num_pfns++) {
page = list_first_entry(&vb->pages, struct page, lru);
list_del(&page->lru);
- vb->pfns[vb->num_pfns] = page_to_pfn(page);
+ vb->pfns[vb->num_pfns] = page_to_balloon_pfn(page);
vb->num_pages--;
}
diff --git a/include/linux/virtio_balloon.h b/include/linux/virtio_balloon.h
--- a/include/linux/virtio_balloon.h
+++ b/include/linux/virtio_balloon.h
@@ -10,6 +10,9 @@
/* The feature bitmap for virtio balloon */
#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
+/* Size of a PFN in the balloon interface. */
+#define VIRTIO_BALLOON_PFN_SHIFT 12
+
struct virtio_balloon_config
{
/* Number of pages host wants Guest to give up. */
--
Hollis Blanchard
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-13 21:48 ` Hollis Blanchard
0 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-13 21:48 UTC (permalink / raw)
To: Rusty Russell; +Cc: aliguori, markmc, xiantao.zhang, kvm, kvm-ppc
On Thu, 2008-11-13 at 08:44 +1030, Rusty Russell wrote:
>
> Note that I still don't have a balloon patch: want to send me one?
linux: virtio-balloon: avoid implicit use of Linux page size in balloon interface
Make the balloon interface always use 4K pages, and convert Linux pfns if
necessary. This patch assumes that Linux's PAGE_SHIFT will never be less than
12.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
---
Only build-tested.
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -56,6 +56,14 @@ static struct virtio_device_id id_table[
{ 0 },
};
+static u32 page_to_balloon_pfn(struct page *page)
+{
+ unsigned long pfn = page_to_pfn(page);
+
+ /* Convert pfn from Linux page size to balloon page size. */
+ return pfn >> (PAGE_SHIFT - VIRTIO_BALLOON_PFN_SHIFT);
+}
+
static void balloon_ack(struct virtqueue *vq)
{
struct virtio_balloon *vb;
@@ -99,7 +107,7 @@ static void fill_balloon(struct virtio_b
msleep(200);
break;
}
- vb->pfns[vb->num_pfns] = page_to_pfn(page);
+ vb->pfns[vb->num_pfns] = page_to_balloon_pfn(page);
totalram_pages--;
vb->num_pages++;
list_add(&page->lru, &vb->pages);
@@ -132,7 +140,7 @@ static void leak_balloon(struct virtio_b
for (vb->num_pfns = 0; vb->num_pfns < num; vb->num_pfns++) {
page = list_first_entry(&vb->pages, struct page, lru);
list_del(&page->lru);
- vb->pfns[vb->num_pfns] = page_to_pfn(page);
+ vb->pfns[vb->num_pfns] = page_to_balloon_pfn(page);
vb->num_pages--;
}
diff --git a/include/linux/virtio_balloon.h b/include/linux/virtio_balloon.h
--- a/include/linux/virtio_balloon.h
+++ b/include/linux/virtio_balloon.h
@@ -10,6 +10,9 @@
/* The feature bitmap for virtio balloon */
#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
+/* Size of a PFN in the balloon interface. */
+#define VIRTIO_BALLOON_PFN_SHIFT 12
+
struct virtio_balloon_config
{
/* Number of pages host wants Guest to give up. */
--
Hollis Blanchard
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of
[not found] ` <200811130844.57749.rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
@ 2008-11-13 21:49 ` Hollis Blanchard
0 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-13 21:49 UTC (permalink / raw)
To: Rusty Russell
Cc: aliguori-r/Jw6+rmf7HQT0dZR+AlfA, markmc-H+wXaHxf7aLQT0dZR+AlfA,
xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w, kvm-u79uwXL29TY76Z2rM5mHXA,
kvm-ppc-u79uwXL29TY76Z2rM5mHXA
On Thu, 2008-11-13 at 08:44 +1030, Rusty Russell wrote:
>
> Note that I still don't have a balloon patch: want to send me one?
qemu: virtio-balloon: don't use TARGET_PAGE_BITS in balloon interface
Make the balloon interface always use 4K pages.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
---
Only build-tested.
diff --git a/qemu/hw/virtio-balloon.c b/qemu/hw/virtio-balloon.c
--- a/qemu/hw/virtio-balloon.c
+++ b/qemu/hw/virtio-balloon.c
@@ -87,7 +87,7 @@ static void virtio_balloon_handle_output
ram_addr_t pa;
ram_addr_t addr;
- pa = (ram_addr_t)ldl_p(&pfn) << TARGET_PAGE_BITS;
+ pa = (ram_addr_t)ldl_p(&pfn) << VIRTIO_BALLOON_PFN_SHIFT;
offset += 4;
addr = cpu_get_physical_page_desc(pa);
@@ -135,11 +135,11 @@ static ram_addr_t virtio_balloon_to_targ
target = ram_size;
if (target) {
- dev->num_pages = (ram_size - target) >> TARGET_PAGE_BITS;
+ dev->num_pages = (ram_size - target) >> VIRTIO_BALLOON_PFN_SHIFT;
virtio_notify_config(&dev->vdev);
}
- return ram_size - (dev->actual << TARGET_PAGE_BITS);
+ return ram_size - (dev->actual << VIRTIO_BALLOON_PFN_SHIFT);
}
static void virtio_balloon_save(QEMUFile *f, void *opaque)
diff --git a/qemu/hw/virtio-balloon.h b/qemu/hw/virtio-balloon.h
--- a/qemu/hw/virtio-balloon.h
+++ b/qemu/hw/virtio-balloon.h
@@ -23,6 +23,9 @@
/* The feature bitmap for virtio balloon */
#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
+/* Size of a PFN in the balloon interface. */
+#define VIRTIO_BALLOON_PFN_SHIFT 12
+
struct virtio_balloon_config
{
/* Number of pages host wants Guest to give up. */
--
Hollis Blanchard
IBM Linux Technology Center
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-13 21:49 ` Hollis Blanchard
0 siblings, 0 replies; 16+ messages in thread
From: Hollis Blanchard @ 2008-11-13 21:49 UTC (permalink / raw)
To: Rusty Russell
Cc: aliguori-r/Jw6+rmf7HQT0dZR+AlfA, markmc-H+wXaHxf7aLQT0dZR+AlfA,
xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w, kvm-u79uwXL29TY76Z2rM5mHXA,
kvm-ppc-u79uwXL29TY76Z2rM5mHXA
On Thu, 2008-11-13 at 08:44 +1030, Rusty Russell wrote:
>
> Note that I still don't have a balloon patch: want to send me one?
qemu: virtio-balloon: don't use TARGET_PAGE_BITS in balloon interface
Make the balloon interface always use 4K pages.
Signed-off-by: Hollis Blanchard <hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
Only build-tested.
diff --git a/qemu/hw/virtio-balloon.c b/qemu/hw/virtio-balloon.c
--- a/qemu/hw/virtio-balloon.c
+++ b/qemu/hw/virtio-balloon.c
@@ -87,7 +87,7 @@ static void virtio_balloon_handle_output
ram_addr_t pa;
ram_addr_t addr;
- pa = (ram_addr_t)ldl_p(&pfn) << TARGET_PAGE_BITS;
+ pa = (ram_addr_t)ldl_p(&pfn) << VIRTIO_BALLOON_PFN_SHIFT;
offset += 4;
addr = cpu_get_physical_page_desc(pa);
@@ -135,11 +135,11 @@ static ram_addr_t virtio_balloon_to_targ
target = ram_size;
if (target) {
- dev->num_pages = (ram_size - target) >> TARGET_PAGE_BITS;
+ dev->num_pages = (ram_size - target) >> VIRTIO_BALLOON_PFN_SHIFT;
virtio_notify_config(&dev->vdev);
}
- return ram_size - (dev->actual << TARGET_PAGE_BITS);
+ return ram_size - (dev->actual << VIRTIO_BALLOON_PFN_SHIFT);
}
static void virtio_balloon_save(QEMUFile *f, void *opaque)
diff --git a/qemu/hw/virtio-balloon.h b/qemu/hw/virtio-balloon.h
--- a/qemu/hw/virtio-balloon.h
+++ b/qemu/hw/virtio-balloon.h
@@ -23,6 +23,9 @@
/* The feature bitmap for virtio balloon */
#define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
+/* Size of a PFN in the balloon interface. */
+#define VIRTIO_BALLOON_PFN_SHIFT 12
+
struct virtio_balloon_config
{
/* Number of pages host wants Guest to give up. */
--
Hollis Blanchard
IBM Linux Technology Center
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
[not found] ` <1226612913.5339.42.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
@ 2008-11-14 1:39 ` Rusty Russell
0 siblings, 0 replies; 16+ messages in thread
From: Rusty Russell @ 2008-11-14 1:27 UTC (permalink / raw)
To: Hollis Blanchard
Cc: aliguori-r/Jw6+rmf7HQT0dZR+AlfA, markmc-H+wXaHxf7aLQT0dZR+AlfA,
xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w, kvm-u79uwXL29TY76Z2rM5mHXA,
kvm-ppc-u79uwXL29TY76Z2rM5mHXA
On Friday 14 November 2008 08:18:33 Hollis Blanchard wrote:
> On Thu, 2008-11-13 at 08:44 +1030, Rusty Russell wrote:
> > Note that I still don't have a balloon patch: want to send me one?
>
> linux: virtio-balloon: avoid implicit use of Linux page size in balloon
> interface
Thanks, applied with following diff:
Use tabs to indent, and put BUILD_BUG_ON pagesize assumption.
Signed-off-by: Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
diff -r 50e970613233 drivers/virtio/virtio_balloon.c
--- a/drivers/virtio/virtio_balloon.c Fri Nov 14 11:40:38 2008 +1030
+++ b/drivers/virtio/virtio_balloon.c Fri Nov 14 11:41:19 2008 +1030
@@ -58,10 +58,11 @@
static u32 page_to_balloon_pfn(struct page *page)
{
- unsigned long pfn = page_to_pfn(page);
+ unsigned long pfn = page_to_pfn(page);
- /* Convert pfn from Linux page size to balloon page size. */
- return pfn >> (PAGE_SHIFT - VIRTIO_BALLOON_PFN_SHIFT);
+ BUILD_BUG_ON(PAGE_SHIFT < VIRTIO_BALLOON_PFN_SHIFT);
+ /* Convert pfn from Linux page size to balloon page size. */
+ return pfn >> (PAGE_SHIFT - VIRTIO_BALLOON_PFN_SHIFT);
}
static void balloon_ack(struct virtqueue *vq)
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size"
@ 2008-11-14 1:39 ` Rusty Russell
0 siblings, 0 replies; 16+ messages in thread
From: Rusty Russell @ 2008-11-14 1:39 UTC (permalink / raw)
To: Hollis Blanchard
Cc: aliguori-r/Jw6+rmf7HQT0dZR+AlfA, markmc-H+wXaHxf7aLQT0dZR+AlfA,
xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w, kvm-u79uwXL29TY76Z2rM5mHXA,
kvm-ppc-u79uwXL29TY76Z2rM5mHXA
On Friday 14 November 2008 08:18:33 Hollis Blanchard wrote:
> On Thu, 2008-11-13 at 08:44 +1030, Rusty Russell wrote:
> > Note that I still don't have a balloon patch: want to send me one?
>
> linux: virtio-balloon: avoid implicit use of Linux page size in balloon
> interface
Thanks, applied with following diff:
Use tabs to indent, and put BUILD_BUG_ON pagesize assumption.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
diff -r 50e970613233 drivers/virtio/virtio_balloon.c
--- a/drivers/virtio/virtio_balloon.c Fri Nov 14 11:40:38 2008 +1030
+++ b/drivers/virtio/virtio_balloon.c Fri Nov 14 11:41:19 2008 +1030
@@ -58,10 +58,11 @@
static u32 page_to_balloon_pfn(struct page *page)
{
- unsigned long pfn = page_to_pfn(page);
+ unsigned long pfn = page_to_pfn(page);
- /* Convert pfn from Linux page size to balloon page size. */
- return pfn >> (PAGE_SHIFT - VIRTIO_BALLOON_PFN_SHIFT);
+ BUILD_BUG_ON(PAGE_SHIFT < VIRTIO_BALLOON_PFN_SHIFT);
+ /* Convert pfn from Linux page size to balloon page size. */
+ return pfn >> (PAGE_SHIFT - VIRTIO_BALLOON_PFN_SHIFT);
}
static void balloon_ack(struct virtqueue *vq)
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-11-14 1:39 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <fa3de103a4e7d70354e0.1226360229@localhost.localdomain>
[not found] ` <200811112347.27844.rusty@rustcorp.com.au>
2008-11-11 17:18 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of Hollis Blanchard
2008-11-11 17:18 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size" Hollis Blanchard
2008-11-11 17:21 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page Avi Kivity
2008-11-11 17:21 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size" Avi Kivity
2008-11-12 12:21 ` Rusty Russell
2008-11-12 12:33 ` Rusty Russell
[not found] ` <200811122251.14159.rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2008-11-12 16:16 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of Hollis Blanchard
2008-11-12 16:16 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size" Hollis Blanchard
2008-11-12 22:14 ` Rusty Russell
2008-11-12 22:26 ` Rusty Russell
2008-11-13 21:48 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of Hollis Blanchard
2008-11-13 21:48 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size" Hollis Blanchard
[not found] ` <1226612913.5339.42.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-11-14 1:27 ` Rusty Russell
2008-11-14 1:39 ` Rusty Russell
[not found] ` <200811130844.57749.rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2008-11-13 21:49 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of Hollis Blanchard
2008-11-13 21:49 ` [PATCH] [v2] linux: virtio: Standardize virtio's concept of "page size" Hollis Blanchard
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.