qemu/hw/misc
Jamin Lin 6262c8addc hw/misc/aspeed_hace: Add support for source, digest, key buffer 64 bit addresses
According to the AST2700 design, the data source address is 64-bit, with
R_HASH_SRC_HI storing bits [63:32] and R_HASH_SRC storing bits [31:0].
Similarly, the digest address is 64-bit, with R_HASH_DIGEST_HI storing bits
[63:32] and R_HASH_DIGEST storing bits [31:0]. The HMAC key buffer address is also
64-bit, with R_HASH_KEY_BUFF_HI storing bits [63:32] and R_HASH_KEY_BUFF storing
bits [31:0].

The AST2700 supports a maximum DRAM size of 8 GB, with a DRAM addressable range
from 0x0_0000_0000 to 0x1_FFFF_FFFF. Since this range fits within 34 bits, only
bits [33:0] are needed to store the DRAM offset. To optimize address storage,
the high physical address bits [1:0] of the source, digest and key buffer
addresses are stored as dram_offset bits [33:32].

To achieve this, a src_hi_mask with a mask value of 0x3 is introduced, ensuring
that src_addr_hi consists of bits [1:0]. The final src_addr is computed as
(src_addr_hi[1:0] << 32) | src_addr[31:0], representing the DRAM offset within
bits [33:0].

Similarly, a dest_hi_mask with a mask value of 0x3 is introduced to ensure that
dest_addr_hi consists of bits [1:0]. The final dest_addr is calculated as
(dest_addr_hi[1:0] << 32) | dest_addr[31:0], representing the DRAM offset within
bits [33:0].

Additionally, a key_hi_mask with a mask value of 0x3 is introduced to ensure
that key_buf_addr_hi consists of bits [1:0]. The final key_buf_addr is
determined as (key_buf_addr_hi[1:0] << 32) | key_buf_addr[31:0], representing
the DRAM offset within bits [33:0].

This approach eliminates the need to reduce the high part of the DRAM physical
address for DMA operations. Previously, this was calculated as
(high physical address bits [7:0] - 4), since the DRAM start address is
0x4_00000000, making the high part address [7:0] - 4.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250515081008.583578-14-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
2025-05-25 23:39:11 +02:00
..
macio qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
a9scu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-a10-ccm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-a10-dramc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-cpucfg.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-h3-ccu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-h3-dramc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-h3-sysctrl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-r40-ccu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-r40-dramc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-sid.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
allwinner-sramc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
applesmc.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
arm11scu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_integrator_debug.c arm: Update infocenter.arm.com URLs 2021-02-11 11:50:14 +00:00
arm_l2x0.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_sysctl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
armsse-cpu-pwrctrl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
armsse-cpuid.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
armsse-mhu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
armv7m_ras.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_hace.c hw/misc/aspeed_hace: Add support for source, digest, key buffer 64 bit addresses 2025-05-25 23:39:11 +02:00
aspeed_i3c.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_lpc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_peci.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_sbc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_scu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_sdmc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_sli.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
aspeed_xdma.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
auxbus.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
avr_power.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
axp2xx.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_cprman.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_mbox.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_mphi.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_powermgt.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_property.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_rng.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_thermal.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
debugexit.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
djmemc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
eccmemctl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
edu.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
empty_slot.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
exynos4210_clk.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
exynos4210_pmu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
exynos4210_rng.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
grlib_ahb_apb_pnp.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
i2c-echo.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx6_ccm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx6_src.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx6ul_ccm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx7_ccm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx7_gpr.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx7_snvs.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx7_src.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx8mp_analog.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx8mp_ccm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx25_ccm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx31_ccm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx_ccm.c hw: Do not include qemu/log.h if it is not necessary 2021-05-02 17:24:50 +02:00
imx_rngc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
iosb.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
iotkit-secctl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
iotkit-sysctl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
iotkit-sysinfo.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
ivshmem-flat.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
ivshmem-pci.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
Kconfig hw/misc/pvpanic: Add MMIO interface 2025-03-04 14:45:34 +01:00
lasi.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
led.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mac_via.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mchp_pfsoc_dmc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mchp_pfsoc_ioscb.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mchp_pfsoc_sysreg.c hw/misc: Add MPFS system reset support 2025-05-19 13:30:24 +10:00
meson.build hw/misc/pvpanic: Add MMIO interface 2025-03-04 14:45:34 +01:00
mips_cmgcr.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mips_cpc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mips_itu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mos6522.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mps2-fpgaio.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
mps2-scc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
msf2-sysreg.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
npcm7xx_mft.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
npcm7xx_pwm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
npcm7xx_rng.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
npcm_clk.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
npcm_gcr.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
nrf51_rng.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
omap_clk.c hw/arm: Replace TABs for spaces in OMAP board and device code 2025-05-14 14:29:47 +01:00
pc-testdev.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
pci-testdev.c pci-testdev.c: Add membar-backed option for backing membar 2025-05-14 05:39:14 -04:00
pvpanic-isa.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
pvpanic-mmio.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
pvpanic-pci.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
pvpanic.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
sbsa_ec.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
sifive_e_aon.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
sifive_e_prci.c hw: Remove superfluous includes of hw/hw.h 2021-05-02 17:24:50 +02:00
sifive_test.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
sifive_u_otp.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
sifive_u_prci.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
slavio_misc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
stm32_rcc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
stm32f2xx_syscfg.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
stm32f4xx_exti.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
stm32f4xx_syscfg.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
stm32l4x5_exti.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
stm32l4x5_rcc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
stm32l4x5_syscfg.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
trace-events hw/misc: Move NPCM7XX CLK to NPCM CLK 2025-02-20 15:22:22 +00:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
tz-mpc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
tz-msc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
tz-ppc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
unimp.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
virt_ctrl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
vmcoreinfo.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xlnx-cfi-if.c hw/misc: Introduce the Xilinx CFI interface 2023-09-08 16:41:34 +01:00
xlnx-versal-cframe-reg.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
xlnx-versal-cfu.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
xlnx-versal-crl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xlnx-versal-pmc-iou-slcr.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xlnx-versal-trng.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xlnx-versal-xramc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xlnx-zynqmp-apu-ctrl.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xlnx-zynqmp-crf.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
zynq_slcr.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00