On 07/16/2014 11:16 AM, Gavin Shan wrote: > On Wed, Jul 16, 2014 at 11:09:44AM +1000, Alexey Kardashevskiy wrote: >> On 07/16/2014 10:20 AM, Gavin Shan wrote: >>> This updates kernel header (vfio.h) for EEH support on VFIO PCI >>> devices. >> >> Has this reached kernel upstream? The way linux headers update normally >> happens is you have to run scripts/update-linux-headers.sh against some >> linux kernel tag which you know that it won't change (like v3.16-rc5) and >> post all the changes as a single patch. It is never a header update for a >> specific feature, it is just an update. >> > > The kernel part isn't merged yet. I guess that's for 3.17 merge window. > Ok, good to know scripts/update-linux-headers.sh. So this patch should > be dropped and some one run the script to update QEMU (linux-headers > directory) ?
Once your changes are in upstream kernel, you wait till kernel tree gets new "v3.xx-rcX" tag, then you run the script and make a separate patch for QEMU. Then you wait till it reaches QEMU upstream (because I do not know who will pull it to what tree, look at git history) or ppc-next (if Alex pulls it and you are basing your work on ppc-next) and then repost other patches. > > Thanks, > Gavin > >> >>> >>> Signed-off-by: Gavin Shan <gws...@linux.vnet.ibm.com> >>> --- >>> linux-headers/linux/vfio.h | 34 ++++++++++++++++++++++++++++++++++ >>> 1 file changed, 34 insertions(+) >>> >>> diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h >>> index 26c218e..95b591b 100644 >>> --- a/linux-headers/linux/vfio.h >>> +++ b/linux-headers/linux/vfio.h >>> @@ -30,6 +30,9 @@ >>> */ >>> #define VFIO_DMA_CC_IOMMU 4 >>> >>> +/* Check if EEH is supported */ >>> +#define VFIO_EEH 5 >>> + >>> /* >>> * The IOCTL interface is designed for extensibility by embedding the >>> * structure length (argsz) and flags into structures passed between >>> @@ -455,6 +458,37 @@ struct vfio_iommu_spapr_tce_info { >>> >>> #define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) >>> >>> +/* >>> + * EEH PE operation struct provides ways to: >>> + * - enable/disable EEH functionality; >>> + * - unfreeze IO/DMA for frozen PE; >>> + * - read PE state; >>> + * - reset PE; >>> + * - configure PE. >>> + */ >>> +struct vfio_eeh_pe_op { >>> + __u32 argsz; >>> + __u32 flags; >>> + __u32 op; >>> +}; >>> + >>> +#define VFIO_EEH_PE_DISABLE 0 /* Disable EEH >>> functionality */ >>> +#define VFIO_EEH_PE_ENABLE 1 /* Enable EEH functionality */ >>> +#define VFIO_EEH_PE_UNFREEZE_IO 2 /* Enable IO for frozen >>> PE */ >>> +#define VFIO_EEH_PE_UNFREEZE_DMA 3 /* Enable DMA for frozen PE */ >>> +#define VFIO_EEH_PE_GET_STATE 4 /* PE state retrieval >>> */ >>> +#define VFIO_EEH_PE_STATE_NORMAL 0 /* PE in functional state */ >>> +#define VFIO_EEH_PE_STATE_RESET 1 /* PE reset in progress */ >>> +#define VFIO_EEH_PE_STATE_STOPPED 2 /* Stopped DMA and IO */ >>> +#define VFIO_EEH_PE_STATE_STOPPED_DMA 4 /* Stopped DMA only >>> */ >>> +#define VFIO_EEH_PE_STATE_UNAVAIL 5 /* State unavailable */ >>> +#define VFIO_EEH_PE_RESET_DEACTIVATE 5 /* Deassert PE reset >>> */ >>> +#define VFIO_EEH_PE_RESET_HOT 6 /* Assert hot reset >>> */ >>> +#define VFIO_EEH_PE_RESET_FUNDAMENTAL 7 /* Assert fundamental >>> reset */ >>> +#define VFIO_EEH_PE_CONFIGURE 8 /* PE configuration >>> */ >>> + >>> +#define VFIO_EEH_PE_OP _IO(VFIO_TYPE, VFIO_BASE + 21) >>> + >>> /* ***************************************************************** */ >>> >>> #endif /* VFIO_H */ >>> >> >> >> -- >> Alexey >> > -- Alexey