mbox series

[PATCH-for-4.2,v10,00/11] ARM virt: ACPI memory hotplug support

Message ID 20190904085629.13872-1-shameerali.kolothum.thodi@huawei.com
Headers show
Series ARM virt: ACPI memory hotplug support | expand

Message

Shameerali Kolothum Thodi Sept. 4, 2019, 8:56 a.m. UTC
This series is an attempt to provide device memory hotplug support 
on ARM virt platform. This is based on Eric's recent works here[1]
and carries some of the pc-dimm related patches dropped from his
series.

The kernel support for arm64 memory hot add was added recently by
Robin and hence the guest kernel should be => 5.0-rc1.

NVDIM support is not included currently as we still have an unresolved
issue while hot adding NVDIMM[2]. However NVDIMM cold plug patches
can be included, but not done for now, for keeping it simple.

This makes use of GED device to sent hotplug ACPI events to the
Guest. GED code is based on Nemu. Thanks to the efforts of Samuel and
Sebastien to add the hardware-reduced support to Nemu using GED
device[3]. (Please shout if I got the author/signed-off wrong for
those patches or missed any names).

This is sanity tested on a HiSilicon ARM64 platform and appreciate
any further testing.

Note:
Attempted adding dimm_pxm test case to bios-tables-test for arm/virt.
But noticed the issue decribed here[5]. This is under investigation 
now.

Thanks,
Shameer

[1] https://patchwork.kernel.org/cover/10837565/
[2] https://patchwork.kernel.org/cover/10783589/
[3] https://github.com/intel/nemu/blob/topic/virt-x86/hw/acpi/ged.c
[4] http://lists.infradead.org/pipermail/linux-arm-kernel/2019-May/651763.html
[5] https://www.mail-archive.com/qemu-devel@nongnu.org/msg632651.html

v9 --> v10
 -Fix for "make check" failure on x86_64(Patch #1).
 -Minor updates based on Eric's comments.
 -Dropped patch "hw/arm/virt: Add 4.2 machine type" as this is already
  in master now.
 -Added R-by tags by Eric.

v8 --> v9
 -Changes related to GED being a TYPE_SYS_BUS_DEVICE now.
 -Re-arranged patches 8 and 9.
 -Added GED ABI documentation(patch #10).
 -Added numamem and memhp tests to arm/virt(#11 and #12)
 -Dropped few R-by tags as code has changed a bit.
 -Please see Individual patch history for details.
 
v7 --> v8
 -Addressed comments from Igor.Please see individual patches.
 -Updated bios-tables-test-allowed-diff.h to avoid "make check"
  failure (patch #6) and dropped patch #10
 -Added Igor's R-by to patches 4 & 5.
 -Dropped Erics's R-by from patch #9 for now.

v6 --> v7
- Added 4.2 machine support and restricted GED creation for < 4.2
  This is to address the migration test fail reported by Eric.
- Included "tests: Update DSDT ACPI table.." patch(#10) from Eric
  to fix the "make check" bios-tables-test failure.
  
v5 --> v6

-Addressed comments from Eric.
-Added R-by from Eric and Igor.

v4 --> v5
-Removed gsi/ged-irq routing in virt.
-Added Migration support.
-Dropped support for DT coldplug case based on the discussions
 here[4]
-Added system_powerdown support through GED.

v3 --> v4
Addressed comments from Igor and Eric,
-Renamed "virt-acpi" to "acpi-ged".
-Changed ged device parent to TYPE_DEVICE.
-Introduced DT memory node property "hotpluggable" to resolve device
 memory being treated as early boot memory issue(patch #7).
-Combined patches #3 and #9 from v3 into #3.

v2 --> v3

Addressed comments from Igor and Eric,
-Made virt acpi device platform independent and moved
 to hw/acpi/generic_event_device.c
-Moved ged specific code into hw/acpi/generic_event_device.c
-Introduced an opt-in feature "fdt" to resolve device-memory being
 treated as early boot memory.
-Dropped patch #1 from v2.

RFC --> v2

-Use GED device instead of GPIO for ACPI hotplug events.
-Removed NVDIMM support for now.
-Includes dropped patches from Eric's v9 series.

Eric Auger (1):
  hw/arm/virt: Add memory hotplug framework

Samuel Ortiz (2):
  hw/acpi: Do not create memory hotplug method when handler is not
    defined
  hw/acpi: Add ACPI Generic Event Device Support

Shameer Kolothum (8):
  hw/acpi: Make ACPI IO address space configurable
  hw/arm/virt: Enable device memory cold/hot plug with ACPI boot
  hw/arm/virt-acpi-build: Add PC-DIMM in SRAT
  hw/arm: Factor out powerdown notifier from GPIO
  hw/arm: Use GED for system_powerdown event
  docs/specs: Add ACPI GED documentation
  tests: add dummy ACPI tables for arm/virt board
  tests: Add bios tests to arm/virt

 docs/specs/acpi_hw_reduced_hotplug.txt |  60 +++++
 hw/acpi/Kconfig                        |   4 +
 hw/acpi/Makefile.objs                  |   1 +
 hw/acpi/generic_event_device.c         | 325 +++++++++++++++++++++++++
 hw/acpi/memory_hotplug.c               |  43 ++--
 hw/arm/Kconfig                         |   4 +
 hw/arm/virt-acpi-build.c               |  31 ++-
 hw/arm/virt.c                          | 127 +++++++++-
 hw/i386/acpi-build.c                   |   7 +-
 hw/i386/pc.c                           |   3 +
 include/hw/acpi/acpi_dev_interface.h   |   1 +
 include/hw/acpi/generic_event_device.h | 103 ++++++++
 include/hw/acpi/memory_hotplug.h       |   9 +-
 include/hw/arm/virt.h                  |   5 +
 include/hw/i386/pc.h                   |   3 +
 tests/bios-tables-test-allowed-diff.h  |   2 +
 tests/bios-tables-test.c               |  49 ++++
 tests/data/acpi/virt/SLIT              | Bin 0 -> 48 bytes
 tests/data/acpi/virt/SRAT              | Bin 0 -> 224 bytes
 19 files changed, 736 insertions(+), 41 deletions(-)
 create mode 100644 docs/specs/acpi_hw_reduced_hotplug.txt
 create mode 100644 hw/acpi/generic_event_device.c
 create mode 100644 include/hw/acpi/generic_event_device.h
 create mode 100644 tests/data/acpi/virt/SLIT
 create mode 100644 tests/data/acpi/virt/SRAT

-- 
2.17.1

Comments

Shameerali Kolothum Thodi Sept. 4, 2019, 8:56 a.m. UTC | #1
This patch is in preparation for adding numamem and memhp tests
to arm/virt board so that 'make check' is happy. This may not
be required once the scripts are run and new tables are
generated with ".numamem" and ".memhp" extensions.

Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

---
I am not sure this is the right way to do this. But without this, when
the numamem and memhp tests are added, you will get,

Looking for expected file 'tests/data/acpi/virt/SRAT.numamem'
Looking for expected file 'tests/data/acpi/virt/SRAT'
**
ERROR:tests/bios-tables-test.c:327:load_expected_aml: assertion failed: (exp_sdt.aml_file)

---
 tests/data/acpi/virt/SLIT | Bin 0 -> 48 bytes
 tests/data/acpi/virt/SRAT | Bin 0 -> 224 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 tests/data/acpi/virt/SLIT
 create mode 100644 tests/data/acpi/virt/SRAT

diff --git a/tests/data/acpi/virt/SLIT b/tests/data/acpi/virt/SLIT
new file mode 100644
index 0000000000000000000000000000000000000000..74ec3b4b461ffecca36d8537975c202a5f011185
GIT binary patch
literal 48
scmWIc@eDCwU|?X>aq@Te2v%^42yhMtiZKGkKx`1r1jHb~B`V4V0NaKK0RR91

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/virt/SRAT b/tests/data/acpi/virt/SRAT
new file mode 100644
index 0000000000000000000000000000000000000000..119922f4973f621602047d1dc160519f810922a3
GIT binary patch
literal 224
zcmWFzatwLEz`(%x)yd!4BUr&HBEUHqD8>jB1F=Cg2*ZH@DxXmUMHZ-x3$7Gd2B8jU
X02q8=hbcr=2NT6lGiu<Mhsgo}c|r;S

literal 0
HcmV?d00001

-- 
2.17.1
Peter Maydell Sept. 11, 2019, 12:57 p.m. UTC | #2
On Wed, 4 Sep 2019 at 09:58, Shameer Kolothum
<shameerali.kolothum.thodi@huawei.com> wrote:
>

> This patch is in preparation for adding numamem and memhp tests

> to arm/virt board so that 'make check' is happy. This may not

> be required once the scripts are run and new tables are

> generated with ".numamem" and ".memhp" extensions.

>

> Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> ---

> I am not sure this is the right way to do this. But without this, when

> the numamem and memhp tests are added, you will get,

>

> Looking for expected file 'tests/data/acpi/virt/SRAT.numamem'

> Looking for expected file 'tests/data/acpi/virt/SRAT'

> **

> ERROR:tests/bios-tables-test.c:327:load_expected_aml: assertion failed: (exp_sdt.aml_file)

>

> ---

>  tests/data/acpi/virt/SLIT | Bin 0 -> 48 bytes

>  tests/data/acpi/virt/SRAT | Bin 0 -> 224 bytes

>  2 files changed, 0 insertions(+), 0 deletions(-)

>  create mode 100644 tests/data/acpi/virt/SLIT

>  create mode 100644 tests/data/acpi/virt/SRAT


Do the tests pass with this patch and without the
patch that adds the tests? (That is, can we keep the
two patches separate without breaking bisection, or
do we need to squash them together?)

I'll leave it to somebody who understands the ACPI
tests stuff to answer whether there's a better way to
do this.

thanks
-- PMM
Igor Mammedov Sept. 11, 2019, 1:50 p.m. UTC | #3
On Wed, 11 Sep 2019 13:57:06 +0100
Peter Maydell <peter.maydell@linaro.org> wrote:

> On Wed, 4 Sep 2019 at 09:58, Shameer Kolothum

> <shameerali.kolothum.thodi@huawei.com> wrote:

> >

> > This patch is in preparation for adding numamem and memhp tests

> > to arm/virt board so that 'make check' is happy. This may not

> > be required once the scripts are run and new tables are

> > generated with ".numamem" and ".memhp" extensions.

> >

> > Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> > ---

> > I am not sure this is the right way to do this. But without this, when

> > the numamem and memhp tests are added, you will get,

> >

> > Looking for expected file 'tests/data/acpi/virt/SRAT.numamem'

> > Looking for expected file 'tests/data/acpi/virt/SRAT'

> > **

> > ERROR:tests/bios-tables-test.c:327:load_expected_aml: assertion failed: (exp_sdt.aml_file)

> >

> > ---

> >  tests/data/acpi/virt/SLIT | Bin 0 -> 48 bytes

> >  tests/data/acpi/virt/SRAT | Bin 0 -> 224 bytes

> >  2 files changed, 0 insertions(+), 0 deletions(-)

> >  create mode 100644 tests/data/acpi/virt/SLIT

> >  create mode 100644 tests/data/acpi/virt/SRAT  

> 

> Do the tests pass with this patch and without the

> patch that adds the tests? (That is, can we keep the

> two patches separate without breaking bisection, or

> do we need to squash them together?)

> 

> I'll leave it to somebody who understands the ACPI

> tests stuff to answer whether there's a better way to

I'd squash this patch into 11/11 test case,
CCing Michael (since he's the one who applies ACPI patches)

> do this.

> 

> thanks

> -- PMM

>
Michael S. Tsirkin Sept. 11, 2019, 1:55 p.m. UTC | #4
On Wed, Sep 11, 2019 at 03:50:15PM +0200, Igor Mammedov wrote:
> On Wed, 11 Sep 2019 13:57:06 +0100

> Peter Maydell <peter.maydell@linaro.org> wrote:

> 

> > On Wed, 4 Sep 2019 at 09:58, Shameer Kolothum

> > <shameerali.kolothum.thodi@huawei.com> wrote:

> > >

> > > This patch is in preparation for adding numamem and memhp tests

> > > to arm/virt board so that 'make check' is happy. This may not

> > > be required once the scripts are run and new tables are

> > > generated with ".numamem" and ".memhp" extensions.

> > >

> > > Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> > > ---

> > > I am not sure this is the right way to do this. But without this, when

> > > the numamem and memhp tests are added, you will get,

> > >

> > > Looking for expected file 'tests/data/acpi/virt/SRAT.numamem'

> > > Looking for expected file 'tests/data/acpi/virt/SRAT'

> > > **

> > > ERROR:tests/bios-tables-test.c:327:load_expected_aml: assertion failed: (exp_sdt.aml_file)

> > >

> > > ---

> > >  tests/data/acpi/virt/SLIT | Bin 0 -> 48 bytes

> > >  tests/data/acpi/virt/SRAT | Bin 0 -> 224 bytes

> > >  2 files changed, 0 insertions(+), 0 deletions(-)

> > >  create mode 100644 tests/data/acpi/virt/SLIT

> > >  create mode 100644 tests/data/acpi/virt/SRAT  

> > 

> > Do the tests pass with this patch and without the

> > patch that adds the tests? (That is, can we keep the

> > two patches separate without breaking bisection, or

> > do we need to squash them together?)

> > 

> > I'll leave it to somebody who understands the ACPI

> > tests stuff to answer whether there's a better way to

> I'd squash this patch into 11/11 test case,



Pls don't - the way to add this is to add the files in question to
tests/bios-tables-test-allowed-diff.h.

Maintainer will create a separate commit updating
the binaries and removing them from the whitelist.

This way things like rebase work seemlessly.


> CCing Michael (since he's the one who applies ACPI patches)

> 

> > do this.

> > 

> > thanks

> > -- PMM

> >
Shameerali Kolothum Thodi Sept. 11, 2019, 2:33 p.m. UTC | #5
> -----Original Message-----

> From: Qemu-devel

> [mailto:qemu-devel-bounces+shameerali.kolothum.thodi=huawei.com@nongn

> u.org] On Behalf Of Michael S. Tsirkin

> Sent: 11 September 2019 14:56

> To: Igor Mammedov <imammedo@redhat.com>

> Cc: Peter Maydell <peter.maydell@linaro.org>; Samuel Ortiz

> <sameo@linux.intel.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>;

> QEMU Developers <qemu-devel@nongnu.org>; Shameerali Kolothum Thodi

> <shameerali.kolothum.thodi@huawei.com>; Linuxarm

> <linuxarm@huawei.com>; Shannon Zhao <shannon.zhaosl@gmail.com>;

> qemu-arm <qemu-arm@nongnu.org>; xuwei (O) <xuwei5@huawei.com>; Eric

> Auger <eric.auger@redhat.com>; sebastien.boeuf@intel.com; Laszlo Ersek

> <lersek@redhat.com>

> Subject: Re: [Qemu-devel] [PATCH-for-4.2 v10 10/11] tests: add dummy ACPI

> tables for arm/virt board

> 

> On Wed, Sep 11, 2019 at 03:50:15PM +0200, Igor Mammedov wrote:

> > On Wed, 11 Sep 2019 13:57:06 +0100

> > Peter Maydell <peter.maydell@linaro.org> wrote:

> >

> > > On Wed, 4 Sep 2019 at 09:58, Shameer Kolothum

> > > <shameerali.kolothum.thodi@huawei.com> wrote:

> > > >

> > > > This patch is in preparation for adding numamem and memhp tests

> > > > to arm/virt board so that 'make check' is happy. This may not

> > > > be required once the scripts are run and new tables are

> > > > generated with ".numamem" and ".memhp" extensions.

> > > >

> > > > Signed-off-by: Shameer Kolothum

> <shameerali.kolothum.thodi@huawei.com>

> > > > ---

> > > > I am not sure this is the right way to do this. But without this, when

> > > > the numamem and memhp tests are added, you will get,

> > > >

> > > > Looking for expected file 'tests/data/acpi/virt/SRAT.numamem'

> > > > Looking for expected file 'tests/data/acpi/virt/SRAT'

> > > > **

> > > > ERROR:tests/bios-tables-test.c:327:load_expected_aml: assertion failed:

> (exp_sdt.aml_file)

> > > >

> > > > ---

> > > >  tests/data/acpi/virt/SLIT | Bin 0 -> 48 bytes

> > > >  tests/data/acpi/virt/SRAT | Bin 0 -> 224 bytes

> > > >  2 files changed, 0 insertions(+), 0 deletions(-)

> > > >  create mode 100644 tests/data/acpi/virt/SLIT

> > > >  create mode 100644 tests/data/acpi/virt/SRAT

> > >

> > > Do the tests pass with this patch and without the

> > > patch that adds the tests? (That is, can we keep the

> > > two patches separate without breaking bisection, or

> > > do we need to squash them together?)

> > >

> > > I'll leave it to somebody who understands the ACPI

> > > tests stuff to answer whether there's a better way to

> > I'd squash this patch into 11/11 test case,

> 

> 

> Pls don't - the way to add this is to add the files in question to

> tests/bios-tables-test-allowed-diff.h.


IIRC, I have tried that but didn't work. I think the reason being, these
are new test cases for arm/virt and both SRAT and SLIT tables are not
present in the tests/data/acpi/virt folder.

As you can see the error is different,

> > > > Looking for expected file 'tests/data/acpi/virt/SRAT.numamem'

> > > > Looking for expected file 'tests/data/acpi/virt/SRAT'

> > > > **

> > > > ERROR:tests/bios-tables-test.c:327:load_expected_aml: assertion failed:


Not sure I missed anything though.

Thanks,
Shameer

> Maintainer will create a separate commit updating

> the binaries and removing them from the whitelist.

> 

> This way things like rebase work seemlessly.

> 

> 

> > CCing Michael (since he's the one who applies ACPI patches)

> >

> > > do this.

> > >

> > > thanks

> > > -- PMM

> > >
Michael S. Tsirkin Sept. 17, 2019, 3:11 p.m. UTC | #6
On Wed, Sep 11, 2019 at 09:55:34AM -0400, Michael S. Tsirkin wrote:
> On Wed, Sep 11, 2019 at 03:50:15PM +0200, Igor Mammedov wrote:

> > On Wed, 11 Sep 2019 13:57:06 +0100

> > Peter Maydell <peter.maydell@linaro.org> wrote:

> > 

> > > On Wed, 4 Sep 2019 at 09:58, Shameer Kolothum

> > > <shameerali.kolothum.thodi@huawei.com> wrote:

> > > >

> > > > This patch is in preparation for adding numamem and memhp tests

> > > > to arm/virt board so that 'make check' is happy. This may not

> > > > be required once the scripts are run and new tables are

> > > > generated with ".numamem" and ".memhp" extensions.

> > > >

> > > > Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>

> > > > ---

> > > > I am not sure this is the right way to do this. But without this, when

> > > > the numamem and memhp tests are added, you will get,

> > > >

> > > > Looking for expected file 'tests/data/acpi/virt/SRAT.numamem'

> > > > Looking for expected file 'tests/data/acpi/virt/SRAT'

> > > > **

> > > > ERROR:tests/bios-tables-test.c:327:load_expected_aml: assertion failed: (exp_sdt.aml_file)

> > > >

> > > > ---

> > > >  tests/data/acpi/virt/SLIT | Bin 0 -> 48 bytes

> > > >  tests/data/acpi/virt/SRAT | Bin 0 -> 224 bytes

> > > >  2 files changed, 0 insertions(+), 0 deletions(-)

> > > >  create mode 100644 tests/data/acpi/virt/SLIT

> > > >  create mode 100644 tests/data/acpi/virt/SRAT  

> > > 

> > > Do the tests pass with this patch and without the

> > > patch that adds the tests? (That is, can we keep the

> > > two patches separate without breaking bisection, or

> > > do we need to squash them together?)

> > > 

> > > I'll leave it to somebody who understands the ACPI

> > > tests stuff to answer whether there's a better way to

> > I'd squash this patch into 11/11 test case,

> 

> 

> Pls don't - the way to add this is to add the files in question to

> tests/bios-tables-test-allowed-diff.h.

> 

> Maintainer will create a separate commit updating

> the binaries and removing them from the whitelist.

> 

> This way things like rebase work seemlessly.



OK?

Can you post v11 like this? I'll ack then.

> 

> > CCing Michael (since he's the one who applies ACPI patches)

> > 

> > > do this.

> > > 

> > > thanks

> > > -- PMM

> > >
Peter Maydell Sept. 17, 2019, 3:23 p.m. UTC | #7
On Tue, 17 Sep 2019 at 16:11, Michael S. Tsirkin <mst@redhat.com> wrote:
>

> On Wed, Sep 11, 2019 at 09:55:34AM -0400, Michael S. Tsirkin wrote:

> > On Wed, Sep 11, 2019 at 03:50:15PM +0200, Igor Mammedov wrote:

> > > On Wed, 11 Sep 2019 13:57:06 +0100

> > > Peter Maydell <peter.maydell@linaro.org> wrote:

> > > > Do the tests pass with this patch and without the

> > > > patch that adds the tests? (That is, can we keep the

> > > > two patches separate without breaking bisection, or

> > > > do we need to squash them together?)

> > > >

> > > > I'll leave it to somebody who understands the ACPI

> > > > tests stuff to answer whether there's a better way to

> > > I'd squash this patch into 11/11 test case,

> >

> >

> > Pls don't - the way to add this is to add the files in question to

> > tests/bios-tables-test-allowed-diff.h.

> >

> > Maintainer will create a separate commit updating

> > the binaries and removing them from the whitelist.


Who is "maintainer" in this part of the process? Why
can't the submitter just create the patches and send them?

> > This way things like rebase work seemlessly.

>

>

> OK?

>

> Can you post v11 like this? I'll ack then.


thanks
-- PMM