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 Stabellinistatic 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 Stabellinistatic 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 Wilkstatic 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 Wilkstatic 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 Wilkstatic 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 Wilkstatic 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