From: Jonathan Cameron via <qemu-devel@nongnu.org> To: Ani Sinha <anisinha@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, <qemu-devel@nongnu.org> Subject: Re: [PATCH] hw/i386/cxl: ensure maxram is greater than ram size for calculating cxl range Date: Thu, 12 Oct 2023 10:09:52 +0100 [thread overview] Message-ID: <20231012100952.000064e2@Huawei.com> (raw) In-Reply-To: <8E01874E-9B9D-41C5-9D88-29D9B4071BC6@redhat.com> On Thu, 12 Oct 2023 10:10:36 +0530 Ani Sinha <anisinha@redhat.com> wrote: > > On 11-Oct-2023, at 10:01 PM, Jonathan Cameron <Jonathan.Cameron@huawei.com> wrote: > > > > On Wed, 11 Oct 2023 16:23:35 +0530 > > Ani Sinha <anisinha@redhat.com> wrote: > > > >> pc_get_device_memory_range() finds the device memory size by calculating the > >> difference between maxram and ram sizes. This calculation makes sense only when > >> maxram is greater than the ram size. Make sure we check for that before calling > >> pc_get_device_memory_range(). > >> > >> Signed-off-by: Ani Sinha <anisinha@redhat.com> > > > > Whilst this is similar to other cases, I can't remember or quickly work > > out if the 'else' path here is appropriate. Can we add something to the > > patch description to talk about that? > > > > For reference it's: > > > > cxl_base = pc_above_4g_end(pcms); > > Leaving the alignment adjustments aside, the hotplugged memory devices are mapped starting from where the “above_4g” memory ends. > The cxl memory starts after the region reserved for hot plugged memory devices. If there is no hot plugged memory device region (maxmem == mem), the cxl memory can start right after where “above_4g” memory ends. > See also pc_pci_hole64_start() and pc_max_used_gpa(). > I did not want to add any alignment adjustments because I was not sure if it would add regression and incompatibility with older machine types. > Thanks for explanation. Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > >> --- > >> hw/i386/pc.c | 4 +++- > >> 1 file changed, 3 insertions(+), 1 deletion(-) > >> > >> diff --git a/hw/i386/pc.c b/hw/i386/pc.c > >> index f72e2c3b35..948c58171c 100644 > >> --- a/hw/i386/pc.c > >> +++ b/hw/i386/pc.c > >> @@ -820,10 +820,12 @@ static void pc_get_device_memory_range(PCMachineState *pcms, > >> static uint64_t pc_get_cxl_range_start(PCMachineState *pcms) > >> { > >> PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); > >> + MachineState *ms = MACHINE(pcms); > >> hwaddr cxl_base; > >> ram_addr_t size; > >> > >> - if (pcmc->has_reserved_memory) { > >> + if (pcmc->has_reserved_memory && > >> + (ms->ram_size < ms->maxram_size)) { > >> pc_get_device_memory_range(pcms, &cxl_base, &size); > >> cxl_base += size; > >> } else { > > >
WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com> To: Ani Sinha <anisinha@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, <qemu-devel@nongnu.org> Subject: Re: [PATCH] hw/i386/cxl: ensure maxram is greater than ram size for calculating cxl range Date: Thu, 12 Oct 2023 10:09:52 +0100 [thread overview] Message-ID: <20231012100952.000064e2@Huawei.com> (raw) Message-ID: <20231012090952.1RyupoflkVaPNms-xbJ5wEFeCe3is9_YRpAD4fObx-I@z> (raw) In-Reply-To: <8E01874E-9B9D-41C5-9D88-29D9B4071BC6@redhat.com> On Thu, 12 Oct 2023 10:10:36 +0530 Ani Sinha <anisinha@redhat.com> wrote: > > On 11-Oct-2023, at 10:01 PM, Jonathan Cameron <Jonathan.Cameron@huawei.com> wrote: > > > > On Wed, 11 Oct 2023 16:23:35 +0530 > > Ani Sinha <anisinha@redhat.com> wrote: > > > >> pc_get_device_memory_range() finds the device memory size by calculating the > >> difference between maxram and ram sizes. This calculation makes sense only when > >> maxram is greater than the ram size. Make sure we check for that before calling > >> pc_get_device_memory_range(). > >> > >> Signed-off-by: Ani Sinha <anisinha@redhat.com> > > > > Whilst this is similar to other cases, I can't remember or quickly work > > out if the 'else' path here is appropriate. Can we add something to the > > patch description to talk about that? > > > > For reference it's: > > > > cxl_base = pc_above_4g_end(pcms); > > Leaving the alignment adjustments aside, the hotplugged memory devices are mapped starting from where the “above_4g” memory ends. > The cxl memory starts after the region reserved for hot plugged memory devices. If there is no hot plugged memory device region (maxmem == mem), the cxl memory can start right after where “above_4g” memory ends. > See also pc_pci_hole64_start() and pc_max_used_gpa(). > I did not want to add any alignment adjustments because I was not sure if it would add regression and incompatibility with older machine types. > Thanks for explanation. Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > >> --- > >> hw/i386/pc.c | 4 +++- > >> 1 file changed, 3 insertions(+), 1 deletion(-) > >> > >> diff --git a/hw/i386/pc.c b/hw/i386/pc.c > >> index f72e2c3b35..948c58171c 100644 > >> --- a/hw/i386/pc.c > >> +++ b/hw/i386/pc.c > >> @@ -820,10 +820,12 @@ static void pc_get_device_memory_range(PCMachineState *pcms, > >> static uint64_t pc_get_cxl_range_start(PCMachineState *pcms) > >> { > >> PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); > >> + MachineState *ms = MACHINE(pcms); > >> hwaddr cxl_base; > >> ram_addr_t size; > >> > >> - if (pcmc->has_reserved_memory) { > >> + if (pcmc->has_reserved_memory && > >> + (ms->ram_size < ms->maxram_size)) { > >> pc_get_device_memory_range(pcms, &cxl_base, &size); > >> cxl_base += size; > >> } else { > > >
next prev parent reply other threads:[~2023-10-12 9:10 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-11 10:53 [PATCH] hw/i386/cxl: ensure maxram is greater than ram size for calculating cxl range Ani Sinha 2023-10-11 16:31 ` Jonathan Cameron via 2023-10-11 16:31 ` Jonathan Cameron 2023-10-12 4:40 ` Ani Sinha 2023-10-12 9:09 ` Jonathan Cameron via [this message] 2023-10-12 9:09 ` Jonathan Cameron
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=20231012100952.000064e2@Huawei.com \ --to=qemu-devel@nongnu.org \ --cc=Jonathan.Cameron@Huawei.com \ --cc=anisinha@redhat.com \ --cc=eduardo@habkost.net \ --cc=marcel.apfelbaum@gmail.com \ --cc=mst@redhat.com \ --cc=pbonzini@redhat.com \ --cc=richard.henderson@linaro.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).