xref: /illumos-gate/usr/src/uts/i86pc/i86hvm/io/cmdk.c (revision c73799dd)
18b47140eSrab /*
28b47140eSrab  * CDDL HEADER START
38b47140eSrab  *
48b47140eSrab  * The contents of this file are subject to the terms of the
58b47140eSrab  * Common Development and Distribution License (the "License").
68b47140eSrab  * You may not use this file except in compliance with the License.
78b47140eSrab  *
88b47140eSrab  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
98b47140eSrab  * or http://www.opensolaris.org/os/licensing.
108b47140eSrab  * See the License for the specific language governing permissions
118b47140eSrab  * and limitations under the License.
128b47140eSrab  *
138b47140eSrab  * When distributing Covered Code, include this CDDL HEADER in each
148b47140eSrab  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
158b47140eSrab  * If applicable, add the following below this CDDL HEADER, with the
168b47140eSrab  * fields enclosed by brackets "[]" replaced with your own identifying
178b47140eSrab  * information: Portions Copyright [yyyy] [name of copyright owner]
188b47140eSrab  *
198b47140eSrab  * CDDL HEADER END
208b47140eSrab  */
21*c73799ddSYuri Pankov 
228b47140eSrab /*
238b47140eSrab  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
248b47140eSrab  * Use is subject to license terms.
258b47140eSrab  */
268b47140eSrab 
278b47140eSrab /*
28*c73799ddSYuri Pankov  * Fake cmdk module. Prevents the real cmdk driver from loading in
29*c73799ddSYuri Pankov  * a xen HVM domain so that xdf may operate instead.
308b47140eSrab  */
318b47140eSrab 
328b47140eSrab #include <sys/sunddi.h>
338b47140eSrab #include <sys/errno.h>
348b47140eSrab #include <sys/modctl.h>
358b47140eSrab 
36*c73799ddSYuri Pankov /*ARGSUSED*/
37*c73799ddSYuri Pankov static int
stubattach(dev_info_t * dip,ddi_attach_cmd_t cmd)38*c73799ddSYuri Pankov stubattach(dev_info_t *dip, ddi_attach_cmd_t cmd)
39*c73799ddSYuri Pankov {
40*c73799ddSYuri Pankov 	return (DDI_SUCCESS);
41*c73799ddSYuri Pankov }
42*c73799ddSYuri Pankov 
43*c73799ddSYuri Pankov /*ARGSUSED*/
44*c73799ddSYuri Pankov static int
stubdetach(dev_info_t * dip,ddi_detach_cmd_t cmd)45*c73799ddSYuri Pankov stubdetach(dev_info_t *dip, ddi_detach_cmd_t cmd)
46*c73799ddSYuri Pankov {
47*c73799ddSYuri Pankov 	return (DDI_SUCCESS);
48*c73799ddSYuri Pankov }
49*c73799ddSYuri Pankov 
50*c73799ddSYuri Pankov static struct dev_ops stub_ops = {
518b47140eSrab 	DEVO_REV,
528b47140eSrab 	0,
538b47140eSrab 	NULL,
548b47140eSrab 	nulldev,
558b47140eSrab 	nulldev,
56*c73799ddSYuri Pankov 	stubattach,
57*c73799ddSYuri Pankov 	stubdetach,
588b47140eSrab 	nodev,
598b47140eSrab 	NULL,
6019397407SSherry Moore 	NULL,
6119397407SSherry Moore 	NULL,
62*c73799ddSYuri Pankov 	ddi_quiesce_not_needed
638b47140eSrab };
648b47140eSrab 
658b47140eSrab static struct modldrv modldrv = {
668b47140eSrab 	&mod_driverops,
67*c73799ddSYuri Pankov 	"xVM cmdk stub",
68*c73799ddSYuri Pankov 	&stub_ops
698b47140eSrab };
708b47140eSrab 
718b47140eSrab static struct modlinkage modlinkage = {
728b47140eSrab 	MODREV_1, (void *)&modldrv, NULL
738b47140eSrab };
748b47140eSrab 
758b47140eSrab int
_init(void)768b47140eSrab _init(void)
778b47140eSrab {
788b47140eSrab 	return (mod_install(&modlinkage));
798b47140eSrab }
808b47140eSrab 
818b47140eSrab int
_info(struct modinfo * modinfop)828b47140eSrab _info(struct modinfo *modinfop)
838b47140eSrab {
848b47140eSrab 	return (mod_info(&modlinkage, modinfop));
858b47140eSrab }
868b47140eSrab 
878b47140eSrab int
_fini(void)888b47140eSrab _fini(void)
898b47140eSrab {
908b47140eSrab 	return (EBUSY);
918b47140eSrab }
92