From owner-svn-src-all@freebsd.org Sun Aug 26 20:55:16 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 272E41081DDE for ; Sun, 26 Aug 2018 20:55:16 +0000 (UTC) (envelope-from 010001657804d39a-54227e19-0fac-430f-9574-f83e225afb47-000000@amazonses.com) Received: from a8-52.smtp-out.amazonses.com (a8-52.smtp-out.amazonses.com [54.240.8.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A79CA70BD6 for ; Sun, 26 Aug 2018 20:55:15 +0000 (UTC) (envelope-from 010001657804d39a-54227e19-0fac-430f-9574-f83e225afb47-000000@amazonses.com) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=dqtolf56kk3wpt62c3jnwboqvr7iedax; d=tarsnap.com; t=1535316908; h=Subject:To:References:From:Message-ID:Date:MIME-Version:In-Reply-To:Content-Type; bh=oH9pcCj7VZGNM7R0xKdSkud/xleKpsYjciEV1Peu2n0=; b=X1wtLV9M6nYKE6WB/SIssoiCBqkdmE0WS0IxLIUms/Zs2mtQfXu4zDw3Rs2Rga+g zi+/9J7Nkmg0wsnPglWlW4ajt5JmRnI+Q0rWKwAq0jNoklMQ3DQomRUcggRs0tFE0Bu dKjrWK2BIbYZadSGf4Knp92EdeVLjWUCbfEmqPlQ= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1535316908; h=Subject:To:References:From:Message-ID:Date:MIME-Version:In-Reply-To:Content-Type:Feedback-ID; bh=oH9pcCj7VZGNM7R0xKdSkud/xleKpsYjciEV1Peu2n0=; b=KUDi1IflV3zCsc+s66bVx3CZxW4XNyiafwr5OhAnBQB8WMPrpE7Y8hv3tSG3+eke q6fAiqZiTEbFgyuJqlhjxrOI22oNSU9vVi8kYjRE0OoM5tEsl3EXTMZpldMQ51uGovq K22Z8r0Ab0gyMUy+/6LYJ/lv13R4lW6X7+ahACIw= Subject: Re: svn commit: r335668 - head/sys/x86/xen To: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <201806261500.w5QF0s1I071232@repo.freebsd.org> From: Colin Percival Openpgp: preference=signencrypt Autocrypt: addr=cperciva@tarsnap.com; prefer-encrypt=mutual; keydata= xsDhBElrAAcRBACDfDys4ZtK+ErCJ1HAzYeteKpm3OEsvT/49AjUTLihkF79HhIKrCQU+1KC zv7BwHCMLb6hq30As9L7iFKG7n5QFLFC4Te/VcITUnWHMG/c3ViLOfJGvi+9/nOEHaM1dVJY D6tEp5yM1nHmVQpo9932j4KGuGFR0LhOK5IHXOSfGwCgxSFDPdgxe2OEjWxjGgY+oV3EafcD +JROXCTjlcQiG/OguQH4Vks3mhHfFnEppLxTkDuYgHZQiUtpcT9ssH5khgqoTyMar05OUdAj ZIhNbWDh4LgTj+7ZmvLhXT5Zxw8LX9d7T36aTB8XDQSenDqEtinMWOb0TCBBLbsB8EFG1WTT ESbZci9jJS5yhtktuZoY/eM8uXMD/3k4FWFO80VRRkELSp+XSy/VlSQjyi/rhl2nQq/oOA9F oJbDaB0yq9VNhxP+uFBzBWSqeIX0t1ZWLtNfVFr4TRP5hihI5ICrg/0OpqgisKsU2NFe9xyO hyJLYmfD8ebpDJ/9k30C7Iju9pVrwLm1QgS4S2fqJRcR+U4WbjvP7CgSzSVDb2xpbiBQZXJj aXZhbCA8Y3BlcmNpdmFAdGFyc25hcC5jb20+wmEEExECACEFAklrALYCGwMHCwkIBwMCAQQV AggDBBYCAwECHgECF4AACgkQOM7KaQxqam6/igCgn+z2k3V5ggNppmWrZstt1U2lugsAoL7L wS9V9yLtil3oWmHtwpUqYruEzsFNBElrAAcQCAD3ZLMIsP4CIDoJORg+YY0lqLVBgcnF7pFb 4Uy2+KvdWofN+DKH61rZLjgXXkNE9M4EQC1B4lGttBP8IY2gs41y3AUogGdyFbidq99rCBz7 LTsgARHwFxZoaHmXyiZLEU1QZuMqwPZV1mCviRhN5E3rRqYNXVcrnXAAuhBpvNyj/ntHvcDN 2/m+ochiuBYueU4kX3lHya7sOj+mTsndcWmQ9soOUyr8O0r/BG088bMn4qqtUw4dl5/pglXk jbl7uOOPinKf0WVd2r6M0wLPJCD4NPHrCWRLLLAjwfjrtoSRvXxDbXhCdgGBa72+K8eYLzVs hgq7tJOoBWzjVK6XRxR7AAMGB/9Mo3iJ2DxqDecd02KCB5BsFDICbJGhPltU7FwrtbC7djSb XUrwsEVLHi4st4cbdGNCWCrp0BRezXZKohKnNAPFOTK++ZfgeKxrV2sJod+Q9RILF86tQ4XF 7A7Yme5hy92t/WgiU4vc/fWbgP8gV/19f8nunaT2E9NSa70mZFjZNu4iuwThoUUO5CV3Wo0Y UISsnRK8XD1+LR3A2qVyLiFRwh/miC1hgLFCTGCQ3GLxZeZzIpYSlGdQJ0L5lixW5ZQD9r1I 8i/8zhE6qRFAM0upUMI3Gt1Oq2w03DiXrZU0Fu/R8Rm8rlnkQKA+95mRTUq1xL5P5NZIi4gJ Z569OPMFwkkEGBECAAkFAklrAAcCGwwACgkQOM7KaQxqam41igCfbaldnFTu5uAdrnrghESv EI3CAo8AoLkNMks1pThl2BJNRm4CtTK9xZeH Message-ID: <010001657804d39a-54227e19-0fac-430f-9574-f83e225afb47-000000@email.amazonses.com> Date: Sun, 26 Aug 2018 20:55:06 +0000 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:60.0) Gecko/20100101 Thunderbird/60.0 MIME-Version: 1.0 In-Reply-To: <201806261500.w5QF0s1I071232@repo.freebsd.org> Content-Language: en-US X-SES-Outgoing: 2018.08.26-54.240.8.52 Feedback-ID: 1.us-east-1.Lv9FVjaNvvR5llaqfLoOVbo2VxOELl7cjN0AOyXnPlk=:AmazonSES Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.27 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Aug 2018 20:55:16 -0000 This breaks the kernel boot in EC2 Xen-based instances; it now hangs in the taskqgroup_adjust_if_io_tqg SYSINIT. I've attached a verbose dmesg from r335666 in case that helps you figure out what's going on. My guess is that EC2 is numbering virtual CPUs oddly -- but regardless of the cause, this definitely needs to be fixed. Colin Percival On 6/26/18 8:00 AM, Roger Pau Monné wrote: > Author: royger > Date: Tue Jun 26 15:00:54 2018 > New Revision: 335668 > URL: https://svnweb.freebsd.org/changeset/base/335668 > > Log: > xen: obtain vCPU ID from CPUID > > The Xen vCPU ID can be fetched from the cpuid instead of inferring it > from the ACPI ID. > > Sponsored by: Citrix Systems R&D > > Modified: > head/sys/x86/xen/hvm.c > > Modified: head/sys/x86/xen/hvm.c > ============================================================================== > --- head/sys/x86/xen/hvm.c Tue Jun 26 14:48:23 2018 (r335667) > +++ head/sys/x86/xen/hvm.c Tue Jun 26 15:00:54 2018 (r335668) > @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > > +#include > #include > #include > > @@ -103,6 +104,9 @@ TUNABLE_INT("hw.xen.disable_pv_disks", &xen_disable_pv > TUNABLE_INT("hw.xen.disable_pv_nics", &xen_disable_pv_nics); > > /*---------------------- XEN Hypervisor Probe and Setup ----------------------*/ > + > +static uint32_t cpuid_base; > + > static uint32_t > xen_hvm_cpuid_base(void) > { > @@ -123,21 +127,21 @@ xen_hvm_cpuid_base(void) > static int > xen_hvm_init_hypercall_stubs(enum xen_hvm_init_type init_type) > { > - uint32_t base, regs[4]; > + uint32_t regs[4]; > > if (xen_pv_domain()) { > /* hypercall page is already set in the PV case */ > return (0); > } > > - base = xen_hvm_cpuid_base(); > - if (base == 0) > + cpuid_base = xen_hvm_cpuid_base(); > + if (cpuid_base == 0) > return (ENXIO); > > if (init_type == XEN_HVM_INIT_COLD) { > int major, minor; > > - do_cpuid(base + 1, regs); > + do_cpuid(cpuid_base + 1, regs); > > major = regs[0] >> 16; > minor = regs[0] & 0xffff; > @@ -165,7 +169,7 @@ xen_hvm_init_hypercall_stubs(enum xen_hvm_init_type in > /* > * Find the hypercall pages. > */ > - do_cpuid(base + 2, regs); > + do_cpuid(cpuid_base + 2, regs); > if (regs[0] != 1) > return (EINVAL); > > @@ -371,31 +375,14 @@ xen_hvm_sysinit(void *arg __unused) > { > xen_hvm_init(XEN_HVM_INIT_COLD); > } > +SYSINIT(xen_hvm_init, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, xen_hvm_sysinit, NULL); > > static void > -xen_set_vcpu_id(void) > -{ > - struct pcpu *pc; > - int i; > - > - if (!xen_hvm_domain()) > - return; > - > - /* Set vcpu_id to acpi_id */ > - CPU_FOREACH(i) { > - pc = pcpu_find(i); > - pc->pc_vcpu_id = pc->pc_acpi_id; > - if (bootverbose) > - printf("XEN: CPU %u has VCPU ID %u\n", > - i, pc->pc_vcpu_id); > - } > -} > - > -static void > xen_hvm_cpu_init(void) > { > struct vcpu_register_vcpu_info info; > struct vcpu_info *vcpu_info; > + uint32_t regs[4]; > int cpu, rc; > > if (!xen_domain()) > @@ -410,6 +397,22 @@ xen_hvm_cpu_init(void) > return; > } > > + /* > + * Set vCPU ID. If available fetch the ID from CPUID, if not just use > + * the ACPI ID. > + */ > + KASSERT(cpuid_base != 0, ("Invalid base Xen CPUID leaf")); > + cpuid_count(cpuid_base + 4, 0, regs); > + PCPU_SET(vcpu_id, (regs[0] & XEN_HVM_CPUID_VCPU_ID_PRESENT) ? > + regs[1] : PCPU_GET(acpi_id)); > + > + /* > + * Set the vCPU info. > + * > + * NB: the vCPU info for vCPUs < 32 can be fetched from the shared info > + * page, but in order to make sure the mapping code is correct always > + * attempt to map the vCPU info at a custom place. > + */ > vcpu_info = DPCPU_PTR(vcpu_local_info); > cpu = PCPU_GET(vcpu_id); > info.mfn = vtophys(vcpu_info) >> PAGE_SHIFT; > @@ -421,7 +424,4 @@ xen_hvm_cpu_init(void) > else > DPCPU_SET(vcpu_info, vcpu_info); > } > - > -SYSINIT(xen_hvm_init, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, xen_hvm_sysinit, NULL); > SYSINIT(xen_hvm_cpu_init, SI_SUB_INTR, SI_ORDER_FIRST, xen_hvm_cpu_init, NULL); > -SYSINIT(xen_set_vcpu_id, SI_SUB_CPU, SI_ORDER_ANY, xen_set_vcpu_id, NULL); > > > -- Colin Percival Security Officer Emeritus, FreeBSD | The power to serve Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid