From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH] x86/HPET: don't needlessly set up channels for broadcast Date: Thu, 27 Sep 2012 16:31:06 +0100 Message-ID: References: <506484FA020000780009E43D@nat28.tlf.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <506484FA020000780009E43D@nat28.tlf.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich , xen-devel List-Id: xen-devel@lists.xenproject.org On 27/09/2012 15:55, "Jan Beulich" wrote: > When there are more FSB delivery capable HPET channels than CPU cores > (or threads), we can simply use a dedicated channel per CPU. This > avoids wasting the resources to handle the excess channels (including > the pointless triggering of the respective interrupt on each > wraparound) as well as the ping-pong of the interrupts' affinities > (when getting assigned to different CPUs). > > Signed-off-by: Jan Beulich Acked-by: Keir Fraser > --- a/xen/arch/x86/hpet.c > +++ b/xen/arch/x86/hpet.c > @@ -369,7 +369,7 @@ static void __init hpet_fsb_cap_lookup(v > if ( !hpet_events ) > return; > > - for ( i = 0; i < num_chs; i++ ) > + for ( i = 0; i < num_chs && num_hpets_used < nr_cpu_ids; i++ ) > { > struct hpet_event_channel *ch = &hpet_events[num_hpets_used]; > u32 cfg = hpet_read32(HPET_Tn_CFG(i)); > @@ -408,6 +408,9 @@ static struct hpet_event_channel *hpet_g > if ( num_hpets_used == 0 ) > return hpet_events; > > + if ( num_hpets_used >= nr_cpu_ids ) > + return &hpet_events[cpu]; > + > do { > next = next_channel; > if ( (i = next + 1) == num_hpets_used ) > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel