qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH qemu v10 01/14] linux-headers: Update to 4.2-rc1


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH qemu v10 01/14] linux-headers: Update to 4.2-rc1
Date: Mon, 6 Jul 2015 13:18:28 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1


On 06/07/2015 04:10, Alexey Kardashevskiy wrote:
> This updates linux-headers against master 4.2-rc1 (commit
> d770e558e21961ad6cfdf0ff7df0eb5d7d4f0754). This is the result of
> ./scripts/update-linux-headers.sh work.
> 
> Cc: Paolo Bonzini <address@hidden>
> Cc: Michael S. Tsirkin <address@hidden>
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> ---
> 
> This is for DDW support on sPAPR.
> ---
>  include/standard-headers/linux/input.h          |  10 +-
>  include/standard-headers/linux/virtio_balloon.h |   1 +
>  include/standard-headers/linux/virtio_gpu.h     |   2 +
>  linux-headers/asm-x86/hyperv.h                  |  11 ++
>  linux-headers/linux/kvm.h                       |   2 +-
>  linux-headers/linux/vfio.h                      | 102 ++++++++++++-
>  linux-headers/linux/virtio_pci.h                | 192 
> ------------------------
>  7 files changed, 121 insertions(+), 199 deletions(-)
>  delete mode 100644 linux-headers/linux/virtio_pci.h
> 
> diff --git a/include/standard-headers/linux/input.h 
> b/include/standard-headers/linux/input.h
> index b94d365..a459dd2 100644
> --- a/include/standard-headers/linux/input.h
> +++ b/include/standard-headers/linux/input.h
> @@ -367,7 +367,8 @@ struct input_keymap_entry {
>  #define KEY_MSDOS            151
>  #define KEY_COFFEE           152     /* AL Terminal Lock/Screensaver */
>  #define KEY_SCREENLOCK               KEY_COFFEE
> -#define KEY_DIRECTION                153
> +#define KEY_ROTATE_DISPLAY   153     /* Display orientation for e.g. tablets 
> */
> +#define KEY_DIRECTION                KEY_ROTATE_DISPLAY
>  #define KEY_CYCLEWINDOWS     154
>  #define KEY_MAIL             155
>  #define KEY_BOOKMARKS                156     /* AC Bookmarks */
> @@ -700,6 +701,10 @@ struct input_keymap_entry {
>  #define KEY_NUMERIC_9                0x209
>  #define KEY_NUMERIC_STAR     0x20a
>  #define KEY_NUMERIC_POUND    0x20b
> +#define KEY_NUMERIC_A                0x20c   /* Phone key A - HUT Telephony 
> 0xb9 */
> +#define KEY_NUMERIC_B                0x20d
> +#define KEY_NUMERIC_C                0x20e
> +#define KEY_NUMERIC_D                0x20f
>  
>  #define KEY_CAMERA_FOCUS     0x210
>  #define KEY_WPS_BUTTON               0x211   /* WiFi Protected Setup key */
> @@ -971,7 +976,8 @@ struct input_keymap_entry {
>   */
>  #define MT_TOOL_FINGER               0
>  #define MT_TOOL_PEN          1
> -#define MT_TOOL_MAX          1
> +#define MT_TOOL_PALM         2
> +#define MT_TOOL_MAX          2
>  
>  /*
>   * Values describing the status of a force-feedback effect
> diff --git a/include/standard-headers/linux/virtio_balloon.h 
> b/include/standard-headers/linux/virtio_balloon.h
> index 88ada1d..2e2a6dc 100644
> --- a/include/standard-headers/linux/virtio_balloon.h
> +++ b/include/standard-headers/linux/virtio_balloon.h
> @@ -26,6 +26,7 @@
>   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>   * SUCH DAMAGE. */
>  #include "standard-headers/linux/types.h"
> +#include "standard-headers/linux/virtio_types.h"
>  #include "standard-headers/linux/virtio_ids.h"
>  #include "standard-headers/linux/virtio_config.h"
>  
> diff --git a/include/standard-headers/linux/virtio_gpu.h 
> b/include/standard-headers/linux/virtio_gpu.h
> index cfcfb46..72ef815 100644
> --- a/include/standard-headers/linux/virtio_gpu.h
> +++ b/include/standard-headers/linux/virtio_gpu.h
> @@ -38,6 +38,8 @@
>  #ifndef VIRTIO_GPU_HW_H
>  #define VIRTIO_GPU_HW_H
>  
> +#include "standard-headers/linux/types.h"
> +
>  enum virtio_gpu_ctrl_type {
>       VIRTIO_GPU_UNDEFINED = 0,
>  
> diff --git a/linux-headers/asm-x86/hyperv.h b/linux-headers/asm-x86/hyperv.h
> index ce6068d..8fba544 100644
> --- a/linux-headers/asm-x86/hyperv.h
> +++ b/linux-headers/asm-x86/hyperv.h
> @@ -199,6 +199,17 @@
>  #define HV_X64_MSR_STIMER3_CONFIG            0x400000B6
>  #define HV_X64_MSR_STIMER3_COUNT             0x400000B7
>  
> +/* Hyper-V guest crash notification MSR's */
> +#define HV_X64_MSR_CRASH_P0                  0x40000100
> +#define HV_X64_MSR_CRASH_P1                  0x40000101
> +#define HV_X64_MSR_CRASH_P2                  0x40000102
> +#define HV_X64_MSR_CRASH_P3                  0x40000103
> +#define HV_X64_MSR_CRASH_P4                  0x40000104
> +#define HV_X64_MSR_CRASH_CTL                 0x40000105
> +#define HV_X64_MSR_CRASH_CTL_NOTIFY          (1ULL << 63)
> +#define HV_X64_MSR_CRASH_PARAMS              \
> +             (1 + (HV_X64_MSR_CRASH_P4 - HV_X64_MSR_CRASH_P0))
> +
>  #define HV_X64_MSR_HYPERCALL_ENABLE          0x00000001
>  #define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_SHIFT      12
>  #define HV_X64_MSR_HYPERCALL_PAGE_ADDRESS_MASK       \
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index fad9e5c..3bac873 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -897,7 +897,7 @@ struct kvm_xen_hvm_config {
>   *
>   * KVM_IRQFD_FLAG_RESAMPLE indicates resamplefd is valid and specifies
>   * the irqfd to operate in resampling mode for level triggered interrupt
> - * emlation.  See Documentation/virtual/kvm/api.txt.
> + * emulation.  See Documentation/virtual/kvm/api.txt.
>   */
>  #define KVM_IRQFD_FLAG_RESAMPLE (1 << 1)
>  
> diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
> index 0508d0b..aa276bc 100644
> --- a/linux-headers/linux/vfio.h
> +++ b/linux-headers/linux/vfio.h
> @@ -36,6 +36,8 @@
>  /* Two-stage IOMMU */
>  #define VFIO_TYPE1_NESTING_IOMMU     6       /* Implies v2 */
>  
> +#define VFIO_SPAPR_TCE_v2_IOMMU              7
> +
>  /*
>   * The IOCTL interface is designed for extensibility by embedding the
>   * structure length (argsz) and flags into structures passed between
> @@ -443,6 +445,23 @@ struct vfio_iommu_type1_dma_unmap {
>  /* -------- Additional API for SPAPR TCE (Server POWERPC) IOMMU -------- */
>  
>  /*
> + * The SPAPR TCE DDW info struct provides the information about
> + * the details of Dynamic DMA window capability.
> + *
> + * @pgsizes contains a page size bitmask, 4K/64K/16M are supported.
> + * @max_dynamic_windows_supported tells the maximum number of windows
> + * which the platform can create.
> + * @levels tells the maximum number of levels in multi-level IOMMU tables;
> + * this allows splitting a table into smaller chunks which reduces
> + * the amount of physically contiguous memory required for the table.
> + */
> +struct vfio_iommu_spapr_tce_ddw_info {
> +     __u64 pgsizes;                  /* Bitmap of supported page sizes */
> +     __u32 max_dynamic_windows_supported;
> +     __u32 levels;
> +};
> +
> +/*
>   * The SPAPR TCE info struct provides the information about the PCI bus
>   * address ranges available for DMA, these values are programmed into
>   * the hardware so the guest has to know that information.
> @@ -452,14 +471,17 @@ struct vfio_iommu_type1_dma_unmap {
>   * addresses too so the window works as a filter rather than an offset
>   * for IOVA addresses.
>   *
> - * A flag will need to be added if other page sizes are supported,
> - * so as defined here, it is always 4k.
> + * Flags supported:
> + * - VFIO_IOMMU_SPAPR_INFO_DDW: informs the userspace that dynamic DMA 
> windows
> + *   (DDW) support is present. @ddw is only supported when DDW is present.
>   */
>  struct vfio_iommu_spapr_tce_info {
>       __u32 argsz;
> -     __u32 flags;                    /* reserved for future use */
> +     __u32 flags;
> +#define VFIO_IOMMU_SPAPR_INFO_DDW    (1 << 0)        /* DDW supported */
>       __u32 dma32_window_start;       /* 32 bit window start (bytes) */
>       __u32 dma32_window_size;        /* 32 bit window size (bytes) */
> +     struct vfio_iommu_spapr_tce_ddw_info ddw;
>  };
>  
>  #define VFIO_IOMMU_SPAPR_TCE_GET_INFO        _IO(VFIO_TYPE, VFIO_BASE + 12)
> @@ -470,12 +492,23 @@ struct vfio_iommu_spapr_tce_info {
>   * - unfreeze IO/DMA for frozen PE;
>   * - read PE state;
>   * - reset PE;
> - * - configure PE.
> + * - configure PE;
> + * - inject EEH error.
>   */
> +struct vfio_eeh_pe_err {
> +     __u32 type;
> +     __u32 func;
> +     __u64 addr;
> +     __u64 mask;
> +};
> +
>  struct vfio_eeh_pe_op {
>       __u32 argsz;
>       __u32 flags;
>       __u32 op;
> +     union {
> +             struct vfio_eeh_pe_err err;
> +     };
>  };
>  
>  #define VFIO_EEH_PE_DISABLE          0       /* Disable EEH functionality */
> @@ -492,9 +525,70 @@ struct vfio_eeh_pe_op {
>  #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_INJECT_ERR               9       /* Inject EEH error     
>      */
>  
>  #define VFIO_EEH_PE_OP                       _IO(VFIO_TYPE, VFIO_BASE + 21)
>  
> +/**
> + * VFIO_IOMMU_SPAPR_REGISTER_MEMORY - _IOW(VFIO_TYPE, VFIO_BASE + 17, struct 
> vfio_iommu_spapr_register_memory)
> + *
> + * Registers user space memory where DMA is allowed. It pins
> + * user pages and does the locked memory accounting so
> + * subsequent VFIO_IOMMU_MAP_DMA/VFIO_IOMMU_UNMAP_DMA calls
> + * get faster.
> + */
> +struct vfio_iommu_spapr_register_memory {
> +     __u32   argsz;
> +     __u32   flags;
> +     __u64   vaddr;                          /* Process virtual address */
> +     __u64   size;                           /* Size of mapping (bytes) */
> +};
> +#define VFIO_IOMMU_SPAPR_REGISTER_MEMORY     _IO(VFIO_TYPE, VFIO_BASE + 17)
> +
> +/**
> + * VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY - _IOW(VFIO_TYPE, VFIO_BASE + 18, 
> struct vfio_iommu_spapr_register_memory)
> + *
> + * Unregisters user space memory registered with
> + * VFIO_IOMMU_SPAPR_REGISTER_MEMORY.
> + * Uses vfio_iommu_spapr_register_memory for parameters.
> + */
> +#define VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY   _IO(VFIO_TYPE, VFIO_BASE + 18)
> +
> +/**
> + * VFIO_IOMMU_SPAPR_TCE_CREATE - _IOWR(VFIO_TYPE, VFIO_BASE + 19, struct 
> vfio_iommu_spapr_tce_create)
> + *
> + * Creates an additional TCE table and programs it (sets a new DMA window)
> + * to every IOMMU group in the container. It receives page shift, window
> + * size and number of levels in the TCE table being created.
> + *
> + * It allocates and returns an offset on a PCI bus of the new DMA window.
> + */
> +struct vfio_iommu_spapr_tce_create {
> +     __u32 argsz;
> +     __u32 flags;
> +     /* in */
> +     __u32 page_shift;
> +     __u64 window_size;
> +     __u32 levels;
> +     /* out */
> +     __u64 start_addr;
> +};
> +#define VFIO_IOMMU_SPAPR_TCE_CREATE  _IO(VFIO_TYPE, VFIO_BASE + 19)
> +
> +/**
> + * VFIO_IOMMU_SPAPR_TCE_REMOVE - _IOW(VFIO_TYPE, VFIO_BASE + 20, struct 
> vfio_iommu_spapr_tce_remove)
> + *
> + * Unprograms a TCE table from all groups in the container and destroys it.
> + * It receives a PCI bus offset as a window id.
> + */
> +struct vfio_iommu_spapr_tce_remove {
> +     __u32 argsz;
> +     __u32 flags;
> +     /* in */
> +     __u64 start_addr;
> +};
> +#define VFIO_IOMMU_SPAPR_TCE_REMOVE  _IO(VFIO_TYPE, VFIO_BASE + 20)
> +
>  /* ***************************************************************** */
>  
>  #endif /* VFIO_H */
> diff --git a/linux-headers/linux/virtio_pci.h 
> b/linux-headers/linux/virtio_pci.h
> deleted file mode 100644
> index 92624e5..0000000
> --- a/linux-headers/linux/virtio_pci.h
> +++ /dev/null
> @@ -1,192 +0,0 @@
> -/*
> - * Virtio PCI driver
> - *
> - * This module allows virtio devices to be used over a virtual PCI device.
> - * This can be used with QEMU based VMMs like KVM or Xen.
> - *
> - * Copyright IBM Corp. 2007
> - *
> - * Authors:
> - *  Anthony Liguori  <address@hidden>
> - *
> - * This header is BSD licensed so anyone can use the definitions to implement
> - * compatible drivers/servers.
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - * 1. Redistributions of source code must retain the above copyright
> - *    notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - *    notice, this list of conditions and the following disclaimer in the
> - *    documentation and/or other materials provided with the distribution.
> - * 3. Neither the name of IBM nor the names of its contributors
> - *    may be used to endorse or promote products derived from this software
> - *    without specific prior written permission.
> - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS 
> IS'' AND
> - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
> - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> - * SUCH DAMAGE.
> - */
> -
> -#ifndef _LINUX_VIRTIO_PCI_H
> -#define _LINUX_VIRTIO_PCI_H
> -
> -#include <linux/types.h>
> -
> -#ifndef VIRTIO_PCI_NO_LEGACY
> -
> -/* A 32-bit r/o bitmask of the features supported by the host */
> -#define VIRTIO_PCI_HOST_FEATURES     0
> -
> -/* A 32-bit r/w bitmask of features activated by the guest */
> -#define VIRTIO_PCI_GUEST_FEATURES    4
> -
> -/* A 32-bit r/w PFN for the currently selected queue */
> -#define VIRTIO_PCI_QUEUE_PFN         8
> -
> -/* A 16-bit r/o queue size for the currently selected queue */
> -#define VIRTIO_PCI_QUEUE_NUM         12
> -
> -/* A 16-bit r/w queue selector */
> -#define VIRTIO_PCI_QUEUE_SEL         14
> -
> -/* A 16-bit r/w queue notifier */
> -#define VIRTIO_PCI_QUEUE_NOTIFY              16
> -
> -/* An 8-bit device status register.  */
> -#define VIRTIO_PCI_STATUS            18
> -
> -/* An 8-bit r/o interrupt status register.  Reading the value will return the
> - * current contents of the ISR and will also clear it.  This is effectively
> - * a read-and-acknowledge. */
> -#define VIRTIO_PCI_ISR                       19
> -
> -/* MSI-X registers: only enabled if MSI-X is enabled. */
> -/* A 16-bit vector for configuration changes. */
> -#define VIRTIO_MSI_CONFIG_VECTOR        20
> -/* A 16-bit vector for selected queue notifications. */
> -#define VIRTIO_MSI_QUEUE_VECTOR         22
> -
> -/* The remaining space is defined by each driver as the per-driver
> - * configuration space */
> -#define VIRTIO_PCI_CONFIG_OFF(msix_enabled)  ((msix_enabled) ? 24 : 20)
> -/* Deprecated: please use VIRTIO_PCI_CONFIG_OFF instead */
> -#define VIRTIO_PCI_CONFIG(dev)       
> VIRTIO_PCI_CONFIG_OFF((dev)->msix_enabled)
> -
> -/* Virtio ABI version, this must match exactly */
> -#define VIRTIO_PCI_ABI_VERSION               0
> -
> -/* How many bits to shift physical queue address written to QUEUE_PFN.
> - * 12 is historical, and due to x86 page size. */
> -#define VIRTIO_PCI_QUEUE_ADDR_SHIFT  12
> -
> -/* The alignment to use between consumer and producer parts of vring.
> - * x86 pagesize again. */
> -#define VIRTIO_PCI_VRING_ALIGN               4096
> -
> -#endif /* VIRTIO_PCI_NO_LEGACY */
> -
> -/* The bit of the ISR which indicates a device configuration change. */
> -#define VIRTIO_PCI_ISR_CONFIG                0x2
> -/* Vector value used to disable MSI for queue */
> -#define VIRTIO_MSI_NO_VECTOR            0xffff
> -
> -#ifndef VIRTIO_PCI_NO_MODERN
> -
> -/* IDs for different capabilities.  Must all exist. */
> -
> -/* Common configuration */
> -#define VIRTIO_PCI_CAP_COMMON_CFG    1
> -/* Notifications */
> -#define VIRTIO_PCI_CAP_NOTIFY_CFG    2
> -/* ISR access */
> -#define VIRTIO_PCI_CAP_ISR_CFG               3
> -/* Device specific confiuration */
> -#define VIRTIO_PCI_CAP_DEVICE_CFG    4
> -
> -/* This is the PCI capability header: */
> -struct virtio_pci_cap {
> -     __u8 cap_vndr;          /* Generic PCI field: PCI_CAP_ID_VNDR */
> -     __u8 cap_next;          /* Generic PCI field: next ptr. */
> -     __u8 cap_len;           /* Generic PCI field: capability length */
> -     __u8 cfg_type;          /* Identifies the structure. */
> -     __u8 bar;               /* Where to find it. */
> -     __u8 padding[3];        /* Pad to full dword. */
> -     __le32 offset;          /* Offset within bar. */
> -     __le32 length;          /* Length of the structure, in bytes. */
> -};
> -
> -struct virtio_pci_notify_cap {
> -     struct virtio_pci_cap cap;
> -     __le32 notify_off_multiplier;   /* Multiplier for queue_notify_off. */
> -};
> -
> -/* Fields in VIRTIO_PCI_CAP_COMMON_CFG: */
> -struct virtio_pci_common_cfg {
> -     /* About the whole device. */
> -     __le32 device_feature_select;   /* read-write */
> -     __le32 device_feature;          /* read-only */
> -     __le32 guest_feature_select;    /* read-write */
> -     __le32 guest_feature;           /* read-write */
> -     __le16 msix_config;             /* read-write */
> -     __le16 num_queues;              /* read-only */
> -     __u8 device_status;             /* read-write */
> -     __u8 config_generation;         /* read-only */
> -
> -     /* About a specific virtqueue. */
> -     __le16 queue_select;            /* read-write */
> -     __le16 queue_size;              /* read-write, power of 2. */
> -     __le16 queue_msix_vector;       /* read-write */
> -     __le16 queue_enable;            /* read-write */
> -     __le16 queue_notify_off;        /* read-only */
> -     __le32 queue_desc_lo;           /* read-write */
> -     __le32 queue_desc_hi;           /* read-write */
> -     __le32 queue_avail_lo;          /* read-write */
> -     __le32 queue_avail_hi;          /* read-write */
> -     __le32 queue_used_lo;           /* read-write */
> -     __le32 queue_used_hi;           /* read-write */
> -};
> -
> -/* Macro versions of offsets for the Old Timers! */
> -#define VIRTIO_PCI_CAP_VNDR          0
> -#define VIRTIO_PCI_CAP_NEXT          1
> -#define VIRTIO_PCI_CAP_LEN           2
> -#define VIRTIO_PCI_CAP_CFG_TYPE              3
> -#define VIRTIO_PCI_CAP_BAR           4
> -#define VIRTIO_PCI_CAP_OFFSET                8
> -#define VIRTIO_PCI_CAP_LENGTH                12
> -
> -#define VIRTIO_PCI_NOTIFY_CAP_MULT   16
> -
> -
> -#define VIRTIO_PCI_COMMON_DFSELECT   0
> -#define VIRTIO_PCI_COMMON_DF         4
> -#define VIRTIO_PCI_COMMON_GFSELECT   8
> -#define VIRTIO_PCI_COMMON_GF         12
> -#define VIRTIO_PCI_COMMON_MSIX               16
> -#define VIRTIO_PCI_COMMON_NUMQ               18
> -#define VIRTIO_PCI_COMMON_STATUS     20
> -#define VIRTIO_PCI_COMMON_CFGGENERATION      21
> -#define VIRTIO_PCI_COMMON_Q_SELECT   22
> -#define VIRTIO_PCI_COMMON_Q_SIZE     24
> -#define VIRTIO_PCI_COMMON_Q_MSIX     26
> -#define VIRTIO_PCI_COMMON_Q_ENABLE   28
> -#define VIRTIO_PCI_COMMON_Q_NOFF     30
> -#define VIRTIO_PCI_COMMON_Q_DESCLO   32
> -#define VIRTIO_PCI_COMMON_Q_DESCHI   36
> -#define VIRTIO_PCI_COMMON_Q_AVAILLO  40
> -#define VIRTIO_PCI_COMMON_Q_AVAILHI  44
> -#define VIRTIO_PCI_COMMON_Q_USEDLO   48
> -#define VIRTIO_PCI_COMMON_Q_USEDHI   52
> -
> -#endif /* VIRTIO_PCI_NO_MODERN */
> -
> -#endif
> 

I'm adding this patch to my final pull request for 2.4.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]