From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: Re: [PATCH v2 2/2] sched_credit2.c: runqueue_per_core code Date: Tue, 17 Mar 2015 18:18:30 +0000 Message-ID: <1426616308.32500.98.camel@citrix.com> References: <20150313181109.GA3179@gmail.com> <55032C85.6090805@citrix.com> <550336EE.60909@eu.citrix.com> <5506DF40020000780006A407@mail.emea.novell.com> <5506D1E1.8050404@eu.citrix.com> <5506E11F020000780006A426@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1573777173780591054==" Return-path: In-Reply-To: <5506E11F020000780006A426@mail.emea.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: "JBeulich@suse.com" Cc: Andrew Cooper , "xen-devel@lists.xen.org" , George Dunlap , "uma.sharma523@gmail.com" List-Id: xen-devel@lists.xenproject.org --===============1573777173780591054== Content-Language: en-US Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-tGMVSHo4jQgsu5VuE+oL" --=-tGMVSHo4jQgsu5VuE+oL Content-Type: multipart/mixed; boundary="=-mdDNTEE6trAyqiew4REm" --=-mdDNTEE6trAyqiew4REm Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2015-03-16 at 12:56 +0000, Jan Beulich wrote: > >>> On 16.03.15 at 13:51, wrote: > > On 03/16/2015 12:48 PM, Jan Beulich wrote: > >> Them returning garbage isn't what needs fixing. Instead the code > >> here should use a different condition to check whether this is the > >> boot CPU (e.g. looking at system_state). And that can very well be > >> done directly in this patch. > >=20 > > What do you suggest, then? >=20 > My preferred solution would be, as said, to leverage system_state. > Provided the state to look for is consistent between x86 and ARM. >=20 Would something like this make sense? diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c index cfca5a7..2f2aa73 100644 --- a/xen/common/sched_credit2.c +++ b/xen/common/sched_credit2.c @@ -1936,12 +1936,8 @@ static void init_pcpu(const struct scheduler *ops, i= nt cpu) } =20 /* Figure out which runqueue to put it in */ - rqi =3D 0; - - /* Figure out which runqueue to put it in */ - /* NB: cpu 0 doesn't get a STARTING callback, so we hard-code it to ru= nqueue 0. */ - if ( cpu =3D=3D 0 ) - rqi =3D 0; + if ( system_state =3D=3D SYS_STATE_boot ) + rqi =3D boot_cpu_to_socket(cpu); else rqi =3D cpu_to_socket(cpu); =20 @@ -1986,9 +1982,13 @@ static void init_pcpu(const struct scheduler *ops, i= nt cpu) static void * csched2_alloc_pdata(const struct scheduler *ops, int cpu) { - /* Check to see if the cpu is online yet */ - /* Note: cpu 0 doesn't get a STARTING callback */ - if ( cpu =3D=3D 0 || cpu_to_socket(cpu) >=3D 0 ) + /* + * Actual initialization is deferred to when the pCPU will be + * online, via a STARTING callback. The only exception is + * the boot cpu, which does not get such a notification, and + * hence needs to be taken care of here. + */ + if ( system_state =3D=3D SYS_STATE_boot ) init_pcpu(ops, cpu); else printk("%s: cpu %d not online yet, deferring initializatgion\n", --=-mdDNTEE6trAyqiew4REm Content-Disposition: attachment; filename="credit2-system-state.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="credit2-system-state.patch"; charset="UTF-8" ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9zY2hl ZF9jcmVkaXQyLmMKaW5kZXggY2ZjYTVhNy4uMmYyYWE3MyAxMDA2NDQKLS0tIGEveGVuL2NvbW1v bi9zY2hlZF9jcmVkaXQyLmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKQEAgLTE5 MzYsMTIgKzE5MzYsOCBAQCBzdGF0aWMgdm9pZCBpbml0X3BjcHUoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLCBpbnQgY3B1KQogICAgIH0KIAogICAgIC8qIEZpZ3VyZSBvdXQgd2hpY2ggcnVu cXVldWUgdG8gcHV0IGl0IGluICovCi0gICAgcnFpID0gMDsKLQotICAgIC8qIEZpZ3VyZSBvdXQg d2hpY2ggcnVucXVldWUgdG8gcHV0IGl0IGluICovCi0gICAgLyogTkI6IGNwdSAwIGRvZXNuJ3Qg Z2V0IGEgU1RBUlRJTkcgY2FsbGJhY2ssIHNvIHdlIGhhcmQtY29kZSBpdCB0byBydW5xdWV1ZSAw LiAqLwotICAgIGlmICggY3B1ID09IDAgKQotICAgICAgICBycWkgPSAwOworICAgIGlmICggc3lz dGVtX3N0YXRlID09IFNZU19TVEFURV9ib290ICkKKyAgICAgICAgcnFpID0gYm9vdF9jcHVfdG9f c29ja2V0KGNwdSk7CiAgICAgZWxzZQogICAgICAgICBycWkgPSBjcHVfdG9fc29ja2V0KGNwdSk7 CiAKQEAgLTE5ODYsOSArMTk4MiwxMyBAQCBzdGF0aWMgdm9pZCBpbml0X3BjcHUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQogc3RhdGljIHZvaWQgKgogY3NjaGVkMl9hbGxv Y19wZGF0YShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiB7Ci0gICAgLyog Q2hlY2sgdG8gc2VlIGlmIHRoZSBjcHUgaXMgb25saW5lIHlldCAqLwotICAgIC8qIE5vdGU6IGNw dSAwIGRvZXNuJ3QgZ2V0IGEgU1RBUlRJTkcgY2FsbGJhY2sgKi8KLSAgICBpZiAoIGNwdSA9PSAw IHx8IGNwdV90b19zb2NrZXQoY3B1KSA+PSAwICkKKyAgICAvKgorICAgICAqIEFjdHVhbCBpbml0 aWFsaXphdGlvbiBpcyBkZWZlcnJlZCB0byB3aGVuIHRoZSBwQ1BVIHdpbGwgYmUKKyAgICAgKiBv bmxpbmUsIHZpYSBhIFNUQVJUSU5HIGNhbGxiYWNrLiBUaGUgb25seSBleGNlcHRpb24gaXMKKyAg ICAgKiB0aGUgYm9vdCBjcHUsIHdoaWNoIGRvZXMgbm90IGdldCBzdWNoIGEgbm90aWZpY2F0aW9u LCBhbmQKKyAgICAgKiBoZW5jZSBuZWVkcyB0byBiZSB0YWtlbiBjYXJlIG9mIGhlcmUuCisgICAg ICovCisgICAgaWYgKCBzeXN0ZW1fc3RhdGUgPT0gU1lTX1NUQVRFX2Jvb3QgKQogICAgICAgICBp bml0X3BjcHUob3BzLCBjcHUpOwogICAgIGVsc2UKICAgICAgICAgcHJpbnRrKCIlczogY3B1ICVk IG5vdCBvbmxpbmUgeWV0LCBkZWZlcnJpbmcgaW5pdGlhbGl6YXRnaW9uXG4iLAo= --=-mdDNTEE6trAyqiew4REm-- --=-tGMVSHo4jQgsu5VuE+oL Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iEYEABECAAYFAlUIb/UACgkQk4XaBE3IOsS1sACgl604xYVDuPCaiSwXQ3m4MTmU /CUAn2T3GOhqlQqLtOBC+RTxHlFz6QZ1 =NqSp -----END PGP SIGNATURE----- --=-tGMVSHo4jQgsu5VuE+oL-- --===============1573777173780591054== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --===============1573777173780591054==--