From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaofeng Ling Subject: [PATCH] make ctrl_if.c can be used in para-driver for unmodified guest Date: Mon, 05 Sep 2005 17:22:50 +0800 Message-ID: <431C0E6A.5000607@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ian Pratt , Keir Fraser Cc: xen-devel List-Id: xen-devel@lists.xenproject.org make ctrl_if.c can be used in para-driver for unmodified guest changes are: 1. use bind_evtchn_to_irqhandler instead of setup_irq 2. set safe_to_schedule_task = 1 in ctrl_if_init 3. remove warnings when build. #ifndef CONFIG_XEN means build with unmodified kernel not xen-linux. xen_start_info.domain_controller_evtchn is set in event channel pci driver. This file is needed for the front end drivers that is not ported to xenbus. Signed-off-by: Xiaofeng Ling Signed-off-by: Arun Sharma diff -r 287d36b46fa3 linux-2.6-xen-sparse/arch/xen/kernel/ctrl_if.c --- a/linux-2.6-xen-sparse/arch/xen/kernel/ctrl_if.c Tue Aug 30 20:36:49 2005 +++ b/linux-2.6-xen-sparse/arch/xen/kernel/ctrl_if.c Fri Sep 2 22:47:27 2005 @@ -67,10 +67,11 @@ int initdom_ctrlif_domcontroller_port = -1; static int ctrl_if_evtchn; +#ifdef CONFIG_XEN static int ctrl_if_irq; +static struct irqaction ctrl_if_irq_action; +#endif static spinlock_t ctrl_if_lock; - -static struct irqaction ctrl_if_irq_action; static ctrl_front_ring_t ctrl_if_tx_ring; static ctrl_back_ring_t ctrl_if_rx_ring; @@ -475,8 +476,12 @@ void ctrl_if_suspend(void) { +#ifdef CONFIG_XEN teardown_irq(ctrl_if_irq, &ctrl_if_irq_action); unbind_evtchn_from_irq(ctrl_if_evtchn); +#else + unbind_evtchn_from_irqhandler(ctrl_if_evtchn, NULL); +#endif } void ctrl_if_resume(void) @@ -510,12 +515,22 @@ BACK_RING_ATTACH(&ctrl_if_rx_ring, &ctrl_if->rx_ring, CONTROL_RING_MEM); ctrl_if_evtchn = xen_start_info.domain_controller_evtchn; +#ifdef CONFIG_XEN ctrl_if_irq = bind_evtchn_to_irq(ctrl_if_evtchn); memset(&ctrl_if_irq_action, 0, sizeof(ctrl_if_irq_action)); ctrl_if_irq_action.handler = ctrl_if_interrupt; ctrl_if_irq_action.name = "ctrl-if"; (void)setup_irq(ctrl_if_irq, &ctrl_if_irq_action); +#else + if(bind_evtchn_to_irqhandler( + ctrl_if_evtchn, ctrl_if_interrupt, SA_SAMPLE_RANDOM, "ctrl-if", NULL)) + { + printk("bind_evtchn_to_irqhandler failed\n" ); + return; + } + +#endif } void __init ctrl_if_init(void) @@ -532,6 +547,9 @@ spin_lock_init(&ctrl_if_lock); ctrl_if_resume(); +#ifndef CONFIG_XEN + safe_to_schedule_task = 1; +#endif }