Commit 4e338684 authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files
KVM/arm64 updates for Linux 5.16

- More progress on the protected VM front, now with the full
  fixed feature set as well as the limitation of some hypercalls
  after initialisation.

- Cleanup of the RAZ/WI sysreg handling, which was pointlessly
  complicated

- Fixes for the vgic placement in the IPA space, together with a
  bunch of selftests

- More memcg accounting of the memory allocated on behalf of a guest

- Timer and vgic selftests

- Workarounds for the Apple M1 broken vgic implementation

- KConfig cleanups

- New kvmarm.mode=none option, for those who really dislike us
parents e59f3e5d 5a2acbbb
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2372,6 +2372,8 @@
	kvm-arm.mode=
			[KVM,ARM] Select one of KVM/arm64's modes of operation.

			none: Forcefully disable KVM.

			nvhe: Standard nVHE-based mode, without support for
			      protected guests.

@@ -2379,7 +2381,9 @@
				   state is kept private from the host.
				   Not valid if the kernel is running in EL2.

			Defaults to VHE/nVHE based on hardware support.
			Defaults to VHE/nVHE based on hardware support. Setting
			mode to "protected" will disable kexec and hibernation
			for the host.

	kvm-arm.vgic_v3_group0_trap=
			[KVM,ARM] Trap guest accesses to GICv3 group-0
+3 −2
Original line number Diff line number Diff line
@@ -175,9 +175,10 @@ for IRQ numbers that are passed to struct device registrations. In that
case the Linux IRQ numbers cannot be dynamically assigned and the legacy
mapping should be used.

As the name implies, the *_legacy() functions are deprecated and only
As the name implies, the \*_legacy() functions are deprecated and only
exist to ease the support of ancient platforms. No new users should be
added.
added. Same goes for the \*_simple() functions when their use results
in the legacy behaviour.

The legacy map assumes a contiguous range of IRQ numbers has already
been allocated for the controller and that the IRQ number can be
+42 −4
Original line number Diff line number Diff line
@@ -31,11 +31,11 @@ properties:

  clocks:
    minItems: 1
    maxItems: 3
    maxItems: 7

  clock-names:
    minItems: 1
    maxItems: 3
    maxItems: 7

required:
  - compatible
@@ -72,6 +72,32 @@ allOf:
          contains:
            enum:
              - qcom,sdm660-a2noc
    then:
      properties:
        clocks:
          items:
            - description: Bus Clock.
            - description: Bus A Clock.
            - description: IPA Clock.
            - description: UFS AXI Clock.
            - description: Aggregate2 UFS AXI Clock.
            - description: Aggregate2 USB3 AXI Clock.
            - description: Config NoC USB2 AXI Clock.
        clock-names:
          items:
            - const: bus
            - const: bus_a
            - const: ipa
            - const: ufs_axi
            - const: aggre2_ufs_axi
            - const: aggre2_usb3_axi
            - const: cfg_noc_usb2_axi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sdm660-bimc
              - qcom,sdm660-cnoc
              - qcom,sdm660-gnoc
@@ -91,6 +117,7 @@ examples:
  - |
      #include <dt-bindings/clock/qcom,rpmcc.h>
      #include <dt-bindings/clock/qcom,mmcc-sdm660.h>
      #include <dt-bindings/clock/qcom,gcc-sdm660.h>

      bimc: interconnect@1008000 {
              compatible = "qcom,sdm660-bimc";
@@ -123,9 +150,20 @@ examples:
              compatible = "qcom,sdm660-a2noc";
              reg = <0x01704000 0xc100>;
              #interconnect-cells = <1>;
              clock-names = "bus", "bus_a";
              clock-names = "bus",
                            "bus_a",
                            "ipa",
                            "ufs_axi",
                            "aggre2_ufs_axi",
                            "aggre2_usb3_axi",
                            "cfg_noc_usb2_axi";
              clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>,
                       <&rpmcc RPM_SMD_AGGR2_NOC_A_CLK>;
                       <&rpmcc RPM_SMD_AGGR2_NOC_A_CLK>,
                       <&rpmcc RPM_SMD_IPA_CLK>,
                       <&gcc GCC_UFS_AXI_CLK>,
                       <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
                       <&gcc GCC_AGGRE2_USB3_AXI_CLK>,
                       <&gcc GCC_CFG_NOC_USB2_AXI_CLK>;
      };

      mnoc: interconnect@1745000 {
+0 −17
Original line number Diff line number Diff line
@@ -132,20 +132,3 @@ On Family 17h and Family 18h CPUs, additional temperature sensors may report
Core Complex Die (CCD) temperatures. Up to 8 such temperatures are reported
as temp{3..10}_input, labeled Tccd{1..8}. Actual support depends on the CPU
variant.

Various Family 17h and 18h CPUs report voltage and current telemetry
information. The following attributes may be reported.

Attribute	Label	Description
===============	=======	================
in0_input	Vcore	Core voltage
in1_input	Vsoc	SoC voltage
curr1_input	Icore	Core current
curr2_input	Isoc	SoC current
===============	=======	================

Current values are raw (unscaled) as reported by the CPU. Core current is
reported as multiples of 1A / LSB. SoC is reported as multiples of 0.25A
/ LSB. The real current is board specific. Reported currents should be seen
as rough guidance, and should be scaled using sensors3.conf as appropriate
for a given board.
+1 −1
Original line number Diff line number Diff line
@@ -851,7 +851,7 @@ NOTES:
- 0x88A8 traffic will not be received unless VLAN stripping is disabled with
  the following command::

    # ethool -K <ethX> rxvlan off
    # ethtool -K <ethX> rxvlan off

- 0x88A8/0x8100 double VLANs cannot be used with 0x8100 or 0x8100/0x8100 VLANS
  configured on the same port. 0x88a8/0x8100 traffic will not be received if
Loading