1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _XEN_PLATFORM_PCI_H 3*4882a593Smuzhiyun #define _XEN_PLATFORM_PCI_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #define XEN_IOPORT_MAGIC_VAL 0x49d2 6*4882a593Smuzhiyun #define XEN_IOPORT_LINUX_PRODNUM 0x0003 7*4882a593Smuzhiyun #define XEN_IOPORT_LINUX_DRVVER 0x0001 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #define XEN_IOPORT_BASE 0x10 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #define XEN_IOPORT_PLATFLAGS (XEN_IOPORT_BASE + 0) /* 1 byte access (R/W) */ 12*4882a593Smuzhiyun #define XEN_IOPORT_MAGIC (XEN_IOPORT_BASE + 0) /* 2 byte access (R) */ 13*4882a593Smuzhiyun #define XEN_IOPORT_UNPLUG (XEN_IOPORT_BASE + 0) /* 2 byte access (W) */ 14*4882a593Smuzhiyun #define XEN_IOPORT_DRVVER (XEN_IOPORT_BASE + 0) /* 4 byte access (W) */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define XEN_IOPORT_SYSLOG (XEN_IOPORT_BASE + 2) /* 1 byte access (W) */ 17*4882a593Smuzhiyun #define XEN_IOPORT_PROTOVER (XEN_IOPORT_BASE + 2) /* 1 byte access (R) */ 18*4882a593Smuzhiyun #define XEN_IOPORT_PRODNUM (XEN_IOPORT_BASE + 2) /* 2 byte access (W) */ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define XEN_UNPLUG_ALL_IDE_DISKS (1<<0) 21*4882a593Smuzhiyun #define XEN_UNPLUG_ALL_NICS (1<<1) 22*4882a593Smuzhiyun #define XEN_UNPLUG_AUX_IDE_DISKS (1<<2) 23*4882a593Smuzhiyun #define XEN_UNPLUG_ALL (XEN_UNPLUG_ALL_IDE_DISKS|\ 24*4882a593Smuzhiyun XEN_UNPLUG_ALL_NICS|\ 25*4882a593Smuzhiyun XEN_UNPLUG_AUX_IDE_DISKS) 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define XEN_UNPLUG_UNNECESSARY (1<<16) 28*4882a593Smuzhiyun #define XEN_UNPLUG_NEVER (1<<17) 29*4882a593Smuzhiyun xen_must_unplug_nics(void)30*4882a593Smuzhiyunstatic inline int xen_must_unplug_nics(void) { 31*4882a593Smuzhiyun #if (defined(CONFIG_XEN_NETDEV_FRONTEND) || \ 32*4882a593Smuzhiyun defined(CONFIG_XEN_NETDEV_FRONTEND_MODULE)) && \ 33*4882a593Smuzhiyun defined(CONFIG_XEN_PVHVM) 34*4882a593Smuzhiyun return 1; 35*4882a593Smuzhiyun #else 36*4882a593Smuzhiyun return 0; 37*4882a593Smuzhiyun #endif 38*4882a593Smuzhiyun } 39*4882a593Smuzhiyun xen_must_unplug_disks(void)40*4882a593Smuzhiyunstatic inline int xen_must_unplug_disks(void) { 41*4882a593Smuzhiyun #if (defined(CONFIG_XEN_BLKDEV_FRONTEND) || \ 42*4882a593Smuzhiyun defined(CONFIG_XEN_BLKDEV_FRONTEND_MODULE)) && \ 43*4882a593Smuzhiyun defined(CONFIG_XEN_PVHVM) 44*4882a593Smuzhiyun return 1; 45*4882a593Smuzhiyun #else 46*4882a593Smuzhiyun return 0; 47*4882a593Smuzhiyun #endif 48*4882a593Smuzhiyun } 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #if defined(CONFIG_XEN_PVHVM) 51*4882a593Smuzhiyun extern bool xen_has_pv_devices(void); 52*4882a593Smuzhiyun extern bool xen_has_pv_disk_devices(void); 53*4882a593Smuzhiyun extern bool xen_has_pv_nic_devices(void); 54*4882a593Smuzhiyun extern bool xen_has_pv_and_legacy_disk_devices(void); 55*4882a593Smuzhiyun #else xen_has_pv_devices(void)56*4882a593Smuzhiyunstatic inline bool xen_has_pv_devices(void) 57*4882a593Smuzhiyun { 58*4882a593Smuzhiyun return IS_ENABLED(CONFIG_XEN); 59*4882a593Smuzhiyun } xen_has_pv_disk_devices(void)60*4882a593Smuzhiyunstatic inline bool xen_has_pv_disk_devices(void) 61*4882a593Smuzhiyun { 62*4882a593Smuzhiyun return IS_ENABLED(CONFIG_XEN); 63*4882a593Smuzhiyun } xen_has_pv_nic_devices(void)64*4882a593Smuzhiyunstatic inline bool xen_has_pv_nic_devices(void) 65*4882a593Smuzhiyun { 66*4882a593Smuzhiyun return IS_ENABLED(CONFIG_XEN); 67*4882a593Smuzhiyun } xen_has_pv_and_legacy_disk_devices(void)68*4882a593Smuzhiyunstatic inline bool xen_has_pv_and_legacy_disk_devices(void) 69*4882a593Smuzhiyun { 70*4882a593Smuzhiyun return false; 71*4882a593Smuzhiyun } 72*4882a593Smuzhiyun #endif 73*4882a593Smuzhiyun #endif /* _XEN_PLATFORM_PCI_H */ 74