From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zheng, Lv" Subject: RE: [PATCH v3 2/7] ACPICA: Linux: Add stub implementation of ACPICA 64-bit mathematics. Date: Mon, 21 Jul 2014 01:26:10 +0000 Message-ID: <1AE640813FDE7649BE1B193DEA596E8802643932@SHSMSX101.ccr.corp.intel.com> References: <01bab2394df93a3064f09d961f4011b62895eef2.1405500886.git.lv.zheng@intel.com> <3777197.HSR7Q9huIS@vostro.rjw.lan> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com ([192.55.52.88]:27228 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751598AbaGUB0V (ORCPT ); Sun, 20 Jul 2014 21:26:21 -0400 In-Reply-To: <3777197.HSR7Q9huIS@vostro.rjw.lan> Content-Language: en-US Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "Rafael J. Wysocki" Cc: "Wysocki, Rafael J" , "Brown, Len" , Lv Zheng , "linux-kernel@vger.kernel.org" , "linux-acpi@vger.kernel.org" SGksIFJhZmFlbA0KDQo+IEZyb206IFJhZmFlbCBKLiBXeXNvY2tpIFttYWlsdG86cmp3QHJqd3lz b2NraS5uZXRdDQo+IFNlbnQ6IFN1bmRheSwgSnVseSAyMCwgMjAxNCA3OjQ2IEFNDQo+IFRvOiBa aGVuZywgTHYNCj4gDQo+IE9uIFdlZG5lc2RheSwgSnVseSAxNiwgMjAxNCAwNDo1ODowMCBQTSBM diBaaGVuZyB3cm90ZToNCj4gPiBUaGlzIHBhdGNoIGFkZHMgZGVmYXVsdCA2NC1iaXQgbWF0aGVt YXRpY3MgaW4gYWNsaW51eC5oIHVzaW5nIGRvX2RpdigpLiBBcw0KPiA+IGRvX2RpdigpIGNhbiBi ZSB1c2VkIGZvciBhbGwgTGludXggYXJjaGl0ZWN0dXJlcywgdGhpcyBjYW4gYWxzbyBiZSB1c2Vk IGFzDQo+ID4gc3R1YiBtYWNyb3MgZm9yIEFDUElDQSA2NC1iaXQgbWF0aGVtYXRpY3MuDQo+ID4N Cj4gPiBCdXQgdGhpcyBpcyBub3QgYSBwZXJmb3JtYW5jZSBmcmllbmRseSB3YXksIGFzIEFDUElD QSdzIGFyY2hpdGVjdHVyZQ0KPiA+IHNwZWNpZmljIGRpdmlzaW9uIE9TTCBvbmx5IHJlcXVpcmVz IGEgZGl2aWRpbmcgNjQtYml0IG51bWJlciB3aXRoIGEgMzItYml0DQo+ID4gbnVtYmVyIGltcGxl bWVudGF0aW9uLCB3aGlsZSBMaW51eCBfX2RpdjY0XzMyKCkgaXMgbm90IGF2YWlsYWJsZSBmb3Ig YWxsDQo+ID4gYnVpbGQgZW52aXJvbm1lbnRzLiBTbyBjdXJyZW50bHksIGlmIGFuIGFyY2hpdGVj dHVyZSByZWFsbHkgd2FudHMgdG8NCj4gPiBzdXBwb3J0IEFDUElDQSwgaXQgbXVzdCBpbXBsZW1l bnQgaXRzIG93biBkaXZpc2lvbiBPU0wuDQo+IA0KPiBXaGF0IGRvZXMgdGhpcyBtZWFuIGZvciBp Mzg2LCBpbiBwYXJ0aWN1bGFyPw0KDQpBbGwgQUNQSUNBIGVudmlyb25tZW50IG1hY3JvcyBoYXZl IGRlZmF1bHRzIGluIGFjdHlwZXMuaCBvciBhY2Vudi5oLCB0aGVzZSBtYWNyb3MgYXJlIHRoZSBv bmx5IG9uZXMgZG8gbm90IGhhdmUgZGVmYXVsdHMuDQpCZWNhdXNlIHRoZWlyIGRlZmF1bHRzIHNo b3VsZCBiZSBwcm92aWRlZCBieSBPU1BNcy4NClRoaXMgcGF0Y2gganVzdCBhZGRzIHRoZWlyIGRl ZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIF9fS0VSTkVMX18gc3Vycm91bmRlZCBjb2RlIGZvciBM aW51eCBrZXJuZWwuDQpJdCBvbmx5IHByb3ZpZGVzIGJ1aWxkIHByb3RlY3Rpb24gYW5kIGRlbW9u c3RyYXRpb25zIG9mIHRoZSBmdW5jdGlvbmFsaXR5LCBubyBvbmUgYWN0dWFsbHkgdXNlcyBpdCBu b3cuDQoNCkxldCBtZSBmaWd1cmUgb3V0IHRoZSBwb3NzaWJsZSB1c2VycyBiZWxvdzoNCg0KVGhl c2UgbWFjcm9zIGFyZSByZXF1aXJlZCBieSBkcml2ZXJzL2FjcGkvdXRtYXRoLmMgd2hlbiBBQ1BJ X1VTRV9OQVRJVkVfRElWSURFIGlzIG5vdCBkZWZpbmVkLg0KSXQgaXMgdXNlZCBieSBBQ1BJQ0Es IHNvIGN1cnJlbnRseSB0aGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCB0byBDT05GSUdfQUNQSSBidWls ZHMuDQpTbyBrZXJuZWwgd2lsbCBub3QgdXNlIHRoZXNlIG1hY3JvcyB1bmxlc3MgQ09ORklHX0FD UEkgaXMgZGVmaW5lZCBhbmQgQUNQSV9VU0VfRElWSURFIGlzIG5vdCBkZWZpbmVkLg0KDQpGb3Ig NjQtYml0IGtlcm5lbHM6IA0KSW4gaW5jbHVkZS9hY3BpL2FjdHlwZXMuaCwgZm9yIEFDUElfTUFD SElORV9XSURUSD02NCwgQUNQSV9VU0VfTkFUSVZFX0RJVklERSB3aWxsIGJlIGRlZmluZWQsIHRo dXMgdGhlc2UgbWFjcm9zIGFyZSBub3QgdXNlZC4NCkluIGluY2x1ZGUvYWNwaS9wbGF0Zm9ybS9h Y2xpbnV4LmgsIGZvciBfX0tFUk5FTF9fIHN1cnJvdW5kZWQgY29kZSwgQUNQSV9NQUNISU5FX1dJ RFRIIGlzIGRlZmluZWQgdG8gYmUgQklUU19QRVJfTE9ORy4NClNvIGFsbCA2NC1iaXQga2VybmVs cyBkbyBub3QgdXNlIHRoZXNlIG1hY3Jvcy4NCg0KRm9yIDMyLWJpdCBrZXJuZWxzOg0KQXMgbWVu dGlvbmVkIGFib3ZlLCB0aGVzZSBtYWNyb3Mgd2lsbCBiZSB1c2VkIHdoZW4gQklUU19QRVJfTE9O RyBpcyAzMi4NClRodXMgY3VycmVudGx5IHRoZSBpMzI4IGtlcm5lbHMgYXJlIHRoZSBvbmx5IHVz ZXJzIGZvciB0aGVzZSBtYWNyb3MuDQpCdXQgdGhleSB3b24ndCB1c2UgdGhpcyBkZWZhdWx0IGlt cGxlbWVudGF0aW9uIHByb3ZpZGVkIGJ5IHRoaXMgcGF0Y2ggYmVjYXVzZToNCkluIGFyY2gveDg2 L2luY2x1ZGUvYXNtL2FjZW52LmgsIHRoZXJlIGFyZSBhbHJlYWR5IG92ZXJyaWRlcyBpbXBsZW1l bnRlZC4NClNvIHRoZXNlIGRlZmF1bHQgbWFjcm9zIGFyZSBub3QgdXNlZCBieSAzMi1iaXQgeDg2 IChpMzg2KSBrZXJuZWxzLg0KDQpUaGVzZSBtYWNyb3Mgd2lsbCBvbmx5IGJlIHVzZWQgYnkgZnV0 dXJlIG5vbiB4ODYgMzItYml0IGFyY2hpdGVjdHVyZXMgdGhhdCB0cnkgdG8gc3VwcG9ydCBBQ1BJ IGluIExpbnV4IGtlcm5lbC4NCkR1cmluZyB0aGUgcGVyaW9kIHRoZXkgZG8gbm90IGhhdmUgYXJj aCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2Ygc3VjaCBtYWNyb3MsIHdlIGNhbiBhdm9pZCBi dWlsZCBlcnJvcnMgZm9yIHRoZW0uDQpBbmQgc2luY2UgdGhleSBjYW4gc2VlIEFDUElDQSBmdW5j dGlvbmluZyB3aXRob3V0IGltcGxlbWVudGluZyBhbnkgYXJjaCBzcGVjaWZpYyBlbnZpcm9ubWVu dCB0dW5pbmdzLCB3ZSAgY2FuIGFsc28gYXZvaWQgZnVuY3Rpb24gZXJyb3JzIGZvciB0aGVtLg0K QXMgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgcGVyZm9ybWFuY2UgZnJpZW5kbHksIHRob3Nl IGFyY2hpdGVjdHVyZXMgc3RpbGwgbmVlZCB0byBpbXBsZW1lbnQgcmVhbCBzdXBwb3J0IGluIHRo ZSBlbmQuDQoNCkFzIGEgY29uY2x1c2lvbiwgSU1POg0KMS4gVGhpcyBkZWZhdWx0IGltcGxlbWVu dGF0aW9uIGp1c3QgZmlsbCBhbiBBQ1BJQ0EgZGVmYXVsdCBlbnZpcm9ubWVudCBnYXAuDQoxLiBU aGVyZSBhcmUgbm8gdXNlcnMgYW5kIHdpbGwgYmUgbm8gdXNlcnMgb2YgdGhpcyBkZWZhdWx0IGlt cGxlbWVudGF0aW9uIGluIHRoZSBrZXJuZWwuDQozLiBUaG91Z2ggdGhpcyBkZWZhdWx0IGltcGxl bWVudGF0aW9uIGlzIG5vdCBwZXJmb3JtYW5jZSBmcmllbmRseSwgaXQgZnVuY3Rpb25zIGNvcnJl Y3RseSwgc28gaXQgY2FuIGJlIGEgZGVtbyBmb3IgZnV0dXJlIDMyLWJpdCBhcmNoaXRlY3R1cmVz IHRoYXQgdHJ5IHRvIHN1cHBvcnQgQUNQSS4NCjQuIFdlIGNhbiB1c2UgdGhpcyBkZWZhdWx0IGlt cGxlbWVudGF0aW9uIHRvIGF2b2lkIGJ1aWxkIHRyb3VibGVzLg0KDQpUaGFua3MgYW5kIGJlc3Qg cmVnYXJkcw0KLUx2DQoNCj4gDQo+ID4gVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgQUNQSUNBIGhl YWRlciBzdHViIHN1cHBvcnQuIEFDUElDQSBoZWFkZXIgc3R1YnMgYXJlDQo+ID4gdXNlZnVsIHRv IHByb3RlY3QgQ09ORklHX0FDUEk9biBMaW51eCBrZXJuZWwgYnVpbGRzIHdoZXJlIEFDUElDQSBo ZWFkZXJzDQo+ID4gYXJlIGluY2x1ZGVkLiBMdiBaaGVuZy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IEx2IFpoZW5nIDxsdi56aGVuZ0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIGluY2x1ZGUv YWNwaS9wbGF0Zm9ybS9hY2xpbnV4ZXguaCB8ICAgMjIgKysrKysrKysrKysrKysrKysrKysrKw0K PiA+ICAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvYWNwaS9wbGF0Zm9ybS9hY2xpbnV4ZXguaCBiL2luY2x1ZGUvYWNwaS9wbGF0 Zm9ybS9hY2xpbnV4ZXguaA0KPiA+IGluZGV4IDE5MWU3NDEuLjU2OGQ0YjggMTAwNjQ0DQo+ID4g LS0tIGEvaW5jbHVkZS9hY3BpL3BsYXRmb3JtL2FjbGludXhleC5oDQo+ID4gKysrIGIvaW5jbHVk ZS9hY3BpL3BsYXRmb3JtL2FjbGludXhleC5oDQo+ID4gQEAgLTQ2LDYgKzQ2LDI4IEBADQo+ID4N Cj4gPiAgI2lmZGVmIF9fS0VSTkVMX18NCj4gPg0KPiA+ICsjaWZuZGVmIEFDUElfVVNFX05BVElW RV9ESVZJREUNCj4gPiArDQo+ID4gKyNpZm5kZWYgQUNQSV9ESVZfNjRfQllfMzINCj4gPiArI2Rl ZmluZSBBQ1BJX0RJVl82NF9CWV8zMihuX2hpLCBuX2xvLCBkMzIsIHEzMiwgcjMyKSBcDQo+ID4g KwlkbyB7IFwNCj4gPiArCQl1NjQgKF9fbikgPSAoKHU2NCkgbl9oaSkgPDwgMzIgfCAobl9sbyk7 IFwNCj4gPiArCQkocjMyKSA9IGRvX2RpdiAoKF9fbiksIChkMzIpKTsgXA0KPiA+ICsJCShxMzIp ID0gKHUzMikgKF9fbik7IFwNCj4gPiArCX0gd2hpbGUgKDApDQo+ID4gKyNlbmRpZg0KPiA+ICsN Cj4gPiArI2lmbmRlZiBBQ1BJX1NISUZUX1JJR0hUXzY0DQo+ID4gKyNkZWZpbmUgQUNQSV9TSElG VF9SSUdIVF82NChuX2hpLCBuX2xvKSBcDQo+ID4gKwlkbyB7IFwNCj4gPiArCQkobl9sbykgPj49 IDE7IFwNCj4gPiArCQkobl9sbykgfD0gKCgobl9oaSkgJiAxKSA8PCAzMSk7IFwNCj4gPiArCQko bl9oaSkgPj49IDE7IFwNCj4gPiArCX0gd2hpbGUgKDApDQo+ID4gKyNlbmRpZg0KPiA+ICsNCj4g PiArI2VuZGlmDQo+ID4gKw0KPiA+ICAvKg0KPiA+ICAgKiBPdmVycmlkZXMgZm9yIGluLWtlcm5l bCBBQ1BJQ0ENCj4gPiAgICovDQo+ID4NCj4gDQo+IC0tDQo+IEkgc3BlYWsgb25seSBmb3IgbXlz ZWxmLg0KPiBSYWZhZWwgSi4gV3lzb2NraSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBD ZW50ZXIuDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752070AbaGUB0X (ORCPT ); Sun, 20 Jul 2014 21:26:23 -0400 Received: from mga01.intel.com ([192.55.52.88]:27228 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751598AbaGUB0V (ORCPT ); Sun, 20 Jul 2014 21:26:21 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.01,697,1400050800"; d="scan'208";a="564696821" From: "Zheng, Lv" To: "Rafael J. Wysocki" CC: "Wysocki, Rafael J" , "Brown, Len" , Lv Zheng , "linux-kernel@vger.kernel.org" , "linux-acpi@vger.kernel.org" Subject: RE: [PATCH v3 2/7] ACPICA: Linux: Add stub implementation of ACPICA 64-bit mathematics. Thread-Topic: [PATCH v3 2/7] ACPICA: Linux: Add stub implementation of ACPICA 64-bit mathematics. Thread-Index: AQHPo6kZpbMK9ozajE+AgOcc2mHqgpuptB+g Date: Mon, 21 Jul 2014 01:26:10 +0000 Message-ID: <1AE640813FDE7649BE1B193DEA596E8802643932@SHSMSX101.ccr.corp.intel.com> References: <01bab2394df93a3064f09d961f4011b62895eef2.1405500886.git.lv.zheng@intel.com> <3777197.HSR7Q9huIS@vostro.rjw.lan> In-Reply-To: <3777197.HSR7Q9huIS@vostro.rjw.lan> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id s6L1QSSP026638 Hi, Rafael > From: Rafael J. Wysocki [mailto:rjw@rjwysocki.net] > Sent: Sunday, July 20, 2014 7:46 AM > To: Zheng, Lv > > On Wednesday, July 16, 2014 04:58:00 PM Lv Zheng wrote: > > This patch adds default 64-bit mathematics in aclinux.h using do_div(). As > > do_div() can be used for all Linux architectures, this can also be used as > > stub macros for ACPICA 64-bit mathematics. > > > > But this is not a performance friendly way, as ACPICA's architecture > > specific division OSL only requires a dividing 64-bit number with a 32-bit > > number implementation, while Linux __div64_32() is not available for all > > build environments. So currently, if an architecture really wants to > > support ACPICA, it must implement its own division OSL. > > What does this mean for i386, in particular? All ACPICA environment macros have defaults in actypes.h or acenv.h, these macros are the only ones do not have defaults. Because their defaults should be provided by OSPMs. This patch just adds their default implementation for __KERNEL__ surrounded code for Linux kernel. It only provides build protection and demonstrations of the functionality, no one actually uses it now. Let me figure out the possible users below: These macros are required by drivers/acpi/utmath.c when ACPI_USE_NATIVE_DIVIDE is not defined. It is used by ACPICA, so currently this is only meaningful to CONFIG_ACPI builds. So kernel will not use these macros unless CONFIG_ACPI is defined and ACPI_USE_DIVIDE is not defined. For 64-bit kernels: In include/acpi/actypes.h, for ACPI_MACHINE_WIDTH=64, ACPI_USE_NATIVE_DIVIDE will be defined, thus these macros are not used. In include/acpi/platform/aclinux.h, for __KERNEL__ surrounded code, ACPI_MACHINE_WIDTH is defined to be BITS_PER_LONG. So all 64-bit kernels do not use these macros. For 32-bit kernels: As mentioned above, these macros will be used when BITS_PER_LONG is 32. Thus currently the i328 kernels are the only users for these macros. But they won't use this default implementation provided by this patch because: In arch/x86/include/asm/acenv.h, there are already overrides implemented. So these default macros are not used by 32-bit x86 (i386) kernels. These macros will only be used by future non x86 32-bit architectures that try to support ACPI in Linux kernel. During the period they do not have arch specific implementations of such macros, we can avoid build errors for them. And since they can see ACPICA functioning without implementing any arch specific environment tunings, we can also avoid function errors for them. As this implementation is not performance friendly, those architectures still need to implement real support in the end. As a conclusion, IMO: 1. This default implementation just fill an ACPICA default environment gap. 1. There are no users and will be no users of this default implementation in the kernel. 3. Though this default implementation is not performance friendly, it functions correctly, so it can be a demo for future 32-bit architectures that try to support ACPI. 4. We can use this default implementation to avoid build troubles. Thanks and best regards -Lv > > > This is required by the ACPICA header stub support. ACPICA header stubs are > > useful to protect CONFIG_ACPI=n Linux kernel builds where ACPICA headers > > are included. Lv Zheng. > > > > Signed-off-by: Lv Zheng > > --- > > include/acpi/platform/aclinuxex.h | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/include/acpi/platform/aclinuxex.h b/include/acpi/platform/aclinuxex.h > > index 191e741..568d4b8 100644 > > --- a/include/acpi/platform/aclinuxex.h > > +++ b/include/acpi/platform/aclinuxex.h > > @@ -46,6 +46,28 @@ > > > > #ifdef __KERNEL__ > > > > +#ifndef ACPI_USE_NATIVE_DIVIDE > > + > > +#ifndef ACPI_DIV_64_BY_32 > > +#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ > > + do { \ > > + u64 (__n) = ((u64) n_hi) << 32 | (n_lo); \ > > + (r32) = do_div ((__n), (d32)); \ > > + (q32) = (u32) (__n); \ > > + } while (0) > > +#endif > > + > > +#ifndef ACPI_SHIFT_RIGHT_64 > > +#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ > > + do { \ > > + (n_lo) >>= 1; \ > > + (n_lo) |= (((n_hi) & 1) << 31); \ > > + (n_hi) >>= 1; \ > > + } while (0) > > +#endif > > + > > +#endif > > + > > /* > > * Overrides for in-kernel ACPICA > > */ > > > > -- > I speak only for myself. > Rafael J. Wysocki, Intel Open Source Technology Center. {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I