From owner-svn-src-head@freebsd.org Sat May 12 20:00:30 2018 Return-Path: Delivered-To: svn-src-head@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 63407FCE4CE; Sat, 12 May 2018 20:00:30 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1132E6ED2F; Sat, 12 May 2018 20:00:30 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E4EB122E09; Sat, 12 May 2018 20:00:29 +0000 (UTC) (envelope-from mmacy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4CK0Tnb065125; Sat, 12 May 2018 20:00:29 GMT (envelope-from mmacy@FreeBSD.org) Received: (from mmacy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4CK0TB8065122; Sat, 12 May 2018 20:00:29 GMT (envelope-from mmacy@FreeBSD.org) Message-Id: <201805122000.w4CK0TB8065122@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mmacy set sender to mmacy@FreeBSD.org using -f From: Matt Macy Date: Sat, 12 May 2018 20:00:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r333575 - in head/sys: dev/hwpmc kern X-SVN-Group: head X-SVN-Commit-Author: mmacy X-SVN-Commit-Paths: in head/sys: dev/hwpmc kern X-SVN-Commit-Revision: 333575 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 May 2018 20:00:30 -0000 Author: mmacy Date: Sat May 12 20:00:29 2018 New Revision: 333575 URL: https://svnweb.freebsd.org/changeset/base/333575 Log: hwpmc/epoch - don't reference domain if NUMA is not set It appears that domain information is set correctly independent of whether or not NUMA is defined. However, there is no memory backing secondary domains leading to allocation failure. Reported by: pho@, np@ Approved by: sbruno@ Modified: head/sys/dev/hwpmc/hwpmc_logging.c head/sys/dev/hwpmc/hwpmc_mod.c head/sys/kern/subr_epoch.c Modified: head/sys/dev/hwpmc/hwpmc_logging.c ============================================================================== --- head/sys/dev/hwpmc/hwpmc_logging.c Sat May 12 18:07:53 2018 (r333574) +++ head/sys/dev/hwpmc/hwpmc_logging.c Sat May 12 20:00:29 2018 (r333575) @@ -61,6 +61,24 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef NUMA +#define NDOMAINS vm_ndomains + +static int +getdomain(int cpu) +{ + struct pcpu *pc; + + pc = pcpu_find(cpu); + return (pc->pc_domain); +} +#else +#define NDOMAINS 1 +#define malloc_domain(size, type, domain, flags) malloc((size), (type), (flags)) +#define free_domain(addr, type) free(addr, type) +#define getdomain(cpu) 0 +#endif + /* * Sysctl tunables */ @@ -1148,7 +1166,6 @@ void pmclog_initialize() { int domain, cpu; - struct pcpu *pc; struct pmclog_buffer *plb; if (pmclog_buffer_size <= 0 || pmclog_buffer_size > 16*1024) { @@ -1170,20 +1187,18 @@ pmclog_initialize() pmc_nlogbuffers_pcpu = PMC_NLOGBUFFERS_PCPU; pmclog_buffer_size = PMC_LOG_BUFFER_SIZE; } - for (domain = 0; domain < vm_ndomains; domain++) { + for (domain = 0; domain < NDOMAINS; domain++) { pmc_dom_hdrs[domain] = malloc_domain(sizeof(struct pmc_domain_buffer_header), M_PMC, domain, M_WAITOK|M_ZERO); mtx_init(&pmc_dom_hdrs[domain]->pdbh_mtx, "pmc_bufferlist_mtx", "pmc-leaf", MTX_SPIN); TAILQ_INIT(&pmc_dom_hdrs[domain]->pdbh_head); } CPU_FOREACH(cpu) { - if (CPU_ABSENT(cpu)) - continue; - pc = pcpu_find(cpu); - domain = pc->pc_domain; + domain = getdomain(cpu); + KASSERT(pmc_dom_hdrs[domain] != NULL, ("no mem allocated for domain: %d", domain)); pmc_dom_hdrs[domain]->pdbh_ncpus++; } - for (domain = 0; domain < vm_ndomains; domain++) { + for (domain = 0; domain < NDOMAINS; domain++) { int ncpus = pmc_dom_hdrs[domain]->pdbh_ncpus; int total = ncpus*pmc_nlogbuffers_pcpu; @@ -1215,7 +1230,7 @@ pmclog_shutdown() mtx_destroy(&pmc_kthread_mtx); - for (domain = 0; domain < vm_ndomains; domain++) { + for (domain = 0; domain < NDOMAINS; domain++) { mtx_destroy(&pmc_dom_hdrs[domain]->pdbh_mtx); while ((plb = TAILQ_FIRST(&pmc_dom_hdrs[domain]->pdbh_head)) != NULL) { TAILQ_REMOVE(&pmc_dom_hdrs[domain]->pdbh_head, plb, plb_next); Modified: head/sys/dev/hwpmc/hwpmc_mod.c ============================================================================== --- head/sys/dev/hwpmc/hwpmc_mod.c Sat May 12 18:07:53 2018 (r333574) +++ head/sys/dev/hwpmc/hwpmc_mod.c Sat May 12 20:00:29 2018 (r333575) @@ -76,6 +76,14 @@ __FBSDID("$FreeBSD$"); #include "hwpmc_soft.h" +#ifdef NUMA +#define NDOMAINS vm_ndomains +#else +#define NDOMAINS 1 +#define malloc_domain(size, type, domain, flags) malloc((size), (type), (flags)) +#define free_domain(addr, type) free(addr, type) +#endif + /* * Types */ Modified: head/sys/kern/subr_epoch.c ============================================================================== --- head/sys/kern/subr_epoch.c Sat May 12 18:07:53 2018 (r333574) +++ head/sys/kern/subr_epoch.c Sat May 12 20:00:29 2018 (r333575) @@ -119,7 +119,7 @@ static __read_mostly int inited; static void epoch_call_task(void *context); -#if defined(__powerpc64__) || defined(__powerpc__) +#if defined(__powerpc64__) || defined(__powerpc__) || !defined(NUMA) static bool usedomains = false; #else static bool usedomains = true;