Unverified Commit 1e3f8fef authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!15729 [openEuler-24.03-LTS][linux-6.6.y sync] Backport 6.6.79-6.6.80 LTS Patches

Merge Pull Request from: @koishimind 
 
git log --oneline v6.6.79..v6.6.80 |wc
140
96+3+29+12+3

check-kabi(3):
bpf: Fix wrong copied_seq calculation
strparser: Add read_sock callback
tcp: drop secpath at the same time as we currently drop dst

conflicts(29):
perf/x86/intel: Fix ARCH_PERFMON_NUM_COUNTER_LEAF
gtp: Suppress list corruption splat in gtp_net_exit_batch_rtnl
arm64: mte: Do not allow PROT_MTE on MAP_HUGETLB user mappings
xfs: don't over-report free space or inodes in statvfs
xfs: report realtime block quota limits on realtime directories
xfs: Check for delayed allocations before setting extsize
xfs: streamline xfs_filestream_pick_ag
xfs: Reduce unnecessary searches when searching for the best extents
xfs: update the pag for the last AG at recovery time
xfs: don't use __GFP_RETRY_MAYFAIL in xfs_initialize_perag
xfs: error out when a superblock buffer update reduces the agcount
xfs: update the file system geometry after recoverying superblock buffers
xfs: pass the exact range to initialize to xfs_initialize_perag
xfs: Remove empty declartion in header file
xfs: Use try_cmpxchg() in xlog_cil_insert_pcp_aggregate()
xfs: support lowmode allocations in xfs_bmap_exact_minlen_extent_alloc
xfs: call xfs_bmap_exact_minlen_extent_alloc from xfs_bmap_btalloc
b8aad0ed952a xfs: don't ifdef around the exact minlen allocations
xfs: fold xfs_bmap_alloc_userdata into xfs_bmapi_allocate
xfs: distinguish extra split from real ENOSPC from xfs_attr_node_try_addname
xfs: distinguish extra split from real ENOSPC from xfs_attr3_leaf_split
xfs: return bool from xfs_attr3_leaf_add
xfs: merge xfs_attr_leaf_try_add into xfs_attr_leaf_addname
xfs: don't free cowblocks from under dirty pagecache on unshare
xfs: skip background cowblock trims on inodes open for write
xfs: fix a typo
xfs: fix a sloppy memory handling bug in xfs_iroot_realloc
xfs: validate inumber in xfs_iget
xfs: assert a valid limit in xfs_rtfind_forw

merged(12):
md: fix missing flush of sync_work
net/mlx5e: Don't call cleanup on profile rollback failure
smb: client: Add check for next_buffer in receive_encrypted_standard()
acct: block access to kernel internal filesystems
acct: perform last write from workqueue
io_uring: prevent opcode speculation
bpf: avoid holding freeze_mutex during mmap operation
bpf: unify VM_WRITE vs VM_MAYWRITE use in BPF map mmaping logic
s390/ism: add release function for struct device
md: simplify md_seq_ops
md: factor out a helper from mddev_put()
md: use separate work_struct for md_start_sync()

check-depends(3):
mtd: rawnand: cadence: fix unchecked dereference
ibmvnic: Inspect header requirements before using scrq direct
ibmvnic: Perform tx CSO during send scrq direct
 
 
Link:https://gitee.com/openeuler/kernel/pulls/15729

 

Reviewed-by: default avatarZhang Peng <zhangpeng362@huawei.com>
Signed-off-by: default avatarZhang Peng <zhangpeng362@huawei.com>
parents 7b875ea7 7d4bf24c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1828,6 +1828,7 @@
			resets = <&mmsys MT8183_MMSYS_SW0_RST_B_DISP_DSI0>;
			phys = <&mipi_tx0>;
			phy-names = "dphy";
			status = "disabled";
		};

		mutex: mutex@14016000 {
+108 −105
Original line number Diff line number Diff line
@@ -2135,6 +2135,7 @@
					compatible = "qcom,fastrpc";
					qcom,glink-channels = "fastrpcglink-apps-dsp";
					label = "sdsp";
					qcom,non-secure-domain;
					#address-cells = <1>;
					#size-cells = <0>;

@@ -2160,6 +2161,112 @@
			};
		};

		remoteproc_adsp: remoteproc@3000000 {
			compatible = "qcom,sm8450-adsp-pas";
			reg = <0x0 0x03000000 0x0 0x10000>;

			interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
			interrupt-names = "wdog", "fatal", "ready",
					  "handover", "stop-ack";

			clocks = <&rpmhcc RPMH_CXO_CLK>;
			clock-names = "xo";

			power-domains = <&rpmhpd RPMHPD_LCX>,
					<&rpmhpd RPMHPD_LMX>;
			power-domain-names = "lcx", "lmx";

			memory-region = <&adsp_mem>;

			qcom,qmp = <&aoss_qmp>;

			qcom,smem-states = <&smp2p_adsp_out 0>;
			qcom,smem-state-names = "stop";

			status = "disabled";

			remoteproc_adsp_glink: glink-edge {
				interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
							     IPCC_MPROC_SIGNAL_GLINK_QMP
							     IRQ_TYPE_EDGE_RISING>;
				mboxes = <&ipcc IPCC_CLIENT_LPASS
						IPCC_MPROC_SIGNAL_GLINK_QMP>;

				label = "lpass";
				qcom,remote-pid = <2>;

				gpr {
					compatible = "qcom,gpr";
					qcom,glink-channels = "adsp_apps";
					qcom,domain = <GPR_DOMAIN_ID_ADSP>;
					qcom,intents = <512 20>;
					#address-cells = <1>;
					#size-cells = <0>;

					q6apm: service@1 {
						compatible = "qcom,q6apm";
						reg = <GPR_APM_MODULE_IID>;
						#sound-dai-cells = <0>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6apmdai: dais {
							compatible = "qcom,q6apm-dais";
							iommus = <&apps_smmu 0x1801 0x0>;
						};

						q6apmbedai: bedais {
							compatible = "qcom,q6apm-lpass-dais";
							#sound-dai-cells = <1>;
						};
					};

					q6prm: service@2 {
						compatible = "qcom,q6prm";
						reg = <GPR_PRM_MODULE_IID>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6prmcc: clock-controller {
							compatible = "qcom,q6prm-lpass-clocks";
							#clock-cells = <2>;
						};
					};
				};

				fastrpc {
					compatible = "qcom,fastrpc";
					qcom,glink-channels = "fastrpcglink-apps-dsp";
					label = "adsp";
					qcom,non-secure-domain;
					#address-cells = <1>;
					#size-cells = <0>;

					compute-cb@3 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <3>;
						iommus = <&apps_smmu 0x1803 0x0>;
					};

					compute-cb@4 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <4>;
						iommus = <&apps_smmu 0x1804 0x0>;
					};

					compute-cb@5 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <5>;
						iommus = <&apps_smmu 0x1805 0x0>;
					};
				};
			};
		};

		wsa2macro: codec@31e0000 {
			compatible = "qcom,sm8450-lpass-wsa-macro";
			reg = <0 0x031e0000 0 0x1000>;
@@ -2368,111 +2475,6 @@
			status = "disabled";
		};

		remoteproc_adsp: remoteproc@30000000 {
			compatible = "qcom,sm8450-adsp-pas";
			reg = <0 0x30000000 0 0x100>;

			interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
			interrupt-names = "wdog", "fatal", "ready",
					  "handover", "stop-ack";

			clocks = <&rpmhcc RPMH_CXO_CLK>;
			clock-names = "xo";

			power-domains = <&rpmhpd RPMHPD_LCX>,
					<&rpmhpd RPMHPD_LMX>;
			power-domain-names = "lcx", "lmx";

			memory-region = <&adsp_mem>;

			qcom,qmp = <&aoss_qmp>;

			qcom,smem-states = <&smp2p_adsp_out 0>;
			qcom,smem-state-names = "stop";

			status = "disabled";

			remoteproc_adsp_glink: glink-edge {
				interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
							     IPCC_MPROC_SIGNAL_GLINK_QMP
							     IRQ_TYPE_EDGE_RISING>;
				mboxes = <&ipcc IPCC_CLIENT_LPASS
						IPCC_MPROC_SIGNAL_GLINK_QMP>;

				label = "lpass";
				qcom,remote-pid = <2>;

				gpr {
					compatible = "qcom,gpr";
					qcom,glink-channels = "adsp_apps";
					qcom,domain = <GPR_DOMAIN_ID_ADSP>;
					qcom,intents = <512 20>;
					#address-cells = <1>;
					#size-cells = <0>;

					q6apm: service@1 {
						compatible = "qcom,q6apm";
						reg = <GPR_APM_MODULE_IID>;
						#sound-dai-cells = <0>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6apmdai: dais {
							compatible = "qcom,q6apm-dais";
							iommus = <&apps_smmu 0x1801 0x0>;
						};

						q6apmbedai: bedais {
							compatible = "qcom,q6apm-lpass-dais";
							#sound-dai-cells = <1>;
						};
					};

					q6prm: service@2 {
						compatible = "qcom,q6prm";
						reg = <GPR_PRM_MODULE_IID>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6prmcc: clock-controller {
							compatible = "qcom,q6prm-lpass-clocks";
							#clock-cells = <2>;
						};
					};
				};

				fastrpc {
					compatible = "qcom,fastrpc";
					qcom,glink-channels = "fastrpcglink-apps-dsp";
					label = "adsp";
					#address-cells = <1>;
					#size-cells = <0>;

					compute-cb@3 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <3>;
						iommus = <&apps_smmu 0x1803 0x0>;
					};

					compute-cb@4 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <4>;
						iommus = <&apps_smmu 0x1804 0x0>;
					};

					compute-cb@5 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <5>;
						iommus = <&apps_smmu 0x1805 0x0>;
					};
				};
			};
		};

		remoteproc_cdsp: remoteproc@32300000 {
			compatible = "qcom,sm8450-cdsp-pas";
			reg = <0 0x32300000 0 0x10000>;
@@ -2515,6 +2517,7 @@
					compatible = "qcom,fastrpc";
					qcom,glink-channels = "fastrpcglink-apps-dsp";
					label = "cdsp";
					qcom,non-secure-domain;
					#address-cells = <1>;
					#size-cells = <0>;

+140 −125
Original line number Diff line number Diff line
@@ -2026,6 +2026,137 @@
			};
		};

		remoteproc_adsp: remoteproc@6800000 {
			compatible = "qcom,sm8550-adsp-pas";
			reg = <0x0 0x06800000 0x0 0x10000>;

			interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
			interrupt-names = "wdog", "fatal", "ready",
					  "handover", "stop-ack";

			clocks = <&rpmhcc RPMH_CXO_CLK>;
			clock-names = "xo";

			power-domains = <&rpmhpd RPMHPD_LCX>,
					<&rpmhpd RPMHPD_LMX>;
			power-domain-names = "lcx", "lmx";

			interconnects = <&lpass_lpicx_noc MASTER_LPASS_PROC 0 &mc_virt SLAVE_EBI1 0>;

			memory-region = <&adspslpi_mem>, <&q6_adsp_dtb_mem>;

			qcom,qmp = <&aoss_qmp>;

			qcom,smem-states = <&smp2p_adsp_out 0>;
			qcom,smem-state-names = "stop";

			status = "disabled";

			remoteproc_adsp_glink: glink-edge {
				interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
							     IPCC_MPROC_SIGNAL_GLINK_QMP
							     IRQ_TYPE_EDGE_RISING>;
				mboxes = <&ipcc IPCC_CLIENT_LPASS
						IPCC_MPROC_SIGNAL_GLINK_QMP>;

				label = "lpass";
				qcom,remote-pid = <2>;

				fastrpc {
					compatible = "qcom,fastrpc";
					qcom,glink-channels = "fastrpcglink-apps-dsp";
					label = "adsp";
					qcom,non-secure-domain;
					#address-cells = <1>;
					#size-cells = <0>;

					compute-cb@3 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <3>;
						iommus = <&apps_smmu 0x1003 0x80>,
							 <&apps_smmu 0x1063 0x0>;
						dma-coherent;
					};

					compute-cb@4 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <4>;
						iommus = <&apps_smmu 0x1004 0x80>,
							 <&apps_smmu 0x1064 0x0>;
						dma-coherent;
					};

					compute-cb@5 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <5>;
						iommus = <&apps_smmu 0x1005 0x80>,
							 <&apps_smmu 0x1065 0x0>;
						dma-coherent;
					};

					compute-cb@6 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <6>;
						iommus = <&apps_smmu 0x1006 0x80>,
							 <&apps_smmu 0x1066 0x0>;
						dma-coherent;
					};

					compute-cb@7 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <7>;
						iommus = <&apps_smmu 0x1007 0x80>,
							 <&apps_smmu 0x1067 0x0>;
						dma-coherent;
					};
				};

				gpr {
					compatible = "qcom,gpr";
					qcom,glink-channels = "adsp_apps";
					qcom,domain = <GPR_DOMAIN_ID_ADSP>;
					qcom,intents = <512 20>;
					#address-cells = <1>;
					#size-cells = <0>;

					q6apm: service@1 {
						compatible = "qcom,q6apm";
						reg = <GPR_APM_MODULE_IID>;
						#sound-dai-cells = <0>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6apmdai: dais {
							compatible = "qcom,q6apm-dais";
							iommus = <&apps_smmu 0x1001 0x80>,
								 <&apps_smmu 0x1061 0x0>;
						};

						q6apmbedai: bedais {
							compatible = "qcom,q6apm-lpass-dais";
							#sound-dai-cells = <1>;
						};
					};

					q6prm: service@2 {
						compatible = "qcom,q6prm";
						reg = <GPR_PRM_MODULE_IID>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6prmcc: clock-controller {
							compatible = "qcom,q6prm-lpass-clocks";
							#clock-cells = <2>;
						};
					};
				};
			};
		};

		lpass_wsa2macro: codec@6aa0000 {
			compatible = "qcom,sm8550-lpass-wsa-macro";
			reg = <0 0x06aa0000 0 0x1000>;
@@ -3954,131 +4085,6 @@
			interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>;
		};

		remoteproc_adsp: remoteproc@30000000 {
			compatible = "qcom,sm8550-adsp-pas";
			reg = <0x0 0x30000000 0x0 0x100>;

			interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
					      <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
			interrupt-names = "wdog", "fatal", "ready",
					  "handover", "stop-ack";

			clocks = <&rpmhcc RPMH_CXO_CLK>;
			clock-names = "xo";

			power-domains = <&rpmhpd RPMHPD_LCX>,
					<&rpmhpd RPMHPD_LMX>;
			power-domain-names = "lcx", "lmx";

			interconnects = <&lpass_lpicx_noc MASTER_LPASS_PROC 0 &mc_virt SLAVE_EBI1 0>;

			memory-region = <&adspslpi_mem>, <&q6_adsp_dtb_mem>;

			qcom,qmp = <&aoss_qmp>;

			qcom,smem-states = <&smp2p_adsp_out 0>;
			qcom,smem-state-names = "stop";

			status = "disabled";

			remoteproc_adsp_glink: glink-edge {
				interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
							     IPCC_MPROC_SIGNAL_GLINK_QMP
							     IRQ_TYPE_EDGE_RISING>;
				mboxes = <&ipcc IPCC_CLIENT_LPASS
						IPCC_MPROC_SIGNAL_GLINK_QMP>;

				label = "lpass";
				qcom,remote-pid = <2>;

				fastrpc {
					compatible = "qcom,fastrpc";
					qcom,glink-channels = "fastrpcglink-apps-dsp";
					label = "adsp";
					#address-cells = <1>;
					#size-cells = <0>;

					compute-cb@3 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <3>;
						iommus = <&apps_smmu 0x1003 0x80>,
							 <&apps_smmu 0x1063 0x0>;
					};

					compute-cb@4 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <4>;
						iommus = <&apps_smmu 0x1004 0x80>,
							 <&apps_smmu 0x1064 0x0>;
					};

					compute-cb@5 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <5>;
						iommus = <&apps_smmu 0x1005 0x80>,
							 <&apps_smmu 0x1065 0x0>;
					};

					compute-cb@6 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <6>;
						iommus = <&apps_smmu 0x1006 0x80>,
							 <&apps_smmu 0x1066 0x0>;
					};

					compute-cb@7 {
						compatible = "qcom,fastrpc-compute-cb";
						reg = <7>;
						iommus = <&apps_smmu 0x1007 0x80>,
							 <&apps_smmu 0x1067 0x0>;
					};
				};

				gpr {
					compatible = "qcom,gpr";
					qcom,glink-channels = "adsp_apps";
					qcom,domain = <GPR_DOMAIN_ID_ADSP>;
					qcom,intents = <512 20>;
					#address-cells = <1>;
					#size-cells = <0>;

					q6apm: service@1 {
						compatible = "qcom,q6apm";
						reg = <GPR_APM_MODULE_IID>;
						#sound-dai-cells = <0>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6apmdai: dais {
							compatible = "qcom,q6apm-dais";
							iommus = <&apps_smmu 0x1001 0x80>,
								 <&apps_smmu 0x1061 0x0>;
						};

						q6apmbedai: bedais {
							compatible = "qcom,q6apm-lpass-dais";
							#sound-dai-cells = <1>;
						};
					};

					q6prm: service@2 {
						compatible = "qcom,q6prm";
						reg = <GPR_PRM_MODULE_IID>;
						qcom,protection-domain = "avs/audio",
									 "msm/adsp/audio_pd";

						q6prmcc: clock-controller {
							compatible = "qcom,q6prm-lpass-clocks";
							#clock-cells = <2>;
						};
					};
				};
			};
		};

		nsp_noc: interconnect@320c0000 {
			compatible = "qcom,sm8550-nsp-noc";
			reg = <0 0x320c0000 0 0xe080>;
@@ -4131,6 +4137,7 @@
					compatible = "qcom,fastrpc";
					qcom,glink-channels = "fastrpcglink-apps-dsp";
					label = "cdsp";
					qcom,non-secure-domain;
					#address-cells = <1>;
					#size-cells = <0>;

@@ -4140,6 +4147,7 @@
						iommus = <&apps_smmu 0x1961 0x0>,
							 <&apps_smmu 0x0c01 0x20>,
							 <&apps_smmu 0x19c1 0x10>;
						dma-coherent;
					};

					compute-cb@2 {
@@ -4148,6 +4156,7 @@
						iommus = <&apps_smmu 0x1962 0x0>,
							 <&apps_smmu 0x0c02 0x20>,
							 <&apps_smmu 0x19c2 0x10>;
						dma-coherent;
					};

					compute-cb@3 {
@@ -4156,6 +4165,7 @@
						iommus = <&apps_smmu 0x1963 0x0>,
							 <&apps_smmu 0x0c03 0x20>,
							 <&apps_smmu 0x19c3 0x10>;
						dma-coherent;
					};

					compute-cb@4 {
@@ -4164,6 +4174,7 @@
						iommus = <&apps_smmu 0x1964 0x0>,
							 <&apps_smmu 0x0c04 0x20>,
							 <&apps_smmu 0x19c4 0x10>;
						dma-coherent;
					};

					compute-cb@5 {
@@ -4172,6 +4183,7 @@
						iommus = <&apps_smmu 0x1965 0x0>,
							 <&apps_smmu 0x0c05 0x20>,
							 <&apps_smmu 0x19c5 0x10>;
						dma-coherent;
					};

					compute-cb@6 {
@@ -4180,6 +4192,7 @@
						iommus = <&apps_smmu 0x1966 0x0>,
							 <&apps_smmu 0x0c06 0x20>,
							 <&apps_smmu 0x19c6 0x10>;
						dma-coherent;
					};

					compute-cb@7 {
@@ -4188,6 +4201,7 @@
						iommus = <&apps_smmu 0x1967 0x0>,
							 <&apps_smmu 0x0c07 0x20>,
							 <&apps_smmu 0x19c7 0x10>;
						dma-coherent;
					};

					compute-cb@8 {
@@ -4196,6 +4210,7 @@
						iommus = <&apps_smmu 0x1968 0x0>,
							 <&apps_smmu 0x0c08 0x20>,
							 <&apps_smmu 0x19c8 0x10>;
						dma-coherent;
					};

					/* note: secure cb9 in downstream */
+4 −2
Original line number Diff line number Diff line
@@ -15,9 +15,11 @@
};

&gmac2io {
	/delete-property/ tx_delay;
	/delete-property/ rx_delay;

	phy-handle = <&yt8531c>;
	tx_delay = <0x19>;
	rx_delay = <0x05>;
	phy-mode = "rgmii-id";

	mdio {
		/delete-node/ ethernet-phy@1;
+28 −0
Original line number Diff line number Diff line
@@ -89,6 +89,34 @@ static inline int hash__hugepd_ok(hugepd_t hpd)
}
#endif

/*
 * With 4K page size the real_pte machinery is all nops.
 */
static inline real_pte_t __real_pte(pte_t pte, pte_t *ptep, int offset)
{
	return (real_pte_t){pte};
}

#define __rpte_to_pte(r)	((r).pte)

static inline unsigned long __rpte_to_hidx(real_pte_t rpte, unsigned long index)
{
	return pte_val(__rpte_to_pte(rpte)) >> H_PAGE_F_GIX_SHIFT;
}

#define pte_iterate_hashed_subpages(rpte, psize, va, index, shift)       \
	do {							         \
		index = 0;					         \
		shift = mmu_psize_defs[psize].shift;		         \

#define pte_iterate_hashed_end() } while(0)

/*
 * We expect this to be called only for user addresses or kernel virtual
 * addresses other than the linear mapping.
 */
#define pte_pagesize_index(mm, addr, pte)	MMU_PAGE_4K

/*
 * 4K PTE format is different from 64K PTE format. Saving the hash_slot is just
 * a matter of returning the PTE bits that need to be modified. On 64K PTE,
Loading