Commit 02fedf14 authored by Dan Williams's avatar Dan Williams
Browse files

Merge branch 'for-6.2/cxl-xor' into for-6.2/cxl

Pick up support for "XOR" interleave math when parsing ACPI CFMWS window
structures. Fix up conflicts with the RCH emulation already pending in
cxl/next.
parents e0f6fa0d 7a7e6edf
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -142,6 +142,9 @@ static acpi_status acpi_ev_fixed_event_initialize(void)
			status =
			status =
			    acpi_write_bit_register(acpi_gbl_fixed_event_info
			    acpi_write_bit_register(acpi_gbl_fixed_event_info
						    [i].enable_register_id,
						    [i].enable_register_id,
						    (i ==
						     ACPI_EVENT_PCIE_WAKE) ?
						    ACPI_ENABLE_EVENT :
						    ACPI_DISABLE_EVENT);
						    ACPI_DISABLE_EVENT);
			if (ACPI_FAILURE(status)) {
			if (ACPI_FAILURE(status)) {
				return (status);
				return (status);
@@ -185,6 +188,11 @@ u32 acpi_ev_fixed_event_detect(void)
		return (int_status);
		return (int_status);
	}
	}


	if (fixed_enable & ACPI_BITMASK_PCIEXP_WAKE_DISABLE)
		fixed_enable &= ~ACPI_BITMASK_PCIEXP_WAKE_DISABLE;
	else
		fixed_enable |= ACPI_BITMASK_PCIEXP_WAKE_DISABLE;

	ACPI_DEBUG_PRINT((ACPI_DB_INTERRUPTS,
	ACPI_DEBUG_PRINT((ACPI_DB_INTERRUPTS,
			  "Fixed Event Block: Enable %08X Status %08X\n",
			  "Fixed Event Block: Enable %08X Status %08X\n",
			  fixed_enable, fixed_status));
			  fixed_enable, fixed_status));
@@ -250,6 +258,9 @@ static u32 acpi_ev_fixed_event_dispatch(u32 event)
	if (!acpi_gbl_fixed_event_handlers[event].handler) {
	if (!acpi_gbl_fixed_event_handlers[event].handler) {
		(void)acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
		(void)acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
					      enable_register_id,
					      enable_register_id,
					      (event ==
					       ACPI_EVENT_PCIE_WAKE) ?
					      ACPI_ENABLE_EVENT :
					      ACPI_DISABLE_EVENT);
					      ACPI_DISABLE_EVENT);


		ACPI_ERROR((AE_INFO,
		ACPI_ERROR((AE_INFO,
+9 −0
Original line number Original line Diff line number Diff line
@@ -172,6 +172,15 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
			ctx->subspace_id = (u8)region_obj->region.address;
			ctx->subspace_id = (u8)region_obj->region.address;
		}
		}


		if (region_obj->region.space_id ==
		    ACPI_ADR_SPACE_FIXED_HARDWARE) {
			struct acpi_ffh_info *ctx =
			    handler_desc->address_space.context;

			ctx->length = region_obj->region.length;
			ctx->offset = region_obj->region.address;
		}

		/*
		/*
		 * We must exit the interpreter because the region setup will
		 * We must exit the interpreter because the region setup will
		 * potentially execute control methods (for example, the _REG method
		 * potentially execute control methods (for example, the _REG method
+2 −2
Original line number Original line Diff line number Diff line
@@ -295,8 +295,8 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
						 target));
						 target));
	}
	}
	if (target->common.type != ACPI_TYPE_INTEGER) {
	if (target->common.type != ACPI_TYPE_INTEGER) {
		ACPI_EXCEPTION((AE_INFO, AE_TYPE,
		ACPI_ERROR((AE_INFO, "Type not integer: %X",
				"Type not integer: %X\n", target->common.type));
			    target->common.type));
		return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
		return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
	}
	}


+6 −2
Original line number Original line Diff line number Diff line
@@ -141,7 +141,9 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
		    || obj_desc->field.region_obj->region.space_id ==
		    || obj_desc->field.region_obj->region.space_id ==
		    ACPI_ADR_SPACE_IPMI
		    ACPI_ADR_SPACE_IPMI
		    || obj_desc->field.region_obj->region.space_id ==
		    || obj_desc->field.region_obj->region.space_id ==
		    ACPI_ADR_SPACE_PLATFORM_RT)) {
		    ACPI_ADR_SPACE_PLATFORM_RT
		    || obj_desc->field.region_obj->region.space_id ==
		    ACPI_ADR_SPACE_FIXED_HARDWARE)) {


		/* SMBus, GSBus, IPMI serial */
		/* SMBus, GSBus, IPMI serial */


@@ -305,7 +307,9 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
		    || obj_desc->field.region_obj->region.space_id ==
		    || obj_desc->field.region_obj->region.space_id ==
		    ACPI_ADR_SPACE_IPMI
		    ACPI_ADR_SPACE_IPMI
		    || obj_desc->field.region_obj->region.space_id ==
		    || obj_desc->field.region_obj->region.space_id ==
		    ACPI_ADR_SPACE_PLATFORM_RT)) {
		    ACPI_ADR_SPACE_PLATFORM_RT
		    || obj_desc->field.region_obj->region.space_id ==
		    ACPI_ADR_SPACE_FIXED_HARDWARE)) {


		/* SMBus, GSBus, IPMI serial */
		/* SMBus, GSBus, IPMI serial */


+6 −0
Original line number Original line Diff line number Diff line
@@ -323,6 +323,12 @@ acpi_ex_write_serial_bus(union acpi_operand_object *source_desc,
		function = ACPI_WRITE;
		function = ACPI_WRITE;
		break;
		break;


	case ACPI_ADR_SPACE_FIXED_HARDWARE:

		buffer_length = ACPI_FFH_INPUT_BUFFER_SIZE;
		function = ACPI_WRITE;
		break;

	default:
	default:
		return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
		return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
	}
	}
Loading