qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/4] fix numa node mapping for hotplugged CPUs
@ 2016-06-30 12:23 Igor Mammedov
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 1/4] tests: acpi: add CPU hotplug testcase Igor Mammedov
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Igor Mammedov @ 2016-06-30 12:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst, marcel

Series adds acpi tables tests for CPU hotplug and
makes hotplugged CPUs assigned to correct numa nodes for Linux guests
 + extends CPU hotplug test with numa options


Igor Mammedov (4):
  tests: acpi: add CPU hotplug testcase
  tests: DO NOT APPLY: add APIC.cphp and DSDT.cphp blobs
  acpi: provide _PXM method for CPU devices if QEMU is started numa
    enabled
  tests: acpi: extend cphp testcase with numa check

 hw/acpi/cpu.c                      |   9 +++++++++
 tests/acpi-test-data/pc/APIC.cphp  | Bin 0 -> 160 bytes
 tests/acpi-test-data/pc/DSDT.cphp  | Bin 0 -> 6435 bytes
 tests/acpi-test-data/pc/SRAT.cphp  | Bin 0 -> 304 bytes
 tests/acpi-test-data/q35/APIC.cphp | Bin 0 -> 160 bytes
 tests/acpi-test-data/q35/DSDT.cphp | Bin 0 -> 9197 bytes
 tests/acpi-test-data/q35/SRAT.cphp | Bin 0 -> 304 bytes
 tests/bios-tables-test.c           |  30 ++++++++++++++++++++++++++++++
 8 files changed, 39 insertions(+)
 create mode 100644 tests/acpi-test-data/pc/APIC.cphp
 create mode 100644 tests/acpi-test-data/pc/DSDT.cphp
 create mode 100644 tests/acpi-test-data/pc/SRAT.cphp
 create mode 100644 tests/acpi-test-data/q35/APIC.cphp
 create mode 100644 tests/acpi-test-data/q35/DSDT.cphp
 create mode 100644 tests/acpi-test-data/q35/SRAT.cphp

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 1/4] tests: acpi: add CPU hotplug testcase
  2016-06-30 12:23 [Qemu-devel] [PATCH 0/4] fix numa node mapping for hotplugged CPUs Igor Mammedov
@ 2016-06-30 12:23 ` Igor Mammedov
  2016-06-30 12:42   ` Marcel Apfelbaum
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 2/4] tests: DO NOT APPLY: add APIC.cphp and DSDT.cphp blobs Igor Mammedov
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 14+ messages in thread
From: Igor Mammedov @ 2016-06-30 12:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst, marcel

Test with:

    -smp 2,cores=3,sockets=2,maxcpus=6

to capture sparse APIC ID values that default
AMD CPU has in above configuration.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
NOTE to maintainer:

following table blobs should be added to git tree as poart of this commit
after running ./tests/acpi-test-data/rebuild-expected-aml.sh

tests/acpi-test-data/q35/APIC.cphp
tests/acpi-test-data/q35/DSDT.cphp
tests/acpi-test-data/pc/APIC.cphp
tests/acpi-test-data/pc/DSDT.cphp
---
 tests/bios-tables-test.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 92c90dd..de4019e 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -801,6 +801,32 @@ static void test_acpi_q35_tcg_bridge(void)
     free_test_data(&data);
 }
 
+static void test_acpi_piix4_tcg_cphp(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_PC;
+    data.variant = ".cphp";
+    test_acpi_one("-machine accel=tcg"
+                  " -smp 2,cores=3,sockets=2,maxcpus=6",
+                  &data);
+    free_test_data(&data);
+}
+
+static void test_acpi_q35_tcg_cphp(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_Q35;
+    data.variant = ".cphp";
+    test_acpi_one("-machine q35,accel=tcg"
+                  " -smp 2,cores=3,sockets=2,maxcpus=6",
+                  &data);
+    free_test_data(&data);
+}
+
 static uint8_t ipmi_required_struct_types[] = {
     0, 1, 3, 4, 16, 17, 19, 32, 38, 127
 };
@@ -856,6 +882,8 @@ int main(int argc, char *argv[])
         qtest_add_func("acpi/q35/tcg/bridge", test_acpi_q35_tcg_bridge);
         qtest_add_func("acpi/piix4/tcg/ipmi", test_acpi_piix4_tcg_ipmi);
         qtest_add_func("acpi/q35/tcg/ipmi", test_acpi_q35_tcg_ipmi);
+        qtest_add_func("acpi/piix4/tcg/cpuhp", test_acpi_piix4_tcg_cphp);
+        qtest_add_func("acpi/q35/tcg/cpuhp", test_acpi_q35_tcg_cphp);
     }
     ret = g_test_run();
     boot_sector_cleanup(disk);
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 2/4] tests: DO NOT APPLY: add APIC.cphp and DSDT.cphp blobs
  2016-06-30 12:23 [Qemu-devel] [PATCH 0/4] fix numa node mapping for hotplugged CPUs Igor Mammedov
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 1/4] tests: acpi: add CPU hotplug testcase Igor Mammedov
@ 2016-06-30 12:23 ` Igor Mammedov
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled Igor Mammedov
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 4/4] tests: acpi: extend cphp testcase with numa check Igor Mammedov
  3 siblings, 0 replies; 14+ messages in thread
From: Igor Mammedov @ 2016-06-30 12:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst, marcel

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/acpi-test-data/pc/APIC.cphp  | Bin 0 -> 160 bytes
 tests/acpi-test-data/pc/DSDT.cphp  | Bin 0 -> 6435 bytes
 tests/acpi-test-data/q35/APIC.cphp | Bin 0 -> 160 bytes
 tests/acpi-test-data/q35/DSDT.cphp | Bin 0 -> 9197 bytes
 4 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 tests/acpi-test-data/pc/APIC.cphp
 create mode 100644 tests/acpi-test-data/pc/DSDT.cphp
 create mode 100644 tests/acpi-test-data/q35/APIC.cphp
 create mode 100644 tests/acpi-test-data/q35/DSDT.cphp

diff --git a/tests/acpi-test-data/pc/APIC.cphp b/tests/acpi-test-data/pc/APIC.cphp
new file mode 100644
index 0000000000000000000000000000000000000000..1bf8a0a63bc1c9b716d937b96eb34b05016b9366
GIT binary patch
literal 160
zcmXwx!3}^Q3`JW6f}%UP3UJYrBwpObWgNv(oJ8%n@zB24pP!~WmxG9S&r6xsF>kdb
z$yhQtNOavFgY<9)W~DJWDKu7Tozi)bd+hVZHk}Lv=1?18ZTnj%1<hjo%=$-Oyrt<4
A0RR91

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/pc/DSDT.cphp b/tests/acpi-test-data/pc/DSDT.cphp
new file mode 100644
index 0000000000000000000000000000000000000000..e8b146208eb3877e1cde2cc361c5afd270d194c6
GIT binary patch
literal 6435
zcmb7IUvC@75#PN#O2;KB9i_7@TXsyyPSUt_%s;Y{phaQwjuL6{s56gpU7XQ7$_h#u
zX?;*^Ac_z`VgSX-TfjPK-)KY6_D5(xLOwzY^b@3L;-{!Hciba=(g6tpQ8PQg{q4-|
z?CdUeOK)F3M+p5-WnHUTxyoHr)1i$LLQuy4N?p1~?0vnm>d=%RQTrg}%kWi^)!*oq
zjaB;huKSJaKKjC?9gl22SDtQmyw9Jwn*>3RH$BEsP!=7l;@G_fQ>*7?r&ia~<!_lN
zJ7v8^WM`wUQ^k-2OjWL#)iwuF0D&3YsF`hpqzU=<rxcOw0|oWjJJqJ1Gh4coQ<oj9
zT_zs3xE?ljK6RPm4$@!uUD9_`$HzxxF!go6L;luDlYjp&aYT;TwCrdtE1P9ghe?PS
z$caSAE>Yfm7rjAu?cO=_ZlUD+nidHKSIk0569_w2ZYIWHnpC&SPJn}nMch(e6PU}u
z-M9YqF0x=xLTcB^WW%gBDS4lWS{VgVtH3`+yL4UT10$Q=yVh!JKpIS03MLEvoo8oO
zsYg7b2#bWS(jBrxgo#~Z_ugBp=pkGb)ucZwVW56Tm$-yNuPw3#{}%;_*Y3S-tZ#%J
zr)Q%bWtLbZ3IfaWimru=I63rafz7Yd@5S#$BCXON#UEj!7H^WPlFwaOX_#fc*eiN{
zCZ`aVVCyVT*-Iv{H{oxFEwE$u5&MBnGg)?4^lJ7jQ!x$4KLRLr@AnO}9r`K}bv{^n
zoKkl%0n2?vo=IWM3d^k0PsC3|Szg@t{i#aYx>4YhnxH`javEHaIGR`DE0M^HichnG
zG{p!F6G9$X(O4egl>j_4@F+ETltlZcX0>UGykIh<I4T<C;6@I<^qjqKRd2yolwV**
zrBKl-`RXk&RGLPMrj)>didJcE7&)6(8rm9B-!!%AEy2Ew+VQd1MWeS%w+VK)-^S)6
zqBLO(RUBoFVcM%YbIewocr(Jj>ygg$O7dxk?R%egm_RnYy`9b`VIsLdQ2O@)l!R^5
zXs+pGYjCB1pANG94wJ%Wi)=m1gjyLu+5UYdge{d}ix{?OWXt<(catduHZFOxMToc8
zf$^SfQQ~bqaXaL3=g74Wu3Q(<Tih$S+o;*PotNROfL}%YD#_|>{Wi?%Ai2l(yRhk#
zM=Yf-*KcdBBmi3Z>=a9VIYE+svh9+uu#F|)yFN%g?Ly35l#j64?lmSMOi1QnL#CmC
zV0n^ZuB_}FoBeW%B*g?|DTBWh{OuBTI@p8g1iGhY9ldUm&roLje#<oOYI1}w`TAMM
zYFYHFZr}w}vsNA3hoe^_qeK4w?9mHjqZj<q3*g`Q=mquk(F=CZz}U6O=uG$p!xzVf
zFZ#n5Bf}SChA$3>*Q3M30r9h=FO3af@`o=)hA+hoU$T4a5=3uBhnIrkc?#hv0!z-z
zZc3f-7h6pQbBwM+6RxhJw}JytWA{cy-)vRGA=reUTp7*W$kiS`@;-X}=iJVRA3uD&
zbN|DSiA^=Lu{JEf8OByAc}ZT<G}LHFD!+=nWNG{0GAd<~)9}F2>P?GkE#nS_f{>>~
z(lkSdQZs`fQM0Oz93b^_JEx|ddb2Kj1RL$%>gqkeN`Wtdf0?po*7Ny79z6)o^Mq<h
zT6^V>!hrR=<WS4!^V=v=6bsvfRKLpvl#78ZqFf4O3FW0gPM~~aTdhq%{VON!%lEEJ
z{7}UC!ML%CMVrA<kGO;L{ip#W_t>;+zkR~eSUYl6BZ0H=%LbxRDquL3U#(4Pme!Qx
z!l3T+a;opbaSmlRN(!qpSd~r$<gX&kbQBH?N4*oC0otSPvo&c@J4xl|!s%2@Jjn%c
z;5t1}BdM)h?Q~qAr>@rtXCY#5`;@pmCPZ5i`XJf}Q*f$x_UCZwLq@{>gb!plq?UYy
z2?hyll-t=9lZlM?Hn64~+#Q${M4fUVs1!y<y4w$iG=<<|GEM_kIHaL8LPN)Bs83Tv
zZ;E)If$=gUZ?K$(Jc8i!q(gV$b}=3L!-Nr2Nj%8}l`&)zr6`j)&LobQmf$3h`UFKT
zWRen5CTW~W8Zq6#b1)KJVvH#<5oJn@GbMmYU4XK)YF3?Uz6hJczZ+u-!X2eFuZ=EF
zz4A4qW(J2t#%!ATa()>W7S863@!?+{?(F8eCn~5q>mSU6WZ%%6Ex0toy}+i1e`6|7
z7%&7G*<gFxm(g~7{QP%MUF_kx29%t^Y~R5BXuu|dT})AVHaAfF25v3C6*m%UJ1%Y=
zBsrq$H3N(E7_Ik@F7XLdeWPkQ!;0mjU9~)Kz#$DKDsX{gWuvvclr6FRSHC6%UMG>y
zPshQBHxJcgxa43*HU-W$0&xb!S|GmFsPfjUAP!sSjPl(f_B@C+&uCR@*a?LO5`oaD
zVFwf%NV0>?C}3Yyd^7eQs86vC?K`MbzcK4K(nnznN)5C%2Kr<ln+b$mDrPUS3tyZa
z4;e$nFfl|wyi$=dpm!i95T~H;P@DsY91llEvxnqp^w3W<4Oa-eh2rv(dc`pB8Z^29
z9<(}qQC;;{2Gj}Z1Zdk>uio(<fKdx5)kOn}3*5+GUrtC9xYP#_r9Od~@836uhb^SE
z`T=Z(0>K&^J`{sn{aAykHT@#^8bUn>Jxk*!3~m_Aa;2IL4tKms2M^53B>U@=3=!bH
zjdO}$@L+tEewC&&w9_EfegyNYbf{<i75MM?x-eJ|yanS&Aif3nJbvWk<A44Xi2wQl
zAC{T~;RX-O$PUK#v6~P4P|z;3RN$$9^ZD-OcQ2`gB)259X10P!d%X-maHrg&PI8eK
z<ONmXUG~mBC?HnJnVFEVoP)gN%*YbFRiSEwb^|RKfb!eX^x3_4SN@=_1P<J;8XIur
z6cHWqSV<@eysIg<cJKMGE<+w$K);mvMQJQZcv3JjkJr1JiLX7v*t~sk2^A5yU=BAV
zd^J#NfCQPDvkxvJpiFKuzo<aUL#gsB6TT(wgEK*Yy!m00!k4Ax)CsIxf?_=MQ=$S^
znA?<<&%?7Df3vZBSFOTOfg})!3LzGBsG%qnxllsE?!99b-iMCXMsxU^4|EZUI^!Q}
z_%y`<(2UR`(jpWN9T*Cr@WPLQa#lE10%#%*TH>s5rw*VKu~5!B$)S^R&?U|azgPsU
zax9dyCOI@22fe{r8Hci1C})M;5IB&EgD!K{G>4{Rp`10tp_w@7dz^KOL#JY)oE6^8
zfv?kX(Dym3!l6nml(S|zG#dx~fV0kU=u9k>v(9qpY#g-ASt0X-u+&&6XFbEAXX2n0
z&N|1TbFom)dX_`a#z8gCI?ti=u~5!>jziDIL3Pf0o<q;aLOJUKhc3iHtDN-$hhB(<
za@LC+dNB^V!dc(o&^KbCob?iiUOEk`))w?T&9*Q|?{(n`afr2U+gB7&pqd3r4i#>>
z2?|uCz_O1DS~7dx6udtUEhsBPO+YQQNuWV-7}{{G8=(ycgDpO^;b_aD4Tpn`I<(<<
z@1bpauM5=`j<!P!HXPUCa07j0ha>LLf~~{t@J0fCWLHp!O~CCrUmw|Tq7LcI?fbqy
zvilK3VsbkiCWn?bX2+-@#X>vAt&iC;a!8iYo<n`ieiL+9_RzkMI@r}qcu#^K(ec+%
OTtYbOHt0~$nfQP4P$F9Z

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/q35/APIC.cphp b/tests/acpi-test-data/q35/APIC.cphp
new file mode 100644
index 0000000000000000000000000000000000000000..1bf8a0a63bc1c9b716d937b96eb34b05016b9366
GIT binary patch
literal 160
zcmXwx!3}^Q3`JW6f}%UP3UJYrBwpObWgNv(oJ8%n@zB24pP!~WmxG9S&r6xsF>kdb
z$yhQtNOavFgY<9)W~DJWDKu7Tozi)bd+hVZHk}Lv=1?18ZTnj%1<hjo%=$-Oyrt<4
A0RR91

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/q35/DSDT.cphp b/tests/acpi-test-data/q35/DSDT.cphp
new file mode 100644
index 0000000000000000000000000000000000000000..6cc28c6daec2b331030ab0600a4d79034c1dfc40
GIT binary patch
literal 9197
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
R7B$vXW1Sn>MzGZu{|B7Hnt1>K

literal 0
HcmV?d00001

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 12:23 [Qemu-devel] [PATCH 0/4] fix numa node mapping for hotplugged CPUs Igor Mammedov
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 1/4] tests: acpi: add CPU hotplug testcase Igor Mammedov
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 2/4] tests: DO NOT APPLY: add APIC.cphp and DSDT.cphp blobs Igor Mammedov
@ 2016-06-30 12:23 ` Igor Mammedov
  2016-06-30 12:48   ` Marcel Apfelbaum
                     ` (2 more replies)
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 4/4] tests: acpi: extend cphp testcase with numa check Igor Mammedov
  3 siblings, 3 replies; 14+ messages in thread
From: Igor Mammedov @ 2016-06-30 12:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst, marcel

fixes long standing issue where Linux kernel would assing
hotplugged CPU to 1st numa node as it discards proximity
for hotplugged CPUs after SRAT is parsed.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 hw/acpi/cpu.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
index c13b65c..d9cf3ee 100644
--- a/hw/acpi/cpu.c
+++ b/hw/acpi/cpu.c
@@ -4,6 +4,7 @@
 #include "qapi/error.h"
 #include "qapi-event.h"
 #include "trace.h"
+#include "sysemu/numa.h"
 
 #define ACPI_CPU_HOTPLUG_REG_LEN 12
 #define ACPI_CPU_SELECTOR_OFFSET_WR 0
@@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
 
         /* build Processor object for each processor */
         for (i = 0; i < arch_ids->len; i++) {
+            int j;
             Aml *dev;
             Aml *uid = aml_int(i);
             GArray *madt_buf = g_array_new(0, 1, 1);
@@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
                           aml_arg(1), aml_arg(2))
             );
             aml_append(dev, method);
+
+            for (j = 0; j < nb_numa_nodes; j++) {
+                if (test_bit(i, numa_info[j].node_cpu)) {
+                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
+                }
+            }
+
             aml_append(cpus_dev, dev);
         }
     }
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH 4/4] tests: acpi: extend cphp testcase with numa check
  2016-06-30 12:23 [Qemu-devel] [PATCH 0/4] fix numa node mapping for hotplugged CPUs Igor Mammedov
                   ` (2 preceding siblings ...)
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled Igor Mammedov
@ 2016-06-30 12:23 ` Igor Mammedov
  2016-06-30 12:52   ` Marcel Apfelbaum
  3 siblings, 1 reply; 14+ messages in thread
From: Igor Mammedov @ 2016-06-30 12:23 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst, marcel

so it would be possible to verify _PXM generation in
DSDT and SRAT tables.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
NOTE to maintainer:
SRAT table is included in patch as it doesn't have
any chance for conflicts compared to often changing
DSDT

following table blobs should be updated in git tree as part
of this commit after running ./tests/acpi-test-data/rebuild-expected-aml.sh

tests/acpi-test-data/q35/DSDT.cphp
tests/acpi-test-data/pc/DSDT.cphp
---
 tests/acpi-test-data/pc/SRAT.cphp  | Bin 0 -> 304 bytes
 tests/acpi-test-data/q35/SRAT.cphp | Bin 0 -> 304 bytes
 tests/bios-tables-test.c           |   6 ++++--
 3 files changed, 4 insertions(+), 2 deletions(-)
 create mode 100644 tests/acpi-test-data/pc/SRAT.cphp
 create mode 100644 tests/acpi-test-data/q35/SRAT.cphp

diff --git a/tests/acpi-test-data/pc/SRAT.cphp b/tests/acpi-test-data/pc/SRAT.cphp
new file mode 100644
index 0000000000000000000000000000000000000000..ff2137642f488ec70b85207ed6c20e7351d61e98
GIT binary patch
literal 304
zcmWFzattwGWME)4bMklg2v%^42yhMtiUEZfKx_~V!f+sf!DmF1XF}yOvY_!<(fDl0
pd`1npO;83GTmZW|po75R12aq^syaB21u74tQT&BzFU&Ml8UVWm2>}2A

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/q35/SRAT.cphp b/tests/acpi-test-data/q35/SRAT.cphp
new file mode 100644
index 0000000000000000000000000000000000000000..ff2137642f488ec70b85207ed6c20e7351d61e98
GIT binary patch
literal 304
zcmWFzattwGWME)4bMklg2v%^42yhMtiUEZfKx_~V!f+sf!DmF1XF}yOvY_!<(fDl0
pd`1npO;83GTmZW|po75R12aq^syaB21u74tQT&BzFU&Ml8UVWm2>}2A

literal 0
HcmV?d00001

diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index de4019e..3796089 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -809,7 +809,8 @@ static void test_acpi_piix4_tcg_cphp(void)
     data.machine = MACHINE_PC;
     data.variant = ".cphp";
     test_acpi_one("-machine accel=tcg"
-                  " -smp 2,cores=3,sockets=2,maxcpus=6",
+                  " -smp 2,cores=3,sockets=2,maxcpus=6"
+                  " -numa node -numa node",
                   &data);
     free_test_data(&data);
 }
@@ -822,7 +823,8 @@ static void test_acpi_q35_tcg_cphp(void)
     data.machine = MACHINE_Q35;
     data.variant = ".cphp";
     test_acpi_one("-machine q35,accel=tcg"
-                  " -smp 2,cores=3,sockets=2,maxcpus=6",
+                  " -smp 2,cores=3,sockets=2,maxcpus=6"
+                  " -numa node -numa node",
                   &data);
     free_test_data(&data);
 }
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 1/4] tests: acpi: add CPU hotplug testcase
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 1/4] tests: acpi: add CPU hotplug testcase Igor Mammedov
@ 2016-06-30 12:42   ` Marcel Apfelbaum
  0 siblings, 0 replies; 14+ messages in thread
From: Marcel Apfelbaum @ 2016-06-30 12:42 UTC (permalink / raw)
  To: Igor Mammedov, qemu-devel; +Cc: mst

On 06/30/2016 03:23 PM, Igor Mammedov wrote:
> Test with:
>
>      -smp 2,cores=3,sockets=2,maxcpus=6
>
> to capture sparse APIC ID values that default
> AMD CPU has in above configuration.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> NOTE to maintainer:
>
> following table blobs should be added to git tree as poart of this commit
> after running ./tests/acpi-test-data/rebuild-expected-aml.sh
>
> tests/acpi-test-data/q35/APIC.cphp
> tests/acpi-test-data/q35/DSDT.cphp
> tests/acpi-test-data/pc/APIC.cphp
> tests/acpi-test-data/pc/DSDT.cphp
> ---
>   tests/bios-tables-test.c | 28 ++++++++++++++++++++++++++++
>   1 file changed, 28 insertions(+)
>
> diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> index 92c90dd..de4019e 100644
> --- a/tests/bios-tables-test.c
> +++ b/tests/bios-tables-test.c
> @@ -801,6 +801,32 @@ static void test_acpi_q35_tcg_bridge(void)
>       free_test_data(&data);
>   }
>
> +static void test_acpi_piix4_tcg_cphp(void)
> +{
> +    test_data data;
> +
> +    memset(&data, 0, sizeof(data));
> +    data.machine = MACHINE_PC;
> +    data.variant = ".cphp";
> +    test_acpi_one("-machine accel=tcg"
> +                  " -smp 2,cores=3,sockets=2,maxcpus=6",
> +                  &data);
> +    free_test_data(&data);
> +}
> +
> +static void test_acpi_q35_tcg_cphp(void)
> +{
> +    test_data data;
> +
> +    memset(&data, 0, sizeof(data));
> +    data.machine = MACHINE_Q35;
> +    data.variant = ".cphp";
> +    test_acpi_one("-machine q35,accel=tcg"
> +                  " -smp 2,cores=3,sockets=2,maxcpus=6",
> +                  &data);
> +    free_test_data(&data);
> +}
> +
>   static uint8_t ipmi_required_struct_types[] = {
>       0, 1, 3, 4, 16, 17, 19, 32, 38, 127
>   };
> @@ -856,6 +882,8 @@ int main(int argc, char *argv[])
>           qtest_add_func("acpi/q35/tcg/bridge", test_acpi_q35_tcg_bridge);
>           qtest_add_func("acpi/piix4/tcg/ipmi", test_acpi_piix4_tcg_ipmi);
>           qtest_add_func("acpi/q35/tcg/ipmi", test_acpi_q35_tcg_ipmi);
> +        qtest_add_func("acpi/piix4/tcg/cpuhp", test_acpi_piix4_tcg_cphp);
> +        qtest_add_func("acpi/q35/tcg/cpuhp", test_acpi_q35_tcg_cphp);
>       }
>       ret = g_test_run();
>       boot_sector_cleanup(disk);
>


Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>

Thanks,
Marcel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled Igor Mammedov
@ 2016-06-30 12:48   ` Marcel Apfelbaum
  2016-06-30 13:01     ` Igor Mammedov
  2016-06-30 13:29   ` [Qemu-devel] [PATCH v2 " Igor Mammedov
  2016-06-30 17:47   ` [Qemu-devel] [PATCH " Michael S. Tsirkin
  2 siblings, 1 reply; 14+ messages in thread
From: Marcel Apfelbaum @ 2016-06-30 12:48 UTC (permalink / raw)
  To: Igor Mammedov, qemu-devel; +Cc: mst

On 06/30/2016 03:23 PM, Igor Mammedov wrote:
> fixes long standing issue where Linux kernel would assing
> hotplugged CPU to 1st numa node as it discards proximity
> for hotplugged CPUs after SRAT is parsed.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
>   hw/acpi/cpu.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
> index c13b65c..d9cf3ee 100644
> --- a/hw/acpi/cpu.c
> +++ b/hw/acpi/cpu.c
> @@ -4,6 +4,7 @@
>   #include "qapi/error.h"
>   #include "qapi-event.h"
>   #include "trace.h"
> +#include "sysemu/numa.h"
>
>   #define ACPI_CPU_HOTPLUG_REG_LEN 12
>   #define ACPI_CPU_SELECTOR_OFFSET_WR 0
> @@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
>
>           /* build Processor object for each processor */
>           for (i = 0; i < arch_ids->len; i++) {
> +            int j;
>               Aml *dev;
>               Aml *uid = aml_int(i);
>               GArray *madt_buf = g_array_new(0, 1, 1);
> @@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
>                             aml_arg(1), aml_arg(2))
>               );
>               aml_append(dev, method);
> +
> +            for (j = 0; j < nb_numa_nodes; j++) {
> +                if (test_bit(i, numa_info[j].node_cpu)) {
> +                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
> +                }
> +            }
> +
>               aml_append(cpus_dev, dev);
>           }
>       }
>

I would add, at least in the commit message, a pointer to the ACPI spec:

ACPI 5.0 (6.2.13)
-----------------
If the Local APIC ID / Local SAPIC ID / Local x2APIC ID of a dynamically added processor is not
present in the System Resource Affinity Table (SRAT), a _PXM object must exist for the
processor’s device or one of its ancestors in the ACPI Namespace.


I suppose we don't have the APIC id in SRAT for all possible CPUs, so it OK.


Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>

Thanks,
Marcel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 4/4] tests: acpi: extend cphp testcase with numa check
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 4/4] tests: acpi: extend cphp testcase with numa check Igor Mammedov
@ 2016-06-30 12:52   ` Marcel Apfelbaum
  0 siblings, 0 replies; 14+ messages in thread
From: Marcel Apfelbaum @ 2016-06-30 12:52 UTC (permalink / raw)
  To: Igor Mammedov, qemu-devel; +Cc: mst

On 06/30/2016 03:23 PM, Igor Mammedov wrote:
> so it would be possible to verify _PXM generation in
> DSDT and SRAT tables.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> NOTE to maintainer:
> SRAT table is included in patch as it doesn't have
> any chance for conflicts compared to often changing
> DSDT
>
> following table blobs should be updated in git tree as part
> of this commit after running ./tests/acpi-test-data/rebuild-expected-aml.sh
>
> tests/acpi-test-data/q35/DSDT.cphp
> tests/acpi-test-data/pc/DSDT.cphp
> ---
>   tests/acpi-test-data/pc/SRAT.cphp  | Bin 0 -> 304 bytes
>   tests/acpi-test-data/q35/SRAT.cphp | Bin 0 -> 304 bytes
>   tests/bios-tables-test.c           |   6 ++++--
>   3 files changed, 4 insertions(+), 2 deletions(-)
>   create mode 100644 tests/acpi-test-data/pc/SRAT.cphp
>   create mode 100644 tests/acpi-test-data/q35/SRAT.cphp
>
> diff --git a/tests/acpi-test-data/pc/SRAT.cphp b/tests/acpi-test-data/pc/SRAT.cphp
> new file mode 100644
> index 0000000000000000000000000000000000000000..ff2137642f488ec70b85207ed6c20e7351d61e98
> GIT binary patch
> literal 304
> zcmWFzattwGWME)4bMklg2v%^42yhMtiUEZfKx_~V!f+sf!DmF1XF}yOvY_!<(fDl0
> pd`1npO;83GTmZW|po75R12aq^syaB21u74tQT&BzFU&Ml8UVWm2>}2A
>
> literal 0
> HcmV?d00001
>
> diff --git a/tests/acpi-test-data/q35/SRAT.cphp b/tests/acpi-test-data/q35/SRAT.cphp
> new file mode 100644
> index 0000000000000000000000000000000000000000..ff2137642f488ec70b85207ed6c20e7351d61e98
> GIT binary patch
> literal 304
> zcmWFzattwGWME)4bMklg2v%^42yhMtiUEZfKx_~V!f+sf!DmF1XF}yOvY_!<(fDl0
> pd`1npO;83GTmZW|po75R12aq^syaB21u74tQT&BzFU&Ml8UVWm2>}2A
>
> literal 0
> HcmV?d00001
>
> diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> index de4019e..3796089 100644
> --- a/tests/bios-tables-test.c
> +++ b/tests/bios-tables-test.c
> @@ -809,7 +809,8 @@ static void test_acpi_piix4_tcg_cphp(void)
>       data.machine = MACHINE_PC;
>       data.variant = ".cphp";
>       test_acpi_one("-machine accel=tcg"
> -                  " -smp 2,cores=3,sockets=2,maxcpus=6",
> +                  " -smp 2,cores=3,sockets=2,maxcpus=6"
> +                  " -numa node -numa node",
>                     &data);
>       free_test_data(&data);
>   }
> @@ -822,7 +823,8 @@ static void test_acpi_q35_tcg_cphp(void)
>       data.machine = MACHINE_Q35;
>       data.variant = ".cphp";
>       test_acpi_one("-machine q35,accel=tcg"
> -                  " -smp 2,cores=3,sockets=2,maxcpus=6",
> +                  " -smp 2,cores=3,sockets=2,maxcpus=6"
> +                  " -numa node -numa node",
>                     &data);
>       free_test_data(&data);
>   }
>


Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>

Thanks,
Marcel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 12:48   ` Marcel Apfelbaum
@ 2016-06-30 13:01     ` Igor Mammedov
  2016-06-30 13:11       ` Marcel Apfelbaum
  0 siblings, 1 reply; 14+ messages in thread
From: Igor Mammedov @ 2016-06-30 13:01 UTC (permalink / raw)
  To: Marcel Apfelbaum; +Cc: qemu-devel, mst

On Thu, 30 Jun 2016 15:48:54 +0300
Marcel Apfelbaum <marcel@redhat.com> wrote:

> On 06/30/2016 03:23 PM, Igor Mammedov wrote:
> > fixes long standing issue where Linux kernel would assing
> > hotplugged CPU to 1st numa node as it discards proximity
> > for hotplugged CPUs after SRAT is parsed.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> >   hw/acpi/cpu.c | 9 +++++++++
> >   1 file changed, 9 insertions(+)
> >
> > diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
> > index c13b65c..d9cf3ee 100644
> > --- a/hw/acpi/cpu.c
> > +++ b/hw/acpi/cpu.c
> > @@ -4,6 +4,7 @@
> >   #include "qapi/error.h"
> >   #include "qapi-event.h"
> >   #include "trace.h"
> > +#include "sysemu/numa.h"
> >
> >   #define ACPI_CPU_HOTPLUG_REG_LEN 12
> >   #define ACPI_CPU_SELECTOR_OFFSET_WR 0
> > @@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
> >
> >           /* build Processor object for each processor */
> >           for (i = 0; i < arch_ids->len; i++) {
> > +            int j;
> >               Aml *dev;
> >               Aml *uid = aml_int(i);
> >               GArray *madt_buf = g_array_new(0, 1, 1);
> > @@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
> >                             aml_arg(1), aml_arg(2))
> >               );
> >               aml_append(dev, method);
> > +
> > +            for (j = 0; j < nb_numa_nodes; j++) {
> > +                if (test_bit(i, numa_info[j].node_cpu)) {
> > +                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
> > +                }
> > +            }
> > +
> >               aml_append(cpus_dev, dev);
> >           }
> >       }
> >  
> 
> I would add, at least in the commit message, a pointer to the ACPI spec:
> 
> ACPI 5.0 (6.2.13)
> -----------------
> If the Local APIC ID / Local SAPIC ID / Local x2APIC ID of a dynamically added processor is not
> present in the System Resource Affinity Table (SRAT), a _PXM object must exist for the
> processor’s device or one of its ancestors in the ACPI Namespace.
> 
> 
> I suppose we don't have the APIC id in SRAT for all possible CPUs, so it OK.
we have entries for possible CPUs in SRAT and commit says that Linux discards it,
hence we need to add _PXM to CPU objects. So broken linux handling would put
hotplugged CPUs into corrected nodes.

To fix it on linux side, ACPI part probably would need to be refactored to store
parsed tables info somewhere else, so it would be available past boot time
(not a small undertaking) I'd say.
While fixing it on QEMU side is easy and works well even for currently released
kernels.


> 
> 
> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Thanks!

> 
> Thanks,
> Marcel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 13:01     ` Igor Mammedov
@ 2016-06-30 13:11       ` Marcel Apfelbaum
  2016-06-30 17:48         ` Michael S. Tsirkin
  0 siblings, 1 reply; 14+ messages in thread
From: Marcel Apfelbaum @ 2016-06-30 13:11 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: qemu-devel, mst

On 06/30/2016 04:01 PM, Igor Mammedov wrote:
> On Thu, 30 Jun 2016 15:48:54 +0300
> Marcel Apfelbaum <marcel@redhat.com> wrote:
>
>> On 06/30/2016 03:23 PM, Igor Mammedov wrote:
>>> fixes long standing issue where Linux kernel would assing
>>> hotplugged CPU to 1st numa node as it discards proximity
>>> for hotplugged CPUs after SRAT is parsed.
>>>
>>> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>>> ---
>>>    hw/acpi/cpu.c | 9 +++++++++
>>>    1 file changed, 9 insertions(+)
>>>
>>> diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
>>> index c13b65c..d9cf3ee 100644
>>> --- a/hw/acpi/cpu.c
>>> +++ b/hw/acpi/cpu.c
>>> @@ -4,6 +4,7 @@
>>>    #include "qapi/error.h"
>>>    #include "qapi-event.h"
>>>    #include "trace.h"
>>> +#include "sysemu/numa.h"
>>>
>>>    #define ACPI_CPU_HOTPLUG_REG_LEN 12
>>>    #define ACPI_CPU_SELECTOR_OFFSET_WR 0
>>> @@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
>>>
>>>            /* build Processor object for each processor */
>>>            for (i = 0; i < arch_ids->len; i++) {
>>> +            int j;
>>>                Aml *dev;
>>>                Aml *uid = aml_int(i);
>>>                GArray *madt_buf = g_array_new(0, 1, 1);
>>> @@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
>>>                              aml_arg(1), aml_arg(2))
>>>                );
>>>                aml_append(dev, method);
>>> +
>>> +            for (j = 0; j < nb_numa_nodes; j++) {
>>> +                if (test_bit(i, numa_info[j].node_cpu)) {
>>> +                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
>>> +                }
>>> +            }
>>> +
>>>                aml_append(cpus_dev, dev);
>>>            }
>>>        }
>>>
>>
>> I would add, at least in the commit message, a pointer to the ACPI spec:
>>
>> ACPI 5.0 (6.2.13)
>> -----------------
>> If the Local APIC ID / Local SAPIC ID / Local x2APIC ID of a dynamically added processor is not
>> present in the System Resource Affinity Table (SRAT), a _PXM object must exist for the
>> processor’s device or one of its ancestors in the ACPI Namespace.
>>
>>
>> I suppose we don't have the APIC id in SRAT for all possible CPUs, so it OK.
> we have entries for possible CPUs in SRAT and commit says that Linux discards it,
> hence we need to add _PXM to CPU objects. So broken linux handling would put
> hotplugged CPUs into corrected nodes.
>

OK, so the commit message was misleading: "Fixes" :)
Just flip "Fix" with "Workaround for... "

> To fix it on linux side, ACPI part probably would need to be refactored to store
> parsed tables info somewhere else, so it would be available past boot time
> (not a small undertaking) I'd say.

Maybe we should at least report it to the right mailing list.

> While fixing it on QEMU side is easy and works well even for currently released
> kernels.
>

I have nothing against this approach.

Thanks,
Marcel

>
>>
>>
>> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
> Thanks!
>
>>
>> Thanks,
>> Marcel
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Qemu-devel] [PATCH v2 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled Igor Mammedov
  2016-06-30 12:48   ` Marcel Apfelbaum
@ 2016-06-30 13:29   ` Igor Mammedov
  2016-06-30 17:47   ` [Qemu-devel] [PATCH " Michael S. Tsirkin
  2 siblings, 0 replies; 14+ messages in thread
From: Igor Mammedov @ 2016-06-30 13:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst, marcel

Workaround for long standing issue where Linux kernel
assings hotplugged CPU to 1st numa node as it discards
proximity for possible CPUs from SRAT after it's parsed.

_PXM method allows linux query proximity directly from
hotplugged CPU object, which allows Linux to assing CPU
to the correct numa node.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
---
 * ammended commit message
---
 hw/acpi/cpu.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
index c13b65c..d9cf3ee 100644
--- a/hw/acpi/cpu.c
+++ b/hw/acpi/cpu.c
@@ -4,6 +4,7 @@
 #include "qapi/error.h"
 #include "qapi-event.h"
 #include "trace.h"
+#include "sysemu/numa.h"
 
 #define ACPI_CPU_HOTPLUG_REG_LEN 12
 #define ACPI_CPU_SELECTOR_OFFSET_WR 0
@@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
 
         /* build Processor object for each processor */
         for (i = 0; i < arch_ids->len; i++) {
+            int j;
             Aml *dev;
             Aml *uid = aml_int(i);
             GArray *madt_buf = g_array_new(0, 1, 1);
@@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
                           aml_arg(1), aml_arg(2))
             );
             aml_append(dev, method);
+
+            for (j = 0; j < nb_numa_nodes; j++) {
+                if (test_bit(i, numa_info[j].node_cpu)) {
+                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
+                }
+            }
+
             aml_append(cpus_dev, dev);
         }
     }
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 12:23 ` [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled Igor Mammedov
  2016-06-30 12:48   ` Marcel Apfelbaum
  2016-06-30 13:29   ` [Qemu-devel] [PATCH v2 " Igor Mammedov
@ 2016-06-30 17:47   ` Michael S. Tsirkin
  2016-07-01  8:12     ` Igor Mammedov
  2 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2016-06-30 17:47 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: qemu-devel, marcel

On Thu, Jun 30, 2016 at 02:23:06PM +0200, Igor Mammedov wrote:
> fixes long standing issue where Linux kernel would assing

assign?

> hotplugged CPU to 1st numa node as it discards proximity
> for hotplugged CPUs after SRAT is parsed.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
>  hw/acpi/cpu.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
> index c13b65c..d9cf3ee 100644
> --- a/hw/acpi/cpu.c
> +++ b/hw/acpi/cpu.c
> @@ -4,6 +4,7 @@
>  #include "qapi/error.h"
>  #include "qapi-event.h"
>  #include "trace.h"
> +#include "sysemu/numa.h"
>  
>  #define ACPI_CPU_HOTPLUG_REG_LEN 12
>  #define ACPI_CPU_SELECTOR_OFFSET_WR 0
> @@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
>  
>          /* build Processor object for each processor */
>          for (i = 0; i < arch_ids->len; i++) {
> +            int j;
>              Aml *dev;
>              Aml *uid = aml_int(i);
>              GArray *madt_buf = g_array_new(0, 1, 1);
> @@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
>                            aml_arg(1), aml_arg(2))
>              );
>              aml_append(dev, method);
> +
> +            for (j = 0; j < nb_numa_nodes; j++) {
> +                if (test_bit(i, numa_info[j].node_cpu)) {
> +                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
> +                }
> +            }

this code is duplicated in a couple of other places.
how about a helper to find the numa node for a CPU?


> +
>              aml_append(cpus_dev, dev);
>          }
>      }


I'd like a comment here explaining why it's needed.
E.g. /*
      * Linux guests discard SRAT info for non-present CPUs
      * as a result _PXM is required for all CPUs which might
      * be hot-plugged. For simplicity, add it for all CPUs.
      */


> -- 
> 1.8.3.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 13:11       ` Marcel Apfelbaum
@ 2016-06-30 17:48         ` Michael S. Tsirkin
  0 siblings, 0 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2016-06-30 17:48 UTC (permalink / raw)
  To: Marcel Apfelbaum; +Cc: Igor Mammedov, qemu-devel

On Thu, Jun 30, 2016 at 04:11:44PM +0300, Marcel Apfelbaum wrote:
> On 06/30/2016 04:01 PM, Igor Mammedov wrote:
> > On Thu, 30 Jun 2016 15:48:54 +0300
> > Marcel Apfelbaum <marcel@redhat.com> wrote:
> > 
> > > On 06/30/2016 03:23 PM, Igor Mammedov wrote:
> > > > fixes long standing issue where Linux kernel would assing
> > > > hotplugged CPU to 1st numa node as it discards proximity
> > > > for hotplugged CPUs after SRAT is parsed.
> > > > 
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > ---
> > > >    hw/acpi/cpu.c | 9 +++++++++
> > > >    1 file changed, 9 insertions(+)
> > > > 
> > > > diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
> > > > index c13b65c..d9cf3ee 100644
> > > > --- a/hw/acpi/cpu.c
> > > > +++ b/hw/acpi/cpu.c
> > > > @@ -4,6 +4,7 @@
> > > >    #include "qapi/error.h"
> > > >    #include "qapi-event.h"
> > > >    #include "trace.h"
> > > > +#include "sysemu/numa.h"
> > > > 
> > > >    #define ACPI_CPU_HOTPLUG_REG_LEN 12
> > > >    #define ACPI_CPU_SELECTOR_OFFSET_WR 0
> > > > @@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
> > > > 
> > > >            /* build Processor object for each processor */
> > > >            for (i = 0; i < arch_ids->len; i++) {
> > > > +            int j;
> > > >                Aml *dev;
> > > >                Aml *uid = aml_int(i);
> > > >                GArray *madt_buf = g_array_new(0, 1, 1);
> > > > @@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
> > > >                              aml_arg(1), aml_arg(2))
> > > >                );
> > > >                aml_append(dev, method);
> > > > +
> > > > +            for (j = 0; j < nb_numa_nodes; j++) {
> > > > +                if (test_bit(i, numa_info[j].node_cpu)) {
> > > > +                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
> > > > +                }
> > > > +            }
> > > > +
> > > >                aml_append(cpus_dev, dev);
> > > >            }
> > > >        }
> > > > 
> > > 
> > > I would add, at least in the commit message, a pointer to the ACPI spec:
> > > 
> > > ACPI 5.0 (6.2.13)
> > > -----------------
> > > If the Local APIC ID / Local SAPIC ID / Local x2APIC ID of a dynamically added processor is not
> > > present in the System Resource Affinity Table (SRAT), a _PXM object must exist for the
> > > processor’s device or one of its ancestors in the ACPI Namespace.
> > > 
> > > 
> > > I suppose we don't have the APIC id in SRAT for all possible CPUs, so it OK.
> > we have entries for possible CPUs in SRAT and commit says that Linux discards it,
> > hence we need to add _PXM to CPU objects. So broken linux handling would put
> > hotplugged CPUs into corrected nodes.
> > 
> 
> OK, so the commit message was misleading: "Fixes" :)
> Just flip "Fix" with "Workaround for... "
> 
> > To fix it on linux side, ACPI part probably would need to be refactored to store
> > parsed tables info somewhere else, so it would be available past boot time
> > (not a small undertaking) I'd say.
> 
> Maybe we should at least report it to the right mailing list.

For sure, this can't hurt, but does not have to block
this patch.

> 
> > While fixing it on QEMU side is easy and works well even for currently released
> > kernels.
> > 
> 
> I have nothing against this approach.
> 
> Thanks,
> Marcel
> 
> > 
> > > 
> > > 
> > > Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
> > Thanks!
> > 
> > > 
> > > Thanks,
> > > Marcel
> > 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled
  2016-06-30 17:47   ` [Qemu-devel] [PATCH " Michael S. Tsirkin
@ 2016-07-01  8:12     ` Igor Mammedov
  0 siblings, 0 replies; 14+ messages in thread
From: Igor Mammedov @ 2016-07-01  8:12 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: marcel, qemu-devel

On Thu, 30 Jun 2016 20:47:33 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:

Thanks for review,
I'll fix up patch according to your comments and post v3 shortly

> On Thu, Jun 30, 2016 at 02:23:06PM +0200, Igor Mammedov wrote:
> > fixes long standing issue where Linux kernel would assing  
> 
> assign?
> 
> > hotplugged CPU to 1st numa node as it discards proximity
> > for hotplugged CPUs after SRAT is parsed.
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> >  hw/acpi/cpu.c | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c
> > index c13b65c..d9cf3ee 100644
> > --- a/hw/acpi/cpu.c
> > +++ b/hw/acpi/cpu.c
> > @@ -4,6 +4,7 @@
> >  #include "qapi/error.h"
> >  #include "qapi-event.h"
> >  #include "trace.h"
> > +#include "sysemu/numa.h"
> >  
> >  #define ACPI_CPU_HOTPLUG_REG_LEN 12
> >  #define ACPI_CPU_SELECTOR_OFFSET_WR 0
> > @@ -503,6 +504,7 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
> >  
> >          /* build Processor object for each processor */
> >          for (i = 0; i < arch_ids->len; i++) {
> > +            int j;
> >              Aml *dev;
> >              Aml *uid = aml_int(i);
> >              GArray *madt_buf = g_array_new(0, 1, 1);
> > @@ -546,6 +548,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts,
> >                            aml_arg(1), aml_arg(2))
> >              );
> >              aml_append(dev, method);
> > +
> > +            for (j = 0; j < nb_numa_nodes; j++) {
> > +                if (test_bit(i, numa_info[j].node_cpu)) {
> > +                    aml_append(dev, aml_name_decl("_PXM", aml_int(j)));
> > +                }
> > +            }  
> 
> this code is duplicated in a couple of other places.
> how about a helper to find the numa node for a CPU?
> 
> 
> > +
> >              aml_append(cpus_dev, dev);
> >          }
> >      }  
> 
> 
> I'd like a comment here explaining why it's needed.
> E.g. /*
>       * Linux guests discard SRAT info for non-present CPUs
>       * as a result _PXM is required for all CPUs which might
>       * be hot-plugged. For simplicity, add it for all CPUs.
>       */
> 
> 
> > -- 
> > 1.8.3.1  
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2016-07-01  8:13 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-30 12:23 [Qemu-devel] [PATCH 0/4] fix numa node mapping for hotplugged CPUs Igor Mammedov
2016-06-30 12:23 ` [Qemu-devel] [PATCH 1/4] tests: acpi: add CPU hotplug testcase Igor Mammedov
2016-06-30 12:42   ` Marcel Apfelbaum
2016-06-30 12:23 ` [Qemu-devel] [PATCH 2/4] tests: DO NOT APPLY: add APIC.cphp and DSDT.cphp blobs Igor Mammedov
2016-06-30 12:23 ` [Qemu-devel] [PATCH 3/4] acpi: provide _PXM method for CPU devices if QEMU is started numa enabled Igor Mammedov
2016-06-30 12:48   ` Marcel Apfelbaum
2016-06-30 13:01     ` Igor Mammedov
2016-06-30 13:11       ` Marcel Apfelbaum
2016-06-30 17:48         ` Michael S. Tsirkin
2016-06-30 13:29   ` [Qemu-devel] [PATCH v2 " Igor Mammedov
2016-06-30 17:47   ` [Qemu-devel] [PATCH " Michael S. Tsirkin
2016-07-01  8:12     ` Igor Mammedov
2016-06-30 12:23 ` [Qemu-devel] [PATCH 4/4] tests: acpi: extend cphp testcase with numa check Igor Mammedov
2016-06-30 12:52   ` Marcel Apfelbaum

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).