xref: /openbmc/linux/include/xen/platform_pci.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2c1c5413aSStefano Stabellini #ifndef _XEN_PLATFORM_PCI_H
3c1c5413aSStefano Stabellini #define _XEN_PLATFORM_PCI_H
4c1c5413aSStefano Stabellini 
5c1c5413aSStefano Stabellini #define XEN_IOPORT_MAGIC_VAL 0x49d2
6c1c5413aSStefano Stabellini #define XEN_IOPORT_LINUX_PRODNUM 0x0003
7c1c5413aSStefano Stabellini #define XEN_IOPORT_LINUX_DRVVER  0x0001
8c1c5413aSStefano Stabellini 
9c1c5413aSStefano Stabellini #define XEN_IOPORT_BASE 0x10
10c1c5413aSStefano Stabellini 
11c1c5413aSStefano Stabellini #define XEN_IOPORT_PLATFLAGS	(XEN_IOPORT_BASE + 0) /* 1 byte access (R/W) */
12c1c5413aSStefano Stabellini #define XEN_IOPORT_MAGIC	(XEN_IOPORT_BASE + 0) /* 2 byte access (R) */
13c1c5413aSStefano Stabellini #define XEN_IOPORT_UNPLUG	(XEN_IOPORT_BASE + 0) /* 2 byte access (W) */
14c1c5413aSStefano Stabellini #define XEN_IOPORT_DRVVER	(XEN_IOPORT_BASE + 0) /* 4 byte access (W) */
15c1c5413aSStefano Stabellini 
16c1c5413aSStefano Stabellini #define XEN_IOPORT_SYSLOG	(XEN_IOPORT_BASE + 2) /* 1 byte access (W) */
17c1c5413aSStefano Stabellini #define XEN_IOPORT_PROTOVER	(XEN_IOPORT_BASE + 2) /* 1 byte access (R) */
18c1c5413aSStefano Stabellini #define XEN_IOPORT_PRODNUM	(XEN_IOPORT_BASE + 2) /* 2 byte access (W) */
19c1c5413aSStefano Stabellini 
209c35e90cSIan Campbell #define XEN_UNPLUG_ALL_IDE_DISKS	(1<<0)
219c35e90cSIan Campbell #define XEN_UNPLUG_ALL_NICS		(1<<1)
229c35e90cSIan Campbell #define XEN_UNPLUG_AUX_IDE_DISKS	(1<<2)
239c35e90cSIan Campbell #define XEN_UNPLUG_ALL			(XEN_UNPLUG_ALL_IDE_DISKS|\
249c35e90cSIan Campbell 					 XEN_UNPLUG_ALL_NICS|\
259c35e90cSIan Campbell 					 XEN_UNPLUG_AUX_IDE_DISKS)
269c35e90cSIan Campbell 
279c35e90cSIan Campbell #define XEN_UNPLUG_UNNECESSARY 		(1<<16)
289c35e90cSIan Campbell #define XEN_UNPLUG_NEVER	 		(1<<17)
29c1c5413aSStefano Stabellini 
xen_must_unplug_nics(void)30c1c5413aSStefano Stabellini static inline int xen_must_unplug_nics(void) {
31c1c5413aSStefano Stabellini #if (defined(CONFIG_XEN_NETDEV_FRONTEND) || \
32c1c5413aSStefano Stabellini 		defined(CONFIG_XEN_NETDEV_FRONTEND_MODULE)) && \
335f76d707SDaniel De Graaf 		defined(CONFIG_XEN_PVHVM)
34c1c5413aSStefano Stabellini         return 1;
35c1c5413aSStefano Stabellini #else
36c1c5413aSStefano Stabellini         return 0;
37c1c5413aSStefano Stabellini #endif
38c1c5413aSStefano Stabellini }
39c1c5413aSStefano Stabellini 
xen_must_unplug_disks(void)40c1c5413aSStefano Stabellini static inline int xen_must_unplug_disks(void) {
41c1c5413aSStefano Stabellini #if (defined(CONFIG_XEN_BLKDEV_FRONTEND) || \
42c1c5413aSStefano Stabellini 		defined(CONFIG_XEN_BLKDEV_FRONTEND_MODULE)) && \
435f76d707SDaniel De Graaf 		defined(CONFIG_XEN_PVHVM)
44c1c5413aSStefano Stabellini         return 1;
45c1c5413aSStefano Stabellini #else
46c1c5413aSStefano Stabellini         return 0;
47c1c5413aSStefano Stabellini #endif
48c1c5413aSStefano Stabellini }
49c1c5413aSStefano Stabellini 
5051c71a3bSKonrad Rzeszutek Wilk #if defined(CONFIG_XEN_PVHVM)
5151c71a3bSKonrad Rzeszutek Wilk extern bool xen_has_pv_devices(void);
5251c71a3bSKonrad Rzeszutek Wilk extern bool xen_has_pv_disk_devices(void);
5351c71a3bSKonrad Rzeszutek Wilk extern bool xen_has_pv_nic_devices(void);
5451c71a3bSKonrad Rzeszutek Wilk extern bool xen_has_pv_and_legacy_disk_devices(void);
5551c71a3bSKonrad Rzeszutek Wilk #else
xen_has_pv_devices(void)5651c71a3bSKonrad Rzeszutek Wilk static inline bool xen_has_pv_devices(void)
5751c71a3bSKonrad Rzeszutek Wilk {
5851c71a3bSKonrad Rzeszutek Wilk 	return IS_ENABLED(CONFIG_XEN);
5951c71a3bSKonrad Rzeszutek Wilk }
xen_has_pv_disk_devices(void)6051c71a3bSKonrad Rzeszutek Wilk static inline bool xen_has_pv_disk_devices(void)
6151c71a3bSKonrad Rzeszutek Wilk {
6251c71a3bSKonrad Rzeszutek Wilk 	return IS_ENABLED(CONFIG_XEN);
6351c71a3bSKonrad Rzeszutek Wilk }
xen_has_pv_nic_devices(void)6451c71a3bSKonrad Rzeszutek Wilk static inline bool xen_has_pv_nic_devices(void)
6551c71a3bSKonrad Rzeszutek Wilk {
6651c71a3bSKonrad Rzeszutek Wilk 	return IS_ENABLED(CONFIG_XEN);
6751c71a3bSKonrad Rzeszutek Wilk }
xen_has_pv_and_legacy_disk_devices(void)6851c71a3bSKonrad Rzeszutek Wilk static inline bool xen_has_pv_and_legacy_disk_devices(void)
6951c71a3bSKonrad Rzeszutek Wilk {
7051c71a3bSKonrad Rzeszutek Wilk 	return false;
7151c71a3bSKonrad Rzeszutek Wilk }
7251c71a3bSKonrad Rzeszutek Wilk #endif
73c1c5413aSStefano Stabellini #endif /* _XEN_PLATFORM_PCI_H */
74