From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36915) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1buHGS-0008SQ-G3 for qemu-devel@nongnu.org; Wed, 12 Oct 2016 07:00:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1buHGR-00065C-8C for qemu-devel@nongnu.org; Wed, 12 Oct 2016 07:00:00 -0400 Date: Wed, 12 Oct 2016 21:55:44 +1100 From: David Gibson Message-ID: <20161012105544.GA7184@umbus.fritz.box> References: <1476247497-6976-1-git-send-email-david@gibson.dropbear.id.au> <1476247497-6976-6-git-send-email-david@gibson.dropbear.id.au> <12227034-d184-d481-efb9-5a4bb84f98f8@redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="M9NhX3UHpAaciwkO" Content-Disposition: inline In-Reply-To: <12227034-d184-d481-efb9-5a4bb84f98f8@redhat.com> Subject: Re: [Qemu-devel] [PATCHv2 5/7] spapr: Adjust placement of PCI host bridge to allow > 1TiB RAM List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laurent Vivier Cc: agraf@suse.de, mst@redhat.com, abologna@redhat.com, aik@ozlabs.ru, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, mdroth@linux.vnet.ibm.com, benh@kernel.crashing.org --M9NhX3UHpAaciwkO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Oct 12, 2016 at 12:07:50PM +0200, Laurent Vivier wrote: >=20 >=20 > On 12/10/2016 06:44, David Gibson wrote: > > Currently the default PCI host bridge for the 'pseries' machine type is > > constructed with its IO windows in the 1TiB..(1TiB + 64GiB) range in > > guest memory space. This means that if > 1TiB of guest RAM is specifie= d, > > the RAM will collide with the PCI IO windows, causing serious problems. > >=20 > > Problems won't be obvious until guest RAM goes a bit beyond 1TiB, becau= se > > there's a little unused space at the bottom of the area reserved for PC= I, > > but essentially this means that > 1TiB of RAM has never worked with the > > pseries machine type. > >=20 > > This patch fixes this by altering the placement of PHBs on large-RAM VM= s. > > Instead of always placing the first PHB at 1TiB, it is placed at the ne= xt > > 1 TiB boundary after the maximum RAM address. > >=20 > > Technically, this changes behaviour in a migration-breaking way for > > existing machines with > 1TiB maximum memory, but since having > 1 TiB > > memory was broken anyway, this seems like a reasonable trade-off. > >=20 > > Signed-off-by: David Gibson > > --- > > hw/ppc/spapr.c | 12 ++++++++++-- > > 1 file changed, 10 insertions(+), 2 deletions(-) > >=20 > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > > index f6e9c2a..7cb167c 100644 > > --- a/hw/ppc/spapr.c > > +++ b/hw/ppc/spapr.c > > @@ -2376,15 +2376,23 @@ static void spapr_phb_placement(sPAPRMachineSta= te *spapr, uint32_t index, > > unsigned n_dma, uint32_t *liobns, Erro= r **errp) > > { > > const uint64_t base_buid =3D 0x800000020000000ULL; > > - const hwaddr phb0_base =3D 0x10000000000ULL; /* 1 TiB */ > > const hwaddr phb_spacing =3D 0x1000000000ULL; /* 64 GiB */ > > const hwaddr mmio_offset =3D 0xa0000000; /* 2 GiB + 512 MiB */ > > const hwaddr pio_offset =3D 0x80000000; /* 2 GiB */ > > const uint32_t max_index =3D 255; > > + const hwaddr phb0_alignment =3D 0x10000000000ULL; /* 1 TiB */ > > =20 > > - hwaddr phb_base; > > + uint64_t ram_top =3D MACHINE(spapr)->ram_size; > > + hwaddr phb0_base, phb_base; > > int i; > > =20 > > + if (MACHINE(spapr)->maxram_size > ram_top) { > > + ram_top =3D spapr->hotplug_memory.base + > > + memory_region_size(&spapr->hotplug_memory.mr); > > + } >=20 > Why don't you set directly ram_top to maxram_size? Because there may be an alignment gap between ram_size and the bottom of the hotplug region. >=20 > > + > > + phb0_base =3D QEMU_ALIGN_UP(ram_top, phb0_alignment); > > + > > if (index > max_index) { > > error_setg(errp, "\"index\" for PAPR PHB is too large (max %u)= ", > > max_index); > >=20 >=20 > Thanks, > Laurent >=20 --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --M9NhX3UHpAaciwkO Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJX/hatAAoJEGw4ysog2bOSeEwP/RH6Betc5aRBSDTwtHrz65hF aqKIaVgYFbkTZrPURpmgdBfBk0WgcuxuNJ5oLAWqDI4dKzjPU+xAZFVzHtpWN/4V 7oLr9CkZE0Ng4TicoInIHLYmtoyuRt8HWBlcKpZlUtexlvKwDr8K7dMnHNMz2fpp vxDl1ALxwvsQjxGPdXEkv+LjzF2REsgaq0WhU/iCkZCiCSL7ldLondX6gOdEVOig AaF9O0fdSRBhel2phOYbJ0ZEVFbyohH8FPpIqdge7RXumCQ3wvHkRbqJHkTsLBRk 4F/LR8biYM5S9qRpE6WvBn9huEsuCn33D/yCEC5iDHR0T5uqllWq1RRb5rulAGeP UVJGd40osH2XThN/CH4EzOa6ocMYSNYPrz3/q3b2HwXNUZf6vJeX8rllL6DxUEbH 5V4LTTWC8D896ApwVVSfWr21ZWBFfVsoG3T1Oz0kRCXCXvVhzjJx1FQ+ObewSIcq uwPZjZqXG8urssnTvBqz1n0HxiX8ty6XAODnERyayVWJVhPfqtz8WMzVISDrB7CO 0ZS1HO/MWAhG+Y4riAf0jBLVYHEsp8coXzI5lK5CROUUYW/3mST4Y/B0r+Ggv9JS NUc8xbfkLlHZklrkcviRbZTb6uSiYLbfR0ArSFltPheJ3nd59aqk4CgH/draTzhm sT6Y7qVwCUODcRZHfFw/ =gbex -----END PGP SIGNATURE----- --M9NhX3UHpAaciwkO--