Replace this with i686-7-4.patch .
diff -up ./arch/x86/include/asm/irq_remapping.h.7-4 ./arch/x86/include/asm/irq_remapping.h
--- ./arch/x86/include/asm/irq_remapping.h.7-4 2018-10-30 19:54:34.000000000 +0900
+++ ./arch/x86/include/asm/irq_remapping.h 2018-10-30 19:56:23.000000000 +0900
@@ -35,6 +35,11 @@ enum irq_remap_cap {
IRQ_POSTING_CAP = 0,
};
+struct vcpu_data {
+ u64 pi_desc_addr; /* Physical address of PI Descriptor */
+ u32 vector; /* Guest vector of the interrupt */
+};
+
#ifdef CONFIG_IRQ_REMAP
extern bool irq_remapping_cap(enum irq_remap_cap cap);
@@ -67,11 +72,6 @@ enum {
IRQ_REMAP_X2APIC_MODE,
};
-struct vcpu_data {
- u64 pi_desc_addr; /* Physical address of PI Descriptor */
- u32 vector; /* Guest vector of the interrupt */
-};
-
#else /* CONFIG_IRQ_REMAP */
static inline bool irq_remapping_cap(enum irq_remap_cap cap) { return 0; }
diff -up ./arch/x86/include/asm/kvm_host.h.7-4 ./arch/x86/include/asm/kvm_host.h
--- ./arch/x86/include/asm/kvm_host.h.7-4 2018-10-05 05:18:19.000000000 +0900
+++ ./arch/x86/include/asm/kvm_host.h 2018-10-30 19:54:34.000000000 +0900
@@ -56,7 +56,7 @@
| X86_CR0_NW | X86_CR0_CD | X86_CR0_PG))
#define CR3_L_MODE_RESERVED_BITS 0xFFFFFF0000000000ULL
-#define CR3_PCID_INVD (1UL << 63)
+#define CR3_PCID_INVD BIT_64(63)
#define CR4_RESERVED_BITS \
(~(unsigned long)(X86_CR4_VME | X86_CR4_PVI | X86_CR4_TSD | X86_CR4_DE\
| X86_CR4_PSE | X86_CR4_PAE | X86_CR4_MCE \
diff -up ./arch/x86/kvm/x86.c.7-4 ./arch/x86/kvm/x86.c
--- ./arch/x86/kvm/x86.c.7-4 2018-10-05 05:18:19.000000000 +0900
+++ ./arch/x86/kvm/x86.c 2018-10-30 19:54:34.000000000 +0900
@@ -5993,6 +5993,7 @@ int kvm_emulate_halt(struct kvm_vcpu *vc
}
EXPORT_SYMBOL_GPL(kvm_emulate_halt);
+#ifdef CONFIG_X86_64
static int kvm_pv_clock_pairing(struct kvm_vcpu *vcpu, gpa_t paddr,
unsigned long clock_type)
{
@@ -6019,6 +6020,7 @@ static int kvm_pv_clock_pairing(struct k
return ret;
}
+#endif
/*
* kvm_pv_kick_cpu_op: Kick a vcpu.
@@ -6084,9 +6086,11 @@ int kvm_emulate_hypercall(struct kvm_vcp
kvm_pv_kick_cpu_op(vcpu->kvm, a0, a1);
ret = 0;
break;
+#ifdef CONFIG_X86_64
case KVM_HC_CLOCK_PAIRING:
ret = kvm_pv_clock_pairing(vcpu, a0, a1);
break;
+#endif
default:
ret = -KVM_ENOSYS;
break;
diff -up ./crypto/tcrypt.c.7-4 ./crypto/tcrypt.c
--- ./crypto/tcrypt.c.7-4 2018-10-05 05:18:19.000000000 +0900
+++ ./crypto/tcrypt.c 2018-10-30 19:54:34.000000000 +0900
@@ -865,7 +865,7 @@ static void test_mb_ahash_speed(const ch
printk("\nBlock: %lld cycles (%lld cycles/byte), %d bytes\n",
(s64) (end[7]-start[0])/1,
- (s64) (end[7]-start[0])/(8*speed[i].blen),
+ div_s64((s64) (end[7]-start[0]), (8*speed[i].blen)),
8*speed[i].blen);
}
ret = 0;
diff -up ./drivers/misc/ioc4.c.7-4 ./drivers/misc/ioc4.c
--- ./drivers/misc/ioc4.c.7-4 2018-10-05 05:18:19.000000000 +0900
+++ ./drivers/misc/ioc4.c 2018-10-30 19:54:34.000000000 +0900
@@ -168,19 +168,20 @@ ioc4_clock_calibrate(struct ioc4_driver_
mmiowb();
/* Check square wave period averaged over some number of cycles */
- do {
- int_out.raw = readl(&idd->idd_misc_regs->int_out.raw);
- state = int_out.fields.int_out;
- if (!last_state && state) {
- count++;
- if (count == IOC4_CALIBRATE_END) {
- ktime_get_ts(&end_ts);
- break;
- } else if (count == IOC4_CALIBRATE_DISCARD)
- ktime_get_ts(&start_ts);
- }
- last_state = state;
- } while (1);
+ ktime_get_ts(&start_ts);
+ state = 1; /* make sure the first read isn't a rising edge */
+ for (count = 0; count <= IOC4_CALIBRATE_END; count++) {
+ do { /* wait for a rising edge */
+ last_state = state;
+ int_out.raw = readl(&idd->idd_misc_regs->int_out.raw);
+ state = int_out.fields.int_out;
+ } while (last_state || !state);
+
+ /* discard the first few cycles */
+ if (count == IOC4_CALIBRATE_DISCARD)
+ ktime_get_ts(&start_ts);
+ }
+ ktime_get_ts(&end_ts);
/* Calculation rearranged to preserve intermediate precision.
* Logically:
diff -up ./fs/xfs/libxfs/xfs_format.h.7-4 ./fs/xfs/libxfs/xfs_format.h
--- ./fs/xfs/libxfs/xfs_format.h.7-4 2018-10-05 05:18:19.000000000 +0900
+++ ./fs/xfs/libxfs/xfs_format.h 2018-10-30 19:54:34.000000000 +0900
@@ -791,7 +791,7 @@ typedef struct xfs_agfl {
__be64 agfl_lsn;
__be32 agfl_crc;
__be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */
-} xfs_agfl_t;
+} __attribute__((packed)) xfs_agfl_t;
#define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc)
diff -up ./fs/xfs/xfs_ondisk.h.7-4 ./fs/xfs/xfs_ondisk.h
--- ./fs/xfs/xfs_ondisk.h.7-4 2018-10-05 05:18:19.000000000 +0900
+++ ./fs/xfs/xfs_ondisk.h 2018-10-30 19:54:34.000000000 +0900
@@ -34,7 +34,7 @@ xfs_check_ondisk_structs(void)
XFS_CHECK_STRUCT_SIZE(struct xfs_acl, 4);
XFS_CHECK_STRUCT_SIZE(struct xfs_acl_entry, 12);
XFS_CHECK_STRUCT_SIZE(struct xfs_agf, 224);
- XFS_CHECK_STRUCT_SIZE(struct xfs_agfl, 40);
+ XFS_CHECK_STRUCT_SIZE(struct xfs_agfl, 36);
XFS_CHECK_STRUCT_SIZE(struct xfs_agi, 336);
XFS_CHECK_STRUCT_SIZE(struct xfs_bmbt_key, 8);
XFS_CHECK_STRUCT_SIZE(struct xfs_bmbt_rec, 16);